Pages

Kamis, 25 April 2013

Mutual Exclusion dan Deadlock " SISTEM OPERASI II "


1.1 MUTUAL EXCLUSION
     Merupakan kondisi dimana terdapat sumber daya yang tidak dapat dipakai bersama pada waktu yang bersamaan (misalnya : printer, disk drive). Kondisi demikian disebut sumber daya kritis, dan bagian program yang menggunakan sumber daya kritis disebut critical region / section. Hanya satu program pada satu saat yang diijinkan masuk ke critical region. Pemrogram tidak dapat bergantung pada sistem operasi untuk memahami dan memaksakan batasan ini, karena maksud program tidak dapat diketahui oleh sistem operasi. Hanya saja, system operasi menyediakan layanan (system call) yang bertujuan untuk mencegah proses lain masuk ke critical section yang sedang digunakan proses tertentu. Pemrograman harus menspesifikasikan bagian-bagian critical section, sehingga sistem operasi akan menjaganya. Pentingnya mutual exclusion adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu.
Pemaksaan atau pelanggaran mutual exclusion menimbulkan :
1.  Deadlock
2.  Starvation
Critical Section
    Segmen kode yang mengakses data yang digunakan secara bersama-sama itu disebut critical section. Bagaimana menghindari race conditions? Kunci untuk mencegah masalah ini da situasi yang lain yang melibatkan shared memory, shared file, and shared sumber daya yang lain dalah 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 membutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared files, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 menggunakan shared variabel sebelum proses 1 menyelesaikan tugasnya.
Walaupun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara paralel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi untuk menghasilkan solusi yang baik :
·  Tidak ada dua proses secara bersamaan masuk kedalam critical section.
·  Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
·  Tidak ada proses yang berjalan diluar critical section yang dapat mengeblok proses lain.
·  Tidak ada proses yang menunggu selamanya untuk masuk critical section.
Tiga kondisi untuk menentukan mutual exclusion  :
·  Tidak ada dua proses yang pada saat bersamaan berada di critical section.
·  Tidak ada proses yang berjalan diluar critical region yang bisa menghambat proses lain.
·  Tidak ada proses yang tidak bisa masuk ke critical region.
Solusi masalah critical section
1. Ide :
ü  Mencakup pemakaian secara “exclusive” dari shared variable tersebut
ü  Menjamin proses lain dapat menggunakan shared variable tersebut
1. Solusi “critical section problem” harus memenuhi:
Ø  Mutual Exclusion: Jika proses Pi sedang “eksekusi” pada bagian “critical section” (dari proses Pi) maka tidak ada proses proses lain dapat “eksekusi” pada bagian critical section dari proses-proses tersebut.
Ø  Progress: Jika tidak ada proses sedang eksekusi pada critical section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical section, maka pemilihan siapa yang berhak masuk ke critical section tidak dapat ditunda tanpa terbatas.
1. Bounded Waiting: Terdapat batasan berapa lama  suatu proses harus menunggu giliran untuk mengakses “critical section” – jika seandainya proses lain yang diberikan hak akses ke critical section.
ü  Menjamin proses dapat mengakses ke “critical section” (tidak mengalami starvation: proses se-olah berhenti menunggu request akses ke critical section diperbolehkan).
ü  Tidak ada asumsi mengenai kecepatan eksekusi  proses proses n tersebut.



1.2  Mencegah Mutual Exclusion
Mutual exclusion benar-benar tak dapat dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersama-sama.


Di Tulis Oleh : Anan Widiyanto - 12300046

