PENDAHULUAN
1.1 Latar Belakang
Perkembangan komputer sudah sangat pesat dan banyak digunakan dalam bidang
kehidupan. Sangat jarang pengguna komputer mengetahui bagaimana komputer memproses
permasalahan yang dihadapi pengguna. Seperti halnya tentang sistem operasi yang
merupakan interface antara pengguna dengan perangkat keras computer. Sehingga kita tidak
dirumitkan rincian-rincian pengoperasian perangkat keras.
Sistem operasi melakukan beragam tugas, salah satu tugas yang paling penting adalah
manajemen proses, dimana mengelola semua proses aktif dan mengalokasikan sumber daya
ke proses-proses itu sesuai kebijaksanaan yang diambil untuk memenuhi sasaran kinerja.
Untuk memutuskan proses yang harus berjalan, kapan dan selama berapa lama proses itu
berjalan maka diperlukan suatu teknik penjadwalan yang efektif.
Sinkronisasi juga bagian penting karena bisa menghindari sesuatu yang tidak
konsisten akibat data akses yang kurang akurat. Banyak proses yang mengakses satu data
pada saat yang bersamaan. Sehingga memungkinkan terjadinya ketidakkonsistenan data.
Untuk itulah, sinkronisasi proses dipelukan untuk menjaga agar data tersebut tetap konsisten.
1.2
Rumusan Masalah
Tujuan
a. Untuk mengetahui apa saja konsep dasar penjadwalan CPU dan sikronisasi proses ?
b. Untuk mengetahui apa saja kriteria penjadwalan ?
BAB II
PEMBAHASAN
2.1
Konsep Dasar
Penjadwalan CPU adalah suatu proses pengaturan atau penjadwalan proses-proses yang
ada di dalam komputer. Dimana proses-proses tersebut berjalan dalam pola yang disebut
Siklus Burst. Penjadwalan bertugas memutuskan :
bertujuan untuk memaksimalkan penggunaan CPU dengan cara mengatur alokasi waktu yang
digunakan oleh CPU, sehingga proses berjalan sepanjang waktu dan memperkecil waktu idle.
Penjadwalan CPU secara garis besar dibagi menjadi dua , yaitu Penjadwalan
Preemptive dan Penjadwalan Non Preemptive. Kriteria yang baik bagi suatu konsep
penjadwalan dan penjelasan mengenai dispatcher. Penjadwalan sangat penting dalam
menentukan performance sebuah komputer karena mengatur alokasi resource dari CPU untuk
menjalankan proses-proses di dalam komputer. Karena dengan adanya penjadwalan dari
CPU itu sendiri maka proses-proses tersebut akan mendapatkan alokasi resource dari CPU.
CPU Scheduler
Pada saat CPU menganggur, maka sistem operasi yang harus menyeleksi proses-proses
yang ada di memori utama,untuk di eksekusi dan mengalokasikan CPU untuk salah satu dari
proses tersebut. Seleksi semacam ini di sebut dengan short term scheduler(CPU scheduler).
1. Apabila proses berpindah dari keadaan ruuning ke waiting
2. Apabila proses berpindah dari keadaan ruuning ke ready
3. Apabila proses berpindah dari keadaan waiting ke ready
4. Apabila proses berhenti
Dispatcher
Dispatcher adalah suatu modul yang akan memberikan kontrol pada CPU terhadap
penyelesaian proses yang di lakukan selama short-term scheduling.
2.2
Kriteria Penjadwalan
2.2.1
Utilisasi
Waiting time
Harus seminim mungkin. Merupakan durasi waktu yang dihabiskan suatu proses
dalam antrian ready selama siklus hidupnya. Algoritma penjadwalan CPU tidak
mempengaruhi waktu untuk melaksanakan proses tersebut atau M/K, itu hanya
mempengaruhi jumlah waktu yang dibutuhkan proses di antrian ready. Waiting time
adalah jumlah waktu yang dibutuhkan proses di antrian ready.
2.2.3
Throughput
Throughput adalah jumlah kerja yang dapat diselesaikan dalam satu unit waktu.
Cara untuk mengekspresikan throughput adalah dengan jumlah job pemakai yang
dapat dieksekusi dalam satu unit/interval waktu.
2.2.4
Turn Arround Time adalah waktu yang dihabiskan dari saat program atau job
mulai masuk ke system sampai proses diselesaikan system. Waktu yang dimaksud
adalah waktu yang dihabiskan di dalam system, diekspresikan sebagai penjumlah
waktu eksekusi (waktu pelayanan job) dan waktu menunggu, yaitu: Turn Arround
Time = waktu eksekusi + waktu menunggu
2.2.5
Respon Time
2.3
Algoritma Nonpreemptive
Algoritma nonpreemptive adalah setiap proses yang sedang dieksekusi oleh CPU
tidak dapat di-interrupt oleh proses yang lain.
A. First In First Out (FIFO)
First In First Out (FIFO) merupakan penjadwalan tidak berprioritas. FIFO
adalah penjadwalan paling sederhana, yaitu proses-proses diberi jatah waktu pemroses
berdasarkan waktu kedatangan. Pada saat proses mendapat jatah waktu pemroses,
proses dijalankan sampai selesai.
Contoh : Ada tiga buah proses yang datang secara bersamaan yaitu pada 0 ms,
P1 memiliki burst time 24 ms, P2 memiliki burst time 3 ms, dan P3 memiliki burst
time 3 ms. Hitunglah waiting time rata-rata dan turnaround time( burst time + waiting
time) dari ketiga proses tersebut dengan menggunakan algoritma FCFS. Waiting time
untuk P1 adalah 0 ms (P1 tidak perlu menunggu), sedangkan untuk P2 adalah sebesar
24 ms (menunggu P1 selesai), dan untuk P3 sebesar 27 ms (menunggu P1 dan P2
selesai).
Gantt Chart Kedatangan Proses :
Urutan kedatangan adalah P1, P2 , P3; gantt chart untuk urutan ini adalah:
Waiting time rata-ratanya adalah sebesar(0+24+27)/3 = 17ms. Turnaround
time untuk P1 sebesar 24 ms, sedangkan untuk P2 sebesar 27 ms (dihitung dari awal
kedatangan P2 hingga selesai dieksekusi), untuk P3 sebesar 30 ms. Turnaround time
rata-rata untuk ketiga proses tersebut adalah (24+27+30)/3 = 27 ms
Kelebihan algoritma ini :
Baik untuk sistem batch yang sangat jarang berinteraksi dengan pemakai.
5
Waktu tanggap sangat jelek, tidak cocok untuk sistem interaktif apalagi untuk
sistem waktu nyata.
Sangat tidak baik (tidak berguna) untuk sistem interaktif, karena tidak memberi
waktu tanggap yang baik.
Karena waktu layanan muncul sebagai pembagi, maka job lebih pendek
berprioritas lebih baik
Karena waktu tunggu sebagai pembilang maka proses yang telah menunggu lebih
lama juga mempunyai kesempatan lebih bagus.
Disebut HRN, karena waktu tunggu ditambah waktu layanan adalah waktu
2.3.2
Algoritma Preemptive
Algoritma preemptive adalah setiap proses yang sedang dieksekusi oleh CPU
bisa diinterrupt oleh proses yang lain.
A. Round Robin (RR)
Merupakan :
Penjadwalan yang paling tua, sederhana, adil, dan banyak digunakan algoritmanya
Penjadwalan ini bukan dipreempt oleh proses lain tetapi oleh penjadwal
berdasarkan lama waktu berjalannya proses (preempt by time).
Mudah diimplementasikan.
Berasumsi bahwa semua proses memiliki kepentingan yang sama, sehingga tidak
ada prioritas tertentu. Semua proses dianggap penting sehingga diberi sejumlah
waktu oleh pemroses yang disebut kwanta (quantum) atau time slice dimana
proses itu berjalan.Jika proses masih running sampai akhir quantum, maka CPU
akan mempreempt proses itu dan memberikannya ke proses lain. Penjadwal
membutuhkannya dengan memelihara daftar proses dari runnable. Ketika
quantum habis untuk satu proses tertentu, maka proses tersebut akan diletakkan
diakhir daftar (list).
Kelemahan algoritma ini adalah mempunyai waktu lebih lama dalam turnaround
dibandingkan dengan SJF (Shortes Job First).
Contoh: sebuah CPU dengan quantum 4 mendapat beberapa proses yang
kedatangannya sebagai berikut :
Proses
Burst Time
P1
P2
P3
P4
P5
Gantt chart
Waiting Time
P1
P2
P3
8 + (23 - 12) = 19
P4
12 + (25 - 16) = 21
P5
16
Melengkapi SJF
Kelebihan algoritma ini adalah jika pada SRF, proses dengan sisa waktu jalan
diestimasi terendah dijalankan, termasuk proses-proses yang baru tiba. Pada SJF,
begitu proses dieksekusi, proses dijalankan sampai selesai. Pada SRF, proses yang
sedang berjalan (running) dapat diambil alih proses baru dengan sisa waktu jalan yang
diestimasi lebih rendah.
Kelemahan :
9
Mempunyai overhead lebih besar dibanding SJF. SRF perlu penyimpanan waktu
layanan yang telah dihabiskan job dan kadang-kadang harus menangani peralihan.
overhead. Secara teoritis, SRF memberi waktu tunggu minimum tetapi karena
overhead peralihan, maka pada situasi tertentu SFJ bisa memberi kinerja lebih baik
dibanding SRF.
C. Priority Schedulling (PS)
Setiap proses diberi prioritas dan proses yang berprioritas tertinggi mendapat
jatah waktu lebih dulu (running). Diasumsikan bahwa masing-masing proses
memiliki prioritas tertentu, sehingga akan dilaksanakan berdasar prioritas yang
dimilikinya. Ilustrasi yang dapat memperjelas prioritas tersebut adalah dalam
komputer militer, dimana proses dari jendral berprioritas 100, proses dari kolonel 90,
mayor berprioritas 80, kapten berprioritas 70, letnan berprioritas 60 dan seterusnya.
Dalam UNIX perintah untuk mengubah prioritas menggunakan perintah nice.
Pemberian prioritas diberikan secara:
1) Statis (Static Priorities) berarti prioritas tidak berubah.
Keunggulan :
Mudah diimplementasikan.
proses ini diberi prioritas sangat tinggi sehingga begitu proses Memerlukan
pemroses
segera
diberikan,
proses
akan
segera
memulai
permintaan
CPU Time
5
4
8
1
2
mendapatkan CPU seperti pada table berikut. Rasio antara CPU yang diperoleh
sampai saat ini (actual) dengan CPU tang seharusnya diperoleh (4 ms) dapat dicari
dengan:
Pengguna
A
B
C
D
E
CPU Aktual
3
6
2
1
1
Rasio
3/4=0.75
6/4=1.5
2/4=0.5
1/4=0.25
1/4=0.25
Dapat dilihat bahwa Pengguna A memiliki rasio 0.75, artinya A baru mendapatkan
dari jatah waktu yang seharusnya diterima. Pengguna B memiliki rasio 1.5, artinya B
mendapatkan 1.5 waktu dari jatah yang seharusnya didapatkan. Algoritma ini
menjalankan proses dengan rasio yang paling rendah dulu sampai proses tersebut
mendapatkan rasio melebihi rasio proses yang sebelumnya mempunyai rasio satu
tingkat labih tinggi darinya.
2.4
proses mengakses dan memanipulasi suatu data secara konkuren) adalah dengan mencegah
suatu proses melakukan manipulasi data secara bersamaan. Suatu code proses terdiri dari
beberapa bagian :
Critical Section adalah bagian dari code proses yang berisi code-code untuk
memanipulasi suatu data
Struktur umum dari proses Pi yang memiliki segmen critical section adalah :
do {
entry section
12
critical section
exit section
remainder section
} while (1);
2.4.1
a) Mutual Exclusion.
Jika suatu proses sedang menjalankan critical section-nya, maka proses-proses
lain tidak dapat menjalankan critical section mereka. Dengan kata lain, tidak ada dua
proses yang berada dicritical section pada saat yang bersamaan.
b) Terjadi kemajuan (progress).
Jika tidak ada proses yang sedang menjalankan critical section-nya dan ada
proses-proses lain yang ingin masuk ke critical section, maka hanya proses-proses
yang yang sedang berada dalamentry section saja yang dapat berkompetisi untuk
mengerjakan critical section.
c) Ada batas waktu tunggu (bounded waiting).
Jika seandainya ada proses yang sedang menjalankan critical section, maka
proses lain memiliki waktu tunggu yang ada batasnya untuk menjalankan critical
section -nya,
sehingga
dapat
dipastikan
bahwa
proses
tersebut
dapat
2.4.2
Algoritma Turn
Hanya proses yang mempunyai ID yang sama dengan ID giliran (Turn) yang
boleh masuk ke critical sectionnya
Algoritma Flag
13
Setiap proses berusaha untuk mengecek state (keadaan) proses yg lain. Jika proses
lain sedang berada di critical sectionnya, maka dia akan menunggu sampai proses
lain tersebut keluar dari state critical sectionnya.
Algoritma Turn-Flag
Merupakan penggabungan antara algoritma Turn dan algoritma Flag.
programmer sering memanfaatkan fasilitas yang telah diberikan oleh hardware dari
komputer.
Pendekatan
melalui
perangkat
lunak
cenderung
sulit
dan
kompleks
diimplementasikan, selain itu dapat menyebabkan turunnya kinerja dari suatu produk yang
dibuat. Sehingga sinkronisasi tidak akan terlepas dari peran hardware. Algoritma turn, flag,
dan algoritma tunr and flag dapat menjadi solusi atas berbagai masalah seperti : mutual
exclusion dan progres, akan tetapi tidak untuk busy waiting.
2.5.1
Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual exclusive, atau
dengan kata lain, harus ada satu atau sekelompok instruksi yang tidak dapat
diberhentikan pada waktu eksekusi (sifat mutual exclusive). Jadi, solusi untuk
sinkronisasi dengan cara pendekatan hardware lebih menekankan kepada usaha-usaha
untuk membuat suatu atau sekelompok instruksi menjadi mutual exclusive.
14
2.5.2
15
03 SBI
04 ..
01
02
boolean t = variable[0];
03
variable[0] = true;
04
return t;
05
.....
56 while (testAndSet(lock)) { /* do nothing */ }
57 // Critical Section
58 Lock[0] = false;
59
// Remainder Section
Method testAndSet haruslah bersifat atomic , sehingga method ini dianggap
sebagai satu instruksi mesin. Perhatikan pada baris 56 dimana method ini dipakai.
Pada baris ini proses berusaha untuk mengubah nilai dari variable reference lock.
Jikalau ia tidak berhasil maka akan terus mencoba, tapi jika berhasil maka proses akan
masuk ke bagian kritis dan setelah ini proses akan mengubah nilai dari lock sehingga
memberikan kemungkinan proses lain untuk masuk.
Keunggulan
dari
memory
synchronous
adalah
pada
lingkungan
multiprocessor, semua processor akan terkena dampak ini. Jadi semua proses yang
berada di processor, yang ingin mengakses critical section, meskipun berada di
processor yang berbeda - beda, akan berusaha untuk mengubah nilai yang dimaksud.
Sehingga semua processor akan tersinkronisasi.
c) Instruksi Atomic
Instruksi atomic adalah satu atau sekelompok instruksi yang tidak dapat
diberhentikan sampai instruksi tersebut selesai.
Instruksi baris 00-02 bersifat atomic , tetapi i++ tidak bersifat atomic. Sebagai
contoh kasus, katakanlah sekarang processor baru menyelesaikan baris 01, dan
ternyata pada saat tersebut interrupt datang, dan menyebabkan processor melayani
interrupt terlebih dahulu. Hal ini menyebabkan terhentinya instruksi i++ sebelum
instruksi ini selesai. Jikalau instruksi ini (i++) bersifat atomic, maka ketiga instruksi
mesin tersebut tidak akan diganggu dengan interrupt.
Instruksi ini bukanlah seperti pada processor synchronous yang mana akan
mematikan interrupt terlebih dahulu, tetapi instruksi ini sudah build-in di processor.
Designer processor dapat mengimplementasi konsep ini dengan dua cara yaitu :
1) Mengimplementasi instruksi yg build-in
2) Mengimplementasi processor mampu membuat suatu instruksi menjadi atomic
Intel Pentium memakai cara yang kedua, yaitu dengan adanya suatu perintah
LOCK-Assert. Dengan perintah ini maka semua instruksi dapat dijadikan atomic.
Sedangkan SPARC dan IBM mengimplementasikan suatu rutin yang bersifat
atomic seperti swap dan compareAndSwap.
2.5.3
proses, sampai proses lain membangunkan. Wake up adalah system call yang
mengakibatkan sebuah proses terbangun. Masalah yang timbul kemudian signal wake
up tidak tersampaikan karena berbagai kondisi, sehingga kedua proses akan sleep
forever. Solusi untuk kasus diatas adalah dengan menggunakan wake up waiting bit.
Ketika proses berjalan maka wake up waiting bit di set on pada saat proses akan sleep
maka proses akan diset off
18
2.6
Semaphora
Pada tahun 1967, Djikstra mengajukan suatu konsep dimana kita memakai suatu
variable integer untuk menghitung banyaknya proses yang sedang aktif atau yang sedang
tidur. Tipe dari variable ini dinamakan semafor. Tahun-tahun berikutnya, semafor banyak
dipakai sebagai primitif dari mekanisme sinkronisasi yang lebih tinggi dan kompleks lagi.
Sebagai contoh : monitor dari Javatm. Selain untuk hal tersebut, kebanyakkan semafor juga
digunakan untuk sinkronisasi dalam komunikasi antar device (perangkat keras).
Semaphore adalah alat untuk sinkronisasi yang tidak membutuhkan busy waiting.
Semaphore S berupa variable integer. Semaphore hanya dapat diakses melalui operasi atomic
yang tak dapat diinterupsi sampai kode selesai. Operasi dari semaphore S adalah wait dan
signal
2.6.1
Subrutin wait
Di dalam subrutin wait, proses akan memeriksa harga dari semafor, apabila
harganya 0 atau kurang maka proses akan menunggu, sebaliknya jika lebih dari 0,
maka proses akan mengurangi nilai dari semaphore tersebut dan menjalankan operasi
yang lain.
Arti dari harga semafor dalam kasus ini adalah hanya boleh 1 proses yang dapat
melewati subrutin wait pada suatu waktu tertentu, sampai ada salah satu atau proses
itu sendiri yang akan memanggil signal. Cara proses menunggu dapat dibagi menjadi
dua :
a) Pinlock waiting
Spinlock waiting berarti proses tersebut menunggu dengan cara menjalankan
perintah-perintah yang tidak ada artinya. Dengan kata lain proses masih running state
di dalam spinlock waiting. Keuntungan spinlock pada lingkungan multiprocessor
adalah, tidak diperlukan context switch. Tetapi spinlock yang biasanya disebut busy
waiting ini menghabiskan cpu cycle karena, daripada proses tersebut melakukan
perintah-perintah yang tidak ada gunanya, sebaiknya dialihkan ke proses lain yang
mungkin lebih membutuhkan untuk mengeksekusi perintah-perintah yang berguna.
b) Non-spinlock waiting
Berbeda dengan spinlock waiting , non-spinlock waiting, memanfaatkan
fasilitas sistim operasi. Proses yang melakukan non-spinlock waiting akan memblock
dirinya sendiri dan secara otomatis akan membawa proses tersebut ke dalam waiting
19
queue. Di dalam waiting queue ini proses tidak aktif dan menunggu sampai ada proses
lain yang membangunkan dia sehingga membawanya ke ready queue.
Subrutin dari kedua versi wait
00 void waitSpinLock(int semaphore[] )
01 {
02
while(semaphore[0] <= 0)
{ .. Do nothing .. } // spinlock
03
semaphore[0]--;
04 }
10 void synchronized
waitNonSpinLock( int semaphore [])
11 {
12
while(semaphore[0] <= 0)
13
14
15
16
semaphore[0]--;
17 }
Perbedaan dari kedua subrutin ini adalah terletak pada aksi dari kondisi nilai semafor
kurang atau sama dengan dari 0 (nol). Untuk yang spinlock , kita dapat melihat proses
akan berputar-putar di while baris no 2. Sedangkan pada non-spinlock, proses dengan
mudah memanggil perintah wait, setelah itu sistim operasi akan mengurus mekanisme
selanjutnya.
2.6.2
Subrutin signal
Karena subrutin wait memiliki 2 versi maka hal ini juga berpengaruh kepada
subrutin signal. Subrutin signal akan terdiri dari 2 versi sesuai dengan yang ada di
subrutin wait.
00 void signalSpinLock( int semaphore [])
01 {
02
semaphore[0]++;
03 }
20
10 void synchronized
11 signalNonSpinLock( int semaphore [])
12 {
13
semaphore[0]++;
14
15
// ke ready queue
16 }
Letak perbedaan dari kedua subrutin di atas adalah pada notifyAll. NotifyAll
berarti membangunkan semua proses yang sedang berada di waiting queue dan
menunggu semaphore yg disignal.
Setelah semaphore disignal, proses-proses yang sedang menunggu, apakah itu
spinlock waiting ataukah non-spinlock waiting, akan berkompetisi mendapatkan
akses semafor tersebut. Jadi memanggil signal bukan berarti membangunkan salah
satu proses tetapi memberikan kesempatan proses - proses untuk berkompetisi.
Macam - macam Semaphora
Ada 2 macam semafor yang cukup umum, yaitu :
a. Binary semaphore. Merupakan semafor yang bernilai hanya 1 dan 0.
b. Counting semaphore. Merupakan semafor yang dapat bernilai 1 dan 0 dan nilai
integer yang lainnya.
21
2.7.2
2.7.3
Dining-Philosophers Problem
harus
menunggu
sampai
supit
22
tersebut
diletakkan.
Hal
ini
dapat
BAB III
PENUTUP
3.1
Kesimpulan
A. Penjadwalan CPU adalah suatu proses pengaturan atau penjadwalan proses-proses yang
ada di dalam komputer. Yang memiliki kriteria-kriteria dan algoritma penjadwalan
teretntu untuk mempermudah pengguna menyelesaikan permasalahan pekerjaaan.
B. Sinkronisasi CPU merupakan suatu proses pengaturan jalannya beberapa proses pada
waktu yang bersamaan untuk menyamakan waktu dan data supaya tidak terjadi
inconsitensi (ketidak konsistenan) data akibat adanya akses data secara konkuren agar
hasilnya bagus dan sesuai dengan apa yang diharapkan.
23
DAFTAR PUSTAKA
https://pioniezez.wordpress.com/2011/04/12/algoritma-penjadwalan/
http://dedisbb.blogspot.co.id/2011/02/jenis-jenis-algoritma-penjadwalan.html
http://agustriadi17.blogspot.co.id/2011/03/critical-section.html
http://opensource.telkomspeedy.com/repo/abba/v06/Kuliah/SistemOperasi/2003/44/produ
k/SistemOperasi/c43.html
https://ayuewiejayantie.wordpress.com/sinkronisasi-proses/
http://sc-hunter.blogspot.co.id/2013/04/algoritma-penjadwalan_2.html
http://triyatnoize.blogspot.co.id/2011/10/algoritma-penjadwalan.html
http://wahyu.staff.umm.ac.id/files/2011/04/8-Sinkronisasi-Proses.pptx
http://sistemoperasi32.blogspot.co.id/2015/04/konsepdasar-penjadwalan-proses.html
http://andry-informatika.blogspot.co.id/2012/04/algoritma-penjadwalan.html
24