1. process control block(PCB)
2. jelaskan mode tread : many to one, one to one , dan many to many
3. Fungsi Fork
4. Apa maksud dari penjadwalan preemtive dan nonpreemtive
5. gambarkan secara ditel suatu proses yang dapat mengalami suatu dead lock
6. jelaskan secara ditel cara menanggulangi dead lock
1. process control block(PCB)
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar
PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
1. Status Proses. Status new, ready, running, waiting, halted, dan juga banyak lagi.
2. Program Counter . Suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
3. CPU register. Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer,general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter,
keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk
memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya
(lihat Gambar 10.3, Status Proses).
4. Informasi manajemen memori. Informasi
ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas
register, tabel halaman, atau tabel segmen tergantung pada sistem
memori yang digunakan oleh sistem operasi (lihat Bagian V, Memori).
5. Informasi pencatatan. Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
6. Informasi status M/K. Informasi
termasuk daftar dari perangkat M/K yang di gunakan pada proses ini,
suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.
A. Penjadwalan proses
Dalam
pemroses tunggal, hanya satu proses yang dapat dijalankan pada saat
tertentu, sedangkan yang lain harus menunggu CPU bebas dan dijadwal
ulang. Multiprogramming merupakan cara untuk menjalankan proses setiap
waktu sehingga memaksimalkan penggunaan CPU.
Penjadwalan merupakan salah satu fungsi dasar dari sistem operasi.Hampir semua sumber daya komputer dijadwalkan sebelum digunakan.
- Penjadwalan adalah suatu pekerjaan yang dilakukan untuk mengalokasikan CPU time untuk tasks yang berbeda-beda dalam sistem operasi.
- Untuk linux ada aspek lain yang penting dalam penjadwalan: seperti menjalankan dengan berbagai kernel tasks.
- Linux mempunyai dua algoritma penjadwalan yaitu
a. algoritma time-sharing untuk penjadwalan preemptive yang adil diantara sekian banyak proses.
b. algoritma
yang kedua didesain untuk tugas real-time dimana proritas mutlak lebih
utama daripada keadilan mendapatkan suatu pelayanan.
3 Konsep Penjadwalan
l Decision Mode
l Priority Function
l Arbitration Rule
Algoritma Penjadwalan
1. First In First Out
Algoritma
ini merupakan algoritma penjadwalan yang paling sederhana yang
digunakan CPU. Dengan menggunakan algoritma ini seiap proses yang berada
pada status ready dimasukkan ke dalam antrian
FIFO sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi terlebih dahulu.
Kelemahan dari algoritma ini:
a. Waiting time rata-ratanya cukup lama.
b. Terjadinya convoy effect, yaitu proses-proses menunggu lama untuk menunggu satu proses besar yang sedang dieksekusi oleh CPU.
Algoritma
ini juga menerapkan konsep non-preemptive, yaitu setiap proses yang
sedang dieksekusi oleh CPU tidak dapat di-interrupt oleh proses yang
lain.
2. Priority Scheduling
Priority
Scheduling merupakan algoritma penjadwalan yang mendahulukan proses
dengan nilai prioritas tertinggi. Setiap proses memiliki prioritasnya
masing-masing. Prioritas suatu proses dapat ditentukan melalui beberapa karakteristik antara lain:
a. Batas waktu
b. Kebutuhan Memori
c. Akses file
d. Perbandingan antara I/O Burst dengan CPU Burst
e. Tingkat kepentingan proses
Kelemahan pada penjadwalan prioritas adalah dapat terjadinyaindefinite blocking (starvation)
yaitu suatu proses dengan prioritas yang rendah memiliki kemungkinan
untuk tidak dieksekusi jika terdapatpros es lain yang memiliki prioritas
lebih tinggi darinya. Solusi dari permasalahan ini adalah aging,
yaitu meningkatkan prioritas dari setiap proses yang menunggu dalam antrian secara bertahap.
3. Last In First Out
4. Shortest Job Next Algoritma ini mendahulukan proses denganCPU burst terkecil sehingga akan mengurangi waiting timerata-rata.
5. Shortest Remaining Time
6. Round Robin
Algoritma ini didesin untuk sistem time-sharing.
Proses akan mendapat jatah sebesar time quantum dengan nilai quantum
umumnya sebesar 10-100 ms. Jika time quantum-nya habis atau proses sudah
selesai CPU akan dialokasikan ke proses berikutnya. Tentu proses ini
cukup adil karena tak ada proses yang diprioritaskan, semua proses
mendapat jatah waktu yang sama dari CPU (1/n), dan tak akan menunggu
lebih lama dari (n-1)/q.
Permasalahan
utama pada Round Robin adalah menentukan besarnya time quantum. Jika
time quantum yang ditentukan terlalu kecil, maka sebagian besar proses
tidak akan selesai dalam 1 time quantum. Hal ini tidak baik karena akan
terjadi banyak switch, padahal CPU memerlukan waktu untuk beralih dari
suatu proses ke proses lain (disebut dengan context switches time).
Sebaliknya, jika time quantum terlalu besar, algoritma Round Robin akan
berjalan seperti algoritma First Come First Served. Time quantum yang
ideal adalah jika 80% dari total proses memiliki CPU burst time yang
lebih kecil dari 1 time quantum.
7. Multilevel Feedback
Algoritma
ini mirip sekali dengan algoritma Multilevel Queue. Perbedaannya ialah
algoritma ini mengizinkan proses untuk pindah antrian. Jika suatu
proses menyita CPU terlalu lama, maka proses itu akan dipindahkan ke
antrian yang lebih rendah. Ini menguntungkan proses interaksi, karena
proses ini hanya memakai waktu CPU yang sedikit. Demikian pula dengan proses yang menunggu terlalu lama. Proses ini akan dinaikkan tingkatannya.
Biasanya
prioritas tertinggi diberikan kepada proses dengan CPU burst terkecil,
dengan begitu CPU akan dimanfaatkan penuh dan I/O dapat terus sibuk.
Semakin rendah tingkatannya, panjang CPU burst proses juga semakin
besar.
2. model tread
Model Many to One
Model
many-to-one ini memetakan beberapa tingkatan pengguna thread hanya ke
satu buah kernel thread. Managemen proses thread dilakukan oleh (di
ruang) pengguna, sehingga menjadi efisien, tetapi apabila sebuah
thread melakukan sebuah pemblokingan terhadap sistem pemanggilan,
maka seluruh proses akan berhenti (blocked).
Kelemahan dari model ini adalah multihreads tidak dapat berjalan
atau bekerja secara paralel di dalam multiprosesor dikarenakan hanya
satu thread saja yang bisa mengakses kernel dalam suatu waktu.
Model One to One
Model one-to-one memetakan setiap thread pengguna ke dalam satu kernel thread. Hal ini membuat model one-to-one lebih sinkron daripada model many-to-one dengan mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan; hal ini juga mengizinkan multiple thread untuk berjalan secara parallel dalam multiprosesor. Kelemahan model ini adalah dalam pembuatan thread pengguna dibutuhkan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem. Model one-to-one diimplementasikan oleh Windows NT dan OS/2.Model Many to Many
Beberapa tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang lebih kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread
dapat dispesifikasikan untuk beberapa aplikasi dan beberapa mesin
(suatu aplikasi dapat dialokasikan lebih dari beberapa kernel thread
dalam multiprosesor daripada dalam uniprosesor) dimana model
many-to-one mengizinkan pengembang untuk membuat thread pengguna
sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu
thread yang dapat dijadualkan oleh kernel dalam satu waktu. Model
one-to-one mempunyai konkurensi yang lebih tinggi, tetapi pengembang
harus hati-hati untuk tidak membuat terlalu banyak thread tanpa
aplikasi dan dalam kasus tertentu mungkin jumlah thread yang dapat
dibuat dibatasi.
3. FORK
fork()
adalah fungsi untuk "membelah" satu proses menjadi 2 proses, yaitu:
proses parent dan proses child. kl fork() berhasil, maka di thread
parent, fork() akan return pid nya child process, sedangkan di thread
child, fork() akan return 0. Kl gagal, maka tidak tercipta child
process dan di thread parent fork() akan return -1, dan variabel global
errno akan di set. man fork untuk lebioh lengkapnya. setelah fork()
berhasil, maka child bisa melakukan apa saja, antara lain: mengeksekusi
program lain melalui keluarga fungsi execl (terdiri atas execvp, execl,
dll.) Alasan knp sebaiknya untuk mengeksekusi program laen adalah
dengan spawning a child karena fungsi execl itu langsung men terminate
program ketika fungsi itu selesai dieksekusi, jadi dengan 2 proses
(p[arent dan child) child yg eksekusi fungsi execl akan langsung mati,
sedangkan parent tetep hidup. Mungkin mas udah tau fungsi system(),
fungsi itu terdiri dari 3 fungsi yaitu fork() execl() dan wait(). Tapi
kalo cuma ngeprint greeting dan waktu aja saya tidak melihat perlunya
menggunakan keluarga fungsi execl. jadi sebenarnya program itu bisa
dengan mudah dibuat tanpa harus spawning a child process.
4. Apa yang dimaksud dengan penjadwalan preemtive dan nonpreemtive
Penjadwalan Preemptive
- 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 Preemptive memungkinkan 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 Preemptivemempunyai 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 memiliki Burst M/K yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU yang sangat lama disebut CPU 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 penjadwalanPreemptive, 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 lainnyaPreemptive. 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 NT adalah beberapa contoh sistem operasi yang menerapkan penjadwalan Preemptive.
Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalanPreemptive 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 slice terlau lama maka memungkinkan proses untuk tidak dapat merespon terhadap event 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:
- Berjalan dari running state sampai waiting state.
- Dihentikan.
Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting stateataupun dihentikan (proses tidak diganggu). Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh. Ini adalah metode yang dapat digunakan untukplatforms hardware tertentu, karena tidak memerlukan perangkat keras khusus (misalnya timer yang digunakan untuk meng interupt pada metode penjadwalanPreemptive).
5. Dead lock
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.
Karakteristik 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.
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.
Karakteristik 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.
6. Menangani deadlock
Penanganan Deadlock
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.
Pencegahan Deadlock
Pencegahan
deadlock dapat dilakukan dengan cara mencegah salah satu dari empat
karakteristik terjadinya deadlock. Berikut ini akan dibahas satu per
satu cara pencegahan terhadap empat karakteristik tersebut.
1.Mutual
Exclusion . Kondisi mutual exclusion pada sumber daya adalah sesuatu
yang wajar terjadi, yaitu pada sumber daya yang tidak dapat dibagi
(non-sharable). Sedangkan pada sumber daya yang bisa dibagi tidak ada
istilah mutual exclusive. Jadi, pencegahan kondisi yang pertama ini
sulit karena memang sifat dasar dari sumber daya yang tidak dapat
dibagi.
2.Hold
and Wait . Untuk kondisi yang kedua, sistem perlu memastikan bahwa
setiap kali proses meminta sumber daya, ia tidak sedang memiliki sumber
daya lain. Atau bisa dengan proses meminta dan mendapatkan sumber daya
yang dimilikinya sebelum melakukan eksekusi, sehingga tidak perlu
menunggu.
3.No
Preemption . Pencegahan kondisi ini dengan cara membolehkan terjadinya
preemption. Maksudnya bila ada proses yang sedang memiliki sumber daya
dan ingin mendapatkan sumber daya tambahan, namun tidak bisa langsung
dialokasikan, maka akan preempted. Sumber daya yang dimiliki proses
tadi akan diberikan pada proses lain yang membutuhkan dan sedang
menunggu. Proses akan mengulang kembali eksekusinya setelah mendapatkan
semua sumber daya yang dibutuhkannya, termasuk sumber daya yang
dimintanya terakhir.
4.Circular
Wait . Kondisi 'lingkaran setan' ini dapat 'diputus' dengan jalan
menentukan total kebutuhan terhadap semua tipe sumber daya yang ada.
Selain itu, digunakan pula mekanisme enumerasi terhadap tipe-tipe
sumber daya yang ada. Setiap proses yang akan meminta sumber daya harus
meminta sumber daya dengan urutan yang menaik. Misalkan sumber daya
printer memiliki nomor 1 sedangkan CD-ROM memiliki nomor 3. Proses boleh
melakukan permintaan terhadap printer dan kemudian CD-ROM, namun tidak
boleh sebaliknya.
Penghindaran Deadlock
Penghindaran
terhadap deadlock adalah cara penanganan yang selanjutnya. Inti dari
penghindaran adalah jangan sembarangan membolehkan proses untuk memulai
atau meminta lagi. Maksudnya jangan pernah memulai suatu proses apabila
nantinya akan menuju ke keadaan deadlock. Kedua, jangan memberikan
kesempatan pada proses untuk meminta sumber daya tambahan jika
penambahan tersebut akan membawa sistem pada keadaan deadlock. Tidak
mungkin akan terjadi deadlock apabila sebelum terjadi sudah kita
hindari.
Langkah
lain untuk menghindari adalah dengan cara tiap proses memberitahu
jumlah kebutuhan maksimum untuk setiap tipe sumber daya yang ada.
Selanjutnya terdapat deadlock-avoidance algorithm yang secara rutin
memeriksa state dari sistem untuk memastikan tidak adanya kondisi
circular wait serta sistem berada pada kondisi safe state. Safe state
adalah suatu kondisi dimana semua proses mendapatkan sumber daya yang
dimintanya dengan sumber daya yang tersedia. Apabila tidak bisa
langsung, ia harus menunggu selama waktu tertentu, kemudian mendapatkan
sumber daya yang diinginkan, melakukan eksekusi, dan terakhir melepas
kembali sumber daya tersebut. Terdapat dua jenis algoritma penghindaran
yaitu resource-allocation graph untuk single instances resources serta
banker's algorithm untuk multiple instances resources.
Dalam banker's algorithm, terdapat beberapa struktur data yang digunakan, yaitu:
Available . Jumlah sumber daya yang tersedia.
Max . Jumlah sumber daya maksimum yang diminta oleh tiap proses.
Allocation . Jumlah sumber daya yang sedang dimiliki oleh tiap proses.
Need . Sisa sumber daya yang masih dibutuhkan oleh proses, didapat dari max- allocation.
Kemudian terdapat safety algorithm untuk menentukan apakah sistem berada pada safe state atau tidak.
Pendeteksian Deadlock
Pada
dasarnya kejadian deadlock sangatlah jarang terjadi. Apabila kondisi
tersebut terjadi, masing-masing sistem operasi mempunyai mekanisme
penanganan yang berbeda. Ada sistem operasi yang ketika terdapat kondisi
deadlock dapat langsung mendeteksinya. Namun, ada pula sistem operasi
yang bahkan tidak menyadari kalau dirinya sedang mengalami deadlock.
Untuk sistem operasi yang dapat mendeteksi deadlock, digunakan algoritma
pendeteksi. Secara lebih mendalam, pendeteksian kondisi deadlock
adalah cara penanganan deadlock yang dilaksanakan apabila sistem telah
berada pada kondisi deadlock. Sistem akan mendeteksi proses mana saja
yang terlibat dalam kondisi deadlock. Setelah diketahui proses mana
saja yang mengalami kondisi deadlock, maka diadakan mekanisme untuk
memulihkan sistem dan menjadikan sistem berjalan kembali dengan normal.
Mekanisme
pendeteksian adalah dengan menggunakan detection algorithm yang akan
memberitahu sistem mengenai proses mana saja yang terkena deadlock.
Setelah diketahui proses mana saja yang terlibat dalam deadlock,
selanjutnya adalah dengan menjalankan mekanisme pemulihan sistem yang
akan dibahas pada bagian selanjutnya. Berikut ini adalah algoritma
pendeteksian deadlock.
Pemulihan Deadlock
Pemulihan
kondisi sistem terkait dengan pendeteksian terhadap deadlock. Apabila
menurut algoritma pendeteksian deadlock sistem berada pada keadaan
deadlock, maka harus segera dilakukan mekanisme pemulihan sistem.
Berbahaya apabila sistem tidak segera dipulihkan dari deadlock, karena
sistem dapat mengalami penurunan performance dan akhirnya terhenti.
Cara-cara yang ditempuh untuk memulihkan sistem dari deadlock adalah sebagai berikut:
1.Terminasi
proses. Pemulihan sistem dapat dilakukan dengan cara melalukan
terminasi terhadap semua proses yang terlibat dalam deadlock. Dapat
pula dilakukan terminasi terhadap proses yang terlibat dalam deadlock
secara satu per satu sampai 'lingkaran setan' atau circular wait
hilang. Seperti diketahui bahwa circular wait adalah salah satu
karakteristik terjadinya deadlock dan merupakan kesatuan dengan tiga
karakteristik yang lain. Untuk itu, dengan menghilangkan kondisi
circular wait dapat memulihkan sistem dari deadlock.Dalam melakukan
terminasi terhadap proses yang deadlock, terdapat beberapa faktor yang
menentukan proses mana yang akan diterminasi. Faktor pertama adalah
prioritas dari proses-proses yang terlibat deadlock. Faktor kedua adalah
berapa lama waktu yang dibutuhkan untuk eksekusi dan waktu proses
menunggu sumber daya. Faktor ketiga adalah berapa banyak sumber daya
yang telah dihabiskan dan yang masih dibutuhkan. Terakhir, faktor
utilitas dari proses pun menjadi pertimbangan sistem untuk melakukan
terminasi pada suatu proses.
2.Rollback
and Restart . Dalam memulihkan keadaan sistem yang deadlock, dapat
dilakukan dengan cara sistem melakukan preempt terhadap sebuah proses
dan kembali ke state yang aman. Pada keadaan safe state tersebut,
proses masih berjalan dengan normal, sehingga sistem dapat memulai
proses dari posisi aman tersebut. Untuk menentukan pada saat apa proses
akan rollback, tentunya ada faktor yang menentukan. Diusahakan untuk
meminimalisasi kerugian yang timbul akibat memilih suatu proses menjadi
korban. Harus pula dihindari keadaan dimana proses yang sama selalu
menjadi korban. proses tersebut tidak akan pernah sukses menjalankan eksekusi.
Tidak ada komentar:
Posting Komentar