1.3  Metode Penyelesaian Masalah Mutual Exclusion.
Ada beberapa metode penyelesaian masalah mutual exclusion, antara lain :
1. a. Sinkronisasi.
Algoritma 1
Pada bagian ini akan dibatasi pada aplikasi ke 2 proses yaitu Pi dan Pj , atau P0dan P1secara umum, jika ada proses Pimaka akan digunakan proses Pj sebagai proses lainnya, dengan j=1-i. Ada beberapa algoritma penyelesaian mutual exclusion dengan  menggunakan sinkronisasi, yakni kedua proses akan berbagi suatu variabel bertipe integer yaitu turn yang diinisialisaikan dengan 0 (atau 1). Jika turn=0, maka proses P0 diijinkan untuk mengeksekusi critical section. Struktur P0 terlihat pada gambar dibawah ini :
repeat
while turn ≠0 do
critical section
turn := 1
remainder section
until false
Solusi ini sudah menunjukkan adanya mutual exclusion, karena pada suatu saat hanya ada satu proses yang masuk critical section. Namun belum menunjukkan adanya progress dan bounded waiting. Sebagai contoh:
Jika P0 meninggalkan critical section, maka nilai turn=1 yang berarti bahwa P1  siap untuk masuk kecritical section;
Ø  P1 selesai menggunakan critical section dengan cepat maka baik P1  maupun P0 beradapadaremainder section dengan nilai turn=0.
Ø  P0 kembali menggunakan critical section dengan cepat dan segera masuk ke  remainder sectiondengan nilai turn=1.
Ø  P0 hendak kembali menggunakan critical section namun nilai turn=1.Terlihat bahwa P1 yang berada pada remainder section memblok P0 sehingga tidak dapat memasuki critical section. Hal ini menentang progress, yaitu proses diblok oleh proses yang tidak berada di critical section.
Algoritma 2
Masalah pada algoritma-1 tidak memberika cukup informasi mengenai status proses. Hanya mempertimbangkan yang masuk critical section. Untuk mengatasi masalah ini variabel “turn” diganti dengan :
var flag : array [0 ..1] of boolean;
Semua elemen array diinisialisasikan dengan false. Jika flag[0] bernilai true, maka nilai itu akan mengindikasikan bahwa P0 siap memasuki critical section. Struktur P0 terlihat pada gambar dibawah ini.
repeat
flag[0]:=true;
while flag[1] do
critical section
flag[0]
remainder section
until false
Pada algoritma ini, proses P0 pertama kali menetapkan flag[i] = true, nilai ini mengindikasikan bahwa P0 siap memasuki critical section. Kemudian P0 mengecek untuk menyakinkan P1 tidak akan memasuki tidak kan memasuki critical section. Jika P1  juga telah memasuki critical section, maka P0 harus menunggu sampai P1 tidak membutuhkan critical section lagi (sampai flag[1] =false). Secepatnya P0 memasuki critical section. Pada exit section, P0 akan mengeset flag[0] menjadi false, hal ini mengijinkan proses la in (jika sedang menunggu) untuk memasuki critical section.Pada solusi ini, kondisi mutual exclusion telah dipenuhi. Namun progress belum juga dipenuhi. Untuk menggambarkan hal tersebut dapat dilihat :
T0           P0 menetapkan flag[0] = true;
T1           P1 menetapkan flag[1] = true;
Sekarang P0 dan P1 bersama-sama ada di statement while.
Algoritma –3 (Peterson)
Algoritma ketiga ini diperkenalkan oleh peterson. Pada dasarnya, algoritma ini merupakan kombinasi antara algoritma –1 dan algoritma-2. Proses ini membutuhkan 2 variabel, yaitu :
Var   Flag :array [0 .. 1] of boolean;
Turn : 0 .. 1;
Nilai awal flag[0] = flag = false, dan nilai turn (0 atau 1). Struktur proses P1 seperti terlihat pada gambar dibawah ini :
repeat
flag[0]:=true;
turn:=1;
while (flag[1] and turn=1) do
critical section
flag[0]
remainder section
until false
Untuk masuk ke critical section, proses P0 mengeset flag[0] = true, dan melihat apakah ada proses lain yang mencoba masuk critical section (turn=1).
Algoritma Bakery
Critical section untuk n proses:
Sebelum masuk ke critical section. Proses mendapatkan nomor. Yang memiliki nomor paling kecil lebih dahulu memasuki critical section. Jika proses Pi dan Pj menerima nomor, jika i<j, maka Pi lebih dahulu masuk  \critical section, sebaliknya Pj yang lebih dahulu masuk critical section. skema penomoran selalu membangkitkan angka yang meningkat, seperti 1,2,3,4,5,6, …
shared data
var choosing : array[0..n-1] of boolean;
number : array[0..n-1] of integer;
Struktur data diinisialisaikan dengan false dengan nilai 0. Struktur proses P1 seperti terlihat pada gambar dibawah ini :
repeat
choosing[i]:=true;
number[i]:=max(number[0], number[1], …, number[n-1])+1;
choosing[i]:=false;
for j:= 0 to n-1
do begin
while choosing[j] do no_op;
while number[j] ? 0
and (number[j],j) < (number[i],i) do no_op;
end;
critical section
number[i]:=0;
remainder section
until false
Algoritma Dekker
Algoritma ini diperkenalkan oleh Dekker, seorang matematikawan dari Belanda. Algoritma ini memiliki ciri-ciri khusus sebagai berikut:
Tidak memerlukan instruksi-instruksi perangkat keras khusus.
Proses yang beroperasi di remainder section tidak dapat mencegah proses lain yang ingin masuk critical section.
Proses yang ingin masuk critical section akan segera memasuki kawasan tersebut jika dimungkinkan.
bool Fail = false;
int share = 6;
int x = 0;
int y = 0;
bool z = true;
chan q_0_1 = [0] of {bit};
chan q_0_2 = [0] of {bit};
proctype A() {
bool dapat_dishare = true;
do
::atomic{
z ->
x = 10;
};
::atomic{
dapat_dishare ->
q_0_1?0;
share = share+1;
dapat_dishare = false;
q_0_1?1;
};
::atomic{
!dapat_dishare ->
q_0_2?0;
dapat_dishare = true;
q_0_2?1;
};
od;
}
proctype B() {
bool dapat_dishare = false;
do
::atomic{
z ->
y = 11;
};
::atomic{
dapat_dishare ->
q_0_2!0;
share = share-1;
dapat_dishare = false;
q_0_2!1;
};
::atomic{
!dapat_dishare ->
q_0_1!0;
dapat_dishare = true;
q_0_1!1;
};
od;
}
init {
atomic{
run A();
run B();
};
}

