Anda di halaman 1dari 8

SISTEM OPERASI

Nopi Arahman

NIM: 8020170212

KELAS: 10MT3

PROGRAM STUDI TEKNIK INFORMATIKA


STIKOM Dinamika Bangsa Jambi
SOAL

1. Apa itu mutual exclution dan bagaimana cara mengatasinya ?


2. Bagaimana cara kerja metode naif untuk penjaminan mutual exclution ?
3. Apa itu deadlock dan sebutkan syarat terjadinya deadlock ?
4. Bagaimana cara mengatasi deadlock ?

JAWABAN:

1. Apa itu mutual exclution dan bagaimana cara mengatasinya ?

Mutual Exclusion adalah suatu cara yang menjamin jika ada sebuah proses yang
menggunakan variabel atau berkas yang sama (digunakan juga oleh proses lain), maka proses lain
akan dikeluarkan dari pekerjaan yang sama. Jadi, Mutual Exclusive terjadi ketika hanya ada satu
proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya
tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang
memakai sumber daya tersebut.

Pengertian lain Mutual exclusion adalah jaminan hanya satu proses yang mengakses
sumber daya pada suatu interval waktu tertentu, sedangkan proses lain dilarang mengerjakan hal
yang sama -> contoh : sumberdaya printer hanya bisa diakses 1 proses, tidak bisa bersamaan ->
sumber daya ini disebut sumber daya kritis.

Bagian program yang sedang mengakses memori atau sumberdaya yang dipakai bersama
disebut critical section / region. Kesuksesan proses-proses kongkuren memerlukan pendefinisian
critical section dan memaksakan mutual exclusion diantara proses-proses kongkuren yang
sedang berjalan. Pemaksaan mutual exclusion merupakan landasan pemrosesan kongkuren,
namun pemaksaan mutual exclusion dapat menimbulkan 2 masalah yaitu :

Deadlock

Adalah banyak proses yang saling menunggu hasil dari proses yang lain untuk dapat
melanjutkan atau menyelesaikan tugasnya.

Startvation

Adalah suatu proses akan menunggu suatu kejadian atau hasil suatu proses lain
supaya dapat menyelesaikan tugasnya, tetapi kejadian yang ditunggu tidak pernah terjadi
karena selalu diambil lebih dulu oleh proses yang lain.

Jadi konsep utama dari mutual exclusion adalah bagaimana melakukan manipulasi dan
membuat kebijakan tentang bagaimana tata cara pengaksesan critical section oleh proses satu
dengan yang lain yang mengakses secara simultan. Mutual exclusion baik yang terjadi pada
proses uniprocessing, multiprocessing maupun sistem yang cooperative, solusi yang harus
dilakukan bagaimana pengontrolan akses ke sumberdaya.
Penanganan mutual exclusion adalah sebagai berikut,

1. Mutual exclusion harus dilaksanakan : diantara sejumlah proses yang memiliki bagian
kritis bagi sumber daya yang sama atau objek bagi pakai, pada suatu saat tertentu hanya
sebuah proses yang diizinkan memasuki daerah kritisnya.

2. Suatu proses yang berhenti di dalam bagian kritisnya tidak boleh menganggu proses
lainnya.

3. Suatu proses yang memerlukan akses ke bagian kritis tidak boleh di-delay-kan dalam
waktu yang tidak tertentu.

4. Apabila di dalam bagian kritis tidak ada proses,proses yang ingin masuk ke dalam bagian
kritisnya harus diizinkan masuk tanpa delay.

5. Tidak ada asumsi dibuat tentang kecepatan proses relative atau jumlah prosesor.

6. Suatu proses berada pada di dalam bagian kritisnya dalam waktu tertentu saja.

Terdapat beberapa cara untuk memenuhi persyaratan mutual exclusion , yakni


dengan pendekatan software, pendekatan mesin (instruksi-instruksi mesin special
purpose) dan feature-feature dukungan sistem operasi.

Mutual Exclusion secara Software

Pendekatan yang dilakukan secara software ini mengamsumsikan mutual exclusion


elementer pada tingkat akses memori. Dengan kata lain, akses simultan ke lokasi yang
sama dalam memori diserialkan oleh beberapa memori arbiter,walaupun urutan
pemberian akses tidak ditentukan terlebih dahulu. Dan tidak diasumsikan adanya
dukungan pada tingkat hardware, sistem operasi atau bahasa pemrograman.

1 Algoritma Dekker

Algoritma ini dirancang oleh ahli matematika Belanda bernama Dekker. Algoritma ini
menjabarkan mutual exclusion bagi dua proses. Solusi yang dikembangkan oleh algoritma
ini dilakukan secara bertahap. Kelebihan dari algoritma ini adalah mampu menjelaskan
bug-bug yang paling sering dijumpai di dalam pembuatan program-program konkuren.

