Di dalam sistem operasi, proses merupakan program yang dieksekusi dengan system resource yang terkait, yang mungkin juga fisik (seperti siklus prosessor dan memori) atau abstak (seperti proses membuka file atau nomor). Kernel menyediakan sebuah ilusi dari ekseskusi bersamaan dari resource schedule antara proses ready ke proses run. Pada system multiprosesor atau multicore, lebih dari satu proses dapat dijalankan secara bersamaan.
a. Proses: dari awal Unix sampai Mac OS X
Proses abstraksi telah lama digunakan untuk menggambarkan berbagai aktifitas dalam suatu sistem computer. Pada awal Unix, program user dapat menjalankan sebuah proses atau bisa mewakili satu atau lebih arus kontrol dalam kernel misalnya, proses 0 menuju sched (),proses scheduler. Satu-satunya cara untuk membuat proses baru pada UNIX tradisional adalah melalui fork () system call , dan satu-satunya cara untuk menjalankan sebuah program baru dalam sebuah proses melalui exec () system call.
b. Mac OS X Execution
Kode dapat dijalankan dibeberapa lingkungan Mac OS. Dimana pada setiap lingkungan dibedakan berdasarkan pada salah satu atau lebih hal berikut : arsitektur mesin, format eksekusi, system mode (user atau kernel), beberapa aturan dan sebagainya. Masing masing lingkungan (environment) memiliki eksekusi yang berbeda. Berikut ini beberapa ruang lingkupnya :
* BSD, Mach, dan I / O Kit bagian dari kernel.
* BSD user-space environment.
* Carbon environment
* Classic environment
* Cocoa environment
* Java runtime environment
* Dashboard environment untuk menjalankan widget berbasis JavaScript
* Rosetta binary translation environment memungkinkan menjalankan executable PowerPC untuk berjalan di komputer Macintosh berbasis x86
c. Scheduling
Selain proteksi memori (tidak dimiliki pada versi sebelum mac os x), Mac OS X memberikan kelebihan dari versi sebelumnya yaitu preemptive multitasking. Kestabilan di versi OS 9 bergantung kepada kerjasama multitasking (applikasi yang bekerja sama pada time share prosessor multiplexing). Jika satu atau lebih aplikasi tidak dapat “bekerjasama”, kemungkinan semua proses menjadi tidak responsif karena tidak mendapatkan pembagian yang wajar dari prosessor. Kernel Mach pada Mac OS X mengelola preemptive multitasking,schedule proses dengan mengedepankan tugas prioritas. Hal ini memungkinkan Mac OS X memberikan dukungan yang real time untuk aplikasi yang memerlukan prilaku soft real time (kernel). Preemptive multitasking juga memungkinkan Mach untuk memastikan bahwa penggunaan prosesor yang paling effisien (teknologi).
Tugas dasar dari mach untuk Mac OS X adalah proses. Pada dasarnya task merupakan sekumpulan resource sistem dimana yang direferensikan oleh port dan dapat dipergunakan bersama dengan tugas lain melalui distribusi port yang benar. Setiap tugas berisi ruang alamat virtual yang dapat dipergunakan bersama dengan tugas-tugas yang lain melalui manajemen memori eksternal. Setiap tugas harus mengandung setidaknya satu thread. (seperti instruksi yang hanya dieksekusi oleh threads, bukan task) dan semua thread yang terdapat dalam task berbagi kesemua resource (kernel).
Karena task memiliki tanggung jawab untuk mengatur resource, sebuah thread adalah sebuah entitas yang ringan, yang mempunyai overhead yang rendah karena menangani status informasi yang minimal (terutama status register). Hal ini dapat dieksekusi bersamaan dengan thread lain (bahkan semua yang termasuk task yang sama). Dengan menggunakan teknik synkronisasi beberapa thread dapat menyelesaikan pekerjaan lebih effisient daripada satu thread. Thread Mach memanfaatkan sumber daya yang dialokasikan untuk task mereka masing masing dengan mengeksekusi instruksi trap (jebakan) yang mengakibatkan kernel mengirim sebuah pesan ke beberapa thread lain atau proses lain atau melakukan operasi atas nama thread (kernel).
Mac OS X menggunakan kedua time-sharing dan fixed priority policies untuk penjadwalan thread. Penjadwalan thread Mach menyesuaikan time-sharing prioritas thread dalam usaha untuk menjaga keseimbangan konsumsi sumber daya sistem diantara semua time-sharing thread. Thread dengan prioritas tinggi seperti real time thread biasanya diberikan prioritas tetap. Setelah mengeksekusi untuk quantum waktu yang tetap, thread ini pindah ke antrian akhir yang memiliki prioritas yang sama. Hal ini dimungkinkan untuk mengijinkan thread dengan prioritas tetap berjalan asmpai bloknya atau di preempted oleh thread yang prioritasnya lebih tinggi dengan menetapkan quantum waktu tak terhingga. Tabel dibawah ini mengilustrasikan skema prioritas thread (teknologi, kernel).
Priority Band : Characteristics
Normal : Aplikasi normal prioritas thread
System high : Thread yang memiliki prioritas yang telah ditingkatkan diatas thread normal.
priority
Kernel mode only : Thread cadangan dibuat dalam kernel yang perlu dijalankan pada prioritas yang lebih tinggi daripada thread dalam space user.
Real-time threads : Thread yang didasarkan pada prioritas mendapatkan fraksi yang jelas dari total cycles clock, terlepas dari kegiatan lain (misalnya aplikasi audio player).
0 komentar:
Posting Komentar