1. b. Semaphore
Model semaphore secara umum untuk penyelesaian mutual exclusion adalah sebagai berikut :
mtype = { idle, masuk, critical, keluar };
#define state mtype
bool Fail = false;
bool semaphore = false;
proctype USER_0() {
state user_state = idle;
do
::atomic{
user_state==idle ->
if
::user_state = idle;
::user_state = masuk;
fi;
};
::atomic{
((user_state==masuk)&&(!semaphore)) ->
user_state = critical;
semaphore = true;
};
::atomic{
((user_state==masuk)&&(semaphore)) ->
user_state = masuk;
};
::atomic{
user_state==critical ->
if
::user_state = critical;
::user_state = keluar;
fi;
};
::atomic{
user_state==keluar ->
user_state = idle;
semaphore = false;
};
od;
}
proctype USER_1() {
state user_state = idle;
do
::atomic{
user_state==idle ->
if
::user_state = idle;
::user_state = masuk;
fi;
};
::atomic{
((user_state==masuk)&&(!semaphore)) ->
user_state = critical;
semaphore = true;
};
::atomic{
((user_state==masuk)&&(semaphore)) ->
user_state = masuk;
};
::atomic{
user_state==critical ->
if
::user_state = critical;
::user_state = keluar;
fi;
};
::atomic{
user_state==keluar ->
user_state = idle;
semaphore = false;
};
od;
}
init {
atomic{
run USER_0();
run USER_1();
};
}


Di Tulis Oleh : Wahyulianto E. S - 12300037


SUMBER :
1. Hariyanto, Bambang. Sistem Operasi. Edisi 2. Bandung. Informatika. 1999.
2. Kusumadewi, Sri. Sistem Operasi. Yogyakarta, J & J Learning, 2000
3. Tenembaum, Andrew S., “Modern Operating System”, Englewood Cliffs, New Jersey :
    Prentice-Hall Inc., 1992.
4. stalling, William, “Operating System”, 2nd Englewood Cliffs, New Jersey : Prentice-Hall
    Inc., 1995.

( 23-04-2013 )


2.1 DEADLOCK

Deadlock adalah  proses menunggu suatu kejadian tertentu yang tak akan pernah terjadi.
Contoh :
           Misalkan terdapat dua buah proses , yaitu P1 dan P2 dan dua buah sumber daya kritis Yaitu R1 dan R2 . Proses P1 dan P2 harus mengakses  kedua sumber daya tersebut dengan kondisi ini  maka akan terjadi  R1 akan diberikan kepada P1, dan R2 akan di berikan kepada P2 , karena didalam melakukan eksekusi kita memerlukan kedua sumber daya tersebut sekaligus maka kedua proses akan saling menunggu  sumber daya lain selamanya, proses tidak melepaskan sumber daya yang telah dipegangnya karena menunggu sumber daya lain yang tak pernah diperolehnya. Maka kedua proses dalam kondisi Deadlock  yang tidak dapat membuat kemajuan apapun, dan Deadlock merupakan kondisi terparah karena dapat melibatkan banyak proses dan semuanya tidak mengakhiri proses secara benar.

