Rangkuman Penjadwalan Prosesor Jamak

: kecepatan rata-rata kedatangan proses baru Formula Little ini valid untuk semua algoritma penjadwalan dan distribusi kedatangan proses. Sebagai contoh, jika kita mengetahui rata-rata 7 proses datang setiap detik, dan normalnya ada 14 proses dalam antrian, maka kita bisa menghitung waktu tunggu rata-rata proses dalam antrian W sebagai berikut: = 7 prosesdetik n= 14 proses maka W= n = 147= 2 detik per proses. Queueing analysis ini bisa digunakan untuk membandingkan algoritma penjadwalan, tapi memiliki beberapa keterbatasan. Jenis algoritma distribusi yang bisa ditangani model ini terbatas dan pada algoritma atau distribusi yang kompleks, akan sulit untuk menggunakan model ini. Karena perhitungannya akan sangat rumit dan tidak realistis. Selain itu, kita juga perlu menggunakan asumsi yang mungkin saja tidak akurat. Model ini seringkali hanya memberi perkiraan dan keakuratan hasil perhitungannya dipertanyakan.

16.4. Simulasi

Untuk mendapatkan hasil yang lebih akurat dari evaluasi algoritma penjadwalan, bisa digunakan simulasi. Simulasi ini dibuat dengan memprogram sebuah model dari sistem komputer. Simulatornya memiliki variabel yang merepresentasikan clock. Jika nilai dari variabel ini bertambah, simulator mengubah status dari sistem untuk menggambarkan aktivitas proses, device, dan penjadwal. Selama simulatornya berjalan, data-data statistik mengenai performance algoritma dikumpulkan dan dicetak. Untuk menjalakan simulator ini diperlukan data yang merepresentasikan aktivitas sistem seperti proses, CPU burst, dan lain-lain. Biasanya data ini dibuat dengan random-number generator dengan memanfaatkan distribusi probabilitas seperti distribusi Poisson, eksponensial, dan lain-lain. Tapi menjalankan simulasi dengan data yang dihasilkan dari distribusi ini bisa saja tidak akurat, karena dari distribusi hanya diketahui frekuensi atau berapa kali suatu kejadian muncul. Distribusi ini tidak memperhatikan urutan kejadiannya. Untuk mengatasi masalah itu, digunakan trace tapes . Cara membuat trace tapes adalah dengan mengamati dan merekam aktivitas sistem yang sesungguhnya. Dengan ini, kita bisa menjalankan simulator dengan urutan data dari events yang sebenarnya. Cara ini cukup efektif dan bisa memberikan hasil yang akurat. Berikut ini adalah ilustrasi evaluasi algoritma penjadwalan dengan simulasi: Gambar 16.2. Evaluasi Algoritma Penjadwalan dengan Simulasi Urutan eksekusi proses direkam dengan trace tapes, kemudian simulator menjalankan simulasi penjadwalan proses-proses tersebut dengan berbagai macam algoritma penjadwalan. Simulasi ini kemudian menghasilkan catatan mengenai performance dari setiap algoritma penjadwalan tersebut. Dengan membandingkan catatan performance itu, pengguna bisa mencari algoritma penjadwalan 111 yang paling baik. Meskipun memberikan hasil yang akurat, simulasi ini bisa saja memerlukan waktu yang besar dan biaya yang mahal. Trace tapes juga membutuhkan ruang penyimpanan yang besar di memori. Mendesain, memprogram, dan men-debug simulator juga adalah sebuah pekerjaan yang besar.

16.5. Implementasi

Simulasi bahkan memiliki keakuratan yang terbatas. Satu-satunya cara yang paling akurat untuk mengevaluasi algoritma penjadwalan adalah dengan langsung membuat programnya, masukkan ke dalam sistem operasi, dan lihat bagaimana ia bekerja. Dengan ini, algoritma yang akan dievaluasi ditempatkan dan dijalankan di sistem yang sebenarnya. Implementasi ini membutuhkan biaya yang besar. Selain mahal, kesulitannya antara lain: • Memprogram algoritmanya. • Memodifikasi sistem operasi agar bisa mendukung algoritma tersebut. • Reaksi pengguna akan sistem operasi yang terus berubah secara konstan karena pengguna tidak peduli dengan pengembangan sistem operasi. Pengguna hanya ingin proses yang dijalankannya dapat diselesaikan dengan cepat. • Environment dimana program dijalankan akan berubah. Perubahan environment ini bukan hanya perubahan wajar sebagaimana yang terjadi jika program baru ditulis dan tipe-tipe masalah berubah, tapi juga perubahan performance dari penjadwal. Pengguna dalam hal ini programmer bisa memodifikasi programnya untuk memanipulasi penjadwalan. Misalnya sebuah komputer dikembangkan dengan pengklasifikasian proses menjadi interaktif dan non-interaktif berdasarkan jumlah terminal MK yang digunakan proses. Jika dalam interval satu detik suatu proses tidak menggunakan terminal MK untuk masukan atau keluaran, maka proses itu dikategorikan proses non-interaktif dan dipindahkan ke antrian yang prioritasnya lebih rendah. Dengan sistem seperti ini, bisa saja seorang programmer memodifikasi programnya -yang bukan program interaktif- untuk menulis karakter acak ke terminal dalam interval kurang dari satu detik. Dengan demikian, programnya akan dianggap program interaktif dan mendapat prioritas tinggi, meskipun sebenarnya output yang diberikan ke terminal tidak memiliki arti. Bagaimanapun, algoritma penjadwalan yang paling fleksibel adalah yang bisa berganti-ganti atau diatur sesuai kebutuhan. Misalnya komputer yang memiliki kebutuhan grafis tinggi akan memiliki algoritma penjadwalan yang berbeda dengan komputer server. Beberapa sistem operasi seperti UNIX memungkinkan system manager untuk mengatur penjadwalan berdasarkan konfigurasi sistem tertentu.

