Jumat, 16 Januari 2015

STARVATION

STARVATION

A. Pengertian Starvation
         Perkembangan sistem komputer mendatang adalah menuju ke sistem multi-processing, multiprogramming, terdistribusi dan paralel yang mengharuskan adanya proses-proses yang berjalan bersama dalam waktu yang bersamaan. Hal demikian merupakan masalah yang perlu perhatian dari perancang sistem operasi. Kondisi dimana pada saat yang bersamaan terdapat lebih dari satu proses disebut dengan kongkurensi (proses-proses yang kongkuren). Dan dalam kongruensi ini pasti ada masalah yang salah satunya adalah STARVATION. Starvation adalah kondisi yang biasanya terjadi setelah deadlock. Proses yang kekurangan resource (karena terjadi deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami starvation (kelaparan).Ilustrasi starvation dengan deadlock seperti pada gambar di bawah ini.


          Dalam kasus diatas, antrian di sebelah kiri menunggu antrian kanan untuk mengosongkan jembatan (resource), begitu juga dengan antrian kanan. Akhirnya tidak terjadi kemajuan dalam kerja dua antrian tersebut.Misal ada proses A mempunyai resource X, proses B mempunyai resource Y. Kemudian kedua proses ini dijalankan bersama, proses A memerlukan resource Y dan proses B memerlukan resource X, tetapi kedua proses tidak akan memberikan resource yang dimiliki sebelum proses dirinya sendiri selesai dilakukan. Sehingga akan terjadi tunggu-menunggu.
  Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya. Ilustrasi starvation tanpa deadlock di dunia nyata dapat dilihat di bawah ini. Pada gambar di bawah ini.



pada antrian kanan terjadi starvation karena resource (jembatan) selalu dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran. Jika dua proses ingin mengakses satu sumber daya tunggal maka sistem operasi mengalokasikan untuk salah satu proses dan mengharuskan proses lain menunggu. Proses yang ditolak pengaksesan menjadi melambat. Jika terlalu parah maka proses di-blocked terus-menerus sehingga tidak pernah mengakses sumber daya. Proses tidak pernah dapat berakhir dengan suskses.



Dalam beberapa cara Starvation dapat diselsaikan dengan sumber daya yang dialokasikan dengan dengan melibatkan sistem operasi, dengan pengendaliain  persaingan ini proses-proses seperti ini akan teratasi. Kerjasama ini meliputi sistem operasi yang saling berinteraksi tanpa dinyatakan dengan eksplisit. Sistem operasi ini sudah terprogram melalui sistem call jadi antara proses satu dengan yang lain tidak ada pembedaan yang mengakibatkan persaingan antara proses-proses tersebut. Program ini sudah dimasukkan dalam sistem operasi yang sudah sesuai dengan mutual exclusion.

B. Algoritma Starvation
Starvation dapat terjadi pada proses penjadwalan yang menggunakan prinsip “proses yang paling cepat diselesaikan didahulukan”, seperti pada Shortest Job First (SJF) dan Penjadwalan Prioritas.

Logikanya, jika kita mempunyai banyak kebutuhan, kita akan memilahnya mana yang didahulukan berdasarkan sesuatu. Setelah kita selesai menyusunnya, ternyata ada kebutuhan lain yang datang (misalkan kebutuhan A) dan ternyata kebutuhan itu mengalahkan salah satu kebutuhan kita. Sebelum kebutuhan A terpenuhi, datang lagi kebutuhan lain yang mengalahkan kebuthan awal. Jika hal ini terjadi secara terus menerus, maka ada kebuthan awal kita yang tidak terpenuhi (starvation).

Contoh nyatanya, pada kehidupan mahasiswa. Seorang mahasiswa telah memiliki 3 tugas dan ingin juga menonton film baru. Mahasiswa tersebut mendahulukan menyelesaikan tugas dibandingkan menonton. Sebelum ketiga tugas tersebut selesai, dosen lain memberinya tugas baru. Keesokan harinya ada tugas dari asisten untuk praktikum berikutnya. Ketika tugas satu belum selesai, sudah ada tugas lain dari dosen atau asisten. Hal ini terus berulang, sehingga keinginan mahasiswa tersebut untuk menonton film baru bisa tidak terlaksana atau tidak terpenuhi.

C. Mengatasi Starvation


Ada beberapa cara untuk mengatasi Starvation, salah satunya dengan Aging. Pada flowchart di atas, proses awal yang ada diberi urutan ( N ) pemrosesan dengan rumus N = ( P+T ) / P. N maksimum akan mulai dikerjakan dan proses yang lain dinaikkan tingkat urutan prosesnya agar nanti jika ada proses lain yang masuk, proses terdahulu mendapatkan bagian resource dan dapat dikerjakan. Jika ada beberapa proses yang memiliki N maksimum, maka diantara proses tersebut dilihat dari waktu yang dibutuhkan untuk menyelesaikannya. Jika masih sama juga, maka dilihat waktu kedatangannya. 
Selain itu, Starvation juga dapat diatasi dengan pemrosesan dengan cara Round Robin. Pada Round Robin, proses yang masuk akan dimasukkan ke dalam antrian menurut kedatangan proses tersebut. Dalam penyelesainnya, suatu proses tidak akan langsung selesai jika waktu yang dibutuhkan melebihi waktu kuantum yang diberikan. Waktu kuantum adalah waktu yang diberikan untuk menyelesaikan suatu proses. Ketika sutu proses telah mencapai batas waktu kuantum, sisa dari proses tersebut dikembalikan ke antrian paling belakang dan resource dipindahkan ke proses selanjutnya. Dengan cara ini, semua proses yang mengantri, akan mendapatkan resource secara bergantian ( tidak ada proses yang memonopoli resource ) sehingga semua proses dapat diselesaikan.

DEADLOCK

Deadlock

Prinsip-Prinsip Deadlock

1. Definisi Deadlock
    Pemblokiran permanen sejumlah proses yang berkompetesi dalam mendapatkan sumber daya sistem                  atau yang berkomunikasi satu dengan lainnya.
    Semua Deadlock mencakup konflik kebutuhan akan sumber daya oleh dua proses atau lebih. Contoh yang umumnya adalah Deadlock lalu lintas . Gambar 1.1 menunjukan situasi empat mobil tiba dipersimpangan empat arah dalam waktu yang hampir bersamaan. keempat kuadran persimpangan itu merupakan sumber daya yang memerlukan kontrol, pada suatu saat, apabila keempat mobil itu ingin melintasi persimpangan, persyaratan sumber dayanya adalah sebagai berikut:


  • Mobil yang bergerak ke utara membutuhkan kuadran 1 dan kuadran 2.
  • Mobil yang bergerak ke barat membutuhkan kuadran 2 dan kuadran 3.
  • Mobil yang bergerak ke selatan membutuhkan kuadran 3 dan kuadran 4.
  • Mobil yang bergerak ke timur membutuhkan kuadran 4 dan kuadran 1.
Aturan jalan raya yang normal adalah bahwa mobil yang berada dipersimpangan empat arah harus memberikan jalan kepada mobil yang berada disebelah kanannya. Aturan ini akan berfungsi apabila terdapat hanya dua atau tiga mobil di persimpangan itu, Misalnya, apabila hanya mobil yang menuju utara dan yang menuju barat tiba dipersimpangan, mobil yang menuju utara akan menunggu, sedangkan mobil yang menuju barat melanjutkan perjalanannya. Namun apabila empat buah mobil tiba dipersimpangan pada saat yang hampir bersamaan, keempat mobil itu akan terjadi Deadlock.

  • Penjelasan Deadlock (Gambar 1.1)

  •  Contoh Deadlock (Gambar 1.2)

Apabila keempat mobil itu mengabaikan aturan  dan melanjutkan perjalanan dengan melintasi persimpangannya, keempat mobil itu akan mengambil satu sumber daya (satu kuadran) namun tidak dapat melanjutkan perjalannya karena sumber daya yang keduanya diperlukan telah diambil oleh mobil lainnya.   


       
2. Penyebab Deadlock  / Syarat Terjadi Deadlock

  •     Mutual Exclusion : Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada    suatu waktu.

  •     Hold and Wait : Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta    sumber daya yang lain.

  •     Non-pre-emptive : Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.

  •     Circular Wait : Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
3. Menghindari Deadlock
    Sistem perlu memiliki informasi awal mengenai kebutuhan sumber daya

  •  Tiap proses menyatakan kebutuhan maksimum tiap jenis sumber yg dibutuhkan
  •  Algoritma deadlock-avoidance secara dinamis memeriksa state alokasi sumber daya untuk   menjamin tdk terjadinya kondisi circular-wait
  • State alokasi sumber daya didefinisikan oleh banyaknya sumber daya yg tersedia dan yg dialokasikan, dan permintaan sumber daya maksimum oleh proses

Jika proses meminta sumber daya yg tersedia, sistem harus memutuskan apakah alokasi sumber daya ini   akan menghasilkan safe state
Sistem berada pada safe state jika terdapat urutan event yg tidak menyebabkan deadlock jika semua proses meminta sumber daya maksimum sekaligus

•   Logikanya:
     – Jika sistem berada pd safe state �� no deadlock
     – Jika sistem berada pd unsafe state �� kemungkinan deadlock
     – Pencegahan: sistem tidak masuk ke unsafe state

4. Mengatasi Deadlock
   Prevention : memastikan paling sedikit satu penyebab Deadlock tidak berlaku

  • Mutual Exclusion : membuat file spool untuk resource yang digunakan bersama-sama
  • Hold and Wait : memaksa sebuah proses untuk melepaskan resource yang dimilikinya ketika meminta resource baru
  • Circular Waiting : memberikan penamaan resource berdasarkan urutan atau level
  • No Preemption : membolehkan adanya preemption
  • Avoidance : sistem menolak request terhadap resource yang berpotensi deadlock, Algoritma Banker
  • Resource manager menolak proses yang meminta resource yang berpotensi deadlock
  • Jika ada permintaan resource yang maksimum digunakan, maka proses tersebut akan dipaksa untuk melepaskan resource yang sudah dimiliknya
  • Perlu adanya informasi tambahan
  • Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya, kemudian melakukan recovery, Algoritma Ostrich
  • Tindakan recovery yang dilakukan adalah : melakukan preemption, membuat checkpoint untuk rollback lalu membunuh proses yang prioritasnya kecil

5. Mencegah Deadlock
    Tiap proses harus meminta semua sumber daya yang diperlukan sekaligus dan tidak berlanjut sampai semuanya diberikan
    Jika proses telah sedang memegang resource tertentu, untuk permintaan berikutnya proses harus melepas dulu resource yg dipegangnya.
    Beri pengurutan linear terhadap resource pada semua proses

MUTUAL EXCLUSION

MUTUAL EXCLUSION


Penjelasan tema Mutual Exclusion
Pada system computer terdapat sumber daya yang tidak dapat dipakai bersama pada saat yang bersamaan seperti pada penggunaan printer, Sumber daya seperti hanya dapat menjalankan satu proses pada suatu saat, sumber daya ini disebut sumber daya kritis. Program yang menggunakan sumber daya kritis disebut sedang memasuki critical region / section .
Sistem operasi memberikan fasilitas untuk pemrogram dapat memberikan indikasi keberadaan critical region. Sistem operasi menyediakan layanan ( berupa system call ) untuk mencagah suatu proses masuk kedalam critical region akan tetapi di dalam critical region terdapat proses lain yang sedang berjalan. Mutual exclusion merupakan solusi bagi masalah pada critical region / section, mutual exclusion adalah persoalan untu menjamin hanya satu proses saja yang berjalan dalam suatu critical region / section.

Ilustrasi aplikasi tabungan


Seluruh sistem yang melibatkan banyak proses mengakses satu sumber daya bersama selalu menimbulkan persoalan mutual-exclusion.
Contohnya adalah sebagai berikut.
· Pada aplikasi tabungan, misalnya rekening A berisi Rp 1.000.000,- yang terdaftar di kantor cabang bandung.
· Kemudian pada suatu saat program aplikasi kantor cabang di Jakarta melayani penyetoran Rp 3.000.000,- ke rekening A. lalu program aplikasi membaca saldo akhir rekening A

Persoalan di atas dapat tidak terjamin mutual-exclusion jika:
1. Program aplikasi bandung menulis ke rekening A secara cepat sehingga di hasilkan saldo Rp 6.000.000. Setelah itu, program aplikasi kantor cabang Jakarta menimpa hasil itu dengan saldo Rp 4.000.000,- . Dalam kasus ini saldo akhir yang diperoleh adalah Rp 4.000.000,- bukan Rp 10.000.000,- (yang seharusnya).
2. Program aplikasi Jakarta dilakukan menulis ke rekening A secara cepat sehingga dihasilkan saldo Rp 4.000.000,-. Setelah itu program aplikasi di kantor bandung menimpa hasil itu dengan saldo Rp 6.000.000,-. Hasil yang lebih baik dibanding skenario pertama tetapi masih di bawah yang seharusnya yaitu Rp 10.000.000,-.

Kriteria Penyelesaian Mutual-Exclusion


Kemampuan menjamin mutual-exclusion harus memenuhi kriteria-kriteria berikut:
1. Mutual-exclusion harus dijamin.
2. Hanya satu proses pada satu saat yang diizinkan masuk critical section yang sama pada saat telah ada proses yang masuk critical section itu.
3. Proses yang berada di noncritical section, dilarang mem-block proses-proses lain yang ingin masuk critical section.
4. Harus dijamin proses yang ingin masuk critical section tidak menunggu selama waktu yang tak berhingga atau tidak boleh terjadi deadlock maupun startvation.
5. Ketika tidak ada proses di critical section, maka proses yang ingin masuk critical section harus diizinkan segera masuk tanpa ada waktu tunda.
6. Tidak ada asumsi mengenai kecepatan relatif proses atau jumlah proses yang ada. kriteria pada nomor satu merupakan kriteria pokok yang harus dipenuhi. Metode yang melanggar kriteria nomor satu sama sekali tidak dapat di gunakan. Pelanggaran kriteria-kriteria lain berarti metode masih bisa digunakan pada situasi-situasi tertentu tapi harus dilakukan secara hati-hati.

KONGKURENSI

Pengertian Kongkurensi 
Perkembangan sistem komputer mendatang adalah menuju ke sistem multiprocessing, multiprogramming, terdistribusi1 dan paralel2 yang mengharuskan adanya proses-proses yang berjalan bersama dalam waktu yang bersamaan. Hal demikian merupakan masalah yang perlu perhatian dari perancang sistem operasi. Kongkurensi merupakan landasan umum perancangan sistem operasi. Proses  -proses disebut kongkurensi jika proses-proses (lebih dari satu proses) berada pada saatyang sama. Proses-proses yang mengalami kongkuren dapat berdiri sendiri (independen) atau dapat saling berinteraksi, sehingga membutuhkan sinkronisasi atau koordinasi proses yang baik. Untuk penanganan kongkuren, bahasa pemograman saat ini telah memiliki mekanisme kongkurensi dimana dalam penerapannya perlu dukungan sistem operasi dimana bahasa berada.
Prinsip - prinsip Kongkurensi meliputi hal-hal berikut 
1. alokasi waktu pemrosesan untuk proses-proses.
2. pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
3. komunikasi antar proses
4. sinkronisasi aktivitas banyak proses
Permasalahan Kongkurensi
Proses yang kongkuren ini mempunyai beberapa masalah yang harus diselesaikan,yaitu :  1. Mutual exclusion (pengeluaran timbal balik)
Merupakan kondisi dimana terdapat sumber daya yang tidak dapat dipakai bersama pada waktu yang bersamaan (misalnya : printer, disk drive).
2. Deadlock (buntu)
Deadloc
k merupakan kondisi terparah karena banyak proses dapat terlibat dan semuanya tidak dapat mengakhiri prosesnya secara benar.
3. Starvation(kelaparan)
Starvation
adalah keadaan dimana pemberian akses bergantian terus-menerus,dan ada suatu proses yang tidak mendapatkan gilirannya.
4. 
Sinkronisasi.
Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan.
Kesulitan – Kesulitan Yang ditimbulkan Kongkurensi :
·         1. Pemakaian bersama sumber daya global.
Apabila terdapat dua proses yang menggunakan variabel global yang sama serta keduanya membaca dan menulis ke variabel itu, maka urutan terjadinya pembacaan dan penulisan terhadap variabel itu menjadi kritis.
·       2. Pengelolaan alokasi sumber daya agar optimal.
Apabila proses A meminta suatu kanal masukan/keluaran tertentu dan dipenuhi,kemudian terjadi proses A di suspend sebelum menggunakan kanal tersebut. Jika sistem operasi mengunci kanal (tidak memperbolehkan atau mencegah proses lainuntuk menggunakannya), maka tindakan tersebut menghasilkan inefisiensi.
3. Pencarian kesalahan pemrograman.
Pencarian kesalahan pada pemograman kongkuren lebih sulit dibanding pencarian kesalahan pada program-program sekuen.


Untuk lebih jelasnya silahkan Klik dibawah ini.

Kamis, 15 Januari 2015

MULTILEVEL

Multilevel Queue

Ide dasar dari algoritma ini berdasarkan pada sistem prioritas proses. Prinsipnya, jika setiap proses dapat dikelompokkan berdasarkan prioritasnya, maka akan didapati queueseperti pada gambar berikut:
Gambar 14.6. Multilevel Queue 
Multilevel Queue
Dari gambar tersebut terlihat bahwa akan terjadi pengelompokan proses-proses berdasarkan prioritasnya. Kemudian muncul ide untuk menganggap kelompok-kelompok tersbut sebagai sebuah antrian-antrian kecil yang merupakan bagian dari antrian keseluruhan proses, yang sering disebut dengan algoritma multilevel queue.
Dalam hal ini, dapat dilihat bahwa seolah-olah algoritma dengan prioritas yang dasar adalah algoritma multilevel queue dimana setiap queue akan berjalan dengan algoritma FCFS yang memiliki banyak kelemahan. Oleh karena itu, dalam prakteknya, algoritma multilevel queue memungkinkan adanya penerapan algoritma internal dalam masing-masing sub-antriannya yang bisa memiliki algoritma internal yang berbeda untuk meningkatkan kinerjanya.
Berawal dari priority scheduling, algoritma ini pun memiliki kelemahan yang sama denganpriority scheduling, yaitu sangat mungkin bahwa suatu proses pada queue dengan prioritas rendah bisa saja tidak mendapat jatah CPU. Untuk mengatasi hal tersebut, salah satu caranya adalah dengan memodifikasi algoritma ini dengan adanya jatah waktu maksimal untuk tiap antrian, sehingga jika suatu antrian memakan terlalu banyak waktu, maka prosesnya akan dihentikan dan digantikan oleh antrian dibawahnya, dan tentu saja batas waktu untuk tiap antrian bisa saja sangat berbeda tergantung pada prioritas masing-masing antrian.

Multilevel Feedback Queue

Algoritma ini mirip sekali dengan algoritma multilevel queue. Perbedaannya ialah algoritma ini mengizinkan proses untuk pindah antrian. Jika suatu proses menyita CPU terlalu lama, maka proses itu akan dipindahkan ke antrian yang lebih rendah. Hal ini menguntungkan proses interaksi karena proses ini hanya memakai waktu CPU yang sedikit. Demikian pula dengan proses yang menunggu terlalu lama. Proses ini akan dinaikkan tingkatannya. Biasanya prioritas tertinggi diberikan kepada proses dengan CPU burst terkecil, dengan begitu CPU akan terutilisasi penuh dan M/K dapat terus sibuk. Semakin rendah tingkatannya, panjang CPU burst proses juga semakin besar.
Gambar 14.7. Multilevel Feedback Queue 
Multilevel Feedback Queue
Algoritma ini didefinisikan melalui beberapa parameter, antara lain:
  1. Jumlah antrian.
  2. Algoritma penjadwalan tiap antrian.
  3. Kapan menaikkan proses ke antrian yang lebih tinggi.
  4. Kapan menurunkan proses ke antrian yang lebih rendah.
  5. Antrian mana yang akan dimasuki proses yang membutuhkan.
Dengan pendefinisian seperti tadi membuat algoritma ini sering dipakai, karena algoritma ini mudah dikonfigurasi ulang supaya cocok dengan sistem. Tapi untuk mengatahui mana penjadwal terbaik, kita harus mengetahui nilai parameter tersebut.
Multilevel feedback queue adalah salah satu algoritma yang berdasar pada algoritmamultilevel queue. Perbedaan mendasar yang membedakan multilevel feedback queuedengan multilevel queue biasa adalah terletak pada adanya kemungkinan suatu proses berpindah dari satu antrian ke antrian lainnya, entah dengan prioritas yang lebih rendah ataupun lebih tinggi, misalnya pada contoh berikut.
  1. Semua proses yang baru datang akan diletakkan pada queue 0 ( quantum= 8 ms).
  2. Jika suatu proses tidak dapat diselesaikan dalam 8 ms, maka proses tersebut akan dihentikan dan dipindahkan ke queue 1 ( quantum= 16 ms).
  3. Queue 1 hanya akan dikerjakan jika tidak ada lagi proses di queue 0, dan jika suatu proses di queue 1 tidak selesai dalam 16 ms, maka proses tersebut akan dipindahkan ke queue 2.
  4. Queue 2 akan dikerjakan bila queue 0 dan 1 kosong, dan akan berjalan dengan algoritma FCFS.
Disini terlihat bahwa ada kemungkinan terjadinya perpindahan proses antar queue, dalam hal ini ditentukan oleh time quantum, namun dalam prakteknya penerapan algoritmamultilevel feedback queue akan diterapkan dengan mendefinisikan terlebih dahulu parameter-parameternya, yaitu:
  1. Jumlah antrian.
  2. Algoritma internal tiap queue.
  3. Aturan sebuah proses naik ke antrian yang lebih tinggi.
  4. Aturan sebuah proses turun ke antrian yang lebih rendah.
  5. Antrian yang akan dimasuki tiap proses yang baru datang.
Contoh: Terdapat tiga antrian; Q1=10 ms, FCFS Q2=40 ms, FCFS Q3=FCFS proses yang masuk, masuk ke antrian Q1. Jika dalam 10 ms tidak selesai, maka proses tersebut dipindahkan ke Q2. Jika dalam 40 ms tidak selesai, maka dipindahkan lagi ke Q3. Berdasarkan hal-hal di atas maka algoritma ini dapat digunakan secara fleksibel dan diterapkan sesuai dengan kebutuhan sistem. Pada zaman sekarang ini algoritma multilevel feedback queue adalah salah satu yang paling banyak digunakan.

Pegertian Round Robin

Disingkat dengan RR. Model Penjadwalan. Penjadwalan ini merupakan :
1. Penjadwalan preemptive, bukan di-preempt oleh proses lain, tapi terutama oleh penjadwal berdasarkan lama waktu berjalannya proses, disebut preempt by time.
2. Penjadwal tanpa prioritas.

Semua proses dianggap penting dan diberi sejumlah waktu proses yang disebut kwanta (quantum) atau time slice dimana proses itu berjalan.

Ketentuan algoritma round robin adlah sebagai berikut:
1. Jika kwanta dan proses belum selesai maka proses menjadi runnable dan pemroses dialihkan ke proses lain.
2. Jika kwanta belum habis dan proses menunggu suatu kejadian (selesainya operasi I/O), maka proses menjadi blocked dan pemroses dialihkan ke proses lain.
3. Jika kwanta belum habis tapi proses telah selesai, maka proses diakhiri dan pemroses dialihkan ke proses lain.

Algoritma penjadwalan ini dapat diimplementasi sebagai berikut:
- Mengelola senarai proses read (runnable) sesuai urutan kedatangan.
- Ambil proses yang berada di ujing depan antrian menjadi running.
- Bila kwanta belum habis dan proses selesai maka ambil proses di ujung depan antrian proses ready.
- Jika kwanta habis dan proses belum selesai maka tempatkan proses running ke ekor antrian proses ready dan ambil proses di ujung depatn antrian proses ready.

Round Robin

Algoritma ini menggilir proses yang ada di antrian. Proses akan mendapat jatah sebesar time quantum. Jika time quantum-nya habis atau proses sudah selesai, CPU akan dialokasikan ke proses berikutnya. Tentu proses ini cukup adil karena tak ada proses yang diprioritaskan, semua proses mendapat jatah waktu yang sama dari CPU yaitu (1/n), dan tak akan menunggu lebih lama dari (n-1)q dengan q adalah lama 1 quantum.

Algoritma ini sepenuhnya bergantung besarnya time quantum. Jika terlalu besar, algoritma ini akan sama saja dengan algoritma first come first served. Jika terlalu kecil, akan semakin banyak peralihan proses sehingga banyak waktu terbuang.

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 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.

priority scheduling

Penjadwalan Proses
            Penjadwalan berkaitan dengan permasalahan memutuskan proses mana yang akan dilaksanakan dalam suatu sistem. Proses yang belum mendapat jatah dari alokasi CPU akan mengantri di ready queue. Algoritma penjadwalan berfungsi untuk menentukan proses mana yang ada di ready queue yang akan dieksekusi oleh CPU.
Berikut ini adalah kriteria untuk mengukur dan meng-optimalisasi kinerja penjadwalan:
1.      Adil (fairness)
Adalah proses-proses yang diperlakukan sama, yaitu mendapat jatah waktu pemroses yang sama sehingga tidak ada proses yang tidak kebagian layanan pemrosesan.
2.      Efisiensi (eficiency)
Efisiensi atau utilisasi pemroses dihitung dengan perbandingan (rasio) waktu sibuk pemroses.
3.      Waktu Tanggap (response time)
Merupakan waktu yang diperlukan dari saat perintah dimasukkan sampai hasil pertama muncul di layar.
4.      Turn Around Time
Waktu yang dihabiskan dari saat program mulai masuk ke sistem sampai proses diselesaikan sistem. Waktu yang dimaksud adalah waktu yang dihabiskan didalam sistem.
5.      Throughput
Adalah jumlah kerja yang dapat diselesaikan dalam satu unit waktu.

Berikut ini adalah jenis-jenis algoritma penjadwalan:
·        FCFS (First Come First Serve)
·        SJF (Shortest Job First)
·        Priority Scheduling
·        Round Robin



            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.
Oleh karena itu pada sistem multiprogramming memerlukan proses penjadwalan yang berfungsi untuk mengatur dan menjadwalkan semua resource komputer sebelum digunakan.

Terdapat dua strategi penjadwalan yaitu :
1.      Penjadwalan Preemptive
Memiliki ciri khas:
ü  Pada saat CPU sedang digunakan oleh proses, CPU dapat diambil oleh proses lain.
ü  Dalam strategi penjadwalan ini harus selalu dilakukan perbaikan data.
2.      Penjadwalan Non Preemptive
Memiliki ciri khas:
ü  Jika proses sedang menggunakan CPU maka proses tersebut akan membawa CPU sampai proses tersebut melepaskannya (berhenti dalam keadaan wait).

v  Algoritma Priority Scheduling
Priority Scheduling merupakan algoritma penjadwalan yang mendahulukan proses yang memiliki prioritas tertinggi. Setiap proses memiliki prioritasnya masing-masing.

Prioritas suatu proses dapat dtentukan melalui beberapa karakteristik antara lain:
1.      Waktu
2.      Memori yang dibutuhkan
3.      Banyaknya file yang terbuka
4.      Perbandingan antara rata-rata I/O Burst dengan rata-rata CPU Burst
Priority Scheduling  juga dapat dijalankan secara preemptive maupun non-preemptive. Pada preemptive, jika ada suatu proses yang baru datang memiliki prioritas yang lebih tinggi daripada proses yang dijalankan, maka proses yang sedang berjalan tersebut dihentikan, lalu CPU dialihkan untuk proses yang baru datang tersebut. Misalnya jika ada proses P1 yang datang pada saat P0 sedang berjalan maka akan dilihat prioritas P1, jika prioritas P1>P0 maka P0 akan dihentikan dulu kemudian CPU akan dialokasikan untuk menjalankan proses P1.

Kelemahan dari priority scheduling adalah dapat terjadinya indefinite blocking (starvation), yaitu suatu proses dengan prioritas yang rendah memiliki kemungkinan untuk tidak dieksekusi jika terdapat proses lain yang memiliki tingkat prioritas yang lebih tinggi darinya.
Solusi dari permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap proses yang menunggu dalam queue secara bertahap.