Urutan kejadian pengoperasian perangkat input/output adalah Sbb:
  1. Meminta (request)       :meminta pelayanan perangkat input/output
  2. Memakai (user)             :memakai perangkat input/output
  3. Melepaskan (release)    :melepaskan pemakaian perangkat input/output

1.Model Deadlock

Model deadlock dua proses dan dua sumber daya

Misalnya :
 a.  Dua buah proses P1 dan P2
 b  Dua buah sumber daya  R1 dan R2

Dari gambar diatas dapat kita lihat bahwa P0 meminta sumber daya pada R0, sedangkan Pmeminta sumber daya pada R1 , kemudian  P0 sambil menggenggam sumber daya R0 meminta sumber daya Rsedangkan P1 sambil mengenggam sumber dayaR1 juga meminta sumber daya pada R0  kejadian inilah yang mengakibatkan Deadlock seperti kita lihat pada gambar dibawah ini   graph deadlock ini digambarkan sebagai graph melingkar  dan terjadinya deadlock ini juga  ditandai dengan muncul nya graph melingkar:

Deadlock dapat juga terjadi dengan melibatkan lebih dari dua proses dan dua sumber daya.

Syarat-Syarat  terjadinya Deadlock

Coffman.et al.  Menyatakan ada 4 syarat terjadinya deadlock

1.      Mutual exclusion
2.      Kondisi genggam dan tunggu
3.      Kondisi non preemption
4.      Kondisi menunggu secara sirkular


Mutual Exclusion                 : Tiap sumber daya pada saat itu  diberikan tepat pada satu proses.
Kondisi genggam & tunggu : Proses-proses yang sedang menggenggam sumber daya  menunggu sumber 
                                                data yang baru
Kondisi non preemption       : Sumber daya-sumber daya yang sebelumnya diberikan tidak dapat diambil
                                                 paksa  dari proses itu, sumber daya harus secara explisit dilepaskan dari
                                                 proses yang menggenggamnya.
Kondisi menunggu secara sirkular:  harus terdapat rantai sirkular dari dua proses atau lebih masing-
                                                masing menunggu sumber daya yang digenggam oleh anggota berikutnya
                                                pada rantai tersebut.
Ketiga syarat tersebut sangat diperlukan bagi terjadinya deadlock,tetapi ketiga kondisi itu belum berarti terjadinya deadlock, deadlock baru benar-benar terjadi jika dipenuhi syarat yang keempat,karena  syarat keempat ini merupakan  keharusan bagi terjadinya peristiwa deadlock. Bila salah satu kondisi ini saja tidak terpenuhi maka deadlock tidak terjadi.
   

2. Metode Mengatasi Deadlock

Tiga metode dalam mengatasi Deadlock:

  a.Metode pencegahan terjadinya Deadlock (Deadlock Preventation)
   Metode ini banyak dipakai, dan metode ini berhubungan dengan pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock, pencegahan adalah  sulusi yang terbaik dipandang dari sudut  tercegahnya deadlock. Dan metode ini sering menghasilkanutilisasi sumber daya yangburuk.

  b.Metode penghindaran terjadinya Deadlock (Deadlock Avoidence)
   Tujuan  dari metoda ini adalah untuk menghindari terjadinya kondisi-kondisi yang  memungkinkan terjadinya deadlock, dan memperoleh utilisasi sumber daya yg baik.
    Penghindaran bukan berarti  menghilangkan semua kemungkinan terjadinya deadlock, Secara teoritis deadlock dimungkinkan.
    Sistem operasi memeriksa semua permintaan sumber daya secara hati-hati, jika sistem operasi mengetahui  bahwa alokasi sumber daya menimbulkan resiko deadlock, maka sistem akan menolak pengaksesan dan dengan demikian menghindari terjadinya deadlock
  
