sejumlah proses aktif. ktifitas pemindahan proses yang tertunda dari memori utama ke memori sekunder disebut swapping. 20 Penjadwal jangka panjang Penjadwal jangka panjang bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi. atch biasanya adalah proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu pemroses, memori, perangkat masukan/keluaran), program-program ini berprioritas rendah, digunakan sebagai pengisi (agar pemroses sibuk) selama periode aktivitas job-job interaktif rendah.sasaran utama penjadwal jangka panjang adalah memberi keseimbangan job-job campuran. 4.3 STRTEGI PENJDWLN da 2 strategi penjadwalan : Penjadwalan nonpreemptive Penjadwalan preemptive Penjadwalan nonpreemptive Proses yang sedang berjalan tidak dapat disela. Sekali proses berada di status running (sedang berjalan), maka proses tersebut akan dieksekusi terus sampai proses berhenti karena selesai atau diblok untuk menunggu I/O atau untuk meminta beberapa layanan dari sistem operasi; dan CPU tidak dapat diambil alih oleh proses yang lain. Penjadwalan preemptive Proses yang sedang berjalan dapat diinterupsi dan dipindah ke status ready oleh sistem operasi sehingga CPU dapat diambil alih proses yang lain. 4.4 LGORITM PENJDWLN Terdapat banyak algoritma, diantaranya : a. lgoritma menggunakan strategi nonpreemptive FIFO (First-in, First-out) atau FCFS (First-come, First-serve) SJF (Shortest Job First) HRN (Highest Ratio Next) b. lgoritma menggunakan strategi preemptive MFQ (Multiple Feedback Queues) RR (Round Robin) SRF (Shortest Remaining First) PS (Priority Schedulling) GS (Guaranteed Schedulling) Klasifikasi lain berdasarkan adanya prioritas di proses-proses tersebut, yaitu : lgoritma penjadwalan tanpa prioritas lgoritma penjadwalan berprioritas : algoritma penjadwalan berprioritas statik algoritma penjadwalan berprioritas dinamis 4.4.1 Penjadwalan FIFO (First in, First Out) Merupakan penjadwalan nonpreemptive dan penjadwalan tidak berprioritas. Penjadwalan FIFO adalah penjadwalan paling sederhana, yaitu : Proses-proses diberi jatah waktu pemroses berdasarkan waktu kedatangan Saat proses mendapat jatah waktu pemroses, proses dijalankan sampai selesai Penjadwalan ini adil yaitu proses yang datang duluan, dilayani duluan juga. Dikatakan tidak adil karena job-job yang perlu waktu lama membuat job-job pendek menunggu. Job-job tak penting dapat membuat job-job penting menunggu. Misal ada tiga proses,, yang datang dengan lama waktu kerja CPU (CPU urst-time) masing-masing sbb :
Proses urst-time 24 3 3 Jika proses datang dengan urutan,, dan dilayani dengan algoritma FIFO maka dapat digambarkan Gantt Chart-nya : 21 0 24 27 30 Dari Gantt Chart dapat diambil kesimpulan waktu tunggu untuk adalah 0 milidetik, waktu tunggu untuk adalah 24 milidetik, waktu tunggu adalah 27 milidetik. Jadi rata-rata waktu tunggu (verage Waiting Time / WT) adalah (0+24+27)/3 = 17 milidetik. Kemudian jika waktu kedatangan proses adalah,, maka Gantt Chartnya adalah 0 3 6 30 Dengan urutan kedatangan seperti diatas WT = (0+3+6)/3 = 3 milidetik Menentukan Turn round Time dengan FIFO berdasarkan contoh diatas : 0 24 27 30 Turn around time (waktu penyelesaian) adalah 24, = 27, = 30, maka rata-rata turn around time = (24+27+30)/3 = 27 milidetik 4.4.2 Penjadwalan SJF (Shortest Job First) jarang digunakan Merupakan penjadwalan nonpreemptive dan penjadwalan tidak berprioritas. Penjadwalan ini mengasumsikan waktu jalan proses (sampai selesai) diketahui sebelumnya. Mekanisme penjadwalan adalah menjadwalkan proses dengan waktu jalan terpendek lebih dulu sampai selesai. Misal terdapat kumpulan proses dengan burst-time sebagai berikut : Proses urst-time 6 8 7 P4 3 Gantt Chart algoritma SJF : P4 0 3 9 16 24 Dari Gantt Chart dapat diambil nilai waktu tunggu untuk : = 3 milidetik = 16 milidetik = 9 milidetik P4 = 0 milidetik Jadi WT yang dihasilkan adalah (3+16+9+0) / 4 = 7 milidetik.
Menentukan turn around time 22 Proses Saat Tiba Lama Proses 0 11 0 8 C 0 10 D 0 3 E 0 5 Proses Saat Tiba Lama Proses Saat Mulai Saat Selesai Turn round Time D 0 3 0 3 3 E 0 5 3 8 8 0 8 8 16 16 C 0 10 16 26 26 0 11 26 37 37 Menentukan WT untuk SJF nonpreemptive Jumlah Rata-rata 90 18 Proses Saat Tiba Lama Proses 0 7 2 4 C 4 1 D 5 4 Gantt Chart algoritma SJF nonpreemptive : C D 0 7 8 12 16 Dari Gantt Chart dapat diambil nilai waktu tunggu untuk : = 0 milidetik = waktu mulai dilayani waktu saat tiba = 8-2 = 6 milidetik C = waktu mulai dilayani waktu saat tiba = 7-4 = 3 milidetik D = waktu mulai dilayani waktu saat tiba = 12-5 = 7 milidetik Jadi WT yang dihasilkan adalah (0+6+3+7) / 4 = 4 milidetik. Menentukan WT untuk SJF preemptive Gantt Chart algoritma SJF preemptive : C D 0 2 4 5 7 11 16 Dari Gantt Chart dapat diambil nilai waktu tunggu untuk : = 0 + (11-2) = 9 milidetik = 0 + (5-4) = 1 milidetik C = 0 milidetik D = 7-5 = 2 milidetik Jadi WT yang dihasilkan adalah (9+1+0+2) / 4 = 3 milidetik.
Menentukan turn around time 23 Proses Saat Tiba Lama Proses Saat Mulai Saat Selesai Turn round Time = saat selesai saat tiba 0 7 0 16 16 2 4 2 7 7-2=5 C 4 1 4 5 5-4 = 1 D 5 4 7 11 11-5=6 Jumlah Rata-rata 28 7 4.4.3 Penjadwalan HRN (Highest Ratio Next) Penjadwalan ini merupakan penjadwalan non-preemptive dan penjadwalan berprioritas dinamis, yang sebenarnya merupakan perbaikan dari algoritma SJF, karena pada SJF ada kemungkinan proses dengan waktu layanan lama akan menunggu lama untuk dieksekusi. Hal ini disebabkan adanya proses-proses lain yang waktu layanannya selalu lebih pendek dari proses tersebut. Prioritas dinamis HRN dihitung berdasarkan rumus : Prioritas = (waktu tunggu + waktu layanan) / waktu layanan Proses dengan prioritas yang tertinggi akan dipilih untuk dieksekusi selanjutnya. 4.4.4 Penjadwalan MFQ (Multiple Feedback Queues) Merupakan penjadwalan dengan banyak antrian, merupakan penjadwalan preemptive (by-time), penjadwalan berprioritas dinamis. Penjadwalan ini untuk mencegah banyaknya swapping dengan proses-proses yang sangat banyak menggunakan pemroses (karena menyelesaikan tugasnya memakan waktu lama) diberi jatah waktu (jumlah kwanta/jumlah quantum) lebih banyak dalam satu waktu. Penjadwalan ini menghendaki kelas-kelas prioritas bagi proses-proses yang ada. Kelas tertinggi berjalan selama satu kwanta, kelas berikutnya berjalan selama 2 kwanta,kelas berikutnya berjalan 4 kwanta, dst. Ketentuan yang berlaku : 1. Jalankan proses pada kelas tertinggi 2. Jika proses menggunakan seluruh kwanta yang dialokasikan maka diturunkan kelas prioritasnya 3. Proses yang masuk untuk pertama kali ke sistem langsung diberi kelas tertinggi. 4.4.5 Penjadwalan RR (Round Robin) Merupakan penjadwalan preemptive, penjadwalan tanpa prioritas. Semua proses dianggap penting dan diberi sejumlah waktu pemroses yang disebut kwanta (quantum) atau time-slice dimana proses itu berjalan. Ketentuan algoritma RR : 1. Jika quantum habis dan proses belum selesai maka proses menjadi runnable dan pemroses dialihkan ke proses lain 2. jika quantum belum habis dan proses menunggu suatu kejadian (selesainya I/O), maka proses menjadi blocked dan pemroses dialihkan ke proses lain. 3. jika quantum belum habis tapi proses telah selesai maka proses diakhiri dan pemroses dialihkan ke proses lain. Misal kumpulan proses datang pada waktu 0 dengan spesifikasi : Proses urst-time 24 3 3 Jika digunakan quantum time 4 milidetik, maka proses mendapat 4 milidetik yang pertama, 20 milidetik berikutnya akan disela oleh proses dan secara bergantian, sehingga Gantt Chart-nya dapat digambarkan sbb:
24 0 4 7 10 14 18 22 26 30 Waktu tunggu untuk tiap-tiap proses : Proses Waiting Time 0+(10-4)=6 4 7 WT yang terjadi adalah (6+4+7)/3 = 5,66 milidetik Menentukan Turn round Time untuk quantum waktu (q) = 3 Proses Saat Tiba Lama Proses 0 7 0 5 C 0 8 D 0 2 E 0 6 C D E C E C 0 3 6 9 11 14 17 19 3022 25 26 28 Proses Saat Tiba Lama Proses Saat Mulai Saat Selesai Turn round Time 0 7 0 26 26 0 5 3 19 19 C 0 8 6 28 28 D 0 2 9 11 11 E 0 6 11 25 25 Jumlah Rata-rata 109 21,8 4.4.6. Penjadwalan SRF (Shortest Remaining First) Penjadwalan sisa waktu terpendek, duluan Merupakan penjadwalan preemptive, berprioritas dinamis. Pada SRF, proses dengan sisa waktu jalan diestimasi terendah dijalankan, termasuk proses-proses yang baru tiba. 1. Pada SJF begitu proses dieksekusi, proses dijalankan sampai selesai 2. Pada SRF proses yang sedang berjalan (running) dapat diambil alih proses baru dengan sisa jalan yang diestimasi lebih rendah. 4.4.7 Penjadwalan PS (Priority Schedulling) Tiap proses dilengkapi dengan prioritas. CPU dialokasikan untuk proses yang memiliki prioritas paling tinggi. Jika beberapa proses memiliki prioritas yang sama, maka akan digunakan algoritma FIFO. Jika ada 5 proses,,, P4 dan P5 dengan CPU burst : Proses urst Time Prioritas 10 3 1 1 2 3 P4 1 4 P5 5 2 Gantt Chart :
25 P5 P4 0 1 6 16 18 19 Waktu tunggu untuk tiap-tiap proses : Proses Waiting Time 6 0 16 P4 18 P5 1 Sehingga WT = (6+0+16+18+1) = 8,2 ms. Prioritas biasanya menyangkut masalah : waktu, memori yang dibutuhkan, banyaknya file yang boleh dibuka, dan perbandingan antara rata-rata I/O burst dengan rata-rata CPU burst. Priority schedulling bersifat preemptive atau nonpreemptive. Jika ada proses yang datang pada saat P0 sedang berjalan, maka akan dilihat prioritas. Seandainya prioritas lebih besar dibanding dengan prioritas P0 maka pada non preemptive, algoritma tetap akan menyelesaikan P0 sampai habis CPU burst-nya, dan meletakkan pada posisi head queue. Sedangkan pada preemptive, P0 akan dihentikan dulu, dan CPU ganti dialokasikan untuk. 4.4.8 Penjadwalan GS (Guaranteed Schedulling) Penjadwalan ini harus menjamin bahwa algoritma tersebut mempunyai kinerja yang cukup bagus dan menjanjikan kelangsungan hidup yang baik. misal ada n user yang sedang login, maka tiap-tiap user dijanjikan akan menerima 1/n dari kemampuan CPU. Untuk meyakinkan bahwa setiap user mendapatkan jatah waktu menggunakan CPU sesuai dengan haknya maka sistem harus tahu berapa CPU time yang diperlukan oleh setiap proses dalam 1 user. Dan juga CPU time yang diperlukan oleh tiap-tiap user. Misal ada 5 user seperti tabel berikut : User CPU Time 5 4 C 8 D 1 E 2 Total waktu yang dibutuhkan untuk mengakses kelima user tersebut adalah 20 ms, sehingga diharapkan tiap user mendapatkan 20/5 = 4 ms. Pada kenyataannya, mulai dari login hingga saat ini tiap-tiap user telah mendapatkan CPU seperti terlihat pada tabel berikut. Dan rasio antara CPU yang diperoleh sampai saat ini (aktual) dengan CPU yang seharusnya diperoleh (4ms) dapat dicari : User CPU aktual Rasio 3 ¾ = 0.75 6 6/4=1.5 C 2 2/4=0.5 D 1 ¼=0.25 E 1 ¼=0.25 Dapat dilihat bahwa user memiliki rasio 0.75, artinya baru mendapatkan ¾ dari jatah waktu yang seharusnya diterima. User memiliki rasio 1.5, artinya telah mendapatkan 1.5 waktu dari yang seharusnya ia dapatkan. lgoritma ini kemudian akan menjalankan proses dengan rasio yang paling rendah dahulu hingga proses tersebut mendapatkan rasio melebihi rasio proses yang sebelumnya punya rasio satu tingkat lebih tinggi darinya.