Didalam algoritma ini terdapat beberapa usaha yang dilakukan untuk melakukan
mutual exclusion pada dua proses.

1.1 Usaha Pertama

Mekanisme yang paling umum digunakan adalah Constrain. Mekanisme yang paling
umum digunakan adalah Constrain. Yakni hanya mengizinkan satu akses ke lokasi memori
pada suatu saat tertentu.

Cara yang dilakukan adalah dengan membuat satu variabel bebas (int turn = 0).
Sebuah proses (P0 atau P1), yang menginginkan untuk mengeksekusi bagian kritisnya harus
memeriksa isi dari turn. Jika nilai turn sama dengan jumlah dari proses, maka proses dapat
melanjutkan ke bagian kritis. Jika tidak maka proses tersebut menunggu untuk dapat
mengeksekusi waktu krisisnya, atau yang dinamakan busywaiting. Busywaiting adalah
proses menunggu untuk mengeksekusi namun terus melakukan pemeriksaan terhadap
nilai dari turn.

Usaha pertama ini telah mampu memenuhi persayaratan mutual exclusion, namun
memiliki dua kekurangan mendasar. Pertama, proses-proses harus diawasi dengan ketat
dalam bergantian penggunaan bagian-bagian kritisnya. Jadi kecepatan ekseskusi
ditentukan oleh kecepatan proses yang lebih lambat yang dimiliki oleh kedua proses.
Apabila P0 mengkases bagian kritisnya 1 kali dalam satu jam, sedangkan P1 mengakses
1000 kali dalam satu jam. Maka P0 akan dipaksa menerima kelajuan dari P1. Masalah yang
lebih serius terjadi apabila ada saru proses yang mengalami kegagalan, proses yang lain
akan terblokir semua.

Jadi usaha tersebut walaupun sudah dikatakan mampu melakukan teknik


penstrukturan yang berguna, namun belum mampu mendukung pengolahan konkuren.
Usaha pertama ini biasanya dikenal dengan nama coroutine.

1.2 Usaha Kedua

Usaha kedua ini dilakukan untuk memenuhi syarat agar proses dapat memeriksa
keadaan proses yang lain. Jadi ketika sebuah proses musnah, proses yang lain masih bisa
mengeksekusi ke bagian kritisnya.

Untuk itu dibuat variabel global bagi pakai Flag[0] dan Flag[1]. Flag[0] berhubungan
dengan P0 dan Flag[1] berhubungan dengan P1. Ilustrasinya, ketika proses P1 akan
memasukki bagian kritis maka ia memeriksa Flag [0] miliki P0. Jika Flag[0] bernilai false
maka P1 akan mengeksusi bagian kritisnya dan mengeset Flag[1] menjadi bernilai true.
Setelah selesai mengeksekusi, maka Flag[1] diset kembali menjadi nilai false.

Dengan pendekatan seperti ini maka apabila sebuah proses mengalami kegagalan di
luar bagian kritis, proses lain tidak akan terblokir. Proses akan dapat masuk kebagian
kritisnya sesering mungkin yang ia mau karena status flag selalu bernilai false, namun
ketika proses gagal ketika berada di bagian kritisnya maka proses akan terblokkir
selamanya.

Namun proses ini memiliki tingkat sulisi yang lebih buruk dari usaha pertama. Hal ini
dikarenakan usaha kedua tidak mampu menjamin adanya mutual exclusion. Dengan sistem
pendekatan seperti di atas maka akan terjadi kemungkinan kedua proses berada pada
bagian kritisnya secara bersamaan. Dan ini akan menjadi deadlock.

1.3 Usaha Ketiga

Usaha ketiga ini dilakukan untuk menyempurnakan kelemahan yang dimiliki oleh
usaha kedua. Dalam usaha kedua bila proses rusak pada bagian diluar kritisnya maka
proses lain masih dapat mengakses bagian kritisnya. Namun ketika proses terhenti di
bagian kritisnya, maka proses akan terblokir selamanya.

Ilustrasi yang dilakukan menggunakan sudut pandang P0. Ketika P0 akan


mengeksekusi bagian kritisnya maka akan mengeset flag [0] bernilai true agar proses P1
tidak dapat mengakses bagian kritisnya ketika P0 sedang memasukki bagian kritisnya. Hal
ini telah mampu memenuhi syarat mutual exclusion.

Namun dengan mengeset nilai flagnya menjadi true sebelum mengeksekusi bagian
kritisnya, maka hal ini akan menimbulkan masalah baru. Yakni ketika kedua proses pada
saat yang bersamaan mengeset flag masing-masing menjadi true sebelum mengerjakan
bagian kritisnya, maka kedua proses mengira proses lain sedang berada di bagian kritis.
Kejadian ini merupakan deadlock.

