Email : wawans57@yahoo.com
pin : 29a1822c
A.
Sinkronisasi
Proses
Suatu proses yang bekerja bersama-sama dan saling
berbagi data dapat mengakibatkan race condition atau pengaksesan data
secara bersama-sama. Critical section adalah suatu segmen kode dari
proses-proses itu yang yang memungkinkan terjadinya race condition.
Untuk mengatasi masalah critical section ini, suatu data yang sedang
diproses tidak boleh diganggu proses lain.
Solusi prasyarat critical section:
1. Mutual
Exclusion.
2. Terjadi
kemajuan (progress).
3. Ada batas
waktu tunggu (bounded waiting)
Critical section dalam
kernel:
1. Interupsi.
2. Page Fault .
3. Kernel code memanggil
fungsi penjadwalan sendiri.
Solusi critical section harus memenuhi ketiga
syarat berikut:
1. Mutual
Exclusion
2. Progress
3. Bounded
Waiting
Algoritma I dan II terbukti tidak dapat memecahkan
masalah critical section untuk dua proses karena tidak memenuhi syarat progress
dan bounded waiting. Algoritma yang dapat menyelesaikan masalah critical
section pada dua proses adalah Algoritma III. Sedangkan untuk masalah critical
section pada n-buah proses dapat diselesaikan dengan menggunakan Algoritma
Tukang Roti.
a.
Perangkat Sinkronisasi
1.
Instruksi TestAndSet(). instruksi
atomik yang dapat digunakan untuk menangani masalah critical section.
2.
Semafor. sebuah
variabel yang hanya dapat diakses oleh dua buah operasi standar yaitu increment
dan decrement. Dua buah jenis semafor, yaitu Binary Semaphore dan
Counting Semaphore. Semafor berfungsi untuk menangani masalah critical
section, mengatur alokasi resource, dan sinkronisasi antarproses.
3.
Monitor. digunakan
untuk menangani masalah yang muncul karena pemakaian semafor. Monitor menjamin mutual
exclusion. Untuk menangani masalah sinkronisasi yang lebih rumit monitor
menyediakan condition variable.
4.
JVM. mengimplementasikan
monitor. Monitor JVM bekerja dengan object locking dan method-methodwait() serta notify(). Monitor
JVM dapat digunakan dengan menggunakan keyword synchronized.
b.
Transaksi Atomik
Transaksi merupakan sekumpulan instruksi atau operasi
yang menjalankan sebuah fungsi logis dan memiliki sifat atomicity, consistency,
isolation, dan durability. Sifat atomicity pada transaksi
menyebabkan transaksi tersebut akan dijalankan secara keseluruhan atau tidak
sama sekali. Operasi-operasi pada transaksi atomik disimpan dalam log
agar dapat dilakukan rolled-back jika terjadi kegagalan sistem. Dengan
memanfaatkan log, pemulihan data dapat dilakukan dengan melakukan undo
atau redo. Untuk menghemat waktu pada saat rolled-back, kita
dapat memberikan operasi checkpoint pada transaksi sehingga kita tidak
perlu memeriksa keseluruhan transaksi untuk memutuskan melakukan undo/redo.
Serialisasi diperlukan ketika beberapa transaksi
atomik dijalankan secara bersamaan. Hal ini dimaksudkan agar sifat konsistensi
hasil eksekusi transaksi dapat terpenuhi. Ada dua cara untuk menjaga agar
penjadwalan bersifat serializable, yaitu protokol penguncian dan
protokol berbasis waktu. Pada protokol penguncian, setiap data yang akan
diakses harus dikunci oleh transaksi yang akan memakainya agar transaksi lain
tidak bisa mengakses data yang sama. Sedangkan, pada protokol berbasis waktu,
setiap transaksi diberikan suatu timestamp yang unik, sehingga dapat
diketahui apakah transaksi tersebut sudah dijalankan atau belum. Protokol
berbasis waktu dapat mengatasi masalah deadlock, sedangkan protokol
penguncian tidak.
c.
Sinkronisasi Linux
ada suatu saat dalam sebuah kernel, tidak terkecuali
kernel LINUX, dapat terjadi concurrent access. Dalam hal ini diperlukan
proteksi dalam kernel yang bersangkutan. Proteksi dapat dilakukan dengan
sinkronisasi.Sebuah proses memiliki bagian dimana bagian ini akan melakukan
akses dan manipulasi data. Bagian ini disebut dengan critical section.
Ketika sebuah proses sedang dijalankan dalam critical section nya, tidak
ada proses lain yang boleh dijalankan dalam critical section nya.
Ada dua jenis concurrency yaitu pseudo-concurrency
dan true-concurrency. Ada beberapa penyebab konkurensi kernel,
diantaranya interrupt, softirqs dan tasklets, kernel preemption,
sleeping dan synchronization with user-space, dan symmetrical
multiprocessing.Salah satu metode dalam kernel LINUX untuk sinkronisasi
adalah atomic operations. Integer atomik adalah salah satu jenis dari atomic
operations. Integer Atomik menyediakan instruksi yang dijalankan secara
atomik (tanpa interrupt).
Locking yang paling
umum digunakan dalam LINUX adalah spin lock. Spin lock adalah lock
yang hanya dapat dilakukan oleh satu thread. Ketika sebuah thread
yang akan dijalankan meminta spin lock yang sedang digunakan, maka thread
ini akan loops menunggu sampai spin lock tersebut selesai
digunakan oleh thread yang sedang berjalan.Semafor dalam LINUX adalah sleeping
locks. Ketika sebuah thread meminta semafor yang sedang digunakan,
maka semafor akan meletakkan thread tersebut dalam wait queue dan
menyebabkan thread tersebut masuk status sleep.
Symmetrical multiprocessing (SMP)
mendukung adanya pengeksekusian secara paralel dua atau lebih thread
oleh dua atau lebih processor. Kernel LINUX 2.0 adalah kernel LINUX pertama
yang memperkenalkan konsep SMP.
B.
Penanganan
dan Pengendalian Deadlock
Untuk menangani
deadlock dilakukan beberapa proses dengan algoritma-algoritma. Berikut
algoritma-algoritma yang sering digunakan dalam penanganan dan pengendalian
deadlock :
1. Algoritma Banker
Algoritma
banker lebih dikenal dengan nama algoritma penjadwalan. Algoritma banker dapat
digambarkan sebagai seorang banker/bankir yang berurusan dengan kelompok orang
yang meminta pinjaman kepada banker tersebut. banker tersebut dapat memberikan
pinjamannya dan setiap pelanggan memberikan batas pinjaman maksimum kepada
setiap peminjam dana. banker juga tahu bahwa si peminjam tidak akan meminjam
dana maksimum yang mereka butuhkan dalam waktu yang singkat. Tetapi peminjam
akan meminjam dana secara bertahap. Sehingga dana yang ia punya lebih sedikit
dari batas maksimum yang dipinjamkan. Kemudian banker memprioritaskan yang
meminta dana lebih banyak, sedangkan peminjam yang lain disuruh menunggu hingga
peminta dana yang lebih besar itu mengembalikan pinjaman berikut bunganya.
Setelah itu bila dana sudah di kembalikan banker meminjamkan pada peminjam yang
menunggu.
Jadi algoritma
banker bekerja dengan cara mempertimbangkan apakah permintaan para peminjam itu
sesuai dengan jumlah dana yang ia miliki, sekaligus memperkirakan jumlah dana
yang mungkin diminta lagi. Sehingga keadaanya tidak sampai pada kondisi dimana
dananya habis dan tidak dapat meminjamkan uang lagi. Jika dana yang dipinjamkan
tidak ada atau kehabisan maka akan terjadi kondisi deadlock. Agar kondisi aman,
maka asumsi setiap pinjaman harus dikembalikan waktu yang tepat.
Gambaran di
atas adalah cara kerja dari algoritma banker, Dan dana yang dimaksud di
gambarkan sebagai sumber daya yang akan di ambil oleh proses computer.
2.
Algoritma
Safety
Algoritma ini
bekerja dengan cara algoritma mencari apakah sistem dalam status aman atau
tidak. Status ini terjadi jika sistem dapat mengalokasikan sumber daya bagi
tiap proses dalam keadaan tertentu dan masih dapat terjadi deadlock. Status
aman bukanlah status deadlock, jadi status deadlock merupakan status tidak
aman, tetapi tidak selamanya status tidak aman mengakibatkan status deadlock
melainkan ada kemungkinan dapat terjadi.
3.
Algoritma
Ostrich
Algoritma
ostrich merupakan strategi penanganan deadlock dengan cara mengabaikan masalah
yang mungkin terjadi atas dasar bahwa masalah itu mungkin sangat jarang terjadi.dalam
hal ini berarti diasumsikan bahwa tidak ada masalah. Dengan begitu
mengasumsikan bahwa tidak ada masalah lebih efektif daripada untuk memungkinkan
masalah itu terjadi dibandingkan upaya pencegahannya.
Secara umum terdapat 4 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. Akan dibahas secara lebih mendalam pada
bagian selanjutnya.
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. Akan dibahas secara lebih mendalam pada
bagian selanjutnya.
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.
Akan dibahas secara lebih mendalam pada bagian selanjutnya.
C.
Konkureni
: Mutual Excluion, Deadlock & Starvation
Ø Konkurensi
Proses-Proses yang disebut kongruen apabila
proses-proses (lebih dari satu proses) berada pada saat yang sama. Karena
proses tersebut bisa saja tidak saling bergantung tetapi saling berinteraksi.
Ø Prinsip-prinsip
konkurensi meliputi :
Konkurensi meliputi hal-hal sbb:
-
Alokasi waktu pemroses untuk semua
proses
Bertugas menjadwalkan alokasi pemroses di antara proses-proses
ready dalam memori . Saat proses diberi jatah waktu oleh pemroses.
-
Pemakaian bersama dan persaingan
untuk mendapatkan sumber daya
Persaingan antar proses terjadi ketika beberapa proses akan menggunakan
sumber daya yang sama.
Jika ada 2 proses yang akan mengakses ke suatu sumber daya
tunggal, kemudian satu proses dialokasikan kesumber daya tersebut oleh SO
proses yang lainnya akan menunggu.
-
Komunikasi antar proses
Adalah cara atau mekanisme pertukaran data antara satu proses dengan
proses lainnya, baik itu proses yang berada di dalam komputer yang sama, atau
komputer jarak jauh yang terhubung melalui jaringan.
Ø Sistem
berbagi memori
Sistem berbagi memori atau yang disebut juga sebagai Shared
Memory System merupakan salah satu cara komunikasi antar proses dengan cara
mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses.
Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat
program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai
memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.
Ø Sistem
berkirim pesan
Sistem berkirim pesan adalah proses komunikasi antar
bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan
dua operasi yaitu mengirim pesan dan menerima pesan. Ketika dua bagian sistem
ingin berkomunikasi satu sama lain, yang harus dilakukan pertama kali adalah
membuat sebuah link komunikasi antara keduanya. Setelah itu, kedua
bagian itu dapat saling bertukar pesan melalui link komunikasi tersebut.
Sistem berkirim pesan sangat penting dalam sistem operasi. Karena dapat
diimplementasikan dalam banyak hal seperti pembagian memori, pembagian bus, dan
melaksanakan proses yang membutuhkan pengerjaan bersama antara beberapa bagian
sistem operasi.
Terdapat dua macam cara berkomunikasi, yaitu:
1. Komunikasi
langsung. Dalam komunikasi langsung, setiap proses yang ingin
berkirim pesan harus mengetahui secara jelas dengan siapa mereka berkirim
pesan. Hal ini dapat mencegah pesan salah terkirim ke proses yang lain.
Karakteristiknya antara lain :
-
Link dapat
otomatis dibuat
-
Sebuah link berhubungan
dengan tepat satu proses komunikasi berpasangan
-
Diantara pasangan itu terdapat tepat
satu link
-
Link tersebut
biasanya merupakan link komunikasi dua arah
2. Komunikasi
tidak langsung. Berbeda dengan komunikasi langsung, jenis komunikasi
ini menggunakan sejenis kotak surat atau port yang mempunyai ID unik
untuk menerima pesan. Proses dapat berhubungan satu sama lain jika mereka
membagi port mereka. Karakteristik komunikasi ini antara lain:
-
Link hanya
terbentuk jika beberapa proses membagi kotak surat mereka
-
Sebuah link dapat terhubung
dengan banyak proses
-
Setiap pasang proses dapat membagi
beberapa link komunikasi
-
Link yang ada
dapat merupakan link terarah ataupun link yang tidak terarah
Ø Sinkronisasi
aktivitas banyak proses
Sinkronisasi aktivitas banyak proses yaitu kerja sama diantara
proses.Adapun kerjasama diantara proses terbagi kedalam 2 bagian, diantaranya :
a. Kerjasama
diantara proses dengan pemakaian bersama
Dalam kasus kerjasama pemakaian sumber daya bersama
meliputi proses-proses yang saling berinteraksi tanpa dinyatakan secara
eksplisit. Contoh : Banyak proses mengakses variabel atau berkas yang dipakai
bersama. Proses-proses dapat menggunakan dan memperbarui data yang dipakai
bersama tanpa peduli proses-proses lain. Proses mengetahui bahwa proses-proses
lain dapat juga mengakses data yang sama. Proses-proes harus bekerja sama untuk
menjamin integritas data yang dipakai bersama tersebut.
Kerjasama diantara proses-proses dalam pemakaian
bersama mempunyai masalah:
-
Mutual exclusion
-
Deadlock
-
Starvation
Karena data disimpan pada suatu sumber daya
(peralatan, memori), maka terdapat masalah pengendalian mutual exclusion,
deadlock dan starvation. Perbedaannya adalah item-item data dapat diakses
dengan dua mode, yaitu :
1.
Operasi pembacaan dan penulisan
harus mutually exclusive (yaitu benar-benar hanya satu proses yang berada di
critical section).
2.
Operasi penulisan saja yang harus
mutually exclusive.
Pada situasi ini, masalah baru muncul yaitu mengenai koherensi data.
Critical section digunakan untuk menjamin integritas data.
b.
Kerjasama diantara proses dengan
komunikasi
Pada kasus persaingan, proses-proses memakai sumber
daya tanpa peduli prosesproses lain. Pada kasus kedua, proses-proses memakai
bersama nilai dan meski masingmasing proses tidak secara eksplisit peduli
proses-proses lain. Tapi proses-proses peduli untuk menjaga integritas data.
Ketiak proses-proses bekerja sama dengan komunikasi, beragam proses
berpartisipasi dalam suatu usaha dengan menghubungkan semua proses. Komunikasi
menyediakan cara untuk sinkronisasi atau koordinasi beragam aktivitas.
Komunikasi dicirikan dengan berisi pesan-pesan dengan suatu urutan. Primitif
untuk mengirim dan menerima pesan disediakan sebagai bagian bahasa pemrograman
atau disediakan kernel sistem operasi. Karena tak ada sesuatu yang dipakai
bersama diantara proses-proses itu dalam melewatkan pesan-pesan, tak ada
masalah mutual exclusion. Tetapi masalah deadlock dan starvation dapat muncul.
Ø Konkurensi
dapat muncul pada konteks berbeda, antara lain:
a.
Banyak aplikasi atau Banyak pemakai
(multipleapplication)
Multiprogramming memungkinkan banyak proses sekaligus dijalankan.
Proses-proses dapat berasal dari aplikasi-aplikasi berbeda. Pada system
multiprogramming bisa terdapat banyak aplikasi sekaligus yang dijalankan di
system komputer.
b.
Aplikasi terstruktur (untuk
strukturisasi dari aplikasi)
Perluasan prinsip perancangan modular dan pemrograman terstruktur adalah
suatu aplikasi dapat secara efektif diimplementasikan sebagai sekumpulan
proses. Dengan sekumpulan proses, maka tiap proses menyediakan satu layanan
spesifik tertentu.
c.
Struktur sistem operasi (untuk
strukturisas sistem operasi)
Keunggulan strukturisasi dapat juga diterapkan ke pemrograman sistem.
Beberapa sistem operasi aktual yang dipasarkan dan yang sedang dalam riset
telah diimplementasikan sebagai sekumpulan proses. Sistem operasi bermodelkan
client/server menggunakan pendekatan ini.
d.
Untuk Strukturisasi Satu Proses
(untuk strukturisasi dari satu proses)
Saat ini untuk peningkatan kinerja maka satu proses dapat memiliki
banyak thread yang independen. Thread-thread tersebut harus dapat bekerjasama
untuk mencapai tujuan proses.
Ø Beberapa
Kesulitan Yang Ditimbulkan Konkurensi
a.
Pemakaian bersama sumber daya global
Jika dua proses menggunakan variabel global yang sama, serta keduanya
membaca dan menulis variabel itu maka urutan terjadinya pembacaan dan penulisan
terhadap variabel itu menjadi kritis.
b.
Pengelolaan alokasi sumber daya agar
optimal
Jika proses A meminta suatu kanal masukan/keluaran tertentu dan dapat
terjadi kemudian proses A di suspend sebelum menggunakan kanal itu. Jika
sistem operasi mengunci kanal tersebut dan orang lain tidak dapat
menggunakannya, maka akan terjadi inefisiensi.
c.
Pencarian kesalahan pemrograman
(Debuging)
Pencarian kesalahan pada pemrograman kongkuren lebih sulit dibanding
pencarian kesalahan pada program-program sekuen.
d.
Mengetahui Proses-Proses Aktif
Sistem operasi harus mengetahui proses-proses yang aktif.
e.
Alokasi dan Dealokasi bragam sumber
daya untuk tiap proses aktif
Sistem operasi harus mengalokasikan dan mendealokasikan beragam sumber
daya untuk tiap proses aktif. Sumber daya yang harus dikelola, antara lain:
1.
Waktu pemroses
2.
Memori
3.
Berkas-berkas
4.
Perangkat I/O
f. Proteksi
Data dan Sumber Daya Fisik
Sistem operasi harus memproteksi data dan sumber daya fisik
masing-masing proses dari gangguan proses-proses lain.
g.
Hasil-hasil harus Independen
Hasil-hasil proses harus independen terhadap kecepatan relatif
proses-proses lain dimana eksekusi dilakukan.
Ø Tiga
Katagori Interaksi dengan Banyak Proses (Kongkruen)
Pada system dengan banyak proses (konkuren), terdapat 3 kategori
interaksi,
yaitu:
yaitu:
1. Proses-proses
tidak saling peduli (Independent)
Proses-proses tidak dimaksudkan untuk bekerja bersama untuk mencapai
tujuan tertentu.
2. Proses-proses
saling mempedulikan secara tidak langsung
Proses-proses tidak perlu saling mempedulikan identitas prosesproses
lain tapi samasama mengakses objek tertentu (seperti buffer Input/Output).
Prosesproses itu perlu bekerja sama dalam memakai bersama objek tertentu.
lain tapi samasama mengakses objek tertentu (seperti buffer Input/Output).
Prosesproses itu perlu bekerja sama dalam memakai bersama objek tertentu.
3. Proses-proses
saling mempedulikan secara langsung
Proses-proses dapat saling bekomunikasi dan dirancang bekerja sama
untuk suatu aktivitas.
untuk suatu aktivitas.
Ø Masalah-masalah
Kongkuren diantaranya :
1.
Mutual Exclusion
Mutual Exclusion adalah jaminan hanya satu proses yang
mengakses sumber daya pada satu interval tertentu. Terdapat sumber daya yang
tak dapat dipakai bersama pada saat bersamaan (mis. printer). Sumber daya
ini disebut dengan sumber daya kritis. Bagian program yang menggunakan sumber
daya kritis disebut memasuki critical region/station. Hanya satu program pada
satu saat yang diijinkan masuk critical region. Programmer tidak dapat
bergantung pada system operasi untuk memehami dan memaksa batasan ini karena
maksud program tidak dapat diketahui.
Sistem hanya menyediakan layanan (system call) untuk mencegah proses
masuk critical regionyang sedang dimasuki proses lain. Programmer harus
menspesifikasi bagian bagian critical region sehingga system operasi akan
menjaganya dengan suatu mekanisme untuk mencegah proses lain masuk
critical region yang sedang dipakai proses lain. Pemaksaaan adanya mutual exclusion menimbulkan deadlock dan startvation
Sistem hanya menyediakan layanan (system call) untuk mencegah proses
masuk critical regionyang sedang dimasuki proses lain. Programmer harus
menspesifikasi bagian bagian critical region sehingga system operasi akan
menjaganya dengan suatu mekanisme untuk mencegah proses lain masuk
critical region yang sedang dipakai proses lain. Pemaksaaan adanya mutual exclusion menimbulkan deadlock dan startvation
Kriteria penyelesaian Mutual Exclusion:
1.
Mutual exclusion harus dijamin,
hanya satu proses pada saat yang
diijinkan masuk ke critical section.
diijinkan masuk ke critical section.
2.
Prosesyang berada di noncritical
section, dilarang memblocked proses lain yang ingin masuk critical
section.
3.
Harus dijamin proses yang ingin
masuk critical section tidak menunggu
selama waktu yang tak berhingga.
selama waktu yang tak berhingga.
4.
Ketika tidak ada proses pada
critical section maka proses yang ingin
masuk critical section harus diijinkan masuk tanpa tertunda.
masuk critical section harus diijinkan masuk tanpa tertunda.
5.
Tidak ada asumsi mengenai kecepatan
relative proses atau jumlah
proses yang ada.
proses yang ada.
2.
Deadlock
Proses disebut deadlock jika prose menunggu suatu
kejadian yang tak
pernah terjadi. Sekumpulan proses berkondisi deadlock bila setiap proses
yang ada menunggu suatu kejadian yang hanya dapat dilakukan proses
lain yang juga berada di kumpulan tersebut.
pernah terjadi. Sekumpulan proses berkondisi deadlock bila setiap proses
yang ada menunggu suatu kejadian yang hanya dapat dilakukan proses
lain yang juga berada di kumpulan tersebut.
Ilustrasi :
-
Terdapat dua proses P1 dan P2
-
Dua sumber kritis R1 dan R2
-
Proses P1 dan P2 harus mengakses
kedua sumber daya itu (R1 dan R2).
-
R1 diberikan pada P1 sedang R2
diberikan pada P2.
-
Karena untuk melanjutkan eksekusi
memerlukan dua sumber daya sekaligus maka proses akan saling menunggu sumber
daya lain selamanya.
Syarat terjadinya deadlock :
-
Mutual exclusion
Tiap sumber daya saat diberikan pada satu proses.
-
Hold and wait Condition
Proses-proses yang sedang menggenggam sumber daya, menunggu
sumberdaya-sumberdaya baru
sumberdaya-sumberdaya baru
-
Non Preemption Condition
Sumberdaya- sumberdaya yang sebelumnya duberikan tidak dapat
diambil paksa dari proses itu. Sumberdaya – sumberdaya harus secara eksplisit dilepaskan dari proses yang menggenggamnya.
diambil paksa dari proses itu. Sumberdaya – sumberdaya harus secara eksplisit dilepaskan dari proses yang menggenggamnya.
-
Circulair Wait Condition
Harus terdapat rantai sirkuler dari dua proses atau lebih, masing-masing
menunggu sumber daya yang digenggam oleh berikutnya pada rantai itu.
menunggu sumber daya yang digenggam oleh berikutnya pada rantai itu.
Metode Mengatasi deadlock :
-
Pencegahan terjadinya deadlock
-
Pengindaran terjadinya deadlock
-
Deteksi dan pemulihan deadlock
3.
Starvation
Proses dikatakan mengalami starvation jika proses-proses
itu menunggu
alokasi sumber daya sampai tak berhingga, sementara proses-proses lain dapat memperoleh alokasi sumber daya.
alokasi sumber daya sampai tak berhingga, sementara proses-proses lain dapat memperoleh alokasi sumber daya.
Ilustrasi :
-
Misal terdapat 3 (tiga) proses P1,P2
dan P3.
-
P1,P2 dan P3.memerlukan akses sumber
daya R secara periodik.
Selanjutnya :
-
P1 sedang diberi sumber daya R, P2
dan P3 blocked menunggu sumber sumber daya R.
-
Ketika P1 keluar dari critical
region, P2 dan P3 diijinkan
mengakses R.
mengakses R.
-
Asumsi P3 diberi hak akses.
Kemudian setelah selesai, hak akses kembali diberikan ke P1 yang saat itu
membutuhkan sumber daya R.
-
Jika pemberian hak akses bergantian
terusmenerus antara P1 dan P3 , maka P2 tidak pernah memperoleh akses sumber
daya R, meski tidak ada deadlock. Pada situasi ini P2 disebut mengalami
startvation.
Tidak ada komentar:
Posting Komentar