c. Metode deteksi dan pemulihan Deadlock (Deadlock detection and recovery)
   Metode deteksi ini digunakan pada sistem yang mengizinkan terjadinya deadlock, Tujuan dari metode ini adalah  untuk memeriksa apakah telah terjadi deadlock  dan menentukan proses serta sumber daya yang terlibat dalam  deadlock secara presisi setelah ditemukan sistem dipulihkan dari deadlock  dengan metode pemulihan. (metode pemulihan dari deadlock adalah  untuk menghilangkan deadlock sistem sehingga dapat beroperasi kembali) Proses yang terlibat dalam deadlock mungkin akan dapat menyelesaikan eksekusi  dan membebaskan sumber daya dari sumber dayanya.

3.Strategi burung onta

   Strategi ini diasumsikan bahwa deadlock jarang terjadi jika dibandingkan dengan kejadian komputer crash.  Jadi mengapa kita harus bersusah payah mengatasi deadlock sedangkan sistem lebih sering rusak karena crash, disebut dengan strategi burung onta karena burung onta akan menyembunyikan kepalanya ketanah apabila akan terjadi bahaya yang mengancam dirinya. Jadi sebenarnya strategi ini  adalah sama sekali tidak berusaha mengatasi deadlock .

4.Pencegahan Deadlock.

Havendar mengemukakan bahwa  jika keempat syarat tersebut diatas tidak dipenuhi maka tidak akan terjadi deadlock, sehingga Havendar menyarankan  strategi – strategi  untuk meniadakan dengan syarat :

A.Setiap proses harus meminta semua sumber yang diperlukan sekaligus dan tidak berlanjut
    sampai semua diberikan.
B Jika proses telah/sedang  memegang sumber daya tertentu , untuk permintaan berikutnya
   Proses harus melepas sumber daya yang dipegangnya , jika diperlukan  proses harus me-
   Minta kembali sekaligus dengan sumber daya yang baru.
C.Buat urutan yang linear  untuk semua sumber daya pada semua proses, jika proses telah di-
   alokasikan pada suatu type sumber daya maka proses berikutnya  boleh meminta  type sum
   ber daya berikutnya.

    Metode pencegahan Deadlock :

a.    Meniadakan mutual exclusion : yaitu mencegah hanya satu proses yang mengakses sumber   daya pada suatu interval waktu tertentu,
b.    Meniadakan syarat Hold dan Wait, cara ini dapat dilakukan dengan : mengalokasikan semua sumber daya atau tidak sama sekali dan hold and release.
   proses untuk mengalokasikan semua sumber daya atau tidak sama sekali  permintaan ini hanya dapat dilayani bila semua sumber daya tersedia ,jika sumber daya tersedia proses dialokasikan  jika diperlukan dan berjalan sampai selesai. Jika sumber daya tidak tersedia atau hanya satu sumber daya maka proses harus menunggu sampai semua sumber daya yg tersedia untuk dialokasikan padanya, yang  menjadi permasalahan adalah sukar untuk mengetahui lebih dulu sumber daya yang diperlukan  suatu proses karena  pada awal proses tidak diketahui berapa sumber daya yg diperlukan, jika proses hanya butuh satu disk diawal eksekusi (atau lebih buruk lagi tanpa disk)  dan menistrahatkan disk-disk yang lain. Perlunya proses utnuk menerima disk yang diperlukan sebelum eksekusi dimulai menyebabkan sumber daya komputer menganggur  dalam waktu yang lama, sementara proses yg memerlukan harus menunggu.
Hold and release (genggam dan lepas)yaitu pada  saat terjadi permintaan satu  sumber daya
  Maka proses harus melepaskan sumber daya lain yg telah digunakan, jadi hanya satu sum –
  ber daya  yg dialokasikan untuk proses. Cara ini tidak mungkin karena ada proses yang di
  Syaratkan harus memegang beberapa sumber daya sekaligus,misalnya menggambar pada
  Plotter yang memerlukan plotter serta disk untuk menyimpan data gambar yang diplot.