1.4 Usaha Keempat

Usaha keempat ini menjamin adanya mutual exclusion. Usaha keempat ini mengatur
sedemikian rupa supaya setiap proses tidak masuk ke bagian kritis. Kondisi ini dikenal
dengan nama livestock.

Skenario ini tidak dapat diterima karena, hanya dapat dijelaskan dan tidak dapat
dipertahankan untuk suatu waktu yang lama.

1.5 Solusi yang Benar

Pendekatan dengan flag array masih belum cukup untuk mengatasi masalah “mutual
courtesy”. Untuk itu perlu membuat urutan aktivitas kedua proses, hal ini dapat diatasi
dengan menggunakan variabel turn pada pendekatan pertama. Variabel turn ini akan
mengindikasikan proses mana yang mempunyai hak memasuki daerah kritisnya.

Solusi ini dapat dijelaskan sebagai berikut. Ketika P0 ingin memasukki daerah
kritisnya, P0 menyetel flagnya ke true. Kemudian P0 memeriksa flag P1. Apabila flagnya
false, P0 dapat dengan segera memasukki bagian kritisnya, jika tidak, P0 memeriksa dengan
turn. Jika ditemukan bahwa turn = 0, kemudian mengetahui bahwa akan kembali untuk
memaksakan dan secara periodic memeriksa P1 flag. P1 akan dalam beberapa titik
memeriksa bahwa akan kembali ke pemeriksaan kembali dan men-set flag false,
membolehkan P0 untuk dilanjutkan. Setelah P0 telah digunakan dalam bagian kritis, akan
men-set flag ke false untuk membebaskan bagian kritis dan men-set turn ke 1 untuk
mentransfer hak untuk memaksakan ke P1.

2 Algoritma Peterson

Algoritma dekker menyeleseikan masalah mutual exclusion namun menggunakan


program yang agak rumit dan sulit dipahami serta kebenarannya sangat sulit dibuktikan.
Peterson telah memberikan solusi yang singkat dan baik sekali. Sesuai dengan solusi yang
ditawarkan, flag variabel array global digunakan untuk mengindikasikan bahwa posisi
setiap proses dalam kaitannya dengan mutual exclusion, dan variabel turn digunakan untuk
memecah konflik yang simultan.

Untuk lebih jelasnya seperti berikut, Apabila P0 menyetel flag[0] ke true , P1 tidak bisa
masuk ke bagian kritis. Apabila P1 telah masuk ke bagian kritis, flag[1] menjadi true dan P0
tidak dapat masuk kebagian kritis. Sebaliknya mutual blocking dicegah dicegah dengan
memanfaatkan variabel turn.
Untuk lebih jelasnya dapat dilihat pada kemungkinan yang akan terjadi sebagai berikut :

1. P1 tidak berminat memasukki bagian kritisnya. Hal ini tidak mungkin terjadi karena P1
mengimplikasikan flag[1] = false.

2. P1 sedang menunggu bagian kritisnya. Tidak dapat terjadi karena jika turn = 1 maka P1
dapat memasukki bagian kritisnya.

3. P1 Sedang menggunakan bagian kritisnya dan memonopoli. Hal ini tidak terjadi karena
karena P1 memiliki kewajiban member kesempatan kepada P0 dengan cara men-set turn
menjadi 0.

Algoritma ini mampu menjelaskan mutual exclusion secara lebih mudah. Dan
algoritma ini mampu dengan mudah untuk degenerate untuk sistem n-proses.

2. Bagaimana cara kerja metode naif untuk penjaminan mutual exclution ?


Sebenarnya metode ini tidak menyelesaikan mutual exclusion, karena masih terdapat
scenario proses yang membuat situasi kacau. Metode ini sering disebut metode variable lock
sederhana.

Ketika proses hendak masuk critical section, proses lebih dulu memeriksa variable lock dengan
ketentuan :

· Jika variable lock bernilai 0, proses mengeset variable lock menjadi 1 dan segeramasuk
critical section.

· Jika variable lock bernilai 1, proses menunggu sampai nilai variabel lock menjadi 0.
(situasi ini berarti sedang terjadi proses lain di critical section)

3. Apa itu deadlock dan sebutkan syarat terjadinya deadlock ?


Deadlock adalah keadaan dimana dua program memegang kontrol terhadap sumber daya
yang dibutuhkan oleh program yang lain. Tidak ada yang dapat melanjutkan proses masing-masing
sampai program yang lain memberikan sumber dayanya, tetapi tidak ada yang mengalah.
Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu
kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam
kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan
oleh proses lain dalam himpunan tersebut.