16.6. Ilustrasi: Linux

Mulai di versi 2.5, Kernel linux dapat berjalan di berbagai algoritma penjadwalan UNIX tradisional. Dua masalah dengan penjadwal UNIX tradisional adalah tidak disediakannya dukungan yang cukup untuk SMP symmetric multiprocessor sistem dan tidak diperhitungkan dengan baik jumlah tasks pada sistem yang berkembang. Dalam versi 2.5, penjadwal memeriksa dengan teliti hal tersebut, dan sekarang kernel juga menyajikan algoritma penjadwalan yang dapat run dalam waktu yang konstan tidak tergantung dari jumlah tasks dalam sistem. Penjadwal yang baru juga menyediakan peningkatan dukungan untuk SMP, termasuk processor affinity dan load balancing, sebaik dalam menyediakan keadilan dan dukungan terhadap interactive tasks. Penjadwal linux adalah preemptive, algoritmanya berdasarkan prioritas dengan dua range prioritas yang terpisah: real-time range dari 0-99 dan nice value berkisar dari 100-140. Dua range ini dipetakan menjadi global priority scheme dimana nilai yang lebih rendah memiliki prioritas yang lebih tinggi. Tidak seperti penjadwal yang lain, Linux menetapkan prioritas yang lebih tinggi memiliki waktu kuantum yang lebih panjang dan prioritas yang lebih rendah memiliki waktu kuantum yang lebih pendek. Linux mengimplementasikan real time scheduling seperti yang didefinisikan oleh POSIX 1.b: First Come First Served dan Round Robin. Sistem waktu nyatareal timediberikan untuk task yang prioritasnya tetap. Sedangkan task yang lainnya memiliki prioritas yang dinamis berdasakan nice 112 values ditambah atau dikurangi dengan 5. Interaktifitas sebuah task menentukan apakah nilai 5 tersebut akan ditambah atau dikurangi dari nice value. Task yang lebih interaktif mempunyai ciri khas memiliki sleep times yang lebih lama dan karena itu maka ditambah dengan -5, karena penjadwal lebih menyukai interactive task. Hasil dari pendekatan ini akan membuat prioritas untuk interactive task lebih tinggi. Sebaliknya, task dengan sleep time yang lebih pendek biasanya lebih CPU-bound jadi prioritasnya lebih rendah. Gambar 16.3. Hubungan antara prioritas dan waktu kuantum Task yang berjalan memenuhi syarat untuk dieksekusi oleh CPU selama time slice-nya masih ada. Ketika sebuah task telah kehabisan time slice-nya, maka task tersebut akan expired dan tidak memenuhi syarat untuk dieksekusi lagi sampai semua task yang lain sudah habis waktu kuantumnya. Kernel mengatur daftar semua task yang berjalan di runqueue data structure. Karena dukungan Linux untuk SMP, setiap prossesor mengatur runqueue mereka sendiri dan penjadwalan yang bebas. Setiap runqueue terdiri dari dua array prioritas -active dan expired. Active array terdiri dari semua task yang mempunyai sisa waktu time slices, dan expired array terdiri dari task yang telah berakhir. Setiap array prioritas ini memiliki daftar task indexed berdasakan prioritasnya. Penjadwal memilih task dengan prioritas paling tinggi di active array untuk dieksekusi dalam CPU. Di mesin multiprossesor, ini berarti setiap prossesor menjadwalkan prioritas paling tinggi dalam runqueue structure masing-masing. Ketika semua task telah habis time slices-nya dimana, active array-nya sudah kosong, dua array prioritas bertukar; expired array menjadi active array, dan sebaliknya. Gambar 16.4. Daftar task indexed berdasarkan prioritas Penghitungan ulang dari task yang memiliki prioritas yang dinamis berlangsung ketika task telah 113