c.    meniadakan kondisi non preempation :yaitu mencegah proses lain harus enunggu proses preemption  sehingga tidak ada tunggu menunggu.
            Contohnya : saat proses
   A menulis ke printer tiba-tiba di stop oleh proses B yang juga akan menulis ke printer
   yang sama bila dimungkinkan preemption ini maka  kedua proses  akan mencetak  seca   
   ra tidak benar.
 d.Meniadakan kondisi menunggu sirkular: Kondisi ini dapat ditiadakan dengan cara yaitu
   proses hanya dibolehkan menggenggam satu sumber daya pada satu saat , jika perlu sum
   ber daya yang kedua maka proses harus melepaskan sumber daya pertama. (sama dengan
   hold & release), cara ini tidak dimungkinakn karena terdapat proses yang mengharuskan 
  memegang lebih dari satu sumber daya pada saat yg sama untuk menyelesaikan prosenya.
  Untuk meniadakan kondisi sirkular juga dapat dilakukan dengan penomoran global semua
  Sumber daya, karena proses dapat meminta kapanpun proses menginginkan,tetapi perminta
  an dibuat terurut secara numerik, cara ini tidak menimbulkan siklus , permasalah yang
  timbul tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak.

Di Tulis Oleh : Adi Suwanto - 12300043

5.Penghindaran Deadlock

  Gagasan dasar  penghindaran deadlock adalah  untuk memberi akses ke permintaan sumber daya yang tidak menimbulkan deadlock, cara ini biasa digunakan dengan mengalokasikan sumber daya dan memeriksa dampak pemberian akses ke suatu permintaan
Jika pemberian akses sumber daya tidak mungkin menimbulkan deadlock  maka sumber daya diberikan ke peminta sumber daya, jika timbul deadlock  maka proses yang meminta di suspend  sampai waktu permintaannya aman (tidak timbul deadlock) baru diberikan, kondisi ini biasanya terjadi  setelah satu suimber daya atau lebih  yang semula dipegang oleh proses-yang aktif   liannya dilepas.
Untuk penghindaran deadlock  diperlukan pengertian mengenai state selamat (safe state) dan dan state tak selamat (unsafe state), dinyatakan sebagai state selamat jika state tidak terjadi deadlock dan terdapat cara untuk memenuhi semua permintaan yang ditunda tanpa menghasilkan deadlock dengan menjalankan proses secara hati-hati & mengikuti urutan tertentu. Contohnya :

* State selamat (safe state) dan state tak selamat (unsafe state)

Safe State adalah cara untuk memenuhi permintaan yang ditunda tanpa menghasilkan deadlock dengan menjalankan proses secara hati-hati mengikuti urutan tertentu.
Contoh:
Pada sistem yang memiliki 10 sumber daya se type , proses A memerlukan sumber daya maksimum 10 , sedangkan pada saat ini ia menggenggam 2 sumber daya, sedangkan proses B memerlukan sumber daya maksimum 3 sedangkan saat ini menggenggam 1 sumber daya, proses C memerlukan sumber daya maksimum 7 sedangkan saat ini mengenggam 3 sumber daya ,maka masih tersedia sumber daya 4 seperti pada tabel dibawah ini :

      Proses
Jlh sumber  daya yg digenggam
Maks sumber daya yang dibutuhkan
A
2
10
B
1
3
C
3
7
          Tersedia                4
                     Gbr  5.1 state selamat
Gambar 5.1 disebut safe state karena ditemukan barisan pengalokasian yang memungkinkan semua proses selesai. Dengan penjadwalan secara hati-hati sistem terhindar dari deadlock.

Sistem terhindar dari deadlock  adalah dengan langkah sbb:

1.Alokasikan 4 sumber daya pada proses C sehingga sumber daya tersedia tinggal 1,nanti
   sampai proses C berakhir  sehingga

Proses
Jlh Sumber daya yg digenggam
Maks sumber daya  yang dibutuhkan
A
2
10
B
1
3
C
7
7
 Tersedia                                    0

Setelah selesai proses pada C maka diperoleh

Proses
Jlh sumber daya yg digenggam
Maks Sumber daya yang dibutuhkan
A
2
10
B
1
3
C
0
-
   Tersedia                                       7

 2.Alokasikan 5 sumber daya nantikan sampai proses B berakhir

Proses
Jlh  Sumber  daya yg di genggam
Maks sumber daya yang dibutuhkan
A
2
10

B
3
3
C
0
-
           Tersedia                              5

  
Setelah proses B selesai maka hasilnya

Proses
Jlh Sumber daya yg di genggam
Maks sumber daya yang dibutuhkan
A
2
10
B
0
-
C
0
-
Tersedia                                       8

3.Alokasikan 8 sumber daya pada proses A nantikan sampai selesai


