KONSEP PENJADWALAN PROSES Di SISTEM OPERASI

        Pada sistem multiprogramming, selalu akan terjadi beberapa proses berjalan dalam suatu waktu. Sedangkan pada uniprogramming hal ini tidak akan terjadi, karena hanya ada satu proses yang berjalan pada saat tertentu. Sistem multiprogramming diperlukan untuk memaksimalkan utilitas CPU. Pada saat proses dijalankan terjadi siklus eksekusi CPU dan menunggu I/O yang disebut dengan siklus CPU-I/O burst. Eksekusi proses dimulai dengan CPU burst dan dilanjutkan dengan I/O burst, diikuti CPU burst lain, kemudian I/O burst lain dan seterusnya seperti pada Gambar Pada saat suatu proses dieksekusi, terdapat banyak CPU burst yang pendek dan terdapat sedikit CPU burst yang panjang.Program yang I/O bound biasanya sangat pendek CPU burst nya, sedangkan program yang CPU bound kemungkinan CPU burstnya sangan lama. Hal ini dapat digambarkan dengan grafik yang eksponensial atau hiper eksponensial seperti pada Gambar 4-2. Oleh karena itu sangat penting pemilihanalgoritma penjadwalan CPU. 


          CPU Scheduler
Pada saat CPU menganggur, maka sistem operasi yang harus menyeleksi proses-proses yang ada di memori utama(rady queue),untuk di eksekusi dan mengalokasikan CPU untuk salah satu dari proses tersebut,Seleksi semacam ini di sebut dengan short term scheduler(CPU scheduler).
1.      Apabila proses berpindah dari keadaan ruuning ke waiting
2.      Apabila proses berpindah dari keadaan ruuning ke ready
3.      Apabila proses berpindah dari keadaan waiting ke ready
4.      Apabila proses berhenti
Apabila model penjadwalan yang dipilih menggunakan keadaan 1 dan 4, maka penjadwakan semacam ini disebut non-peemptive. Sebaliknya, apabila yang digunakan adalah keadaan 2 dan 3, maka disebut dengan preemptive.
Pada non-preemptive, jika suatu proses sedang menggunakan CPU, maka proses tersebut akan tetap membawa CPU sampai proses tersebut melepaskannya (berhenti atau dalam keadaan waiting). Preemptivescheduling memiliki kelemahan, yaitu biaya yang dibutuhkan sangat tinggi. Antara lain, harus selalu dilakukan perbaikan data. hal ini terjadi jika suatu proses ditinggalkan dan akan segera dikerjakan proses yang lain.

Dispatcher
Dispatcheradalah suatu modul yang akan memberikan kontrol pada CPU terhadap penyeleksian proses yang dilakukan selama short-term scheduling. Fungsi-fungsi yang terkandung di dalam-nya meliputi:
1. Switching context;
2. Switching ke user-mode;
3. Melompat ke lokasi tertentu pada user program untuk memulai program.
Waktu yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai untuk menjalankan proses yang lainnya disebut dispatch latency.

A.    KRITERIA PENJADWALAN
Algoritma penjadwalan CPU yang berbeda akan memiliki perbedaan properti,sehingg untuk memiliki algoritma ini harus di pertimbangkan duluh properti-properti algoritma tersebut.
1.     CPU utilization: Diharapkan agar CPU selalu dalam keadaan sibuk
2.     Throughput: Throughput adalah banyaknya proses yang selesai di kerjakan dalam satu satuan waktu
3.     Turnaround time: Banyaknya waktu yang di perlukan untuk mengeskusi proses,dari mulai menunggu untuk memerintah tempat di memori utama,menunggu di ready queue,eksekusi oleh CPU,dan mengerjakan I/O samapi semua proses-proses tersebut diselesaikan.
4.     Waiting time: Waktu yang di perlukan oleh suatu proses untuk menunggu di ready queue
5.     Response time: Waktu yang di butuhkan oleh suatu proses dari minta di layani hingga ada respont pertama yang menanggapi permintaan tersebut
6.     Fairness. Meyakinkan bahwa tiap-tiap proses akan mendapatkan pembagian waktu penggunaan CPU secara terbuka (fair).

B.    STRATEGI PENJADWALAN
Terdapat dua strategi penjadwalan, yaitu:
1.      Penjadwalan nonpreemptive (run – to – completion)
2.       Penjadwalan preemptive
Penjadwalan Nonpreemptive
Begitu proses diberi jatah waktu pemroses maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai.

Penjadwalan Preemptive
Saat proses diberi jatah waktu pemroses maka pemroses dapat diambil alih proses lain sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu.
Penjadwalan preemptive berguna pada sistem dimana proses-proses yang mendapat perhatian tanggapan pemroses secara cepat. Misalnya :
-          Pada sistem waktu nyata, kehilangan interupsi (yaitu interupsi tidak segera dilayani) dapat berakibat fatal.
-          Pada sistem interaktif/time-sharing, penjadwalan preemptive penting agar  dapat menjamin waktu tanggap yang memadai.
Penjadwalan preemptive bagus, tapi tidak tanpa ongkos. Perlaihan proses (yaitu proses beralih ke proses lain) memerlukan overhead (karena banyak tabel yang dikelola). Agar preemptive efektif, banyak proses harus berada di memori utama sehingga proses-proses tersebut dapat segera running begitu diperlukan. Menyimpan banyak proses tak running benar-benar di memori merupakan suatu overhead tersendiri.

C.    ALGORITMA PENJADWALAN
Jenis-jenis algoritma penjadwalan adalah sebagai berikut :
1.      Nonpreemptive, menggunakan konsep :
a.       FIFO (First In First Out) atau FCFS (First Come First Serve)
b.      SJF (Shortest Job First)
c.       HRN (Highest Ratio Next)
d.      MFQ (Multiple Feedback Queues)
2.      Preemptive, menggunakan konsep :
a.       RR (Round Robin)
b.      SRF (Shortest Remaining First)
c.       PS (Priority Schedulling)
d.      GS (Guaranteed Schedulling)
Klasifikasi lain selain berdasarkan dapat/tidaknya suatu proses diambil secara paksa adalah klasifikasi berdasarkan adanya prioritas di proses-proses, yaitu :
1.      Algoritma penjadwalan tanpa berprioritas.
2.      Algoritma penjadwalan berprioritas, terdiri dari :
a.       Berprioritas static
b.      Berprioritas dinamis