Selasa, 17 November 2015

Penjadwalan CPU




KONSEP DASAR

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
Siklus CPU-I/O Burst





 Histogram waktu CPU burst 
 

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 burst nya sangan  lama.
Hal ini dapat digambarkan  dengan grafik yang eksponensial  atau hiper eksponensial seperti pada Gambar diatas. Oleh karena itu sangat penting pemilihan algoritma penjadwalan CPU.

 CPU Scheduler
Pada  saat  CPU  menganggur,  maka  sistem  operasi  harus  menyeleksi  proses- proses yang ada di memori utama (ready queue) untuk dieksekusi dan mengalokasikan CPU untuk salah satu dari proses tersebut.   Seleksi semacam ini disebut dengan short- term scheduler (CPU scheduler).  Keputusan untuk menjadwalkan CPU mengikuti empa 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 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). Preemptive scheduling 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
Dispatcher  adalah  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.

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. Utilitas CPU dinyatakan dalam bentuk prosen yaitu 0-100%. Namun dalam kenyataannya hanya berkisar antara 40-90%. 
  2. Throughput.  Adalah banyaknya  proses yang selesai dikerjakan  dalam satu satuan waktu 
  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 ready queue. 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 pembagian waktu penggunaan CPU secara terbuka (fair).

Proses Proses



KONSEP PROSES

Sistem  operasi  mengeksekusi  berbagai  jenis  program. Pada  sistem  batch program  tersebut  biasanya  disebut  dengan  job, sedangkan  pada sistem  time sharing, program disebut  dengan program user atau task. Beberapa  buku teks menggunakan istilah job atau proses.
Proses  adalah  program  yang  sedang  dieksekusi. Eksekusi  proses  dilakukan secara berurutan. Dalam suatu proses terdapat program counter, stack dan daerah data.

Status Proses 
Meskipun tiap-tiap proses terdiri dari suatu kesatuan yang terpisah namun adakalanya proses-proses tersebut butuh untuk saling berinteraksi. Satu proses bisa dibangkitkan dari output proses lainnya sebagai input.
Pada saat proses dieksekusi, akan terjadi perubahan status. Status proses didefiniskan  sebagai  bagian  dari  aktivitas  proses  yang  sedang  berlangsung  saat  itu. Gambar dibawah menunjukkan diagram status proses.  Status proses terdiri dari : 

  1. New: proses sedang dibuat 
  2. Running: proses sedang dieksekusi 
  3. Waiting:  proses  sedang  menunggu   beberapa  event  yang  akan  terjadi  (seperti menunggu untuk menyelesaikan I/O atau menerima sinyal). 
  4. Ready: proses menunggu jatah waktu dari CPU untuk diproses 
  5. Terminated: proses telah selesai dieksekusi 

Process Control Block (PCB)
Masing-masing    proses    direpresentasikan    oleh    Sistem    Operasi    dengan menggunakan Process Control Block (PCB), seperti yang terlihat pada Gambar



Informasi yang terdapat pada setiap proses meliputi :
  1. Status Proses. New, ready, running, waiting  dan terminated. 
  2. Program  Counter.  Menunjukkan  alamat  berikutnya  yang  akan  dieksekusi  oleh proses tersebut 
  3. CPU  Registers.   Register   bervariasi   tipe  dan  jumlahnya   tergantung   arsitektur komputer  yang  bersangkutan.  Register-register  tersebut  terdiri-atas:  accumulator, index register, stack pointer, dan register serbaguna dan beberapa informasi tentang kode kondisi. Selama Program Counter berjalan, status informasi harus disimpan pada saat terjadi interrupt.  Gambar  diatas  menunjukkan  switching  proses  dari  satu  proses  ke proses berikutnya. 
  4. Informasi Penjadwalan  CPU. Informasi tersebut berisi prioritas dari suatu proses, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan yang lainnya. 
  5. Informasi  Manajemen  Memori.  Informasi  tersebut  berisi  nilai  (basis)  dan  limit register,  page  table,  atau  segment  table  tergantung  pada  sistem  memory  yang digunakan oleh SO.
  6. Informasi  Accounting.  Informasi  tersebut  berisi  jumlah  CPU  dan real time  yang digunakan, time limits, account numbers, jumlah job atau proses, dll.
  7. Informasi  Status  I/O.  Informasi  tersebut  berisi  deretan  I/O  device  (seperti  tape driver) yang dialokasikan untuk proses tersebut, deretan file yang dibuka, dll 




 Perpindahan CPU dari satu proses ke proses lain