Penjadwalan Proses dan Algoritma proses

 Penjadwalan Proses dan Algoritma Proses


Dalam Sistem Operasi (Operating System) tentunya banyak sekali proses yang harus dieksekusi.  Maka muncul permasalahan untuk memutuskan proses mana yang akan dilaksanakan dalam suatu sistem.  untuk itu diperlukan kebijaksanaan dan mekanisme di sistem operasi yang berkaitan dengan urutan kerja yang dilakukan sistem komputer.
Untuk menyikapi hal tersebut maka dirumuskanlah sebuah Algoritma penjadwalan yang berfungsi sebagai penentu proses manakah yang akan di eksekusi terlebih dahulu oleh CPU. 
Proses yang belum mendapat jatah alokasi dari CPU, akan mengantri di ready queue. 
Dan kemudian dilakukan proses eksekusi.
Algoritma penjadwalan tersebut pun ada beberapa cara, tergantung kebutuhan kita untuk menggunakan cara yang mana.
Berikut beberapa ilustrasi Algoritma Penjadwalan, antara lain:

Round Robin.
Yaitu salah satu Algoritma penjadwalan yang menggilir proses secara berurutan. Dalam algoritma ini setiap proses akan mendapatkan waktu dari CPU yang kita kita sebut dengan time quantum. Time quantum adalah suatu satuan waktu.
Time quantum inilah yang menentukan proses mana yang akan dikerjakan terlebih dahulu oleh CPU dan kemudian proses mana yang akan dilakukan berikutnya.
Biasanya suatu proses mendapat jatah time quantum yang sama dari CPU yakni 1-100 milidetik atau (1/n).
Jika proses yang sedang dieksekusi selesai dalam waktu kurang dari 1 time quantum, tidak ada masalah. Tetapi jika proses berjalan melebihi 1 time quantum, maka proses tersebut akan dihentikan,lalu digantikan oleh proses yang berikutnya. Proses yang dihentikan tersebut akan diletakkan di queue di urutan paling belakang.
Berikut gambar urutan kejadian proses dalam Algoritma Round Robin.
Contoh urutan suatu proses dengan menggunakan Algoritma Round Robin.
 
Permasalahan utama pada Round Robin adalah menentukan besarnya time quantum. 
Jika time quantum yang ditentukan terlalu kecil, maka sebagian besar proses tidak akan selesai dalam 1 time quantum. Hal ini tidak baik karena akan terjadi banyak switch, padahal CPU memerlukan waktu untuk beralih dari suatu proses ke proses lain (disebut dengan context switches time).
Sebaliknya, jika time quantum terlalu besar, Algoritma Round Robin akan berjalan seperti algoritma First Come First Served.
Time quantum yang ideal adalah jika 80% dari total proses memiliki CPU burst time yang lebih kecil dari 1 time quantum.
2.      FCFS (First Come First Served).
Algoritma ini merupakan algoritma penjadwalan yang paling sederhana yang digunakan CPU. Dengan menggunakan algoritma ini setiap proses yang berada pada status ready dimasukkan kedalam FIFO queue atau antrian dengan prinsip first in first out, sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi.
Contoh Permasalahan : 
 
Ada empat buah proses yang datang secara bersamaan yaitu pada 0 ms,
P1 memiliki burst time 8 ms,
P2 memiliki burst time 7 ms,
P3 memiliki burst time 10 ms,
Dan P4 memiliki burst time 6 ms.

Apabila kita gunakan Algoritma FCFS ini maka analisisnya akan dijelaskan dalam gantt chart sebagai berikut:
 
Ketika CPU tidak mengerjakan sesuatu atau dalam posisi 0 datang sebuah proses yang dinamakan P1 yang membutuhkan waktu penyelesaian yang berjumlah 8. Karena FCFS ini melakukan proses menurut kapan proses itu datang atau yang bisa kita katakan sebagai proses antrian, maka proses selanjutnya akan di kerjakan setelah proses yang berada di depannya selesai untuk di kerjakan. Tadi proses P1 selesai di kerjakan di 8, sementara itu ada P2,P3,dan P4 yang sedang menunggu untuk di kerjakan selanjutnya.
Ketika  P1 selesai dikerjakan di 8, maka akan di lanjutkan dengan pengerjaan P2 yang memiliki waktu pengerjaan sebesar 7, sehingga proses P2 akan selesai di kerjakan pada posisi 15. P1 dan P2 sudah selesai pengerjaannya, tinggal menunggu pengerjaan daripada P3 dan P4. Dan begitupun selanjutnya sampai P4 selesai untuk di proses.
Algoritma FCFS dalam prosesnya tidak mengizinkan sebuah penyelaan dari segi apapun, dengan kata lain Algoritma FCFS ini bersifat non-preempetive atau tidak dapat dilakukan interrupt oleh proses lain. walaupun proses yang menunggu memiliki prioritas yang lebih tinggi.
Kelemahan dari algoritma ini:
·         Waiting time rata-ratanya cukup lama 
·         Terjadinya convoy effect, yaitu proses-proses menunggu lama untuk menunggu 1 proses besar yang sedang dieksekusi oleh CPU
3.      Priority Scheduling
Priority Scheduling merupakan algoritma penjadwalan yang mendahulukan proses yang memiliki prioritas tertinggi. Setiap proses memiliki prioritasnya masing-masing.
Prioritas tersebut dapat ditentukan melalui beberapa karakteristik antara lain:
-          Time limit
-          Memory requirement
-          Akses file
-          Perbandingan antara I/O Burst dengan CPU Burst
-          Tingkat kepentingan proses
Priority scheduling juga dapat dijalankan secara preemptive maupun nonpreemptive.
Pada preemptive, jika ada suatu proses yang baru datang memiliki prioritas yang lebih tinggi daripada proses yang sedang dijalankan, maka proses yang sedang berjalan tersebut dihentikan, lalu CPU dialihkan untuk proses yang baru datang tersebut.
Sementara itu, pada non-preemptive, proses yang baru datang tidak dapat menganggu proses yang sedang berjalan, tetapi hanya diletakkan di dalam queue.
Berikut contoh analisis Algoritma Priority Scheduling :
 
Sudah dijelaskan pada gambar di atas bahwa proses dengan Algorima Priority Scheduling yang dieksekusi terlebih dahulu yakni P2 dengan priority tertinggi dan dengan waktu penyelesaian 8. Setelah P2 selesai maka akan dilanjutkan dengan P4 yang memiliki prioritas tertinggi berikutnya dengan durasi pengerjaan sebesar 3. Kemudian disusul dengan pengerjaan P3 dengan waktu 7. Dan yang terakhir pengerjaan P1 dengan durasi 6.
Kelemahan pada priority scheduling adalah dapat terjadinya indefinite blocking (starvation). Yaitu proses dengan prioritas rendah berkemungkinan untuk tidak dieksekusi jika terdapat proses lain yang memiliki prioritas lebih tinggi darinya.
Solusi dari permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap proses yang menunggu dalam queue secara bertahap.

Komentar