Kamis, 12 Desember 2013

PENJADWALAN CPU

PENJADWALAN CPU


1.1 KONSEP DASAR

Pada  sistem  multiprogramming,  selalu  akan  terjadi  beberapa  proses  berjalan dalam suatu waktu. Sedangkan pada uniprogramming hal ini tidak akan terjadi, karena hany ada  satu  proses  yang  berjala pad saat  tertentu. Sistemultiprogramming 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 dilanjutka dengan  I/O  burst,  diikuti  CP burst  lain,  kemudian  I/ burst  lai dan
seterusnya seperti pada Gambar 1-1.



                                                          Gambar 1.1: siklus CPU I/O Burst


Gambar 1-2 :Histogram waktu CPUburst


Pada saat suatu proses dieksekusi, terdapat banyak CPU burst yangpendek dan terdapat sedikit CPU burst yang panjang.   Program yang I/O boundbiasanya sangat pendek CPU burst nya, sedangkan program yang CPU boundkemungkinan CPU burst nya sangat  lama.   Hal ini dapat digambarkan dengan grafik yang eksponensial  atau hiper eksponensial seperti padaGambar 1-2.  Oleh karena itu sangat penting pemilihan algoritma penjadwalanCPU.


1.1.1 CPU Scheduler

Pada  saat  CP menganggur,  mak siste operasi  harus menyeleksi  proses- proses yang ada di memori utama (ready queue) untukdieksekusi dan mengalokasikan CPU untuk salah satu dari proses tersebut.   Seleksi semacam ini disebut dengan short- term scheduler (CPU scheduler). Keputusan untuk menjadwalkan CPU mengikuti empat keadaan dibawah ini :
1.   Apabila proses berpindah dari keadaan running ke waiting;

2.   Apabila proses berpindah dari keadaan running ke ready;

3.   Apabila proses berpindah dari keadaan waiting ke ready;

4.   Apabila proses berhenti.

Apabila model penjadwalan yang dipilih menggunakan keadaan dan 4,maka penjadwakan semacam ini disebut non-peemptive. Sebaliknya, apabilayang digunakan adalah keadaan 2 dan 3, maka disebut dengan preemptive.
Pada non-preemptive, jika suatu proses sedang menggunakan CPU,maka proses tersebut  akan  tetap  membaw CPU  sampai  prose tersebut melepaskanny (berhenti atau dalam keadaan waiting). Preemptivescheduling memiliki kelemahan, yaitu biayyang dibutuhkan sangat tinggi.Antara lain, harus selalu dilakukan perbaikan data. hal ini terjadi jika suatuproses ditinggalkan dan akan segera dikerjakan proses yang lain.


1.1.2 Dispatcher

Dispatcher  adalah  suatu  modu yang  akan  memberikan  kontro pada CPU terhada penyeleksian  proses  yang  dilakukan  selam 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  suatuproses damemulai untuk menjalankan proses yang lainnya disebut dispatchlatency.

1.2 KRITERIA PENJADWALAN

Algoritma penjadwalan  CPU yang berbeda akan memiliki perbedaan properti.Sehingga untuk memilih algoritma ini harus dipertimbangkan dulu properti-properti algoritma   tersebut.            Ada  beberapa  kriteria  yang digunakan untuk  melakukan pembandingan algoritma penjadwalan CPU, antara lain:
1.   CPU utilization. Diharapkan  agar CPU selalu dalam keadaan sibuk. UtilitasCPU dinyatakan dalam bentuk prosen yaitu 0-100%. Namun dalam kenyataannyahanya berkisar antara 40-90%.
2.   Throughput Adalah banyaknya  proses yang selesai dikerjakan  dalam satusatuawaktu.
3.   Turnaround  time. Banyaknya waktu yang diperlukan untuk mengeksekusi proses, dari mulai menunggu untuk meminta tempat di memori utama, menunggu di ready queue, eksekusi oleh CPU, dan mengerjakan I/O.
4.   Waiting time. Waktu yang diperlukan oleh suatu proses untuk menunggu di readyqueue. Waiting time ini tidak mempengaruhi eksekusi proses dan penggunaan I/O.
5.   Response time. Waktu yang dibutuhkan oleh suatu proses dari minta dilayani hingga ada respon pertama yang menanggapi permintaan tersebut.
6.   Fairness. Meyakinkan bahwa tiap-tiap proses akan mendapatkan pembagianwaktu penggunaan CPU secara terbuka (fair).

1.3 ALGORITMA PENJADWALAN

