SISTEM OPRASI
“SINKRONISASI dan DEADLOCK”
Di Susun Oleh ;
Agung Yusuf (21071064)
Fitri Yani (21071032)
Putri Endang Kurniawati (21071043)
Pendi Supratman (21071005)
Welly Andra Tegar Abizar (21071008)
ii
DAFTAR ISI
HALAMAN SAMPUL.....................................................................................
KATA PENGANTAR......................................................................................ii
DAFTAR ISI.....................................................................................................iii
BAB.1 PENDAHULUAN.................................................................................1
1. Latar Belakang......................................................................................1
BAB.2 PEMBAHASAN....................................................................................2
A. Sinkronisasi...........................................................................................2
1. Masalah Critical Section................................................................2
2. Sinkronisasi Hardware...................................................................3
3. Sinkronisasi Software.....................................................................4
4. Semaphore.......................................................................................5
5. Masalah-Masalah Klasik Dalam Sinkronisasi.............................7
B. Deadlock................................................................................................8
1. Model Sistem...................................................................................8
2. Karakteristik Deadlock..................................................................9
3. Metode Penanganan Deadlock......................................................12
4. Pencegahan Deadlock.....................................................................12
5. Penghindaran Deadlock.................................................................13
6. Pendeteksian Deadlock...................................................................13
7. Recovery Deadlock.........................................................................14
8. Pendekatan Kombinasi Untuk Menghindari Deadlock..............15
BAB.3 PENUTUP.............................................................................................16
1. Kesimpulan............................................................................................16
2.
iii
BAB 1
PENDAHULUAN
1. LATAR BELAKANG
Sistem operasi adalah seperangkat program yang mengelola sumber
daya perangkat keras komputer atau hardware, dan menyediakan layanan
umum untuk aplikasi perangkat lunak. Sistem operasi adalah jenis yang
paling penting dari perangkat lunak dalam sistem komputer. Tanpa sistem
operasi, pengguna tidak dapat menjalankan program aplikasi pada komputer
mereka, kecuali program aplikasi booting. Untuk fungsi-fungsi perangkat
keras seperti sebagai masukan dan keluaran dan alokasi memori, sistem
operasi bertindak sebagai perantara antara program aplikasi dan perangkat
keras komputer, meskipun kode aplikasi biasanya dieksekusi langsung oleh
perangkat keras dan seringkali akan menghubungi OS atau terputus oleh itu.
Sistem operasi yang ditemukan pada hampir semua perangkat yang berisi
komputer-dari ponsel dan konsol permainan video untuk superkomputer dan
server web.
Sistem Operasi yang ada pada jaman sekarang ini semakin banyak,
canggih dan tentu saja semakin berkembang. Meskipun Sistem Operasi yang
digunakan pada masa sekarang ini kebanyakan menggunakan Windows,
bukan berarti Sistem Operasi yang lain mati ( tidak ada atau punah ).
Sebagai contoh, masih ada Sistem Operasi yaitu Linux. Dalam Sistem
Operasi, banyak hal yang harus dipahami. Bukan sekedar memahami
bagaimana menginstall aplikasi, menghapus virus, memberikan proteksi
virus bagi laptop maupun komputer. Bukan sekedar itu saja. Didalam Mata
Kuliah Sistem Operasi ini, diajarkan mengenai manajemen memory, CPU,
beberapa Algoritma seperti FCFS ( First Come First Served ), Round Robin,
SJF, dan lain sebagainya. Sistem operasi mempunyai penjadwalan yang
sistematis mencakup perhitungan penggunaan memori, pemrosesan data,
penyimpanan data, dan sumber daya lainnya.
2.
iv
BAB 2
PEMBAHASAN
A. SINKRONASI
Suatu sistem operasi modern merupakan suatu sistem yang besar dan
kompleks sehingga strukturnya harus dirancang dengan hati-hati dan
saksama supaya dapat berfungsi seperti yang diinginkan serta dapat
dimodifikasi dengan mudah.
Struktur sistem operasi merupakan komponen-komponen sistem operasi
yang dihubungkan dan dibentuk di dalam kernel. Ada beberapa struktur
sistem operasi dan pernah dicoba, diantaranya sebagai berikut:
do {
entry section
critical section
exit section
remainder section
} while (1);
v
batasnya untuk menjalankan critical section -nya, sehingga dapat
dipastikan bahwa proses tersebut dapat mengakses critical section-
nya (tidak mengalamistarvation: proses seolah-olah berhenti,
menunggu request akses ke critical sectiondiperbolehkan).
Kunci untuk mencegah masalah ini dan di situasi yang lain yang
melibatkan shared memori, shared berkas, and shared sumber daya
yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari
satu proses untuk melakukan proses writing dan reading kepada shared
data pada saat yang sama. Dengan kata lain kita memutuhkan mutual
exclusion, sebuah jalan yang menjamin jika sebuah proses sedang
menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan
yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan
variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan
secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk
melakukan perhitungan internal dan hal lain yang tidak menggiring ke
kondisi race conditions. Bagaimana pun setiap kali sebuah proses
mengakses shared memory atau shared berkas atau melakukan sesuatu
yang kitis akan menggiring kepada race conditions. Bagian dari
program dimana shaed memory diakses disebut Critical
Section atau Critical Region.
Walau pun dapat mencegah race conditions, tapi tidak cukup untuk
melakukan kerjasama antar proses secara pararel dengan baik dan
efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar
menghasilkan solusi yang baik:
Tidak ada dua proses secara bersamaan masuk ke dalam citical
section.
Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
Tidak ada proses yang berjalan di luar critical secion yang dapat
mengeblok proses lain.
Tidak ada proses yang menunggu selamamya untuk masuk critical
section.
2. Sinkronisasi Hardware
Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual
exclusive/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.
Pendekatan dari sisi hardware dapat dibagi menjadi dua:
Processor Synchronous
Memory Synchronous
vi
Mutual exclusive = Jika proses Pi sedang mengeksekusi critical
section maka tidak ada proses lain yang dapat mengeksekusi dalam
critical section mereka.
3. Sinkronisasi Software
Masalah sinkronisasi Software (perangkat lunak)
Solusi perangkat lunak(Software) Dengan menggunakan algoritma-
alogoritma yang nilai kebenarannya tidak tergantung pada asumsi-
asumsi lain, selain itu setiap proses berjalan pada kecepatan yang bukan
nol.
Masalah sinkronisasi hardware (perangkat keras) 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. Pendekatan dari sisi
Hardware dapat dibagi menjadi dua:Processor Synchronous, Memory
Synchronous.
Central Processing Unit, CPU, mempunyai suatu mekanisme yang
dinamakan interrupt. Di dalam sistim operasi, mekanisme ini digunakan
secara intensif, atau dengan kata lain, banyak konsep-konsep sistim
operasi yang menggunakan mekanisme ini. Sebagai contoh : system
call, process scheduling, dan sebagainya. Berbicara mengenai
sinkronisasi berarti kita mengasumsikan bahwa akan ada 2 atau lebih
proses yang sedang berjalan di komputer secara concurrent, atau
dengan kata lain konsep time-shared sudah diimplementasikan di sistim
operasi. Sistim time-shared yang sering diimplementasikan dengan
algoritma RR (Round Robin), memanfaatkan mekanisme interrupt di
CPU. Jadi di dalam RR ada suatu satuan waktu yg dinamakan quantum
yang mana setiap quantum dibatasi oleh satu software interrupt.
Teknisnya, akan ada suatu interrupt - yang biasanya adalah timer
interrupt - yang secara berkala akan menginterrupt sistim. Pada saat
interrupt dilakukan sistim operasi akan segera melakukan proses
pergantian dari proses yang satu ke proses yang lainnya sesuai dengan
algoritma. Seperti yang telah dikatakan di atas, isu yang ada di sini
adalah, ada satu atau sekelompok instruksi yang tidak dapat
diberhentikan sampai satu atau sekelompok instruksi tersebut selesai.
Adalah sangat jelas bahwa yang membuat suatu instruksi diberhentikan
adalah mekanisme yang di sistim operasi (baca mengenai process
scheduling ). Mekanisme ini sangat bergantung kepada mekanisme
interrupt dari hardware. Jadi, jika kita dapat menon-aktifkan interrupt
vii
pada saat critical section tersebut, maka masalah sinkronisasi dapat
terselesaikan.
4. Semaphore
Semaphore adalah sistem sinyal yang digunakan untuk
berkomunikasi secara visual. Dalam software, semafor adalah sebuah
variabel bertipe integer yang selain saat inisialisasi, hanya dapat diakses
melalui dua operasi standar, yaitu increment dan decrement. Semaphore
digunakan untuk menyelesaikan masalah sinkronisasi secara umum.
Berdasarkan jenisnya, semafor hanya bisa memiliki nilai 1 atau 0, atau
lebih dari sama dengan 0. Konsep semaphore pertama kali diajukan
idenya oleh Edsger Dijkstra pada tahun 1967.
Operasi standar pada semaphore (dalam bahasa pemrograman C).
Nama asli dari operasi tersebut sebenarnya adalah Proberen (test) dan
Verhogen (increment). Fungsi wait dipanggil ketika thread akan
memasuki critical section-nya atau ketika thread akan memakai
resource yang tersedia. Jika sem_value kurang dari sama dengan 0,
thread tersebut harus menunggu sampai thread lain memanggil fungsi
buka. Fungsi buka dipanggil ketika thread meningggalkan critical
section-nya atau ketika melepaskan resource yang telah digunakannya.
Tentu saja kedua operasi tersebut harus bersifat atomik karena
sem_value dapat diakses oleh beberapa proses (shared resource).
Semaphore memiliki dua jenis, yaitu:
Binary semaphore,
Semaphore ini hanya memiliki nilai 1 atau 0. Sering juga disebut
sebagai semafor primitive
Counting semaphore
Semaphore ini memiliki nilai 0, 1, serta integer lainnya. Banyak
sistem operasi yang tidak secara langsung mengimplementasikan
semafor ini, tetapi dengan memanfaatkan binary semaphore
Fungsi Semaphore
Mutual exclusion
Sesuai dengan prinsip mutual exclusion, jika suatu thread
sedang berada dalam critical section-nya, thread lain harus
menunggu thread tersebut keluar dari critical section-nya sebelum
dapat memasuki critical section-nya sendiri. Di sinilah semaphore
digunakan, thread yang akan memasuki critical section-nya akan
memanggil fungsi kunci terlebih dahulu. Jika tidak ada thread lain
yang sedang berada dalam critical section, thread ini akan
memasuki critical section-nya. Jika terdapat thread lain yang
sedang berada dalam critical section-nya, thread ini harus
menunggu.Setelah thread keluar dari critical section-nya, thread
tersebut akan memanggil fungsi buka sehingga sem_value akan
naik menjadi lebih dari 0, dan satu (dari beberapa) thread yang
sedang menunggu akan mendapatkan giliran untuk memasuki
critical section-nya.
viii
Sebagai contoh, misalnya terdapat dua buah thread yang
sedang berjalan bersamaan:
Thread A: thread B: count = count + 1; count = count + 1;
Thread A dan B mengakses variabel yang sama, yaitu count
sehingga thread A dan B harus berjalan satu-satu. Untuk itu
digunakan semaphore mutex yang berupa binary semaphore
dengan nilai awal 1.
Resource controller
Contoh: bayangkan sebuah restoran yang setiap malamnya
ramai dikunjungi pelanggan. Kapasitas restoran terbatas, tetapi
pemilik restoran memiliki kebijakan bahwa semua pengunjung
yang datang akan mendapatkan kesempatan untuk makan, dengan
konsekuensi yaitu pelanggan harus sabar menunggu gilirannya.
Oleh karena itu, dikerahkanlah pegawai restoran untuk menahan
tamu di luar jika restoran penuh lalu mempersilahkan tamu masuk
jika tempat telah tersedia. Dari analogi di atas, pelanggan adalah
thread, kapasitas restoran adalah resource, dan pegawai restoran
adalah semaphore. Semaphore menyimpan banyaknya resource
yang tersedia. Saat thread ingin memakai resource ia akan
memanggil fungsi kunci. Jika resource masih tersedia, thread bisa
langsung menggunakannya, sebaliknya jika semua resource sedang
dipakai, thread tersebut harus menunggu. Setelah resource selesai
dipakai thread akan memanggil fungsi buka sehingga resource
yang bebas bertambah.
Sinkronisasi antar-proses
Ada kalanya suatu thread memerlukan resource yang
dihasilkan oleh thread lainnya. Oleh karena itu dibutuhkan suatu
mekanisme untuk mengatur urutan eksekusi thread. Mekanisme ini
dilakukan dengan memanfaatkan semaphore.
Sebagai contoh, misalnya terdapat dua buah thread yang
sedang berjalan bersamaan:
Thread A: thread B: count = count + 1; count = count * 2;
Nilai awal dari variabel count adalah 5, nilai akhir yang diinginkan
adalah 12, oleh karena itu thread A harus dieksekusi sebelum
thread B. Agar hal ini dapat terjadi dibutuhkan suatu semaphore
mutex yang merupakan sebuah binary semaphore dengan nilai
awal 0.
Thread A: thread B: count = count + 1; kunci(mutex);
buka(mutex); count = count * 2; Thread B akan menunggu sampai
eksekusi thread A selesai sebelum melanjutkan.
Implementasi Semaphore
Windows
ix
Fungsi yg dipakai adalah Create Semaphore biasanya digunakan
untuk membatasi jumlah thread yang memakai suatu resource
secara bersamaan
Java
Semaphore di Java bersifat transparan
Programmer
Java™ menyembunyikan Semaphore dibalik konsep
x
Penulis di prioritaskan
Di mana suatu writer sedang dijalankan oleh sistem, maka tidak
boleh ada reader yang memulai untuk membaca data.
a. Solusi Waiter
Solusi Waiter: solusi sederhana ini dilakukan dengan mengadakan
seorang waiter yang senantiasa mengawasi penggunaan sumpit di
meja makan. Ketika empat buah (dua pasang) sumpit sedang
dipakai,orang berikutnya yang ingin memakai sumpit harus
meminta izin kepada sang waiter, yang hanya dapat diberi ketika
salah satu sumpit telah selesai terpakai.
b. Solusi Hierarki
ResourceSolusi Hirarki Resource: resources (sumpit) di meja
makan telah diberi susunan hirarki. Setiap permintaan orang
terhadap sebuah sumpit harus dilakukan pada susunan tertentu, dan
dikembalikan pada susunan sebaliknya. Dalam hal ini, setiap orang
dapat mengambil sumpit dimanapun diatas meja. Misalkan setiap
sumpit diberi nomor sebagai tingkat hirarki dari 1 sampai 5,
seseorang hanya dapat mengambil sumpit dengan nomor yang
paling rendah, kemudian mengambil sumpit yang setingkat lebih
tinggi. Ketika ia hendak mengembalikannya, orang itu harus
meletakkan sumpit dengan nomor yang lebih tinggi terlebih
dahulu, lalu yang rendah.
B. DEADLOCK
1. Model Sistem
Pada sistem terdapat beberapa sumber daya (resource) yang
digunakan untuk proses-proses untuk menyelesaikan task. Sumber
daya yang pada sistem terdiri dari tipe resource CPU cycle, ruang
memori, perangkat I/O yang disebut dengan tipe sumber daya R1,
R2, . . ., Rm. Setiap tipe sumber daya Ri mempunyai beberapa anggota
xi
Wi. Setiap proses yang menggunakan sumber daya menjalankan urutan
operasi sebagai berikut :
a) meminta (request) : meminta sumber daya
b) memakai (use) : memakai sumber daya
c) melepaskan (release) : melepaskan sumber daya
2. Karakteristik Deadlock
Kondisi yang Diperlukan Deadlock terjadi bila terdapat empat
kondisi berikut ini secara simultan.
a) Mutual Exclusion
Hanya satu proses pada satu waktu yang dapat menggunakan
sumber daya.
Proses
RJ
PI
xii
RJ
PI RJ
Gambar 6-1
Contoh resource allocation graph dapat dilihat pada Gambar 6-1 dimana
keadaan sistem adalah sebagai berikut :
Himpunan P, R dan E :
P = {P1, P2, P3}
R = {R1, R2, R3, R4}
E = {P1 → R1, P2 → R3, R1 → P2, R2 → P2, R2 → P1, R3 →
P3}
Status proses :
o Proses P1 membawa satu anggota tipe sumber daya R2 dan
menunggu satu anggota tipe sumber daya R1.
o Proses P2 membawa satu anggota R1 dan R2 dan menunggu satu
anggota tipe sumber daya R3.
o Proses P3 membawa satu anggota R3.
xiii
Gambar 6-2.
Gambar 6-3
xiv
Fakta dasar dari resource allocation graph menunjukkan bahwa :
Apabila pada graph tidak terdapat siklus maka tidak ada proses dalam
sistem yang deadlock.
Apabila pada graph terdapat siklus sistem kemungkinan deadlock
dengan ketentuan:
o Jika pada setiap tipe sumber daya hanya terdapat satu anggota
maka terjadideadlock
o Jika pada setiap tipe sumber daya terdapat beberapa anggota maka
kemungkinan terjadi deadlock
4. Pencegahan Deadlock
Metode ini berkaitan dengan pengkondisian sistem agar
menghilangkan kemungkinan terjadinya deadlock. Pencegahan
merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock.
Metode ini sering menghasilkan utilisasi sumber daya yang buruk.
Pencegahan deadlock merupakan metode yang banyak dipakai. Untuk
mencegah deadlock dilakukan dengan meniadakan salah satu dari syarat
perlu sebagai berikut :
Mencegah Hold and Wait Untuk mencegah hold and wait, sistem harus
menjamin bila suatu proses meminta sumber daya, maka proses
tersebut tidak sedang memegang sumber daya yang lain. Proses harus
meminta dan dialokasikan semua sumber daya yang diperlukan
sebelum proses memulai eksekusi atau mengijinkan proses meminta
sumber daya hanya jika proses tidak membawa sumber daya lain.
Model ini mempunyai utilitas sumber daya yang rendah dan
kemungkinan terjadi starvation jika proses membutuhkan sumber daya
yang popular sehingga terjadi keadaan menunggu yang tidak terbatas
karena setidaknya satu dari sumber daya yang dibutuhkannya
dialokasikan untuk proses yang lain.
xv
Mencegah Non Preemption Peniadaan non preemption mencegah
proses-proses lain harus menunggu. Seluruh proses menjadi
preemption, sehingga tidak ada tunggu menunggu. Cara mencegah
kondisi non preemption :
o Jika suatu proses yang membawa beberapa sumber daya meminta
sumber daya lain yang tidak dapat segera dipenuhi untuk
dialokasikan pada proses tersebut, maka semua sumber daya yang
sedang dibawa proses tersebut harus dibebaskan.
o Proses yang sedang dalam keadaan menunggu, sumber daya yang
dibawanya ditunda dan ditambahkan pada daftar sumber daya.
o Proses akan di restart hanya jika dapat memperoleh sumber daya
yang lama dan sumber daya baru yang diminta.
5. Penghindaran Deadlock
Metode alternatif untuk menghindari deadlock adalah digunakan
informasi tambahan tentang bagaimana sumber daya diminta. Misalnya
pada sistem dengan satu tape drive dan satu printer, proses P pertama
meminta tape drive dan kemudian printer sebelum melepaskan kedua
sumber daya tersebut. Sebaliknya proses Q pertama meminta printer
kemudian tape drive. Dengan mengetahui urutan permintaan dan
pelepasan sumber daya untuk setiap proses, dapat diputuskan bahwa untuk
setiap permintaan apakah proses harus menunggu atau tidak. Setiap
permintaan ke sistem harus dipertimbangkan apakah sumber daya tersedia,
sumber daya sedang dialokasikan untuk proses dan permintaan kemudian
serta pelepasan oleh proses untuk menentukan apakah permintaan dapat
dipenuhi atau harus menunggu untuk menghindari deadlock. Model yang
sederhana dan sangat penting dibutuhkan adalah setiap proses menentukan
jumlah maksimum sumber daya dari setiap tipe yang mungkin diperlukan.
Algoritma deadlock avoidance secara dinamis memeriksa status sumber
daya yang dialokasikan untuk menjamin tidak pernah terjadi kondisi
menunggu sirkular. Status alokasi sumber daya ditentukan oleh jumlah
sumber daya yang tersedia dan yang dialokasikan dan maksimum
permintaan oleh proses-proses.
6. Pendeteksian Deadlock
Jika sistem tidak menyediakan algoritma mencegah deadlock dan
menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem
harus menyediakan :
xvi
Algoritma yang menguji state sistem untuk menentukan apakah
deadlock telah terjadi.
Algoritma untuk memperbaiki dari deadlock.
Satu Anggota untuk Setiap Tipe Sumber Daya Jika semua sumber
daya hanya mempunyai satu anggota, kita dapat menentukan algoritma
mendeteksi deadlock menggunakan bentuk resource allocation graph yang
disebut wait-for graph. Garis dari Pi → Pj pada wait-for graph
menandakan bahwa proses Pi menunggu Pj melepaskan sumber daya yang
dibutuhkan Pi. Garis Pi → Pj terdapat pada wait-for graph jika dan anya
jika resource allocation graph berisi dua garis Pi → Rq dan Rq → Pj untuk
beberapa sumber daya Rq seperti Gambar 6-7. Secara periodik sistem
menggunakan algoritma yang mencari siklus pada graph. Algoritma untuk
mendeteksi siklus pada graph membutuhkan operasi n2 dimana n adalah
jumlah titik pada graph.
Beberapa Anggota untuk Setiap Tipe Sumber Daya Untuk Tipe
sumber daya yang mempunyai beberapa anggota digunakan algoritma
yang sejenis dengan algoritma Banker dengan struktur daya seperti di
bawah ini:
Available : vector panjang m menandakan jumlah sumber daya yang
tersedia untuk setiap tipe sumber daya.
Allocation : matrik n x m yang mendefinisikan jumlah sumber daya
untuk setiap tipe sumber daya yang sedang dialokasikan untuk setiap
proses.
Request : matrik n x m yang mendefinisikan permintaan setiap proses.
Jika Request [I, j] = k, maka proses Pi meminta k anggota tipe sumber
daya Rj.
7. Recovery Deadlock
Terdapat dua pilihan untuk membebaskan deadlock. Satu solusi
sederhana adalah dengan menghentikan satu atau beberapa proses untuk
membebaskan kondisi menunggu sirkular. Pilihan kedua adalah menunda
beberapa sumber daya dari satu atau lebih proses yang deadlock.
xvii
Untuk menentukan urutan proses yang harus dihentikan ada
beberapa faktor yang harus diperhatikan :
Prioritas proses.
Berapa lama proses dijalankan dan berapa lama lagi selesai.
Sumber daya yang digunakan proses.
Sumber daya proses yang diperlukan untuk menyelesaikan task.
Berapa proses yang perlu diterminasi.
Apakah proses interaktif atau batch.
xviii
BAB.3
PENUTUP
1. Kesimpulan
Untuk mengatasi problem critical section dapat digunakan berbagai solusi
software. Namun masalah yang akan timbul dengan solusi software adalah
solusi software tidak mampu menangani masalah yang lebih berat dari critical
section. Tetapi Semaphores mampu menanganinya, terlebih jika hardware
yang digunakan mendukung maka akan memudahkan dalam menghadapi
problem sinkronisasi.
xix