Syarat terjadinya Deadlock

Karakteristik-karakteristik ini harus dipenuhi keempatnya untuk terjadi deadlock. Namun,


perlu diperhatikan bahwa hubungan kausatif antara empat karakteristik ini dengan terjadinya
deadlock adalah implikasi. Deadlock mungkin terjadi apabila keempat karakteristik terpenuhi.
Empat kondisi tersebut adalah:

1. Mutual Exclusion

Kondisi yang pertama adalah mutual exclusion yaitu proses memiliki hak milik pribadi
terhadap sumber daya yang sedang digunakannya. Jadi, hanya ada satu proses yang
menggunakan suatu sumber daya. Proses lain yang juga ingin menggunakannya harus
menunggu hingga sumber daya tersebut dilepaskan oleh proses yang telah selesai
menggunakannya. Suatu proses hanya dapat menggunakan secara langsung sumber daya
yang tersedia secara bebas.

2. Hold and Wait

Kondisi yang kedua adalah hold and wait yaitu beberapa proses saling menunggu sambil
menahan sumber daya yang dimilikinya. Suatu proses yang memiliki minimal satu buah
sumber daya melakukan request lagi terhadap sumber daya. Akan tetapi, sumber daya yang
dimintanya sedang dimiliki oleh proses yang lain. Pada saat yang sama, kemungkinan adanya
proses lain yang juga mengalami hal serupa dengan proses pertama cukup besar terjadi.
Akibatnya, proses-proses tersebut hanya bisa saling menunggu sampai sumber daya yang
dimintanya dilepaskan. Sambil menunggu, sumber daya yang telah dimilikinya pun tidak akan
dilepas. Semua proses itu pada akhirnya saling menunggu dan menahan sumber daya
miliknya.

3. No Preemption

Kondisi yang selanjutnya adalah no preemption yaitu sebuah sumber daya hanya dapat
dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai menggunakannya.
Proses yang menginginkan sumber daya tersebut harus menunggu sampai sumber daya
tersedia, tanpa bisa merebutnya dari proses yang memilikinya.

4. Circular Wait

Kondisi yang terakhir adalah circular wait yaitu kondisi membentuk siklus yang berisi
proses-proses yang saling membutuhkan. Proses pertama membutuhkan sumber daya yang
dimiliki proses kedua, proses kedua membutuhkan sumber daya milik proses ketiga, dan
seterusnya sampai proses ke n-1 yang membutuhkan sumber daya milik proses ke n. Terakhir,
proses ke n membutuhkan sumber daya milik proses yang pertama. Yang terjadi adalah
proses-proses tersebut akan selamanya menunggu.

4. Bagaimana cara mengatasi deadlock ?

Cara untuk menangani keadaan deadlock, yaitu:

1. Pengabaian

Maksud dari pengabaian di sini adalah sistem mengabaikan terjadinya deadlock dan pura-pura
tidak tahu kalau deadlock terjadi. Dalam penanganan dengan cara ini dikenal istilah ostrich algorithm.
Pelaksanaan algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan secara otomatis
mematikan proses atau program yang mengalami deadlock. Kebanyakan sistem operasi yang ada
mengadaptasi cara ini untuk menangani keadaan deadlock. Cara penanganan dengan mengabaikan
deadlock banyak dipilih karena kasus deadlock tersebut jarang terjadi dan relatif rumit dan kompleks
untuk diselesaikan. Sehingga biasanya hanya diabaikan oleh sistem untuk kemudian diselesaikan
masalahnya oleh user dengan cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukan restart
terhadap komputer.

2. Pencegahan
Penanganan ini dengan cara mencegah terjadinya salah satu karakteristik deadlock.
Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem. Intinya memastikan agar
sistem tidak akan pernah berada pada kondisi deadlock.

3. Penghindaran

Menghindari keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca adalah bahwa
antara pencegahan dan penghindaran adalah dua hal yang berbeda. Pencegahan lebih kepada
mencegah salah satu dari empat karakteristik deadlock terjadi, sehingga deadlock pun tidak terjadi.
Sedangkan penghindaran adalah memprediksi apakah tindakan yang diambil sistem, dalam kaitannya
dengan permintaan proses akan sumber daya, dapat mengakibatkan terjadi deadlock.

4. Pendeteksian dan Pemulihan.

Pada sistem yang sedang berada pada kondisi deadlock, tindakan yang harus diambil adalah
tindakan yang bersifat represif. Tindakan tersebut adalah dengan mendeteksi adanya deadlock,
kemudian memulihkan kembali sistem. Proses pendeteksian akan menghasilkan informasi apakah
sistem sedang deadlock atau tidak serta proses mana yang mengalami deadlock.

Anda mungkin juga menyukai