Proses
Jlh Sumber daya yg di genggam
Maks sumber daya yang dibutuhkan
A
10
10
B
-
-
C
-
-
Tersedia                                   0

  Setelah proses A selesai maka hasilnya

Proses
Jlh sumber daya yg di genggam
Maks sumber daya  yang dibutuhkan
A
0
-
B
0
-
C
0
-
   Tersedia
0



 Dengan tiga langkah proses dan penjadwalan yang hati-hati  dapat menyelesaikan proses dengan sempurna.
State tak selamat  jika tidak terdapat cara untuk memenuhi semua permintaan yang  saat ini ditunda  dan menjalankan proses sesuai urutan. State  tak selamat  bila alokasi sumber daya tak terkendali.

Proses
Jml sumber daya yg digenggam
Maks sumber daya yang  di     butuhkan
A
2
10
B
1
3
C
3
7
  Tersedia                               4
  
     State berubah menjadi tak selamat :
   
·         Dua permintaan sumber daya oleh proses A dilayani dan
·          Satu permintaan sumber daya oleh proses B dilayani  maka state berubah menjadi

Proses
Jlh sumber daya yg digenggam
Maks sumber daya dibutuhkan
A
4
10
B
2
3
C
3
7
   Tersedia                                     1

     Pada state ini tidak  terdapat baris pengalokasian yang dapat membuat semua proses selesai ,   
     Contohnya :

    Langkah : 1  Alokasikan satu sumber daya pada proses B sehingga sumber daya tersedia
                        Hanya 1 dan nantikan proses B selesai.

Proses
Jlh sumber daya yg digenggam
Maks sumber daya dibutuhkan
A
4
10
B
3
3
C
3
7
  Tersedia                                     0

    Setelah selesai proses B maka menjadi

Proses
Jml sumber daya yg di genggam
Maks sumber daya dibutuhkan
A
4
10
B
0
-
C
3
7
Tersedia
3


Sekarang tersedia 3 sumber daya sementara proses A membutuhakn 6 sumber daya dan proses C membutuhkan  4 sumber daya. Keterangan diatas tadi adalah untuk alokasi sumber daya sejenis , pengertian state selamat dan tak selamat dapat diperluas  untuk sumber daya tak sejenis. Yang perlu diingat bahwa  state tak selamat bukan berarti telah terjadi deadlock, tetapi state tersebut kemungkinan menuju deadlock.

Di Tulis Oleh :  Yuyud Yanegar - 12300039


* Algoritma bunker olek Dijkstra

Disebut algoritma  karena memodelkan bunker disebuah kota kecil yang berurusan  dengan sekumpulan nasabah yang memohon kredit, pada algoritma ini kondisi mutual exclusion, hold and wait dan non preemption diizinkan dan proses melakukan klaim penggunaan sumber daya eksklusif  yang diperlukan, proses diizinkan menggenggam sumber daya  sambil meminta dan menunggu sumber daya yang lain. Serta sumber daya itu tidak diizinkan di preemption proses lain. Proses dapat meminta sumber daya pada suatu waktu, sistem operasi dapat mengakses dan menolak sumber daya permintaan, jika ditolak  proses masih menggenggam  sumber daya yg telah dialokasikan dan menunggu sampai waktu yg tak terhingga sampai permintaan dipenuhi.
Dan sistem hanya meberikan permintaan yang menghasilkan state selamat, sedangkan permintaan yang menghasilkan state tak selamat ditolak sampai permintaan dipenuhi. Karena sistem selalu memelihara agar dalam kondisi state selamat maka cepat atau lambat dalam waktu yang tak terhingga  semua permintaan dapat dipenuhi dan semua proses berakhir.
* Kelemahan Algoritma Banker

1.      Proses jarang mengetahui jumlah  sumber daya maksimum  diperlukan di awalnya.
2.      Jumlah proses tidak tetap
3.      Sumber daya yang tersedia  tiba tiba dapat saja dicopot
4.      Proses harus independen yaitu urutan proses eksekusi tidak dibatasi kebutuhan sinkronisasi antar proses.
5.      Algoritma menghendaki memberikan semua permintaan pada waktu yang tak terhingga
6.      Algoritma menghendaki client mengembalikan sumber daya setelah waktu yang tak terhingga

