report syncronization criticalsection
DESCRIPTION
Tugas Sinkronisasi, Critical SectionTRANSCRIPT
-
Pengantar Sistem Operasi
Critical Section
Disusun oleh :
M. Althof Shiddekh Ibtisam 5214100182
Qaedi Amani 5214100183
Aloysius Tatus Kristanto 5214100186
Anggada Sakti Pamungkas 5214100190
-
Uraian Masalah
*kami mengerjakan nomer 2
-
Penyelesaian
critical section adalah sebuah protokol yang di desain supaya proses-proses dapat
menggunakannya secara bersama-sama. Setiap proses harus memesan waktu untuk memasuki
critical section-nya. Yang disebut entry section. dan Akhir dari critical section itu disebut exit
section. Dan setelah itu ada remainder section.
Solusi dari masalah critical section harus memenuhi tiga syarat berikut:
1. Mutual Exclusion.
Jika suatu proses sedang menjalankan critical section-nya, maka proses-proses lain tidak dapat
menjalankan critical section mereka. Tidak ada dua proses yang berada di critical section pada
saat yang bersamaan.
2. 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 dalam
entry section saja yang dapat berkompetisi untuk mengerjakan critical section.
3. Ada batas waktu tunggu (bounded waiting).
Jika ada suatu 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 mengakses critical section-nya (tidak mengalami starvation: proses
seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan
Ada dua jenis solusi masalah critical section, yaitu:
1. Solusi perangkat lunak.
Dengan menggunakan algoritma-alogoritma yang nilai kebenarannya tidak tergantung pada
asumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang bukan nol.
2. Solusi perangkat keras.
Tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi
atau dengan mengunci suatu variabel tertentu.
-
Algoritma III
Algoritma III ditemukan oleh G.L. Petterson pada tahun 1981 dan dikenal juga sebagai Algoritma
Petterson. Petterson menemukan cara yang sederhana untuk mengatur proses agar memenuhi
mutual exclusion. Algoritma ini adalah solusi untuk memecahkan masalah critical section pada
dua proses. Ide dari algoritma ini adalah menggabungkan variabel yang di- sharing pada
Algoritma I dan Algoritma II, yaitu variabel turn dan variabelflag. Sama seperti pada Algoritma I
dan II, variabel turn menunjukkan giliran proses mana yang diperbolehkan memasuki critical
section dan variabel flag menunjukkan apakah suatu proses membutuhkan akses kecritical
sectionatau tidak.
Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut
tidak membutuhkan akses ke critical section. Kemudian jika suatu proses ingin memasuki critical
section, ia akan mengubahflag-nya menjadi true (memberikan tanda bahwa ia butuh critical
section) lalu proses tersebut memberikan turn kepada lawannya. Jika lawannya tidak
menginginkan critical section (flag-nya false), maka proses tersebut dapat menggunakan critical
section, dan setelah selesai menggunakan critical section ia akan mengubah flag-nya menjadi
false. Tetapi apabila proses lawannya juga menginginkan critical section maka proses lawan-lah
yang dapat memasuki critical section, dan proses tersebut harus menunggu sampai proses
lawan menyelesaikan critical sectiondan mengubah flag-nya menjadi false.
Misalkan ketika P0 membutuhkan critical section, maka P0 akan mengubah flag[0] = true, lalu P0
mengubah turn= 1. Jika P1 mempunyai flag[1] = false, (berapapun nilai turn) maka P0 yang
dapat mengakses critical section. Namun apabila P1 juga membutuhkan critical section, karena
flag[1] = true dan turn= 1, maka P1 yang dapat memasuki critical section dan P0 harus
menunggu sampai P1 menyelesaikan critical section dan mengubah flag[1] = false, setelah itu
barulah P0 dapat mengakses critical section.
Bagaimana bila kedua proses membutuhkan critical section secara bersamaan? Proses mana
yang dapat mengakses critical section terlebih dahulu? Apabila kedua proses (P0 dan P1) datang
bersamaan, kedua proses akan menset masing-masing flag menjadi true (flag[0] = true dan
flag[1] = true), dalam kondisi ini P0 dapat mengubah turn = 1 dan P1 juga dapat mengubah turn
= 0. Proses yang dapat mengakses critical sectionterlebih dahulu adalah proses yang terlebih
dahulu mengubah turn menjadi turn lawannya. Misalkan P0 terlebih dahulu mengubah turn= 1,
lalu P1 akan mengubah turn= 0, karena turn yang terakhir adalah 0 maka P0-lah yang dapat
mengakses critical section terlebih dahulu dan P1 harus menunggu.
-
Penjadwalan Preemptive
Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan:
Berubah dari running ke waiting state.
Berubah dari running ke ready state.
Berubah dari waiting ke ready state.
Dihentikan.
Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk memberhentikan
sementara proses yang sedang berjalan untuk memberi ruang kepada proses yang prioritasnya
lebih tinggi. Penjadwalan ini bisa saja termasuk penjadwalan proses atau M/K. Penjadwalan
Preemptivememungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses mendapat
sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event
dari luar (contohnya seperti ada data yang masuk) yang membutuhkan reaksi cepat dari satu
atau beberapa proses. Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu
sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.
Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses yang
memilikiBurst M/K yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU
yang sangat lama disebutCPU Bound. Terkadang juga suatu sistem mengalami kondisi yang
disebut busywait, yaitu saat dimana sistem menunggu request input(seperti disk, keyboard, atau
jaringan). Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap
memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari.
Dengan kata lain, penjadwalan Preemptive melibatkan mekanisme interupsi yang menyela
proses yang sedang berjalan dan memaksa sistem untuk menentukan proses mana yang akan
dieksekusi selanjutnya.
Penjadwalan nomor 1 dan 4 bersifat Non Preemptive sedangkan lainnya Preemptive.
Penjadwalan yang biasa digunakan sistem operasi dewasa ini biasanya bersifat Preemptive.
Bahkan beberapa penjadwalan sistem operasi, contohnya Linux 2.6, mempunyai kemampuan
Preemptive terhadap system call-nya (preemptible kernel). Windows 95, Windows XP, Linux,
Unix, AmigaOS, MacOS X, dan Windows NTadalah beberapa contoh sistem operasi yang
menerapkan penjadwalan Preemptive.
Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalan Preemptive disebut
time slice/quantum. Penjadwalan berjalan setiap satu satuan time slice untuk memilih proses
mana yang akan berjalan selanjutnya. Bila time slice terlalu pendek maka penjadwal akan
-
memakan terlalu banyak waktu proses, tetapi bila time sliceterlau lama maka memungkinkan
proses untuk tidak dapat merespon terhadapevent dari luar secepat yang diharapkan.
Penjadwalan Non Preemptive
Penjadwalan Non Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak
pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain. Dengan
kata lain, proses yang sedang berjalan tidak bisa di-interupt.
Penjadwalan Non Preemptive terjadi ketika proses hanya:
1. Berjalan dari running state sampai waiting state.
2. Dihentikan.
Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting state ataupun dihentikan
(proses tidak diganggu). Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh. Ini
adalah metode yang dapat digunakan untuk platformshardware tertentu, karena tidak
memerlukan perangkat keras khusus (misalnyatimeryang digunakan untuk meng interupt pada
metode penjadwalan Preemptive).