Penjadwalan CPU menyangkut penentuan proses-proses yang ada dalam ready queue yang akan dialokasika pada CPU.   Terdapat beberapa algoritmapenjadwalan CPU seperti dijelaskan pada sub bab di bawah ini.


1.3.1   First-Come First-Served Scheduling (FCFS)

Proses yang pertama kali meminta jatah waktu untuk menggunakan CPU akan dilayani terlebih dahulu. Pada skema ini, proses yang meminta CPU pertama kali akan dialokasikan ke CPU pertama kali.
Misalnya terdapat tiga proses yang dapat dengan urutan P1, P2, dan P3  denganwaktu CPU-burst dalam milidetik yang diberikan sebagai berikut :
Process
Burst Time
P1
24
P2
3
P3
3

                                      

Gant Chart dengan penjadwalan FCFS adalah sebagai berikut :


P1

P2

P3



0                                                            24              27              30

Waktu tunggu untuk P adalah 0, P adalah 24 dan P adalah 27 sehingga  rata-ratwaktu tunggu adalah  (0 24 + 27)/3 = 17 milidetik Sedangkan apabila prosesdatang dengan  uruta P2, P3, dan P1, hasil penjadwalan  CPU dapa dilihat  padagant chart

Waktu tunggu sekarang untuk P adalah 6, P adalah 0 dan P adalah 3 sehinggarata- rata waktu tunggu adalah  (6 + 0 + 3)/3 = 3 milidetik.  Rata-rata waktu tunggukasus ini jauh  lebih  baik  dibandingkan  dengan  kasus  sebelumnya. 
           Pada  penjadwalan  CPU dimungkinka terjad Convo effect  apabila  proses yang  pendek  berad pada  proses yang panjang.
Algoritm FCFS  termasuk  non-preemptive karena sekal CPU  dialokasikan pada  suat proses mak proses  tersebut  tetap  akan  memaka CPU sampai  proses tersebut melepaskannya, yaitu jika proses tersebut berhenti ataumeminta I/O.


1.3.2    Shortest Job First Scheduler (SJF)

Pada penjadwalan  SJF, proses yang memiliki CPU burst paling kecil dilayani terlebih dahulu.Terdapat dua skema :
1.   Non  preemptive bila  CPU  diberika pada  proses,  mak tidak  bisa  ditunda sampai  CPU burst selesai.
2.   Preemptive,  jika proses  baru datang dengan panjang  CPU burst lebihpendek dari sisa waktu proses yang saat itu sedang dieksekusi, proses ini ditundadan diganti  dengan  proses  baru.  Skem ini  disebu dengan  Shortest-RemainingTime-First (SRTF).
              SJF adalah algoritma penjadwalan yang optimal dengan rata-rata waktutunggu yang  minimal. Misalny terdapat  empa proses  denga panjang  CPU burst  dalamilidetik.

Process            Arrival Time   Burst Time

P1                               0.0                  7

P2                               2.0                  4

P3                               4.0                  1