6. Deteksi dan pemulihan Deadlock

   Deteksi adanya dealock adalah cara untuk menentukan apakah deadlock terjadi serta mengidentifikasi proses dan sumber daya yang terlibat dalam deadlock. Umumnya algoritma yang dibutuhkan untuk deteksi adalah menentukan keberadaan  menunggu sirkular  (circular wait), penggunaan algoritma ini melibatkan over head run time  karena secara kontinyu dijalankan untuk mendeteksi  menunggu sirkular, sembaranag algoritma pendeteksian siklus graph berarah dapat digunakan. Perioda yang biasa dilakukan adalah memonitor permintaan dan pelepasan sumber daya. Setiap terdapat permintaan & pelepasan maka dilakukan  pembaharuan graph dan deteksi adanya siklus. Bila terdapat siklus berarti terjadi menunggu sirkular dan deadlock terjadi.

Pemulihan dari deadlock yaitu begitu sistem terdapat deadlock  maka deadlock harus diputuskan denagn menghilangkan salah satu atau lebih persyaratannya.
Pemulihan dari deadlock ditentukan oleh beberapa faktor :

·           Belum tentu secepatnya dapat menentukan deadlock
·           Kebanyakan sistem tidak memilki fasiltas atau fasilitasnya buruk untuk mensuspend proses,menghilangkan dari sistem dan meresume proses dilain waktu, pada sistem waktu nyata yang harus berfungsi kontinyu proses tidak dapat di suspend dan resume.
·           Jika terdapat kemampuan sistem resume dan suspend yang efektif kemampuan ini dapat melibatkan sejumlah overhead, berarti memerlukan perhatian operator yang berkemampuan tinggi,operator ini tidak selalu tersedia.
·           Pemulihan memerlukan sejumlah kerja yang berarti.

Pada sistem operasi yang hanya tiga state dasar (running,ready dan blocked) maka tak ada cara lain kecuali menyingkirkan proses itu, proses akan hilang dari memori dan harus dimuat kembali, sedangkan pada operasi modern sistem biasanya menerapkan state supended blocked dan suspended ready diman sumber dayanya dilepas tetapi proses masih di memory dan akan ditetapkan kembali proses untuk sumber daya begitu terjadi resume.
Pendekatan yang digunakan untuk pemulihan deadlock :

·        Singkirkan semua proses yang melibatkan deadlock (cara ini sering digunakan)
·        Backup semua proses yang terlibat deadlock ke suatu check point yang didefinisikan sebelumnya dan jalankan kembali semua proses itu, cara ini memerlukan mekanisme rollback dan restart,resikonya deadlock semula dapat terjadi lagi , tetapi karena tidak tertentu pemrosesan kong kuren ,biasa tidak akan terjadi deadlock serupa.
·        Secara berurutan singkirkan proses sampai tidak terjadi deadlock lagi, urutan proses yang disingkirkan berdasarkan kriteria ongkos minimum, setelah penyingkiran algoritma  deteksi harus dijaalankan untuk melihat apakah masih terjadi deadlock.
·        Secara berurutan preemp sumber daya tidak ada deadlock lagi,

Kriteria-kriterianya sebagai berikut:

·      Waktu pemrosesan yang telah dijalankan paling kecil
·      Jumlah baris keluaran yang diproduksi kecil
·      Mempunyai estimasi sisa waktu eksekusi besar
·      Jumlah total sumber daya terkecil yang telah dialokasikan
·      Prioritas terkecil.

7. Strategi Penanggulangan Deadlock Terpadu

Silberschatz  menyarankan satu pendekatan terpadu yaitu:

·      Kelompokkan  sumber daya menjadi kelas sumber daya
·      Gunakan strategi pengurutan linear seperti yg dijelaskan pada pencegahan menunggu sirkular, strategi ini untuk mencegah deadlock diantara kelas sumber daya yang berbeda.
·      Dalam satu kelas sumber daya gunakan algoritma yang sesuai untuk kelas sumber daya tsb.    

Di Tulis Oleh :  Jovie Taufan 12300025

SUMBER :
1.Haryanto,Bambang,Ir sistim operasi Penerbit informatika Bandung 1999
2.Tanenbaum Andrew,S Modern operating system,prentic hall Inc 1992  
ALAMAT :

(23-04-2013) TGL. AKSES







0 komentar:

Posting Komentar