Penjadwalan proses
Preemptive, Non Preemptive; FCFS, SJF, SRTF, RR, Prioritas,
Multilevel Queue, Multilevel Feed- back Queue
Sehingga waktu tunggu untuk tiap-tiap proses terlihat pada tabel berikut:
AWT = (0+23+29)/3 = 17,3 ms
Pada algoritma ini setiap proses yang ada di ready queue akan dieksekusi berdasarkan burst time
terkecil. Hal ini mengakibatkan waiting time yang pendek untuk setiap proses dan karena hal
tersebut maka waiting time rata-ratanya juga menjadi pendek, sehingga dapat dikatakan bahwa
algoritma ini adalah algoritma yang optimal.
Burst time : asumsi berapa lama sebuah proses membutuhkan CPU diantara proses menunggunya
I/O. Hal ini tidak dapat diprediksi secara tepat sebelum dimulainya sebuah proses. Artinya jumlah
waktu yang dibutuhkan sebuah proses dalam menggunakan CPU dalam sebuah satuan
waktu.(Sebuah proses dapat menggunakan CPU selama beberapa kali selama task yang diberikan
belum diselesaikan).
Algoritma ini digunakan ketika CPU bebas proses yang mempunyai waktu terpendek untuk
menyelesaikannya mendapat prioritas. Seandainya dua proses atau lebih mempunyai waktu yang
sama maka FCFS algoritma digunakan untuk menyelsaikan masalah tersebut.Prinsip algoritma
penjadwalan ini adalah, proses yang memiliki CPU burst paling kecil dilayani terlebih dahulu.
Oleh karena itu, algoritma ini optimal jika digunakan, tetapi sulit untuk diimplementasikan karena
sulit mengetahui CPU burst selanjutnya.
Contoh:
Ada 4 buah proses yang datang berurutan yaitu :
P1 dengan arrival time pada 0.0 ms dan burst time 7 ms,.
P2 dengan arrival time pada 2.0 ms dan burst time 4 ms.
P3 dengan arrival time pada 4.0 ms dan burst time 1 ms.
P4 dengan arrival time pada 5.0 ms dan burst time 4 ms.
Hitunglah waiting time rata-rata dan turnaround time dari keempat proses tersebut dengan
mengunakan algoritma SJF.
Average waiting time rata-rata untuk ketiga proses tersebut adalah sebesar (0 +6+3+7)/4=4 ms.
Average waiting time rata-rata untuk ketiga prses tersebut adalah sebesar (9+1+0+2)/4=3 ms.
Ada beberapa kekurangan dari algoritma ini yaitu:
1. Susahnya untuk memprediksi burst time proses yang akan dieksekusi selanjutnya.
2. Proses yang mempunyai burst time yang besar akan memiliki waiting time yang besar pula karena
yang dieksekusi terlebih dahulu adalah proses dengan burst time yang lebih kecil.
Algoritma ini dapat dibagi menjadi dua bagian yaitu :
1. Preemptive : Jika ada proses yang sedang dieksekusi oleh CPU dan terdapat proses di ready
queue dengan burst time yang lebih kecil daripada proses yang sedang dieksekusi tersebut, maka
proses yang sedang dieksekusi oleh CPU akan digantikan oleh proses yang berada di ready queue
tersebut. Preemptive SJF sering disebut juga Shortest-Remaining- Time-First scheduling.(SRTF)
CONTOH SJF-PREEMPTIVE:
2. Non-preemptive : CPU tidak memperbolehkan proses yang ada di ready queue untuk menggeser
proses yang sedang dieksekusi oleh CPU meskipun proses yang baru tersebut mempunyai burst
time yang lebih kecil.
CONTOH SJF-NON PREEMPTIVE :
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 ditentukan melalui beberapa karakteristik antara lain:
1. Time limit.
2. Memory requirement.
3. Akses file.
4. Perbandingan antara burst M/K dengan CPU burst.
5. Tingkat kepentingan proses.
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 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
depan queue.
Kelemahan pada priority scheduling adalah dapat terjadinya indefinite blocking( starvation). Suatu
proses dengan prioritas yang rendah memiliki kemungkinan 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.
Contoh:
Terdapat 5 proses seperti pada tabel berikut:
Sehingga waktu tunggu untuk tiap-tiap proses terlihat pada tabel berikut:
Contoh:
Terdapat 3 proses seperti pada tabel berikut:
Hitunglah AWT menggunakan algoritma RR dengan Q=3.
Sehingga waktu tunggu untuk tiap-tiap proses terlihat pada tabel berikut:
Ide dasar dari algoritma ini berdasarkan pada sistem prioritas proses. Prinsipnya, jika setiap proses
dapat dikelompokkan berdasarkan prioritasnya, maka akan didapati queue seperti pada gambar
berikut: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
dengan priority 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.
a. Jumlah antrian.
b. Algoritma penjadwalan tiap antrian.
c. Kapan menaikkan proses ke antrian yang lebih tinggi.
d. Kapan menurunkan proses ke antrian yang lebih rendah.
e. 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 algoritma multilevel
queue. Perbedaan mendasar yang membedakan multilevel feedback queue dengan 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 algoritma multilevel 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.
F. Virtual Memory
DEMAND PAGING
Demand Paging atau permintaan pemberian halaman adalah salah satu implementasi dari
memori virtual yang paling umum digunakan. Demand paging pada prinsipnya hampir sama
dengan permintaan halaman ( paging ) hanya saja halaman ( page ) tidak akan dibawa ke dalam
memori fisik sampai ia benar-benar diperlukan. Untuk itu diperlukan bantuan perangkat keras
untuk mengetahui lokasi dari page saat ia diperlukan. Page diletakkan di memori hanya jika
diperlukan. Hal ini menyebabkan kebutuhan I/O lebih rendah, kebutuhan memori lebih rendah,
respon lebih cepat dan lebih banyak user yang menggunakan.
Proses disimpan di memori sekunder (disk). Jika proses akan dieksekusi, maka dipindah (swap)
ke memori. Menggunakan lazy swapper untuk melakukan swapping bila page tersebut
akan digunakan yang berarti sebuah page tidak pernah ditukar ke memori kecuali page
diperlukan. Jika page diperlukan, dilakukan acuan ke page tersebut, tetapi jika acuan invalid
maka dilakukan penghentian.
Untuk membedakan antara page pada memori dengan page pada disk digunakan valid-invalid
bit. Tabel page untuk page yang berada di memori diset “valid’, sedangkan tabel
page untuk page yang tidak sedang di memori (ada pada disk) diset “invalid”.
Akses ke page yang diset “invalid” menyebabkan page fault, yang menyebabkan trap ke sistem
operasi. Karena status (register, kode kondisi, counter instruksi) dari proses ter-interrupt
disimpan bila terjadi page fault, proses dapat dimulai lagi pada tempat dan status yang sama,
kecuali page yang cocok sedang di memori dan sedang diakses. Prosedur untuk menangani page
fault.
Sistem operasi melihat tabel untuk menentukan jika acuan invalid maka proses
dihentikan dan page sedang tidak berada di memori.
Jika acuan invalid dilakukan trap ke sistem operasi.
Sistem mencari frame kosong
Sistem melakukan proses swapping ke frame bebas.
Tabel page di-reset, bit valid-invalid diset 1 atau valid
instruksi di-restart.
Apabila tidak ditemukan frame bebas maka dilakukan page replacement yaitu mencari beberapa
page di memori yang tidak digunakan kemudian dilakukan swap out ke backing store. Terdapat
beberapa algoritma page replacement dimana performansi algoritma diharapkan menghasilkan
jumlah page fault minimum. Beberapa page kemungkinan dibawa ke memori beberapa kali
Perangkat keras yang dibutuhkan untuk mendukung demand paging sama dengan perangkat
keras untuk sistem paging dengan swapping yaitu Tabel page : table mempunyai kemampuan
untuk memberi entry bit valid-invalid atau nilai khusus untuk bit proteksi
Memori sekunder : digunakan untuk membawa page yang tidak di memori dan biasanya adalah
disk kecepatan tinggi yang disebut swap device.
Algoritma page replacement secara umum diinginkan mempunyai rata-rata page fault terendah.
Algoritma dievaluasi dengan menjalankan pada string tertentu dari memori reference dan
menghitung jumlah page fault. String yang mengacu ke memori disebut reference string (string
acuan). String acuan dibangkitkan secara random atau dengan menelusuri sistem dan menyimpan
alamat dari memori acuan.
Terdapat beberapa algoritma page replacement, setiap sistem operasi mempunyai skema yang
unik. Algoritma page replacement secara umum diinginkan yang mempunyai rata-rata page fault
terendah. Algoritma page replacement di antaranya adalah:
Dari segi mekanisme algoritma tersebut, setiap akan timbul page fault, page yang diganti dengan
pilihan secara acak. Untuk segi tekniknya sendiri pun algoritma ini tidak perlu menggunakan
informasi dalam menentukan page yang diganti, di dalam memory utama itu sendiri pun sudah
mempunyai bobot yang sama untuk dipilih, karena teknik ini dapat dipakai untuk memilih page
sembarang. Termasuk page yang sudah dipilih dengan benar-benar / page yang tidak seharusnya
diganti.
Inti dari algoritma ini adalah simple / paling sederhana karena prinsipnya sama seperti prinsip
antrian tak berprioritas. Page yang masuk terlebih dahulu maka page tersebut akan keluar duluan
juga. Untuk algoritma ini menggunakan structure data stack. Jadi cara kerjanya yaitu dimana ketika
tidak ada frame yang kosong saat terjadi page fault maka korban yang dipilih adalah frame dengan
stack paling bawah seperti hal nya halaman yang sudah lama tersimpan didalam memory maka
dari itu algoritma ini juga bisa memindahkan page yang sering digunakan.
Contoh gambar page replacement FIFO
Dulu algoritma ini di anggap cukup mengatasi pergantian page sampai pada tahun 70-an, pada saat
itu juga Belady menemukan keganjalan pada algoritma ini dan dikenal dengan anomali Belady.
Anomali Belady itu sendiri ialah keadaan dimana page fault rate meningkat seiring dengan
pertambahannya jumlah frame.
Pengertian dari algoritma ini sendiri yaitu algoritma yang page nya paling optimal. Untuk prinsip
dari algoritma ini sangat efisien sekali karena hanya mengganti halaman yang sudah tidak terpakai
lagi dalam jangka waktu lama sehingga page fault yang terjadi akan berkurang dan terbebas dari
anomali Belady Selain itu juga page fault dari algoritma ini memiliki rate paling tinggi dari
algoritma lainnya dari semua kasus, akan tetapi belum bisa disebut sempurna karena sulit untuk
dimengerti dan dari segi system pun belum tentu bisa mengetahui page untuk berikutnya tetapi
dapat disimulasikan hanya untuk suatu program. Untuk intinya gunakanlah hingga mendekati page
optimal agar bisa memanfaatkannya.
Untuk mekanisme dari algoritma ini diberi dua bit untuk mencatat status page, diantaranya bit M
dan R yaitu :
Bit M : Page yang telah dimodifikasi
Bit M = 0 berarti tidak dimodif
Bit M = 1 berarti sudah dimodif
Bit R : Page yang sedang dipacu / referenced
Bit R = 1 berarti sedang di acu
Bit R = 0 berarti tidak sedang di acu
Adanya dua bit di atas maka akan dapat dikelompokkan menjadi 4 kelas page, yaitu :
Kelas 0 => Tidak sedang di acu / belum di modif (R=0, M=0)
Kelas 1 => Tidak sedang di acu / telah di modif (R=0, M=1)
Kelas 2 => Sedang di acu / belum di modif (R=1, M=0)
Kelas 3 => Sedang di acu / telah di modif (R=1, M=1)
Jadi, apabila algoritma ini diasumsikan kelas-kelas bernomor lebih rendah baru akan digunakan
kembali dalam relatif jangka waktu lama. Intinya algoritma ini mudah dipahami dan
dikembangkan karena sangat efisien walaupun tak banyak langkah dalam pemilihan page dan
kelemahannya juga tidak optimal tapi dalam kondisi normal yang memadai.
Algoritma second chance merupakan hasil modifikasi dari algoritma FIFO yang disempurnakan
lagi. Algoritma ini menggunakan tambahan berupa reference bit yang nilainya 0 atau 1. Jika dalam
FIFO menggunakan stack, maka second chance menggunakan circular queue. Halaman yang baru
di-load atau baru digunakan akan diberikan nilai 1 pada reference bit-nya. Halaman yang reference
bit-nya bernilai 1 tidak akan langsung diganti walaupun dia berada di antrian paling bawah
(berbeda dengan FIFO).
Apabila terjadi page fault dan tidak ada frame yang kosong, maka akan dilakukan razia
(pencarian korban) halaman yang reference bit-nya bernilai 0 dimulai dari bawah antrian
(seperti FIFO).
Setiap halaman yang tidak di- swap (karena reference bit-nya bernilai 1), setiap dilewati
saat razia reference bit-nya akan diset menjadi 0.
Algoritma Clock merupakan hasil modifikasi dari algoritma FIFO yang kedua dan juga merupakan
model lain dari algoritma page replacement second chance page, namun dalam implementasinya
menggunakan 'circular queue' dengan page berbentuk lingkaran.
Jika :
Nilai bit = 0, ganti page
Nilai bit = 1
- Ubah nilai bit = 0
- Pointer bergerak ke page berikutnya searah jarum jam.
2. Partisi Dinamis
Ciri-ciri:
1. Pada kondisi awal, memori tidak dibagi menjadi partisi-partisi
2. Pemartisian dilakukan pada saat image proses akan disalin ke memori utama.
3. Ukuran partisi yang dialokasikan akan disesuaikan dengan ukuran image proses.
4. Partisi akan dibebaskan jika program sudah selesai.
5. Keuntungan : tidak terjadi fragmentasi internal alokasi memori disesuaikan dengan besarnya image proses.
Cara kerja:
1. Pengalokasian dilakukan dengan mencari hole suatu ruang memori utama yang kosong, yang cukup
besar untuk menampung image proses.
2. Hole sisa kadang kala terlalu kecil untuk dapat dialokasikan ke proses lainnya sehingga tidak bisa
digunakan lagi fragmentasi eksternal.
3. Salah satu cara untuk mengatasi masalah ini adalah melakukan memory compaction.
Yaitu: menggeser image proses-proses yang ada di memori sehingga hole terkumpul di satu tempat saja
Kelemahan:
proses alokasi dan dealokasi menjadi lebih rumit
Perlu pengelolaan informasi area memori yang masih kosong.
2. Linked list
Informasi mengenai hole kosong berikutnya dicatat pada hole kosong sebelumnya.
Tidak diperlukan area memori khusus. Karena seluruh informasi tercatat di area memori kosong itu sendiri
sehingga menghemat kapasitas memori utama.
Diperlukan algoritma untuk menentukan hole mana yang akan dialokasikan ke suatu proses.
1. Algoritma Best-fit
Mencari memori blok yang paling kecil yang dapat menampung image proses
Memerlukan waktu lama karena harus searching seluruh blok memori utama
Fragmentasi eksternal dapat ditekan sekecil mungkin
2. Algoritma First-fit
Mencari memori kosong dari alamat awal sampai menemukan blok yang dapat menampung image proses
Sederhana dan cepat.
3. Algoritma Next-fit
Hampir sama dengan First-fit.
Bedanya: proses searching dimulai dari alamat alokasi terakhir
4. Algoritma Worst-fit
Mencari hole yang paling besar di seluruh area memori utama.
Tujuannya: hole sisa yang tercipta setelah alokasi masih cukup besar untuk dialokasikan ke proses lainnya.
3. Sistem Buddy
Berupa pemartisian secara dinamis
Ciri khusus adalah partisi yang terbentuk senantiasa berukuran besar sebesar bilangan 2n
2,4,8,16…..256,512,1024(1Mb)
Alokasi memori pada sistem buddy:
1) Menentukan ukuran partisi
Ditentukan ukuran partisi untuk menampung image proses yaitu ukuran bilangan pangkat 2 terkecil
Misal : ukuran image proses = 12kb, maka ukuran partisi yang bisa digunakan adalah 16kb.
2) Pengalokasian
Selanjutnya adalah mencari hole yang ukurannya sebesar perhitungan.
Jika tidak ada maka dicarikan hole yang berukuran sedikit lebih besar. Kemudian dipecah secara bertahap
sesuai dengan aturan bilangan pangkat 2.
Misal : ukuran image proses = 12kb dan hole yang paling kecil adalah 64kb.
maka dipecah menjadi 2 partisi 32kb, selanjutnya dipecah lagi menjadi 2 partisi 16kb.
dan partisi 16kb pertama yang bisa dipakai untuk image proses 12kb.