P4                               5.0                  4
Penjadwala prose denga algoritm SJF  (non-preemptive 
Waktu tunggu untuk P adalah 0, P adalah 26, P adalah 3 dan P adalah 7sehingga rata-rata waktu tunggu adalah  (0 + 6 + 3 + 7)/4 = 4 milidetik.  SedangkanPenjadwalan
proses dengan algoritma SRTF (preemptive) 

Waktu tunggu untuk P adalah 9, P adalah 1, P adalah 0 dan P adalah 4sehingga rata-rata waktu tunggu adalah  (9 + 1 + 0 + 4)/4 = 3 milidetik.


Meskipun algoritma ini optimal, namun pada kenyataannya sulit untuk diimplementasikan   karena  sulit  untuk  mengetahui  panjan CPU  burst  berikutnya.Namun nilai ini dapat diprediksi.   CPU burst berikutnya  biasanya diprediksi sebagai suatu   rata-rata   eksponensial   yang   ditentukan   dari   CPU   burst   sebelumny atau
Exponential Average”.


 Ï„ n +1 = Î± t0 + (1  Î± )Ï„ n
dengan:  
       Ï„ n += panjang CPU burst yang diperkirakan
Ï„ 0               = panjang CPU burst sebelumnya

Ï„ n              = panjang CPU burst yang ke-n (yang sedang berlangsung)


α   
= ukuran pembanding antara Ï„ n + dengan Ï„ n   (0 sampai 1) Grafikhasil prediksi CPU burst dapat dilihat pada Gambar 1-3.

                                          Gambar 1-3 : Prediksi panjang CPU burstberikutnya

Sebagai contoh, jika Î± = 0,5, dan:
CPU burst (Ï„ n )         =        6     1 13  13  . . .
    Ï„ n                                                           = 10      9   11  12  . . .


Pada awalnya Ï„ 0   = 6 dan Ï„ n   = 10, sehingga :

Ï„ 2               = 0,5 * 6 + (1 - 0,5) * 10 = 8

Nilai yang dapat digunakan untuk mencari Ï„ 3

Ï„ 3               = 0,5 * 4 + (1 - 0,5) * 8 = 6



1.3.3    Priority Scheduling

Algoritma SJF adalah suatu kasus khusus dari penjadwalan berprioritas. Tiap- tiap proses dilengkapi dengan nomor prioritas (integer). CPU dialokasikan untuk prosesyang memiliki prioritas paling tinggi (nilai integer terkecil biasanya merupakan prioritas terbesar).  Jika beberap prose memilik prioritas  yang  sama maka  akan digunakan algoritma FCFS. Penjadwalan berprioritas terdiri dari dua skema yaitu  nonpreemptive dan preemptive.   Jika ada proses P yang datang pada saat P sedangberjalan, maka akan dilihat prioritas P1. Seandainya prioritas P1 lebih besar dibandingdengan prioritas P0, maka pada non-preemptive algoritm tetap akan menyelesaikan P sampai habis CPU   burst-nya,   dan   meletakkan   P1    pada   posisi   head  queue.   



1.3.4    Round-Robin Scheduling

Konsep dasar dari algoritma ini adalah dengan menggunakan time-sharing. Pada dasarny algoritm ini  sam dengan  FCFS hany saj bersifa preemptive Setiap proses mendapatkan waktu CPyang disebut dengan waktu quantum (quantum time)untuk membatasi waktu proses, biasanya 1-100 milidetik.   Setelah waktu habis, proses ditunda dan ditambahkan pada ready queue.
Jika suatu proses memiliki CPU burst lebih kecil dibandingkan dengan waktu quantum mak proses  tersebut  akan  melepaskan  CPU  jika  telah  selesa bekerja, sehingga CPU dapat segera digunakan oleh proses selanjutnya. Sebaliknya, jika suatu proses  memiliki  CPU  burst  yang  lebih  besar  dibandingkan  dengan  waktu  quantum,maka proses tersebut akan dihentikan sementara jika sudah mencapai waktuquantum, dan selanjutnya mengantri kembali pada posisi ekor dari ready queue, CPUkemudiamenjalankan proses berikutnya.
Jika terdapa n proses  pada ready  queue dan waktu  quantum  q, makasetiap proses mendapatkan 1/n dari waktu CPU paling banyak unit waktu pada sekali penjadwala CPU.           Tidak  ada proses  yang  menunggu  lebih  dari (n-1) unitwaktu. Performansi algoritma round robin dapat dijelaskan sebagai berikut, jika q besar,maka yang digunakan adalah algoritma FIFO, tetapi jika q kecil maka sering terjadicontext
switch.

Misalkan ada 3 proses: P1, P2, dan P yang meminta pelayana CPU dengan

quantum-time sebesar 4 milidetik.

Process            Burst Time

P1                             24

P2                               3

P3                               3




 Penjadwalan proses dengan algoritma round robin dapat dilihat pada gant chart berikut :




P1
P2
P3
P1
P1
P1
P1
P1
0                4          7          10             14            18               22               26          30

Waktu tunggu untuk P1 adalah 6, P2 adalah 4, dan P3 adalah 7 sehingga rata-ratawaktu tunggu adala (6 + 4 + 7)/3 = 5.66 milidetik.
Algoritma Round-Robin ini di satu sisi memiliki keuntungan, yaitu adanya keseragama waktu. Namun di sisi lain, algoritma  ini akan terlalu sering melakukan switching seperti yang terlihat pada Gambar 1-4. Semakin besar quantum-timenya maka
switching yang terjadi akan semakin sedikit.
                           Gambar 1-4 : Menunjukkan waktu kuantum yang lebih kecil meningkatkan context switch

Waktu  turnaround  jug tergantun ukura waktu  quantum. Sepert padaGambar 1-5, rata-rata waktu turnaround tidak meningkat bila waktu quantum dinaikkan.Secara umum, rata-rata waktu turnaround dapat ditingkatkan jikbanyak prosesmenyelesaika CPU burst berikutny sebagai  satu waktu quantum.   Sebagai contoh, terdapat tiga proses masing-masing  10 unit waktu dan waktu quantum 1unit waktu, rata-rata  waktu turnaroun adalah 29.   Jika waktu quantum  10,sebaliknya,  rata-ratwaktu turnaround turun menjadi 20.