Sabtu, 22 Juni 2013

Sistem Paging dan Segmentasi




Sistem Paging

Sistem paging adalah suatu sistem manajemen pada sistem operasi yang mengatur program yang sedang berjalan. Metode dasar dari paging adalah dengan memecah memori fisik menjadi blok-blok yang berukuran tertentu yang disebut dengan frame dan memecah memori logika menjadi bok-blok yang berukuran sama dengan frame yang disebut page. Untuk mengatasi apabila suatu program lebih besar dibandingkan dengan memori utama adalah dengan konsep overlay dan konsep memori maya(virtual memori):

# Konsep Overlay,
yaitu dimana program yang di jalankan dipecah menjadi beberapa bagian yang dapat dimuat oleh memory (overlay), sedangkan yang belum dieksekusi akan disimpan di dalam disk, yang nantinya akan dimuat ke memori begitu diperlukan dalam ekekusi.

# Konsep Memori Maya
yaitu kemampuan untuk mengalamati ruang memori melebihi memori utama yang tersedia.


Implementasi Sistem Paging
Setiap sistem operasi mempunyai metode sendiri untuk menyimpan tabel page. Beberapa sistem operasi mengalokasikan sebuah tabel page untuk setiap proses. Pointer ke tabel page disimpan dengan nilai register lainnya dari PCB. Pada dasarnya terdapat 3 metode yang berbeda untuk implementasi tabel page :
  1. Tabel page diimplementasikan sebagai kumpulan dari “dedicated” register. Register berupa rangkaian logika berkecepatan sangat tinggi untuk efisiensi translasi alamat paging. Contoh : DEC PDP-11. Alamat terdiri dari 16 bit dan ukuran page 8K. Sehingga tabel page berisi 8 entri yang disimpan pada register. Penggunaan register memenuhi jika tabel page kecil (tidak lebih dari 256 entry).
  2. Tabel page disimpan pada main memori dan menggunakan page table base registe” (PTBR) untuk menunjuk ke tabel page yang disimpan di main memori. Penggunakan memori untuk mengimplementasikan tabel page akan memungkinkan tabel page sangat besar (sekitar 1 juta entry). Perubahan tabel page hanya mengubah PTBR dan menurunkan waktu context-switch. Akan tetapi penggunaan metode ini memperlambat akses memori dengan faktor 2. Hal ini dikarenakan untuk mengakses memori perlu dua langkah : pertama untuk lokasi tabel page dan kedua untuk lokasi alamat fisik yang diperlukan.
  3. Menggunakan perangkat keras cache yang khusus, kecil dan cepat yang disebut associative register atau translation look-aside buffers (TLBs). Merupakan solusi standar untuk permasalahan penggunaan memori untuk implementasi tabel page. Sekumpulan associative register berupa memori kecepatan tinggi. Setiap register terdiri dari 2 bagian yaitu key dan value. Jika associative register memberikan item, akan dibandingkan dengan semua key secara simultan. Jika item ditemukan nilai yang berhubungan diberikan. Model ini menawarkan pencarian cepat tetapi perangkat keras masih mahal. Jumlah entry pada TLB bervariasi antara 8 s/d 2048.

Sekarang apa bedanya dari table page: 

#    Perbedaannya adalah bahwa paging itu memecah memori fisik menjadi blok-blok yang berukuran tertentu di sebut frame, dan memecah memori logika menjadi blok-blok yang disebut page, seperti di jelaskan dalam point pengertian di atas, Jadi karena ada program yang melebihi memori utama, maka dengan paging ini, dapat di pecah-pecah menjadi beberapa bagian, sehingga program dapat di eksekusi.

#       Sedangkan tabel page digunakan untuk menerjemahkan memori logika ke memori fisik, dengan perantara MMU (Memory Management Unit), dan pengeksekusian proses akan mencari memori berdasarkan table page ini. Sehingga pada waktu memori logika di pecah-pecah maka dengan tabel page ini akan diterjemahkan dan eksekusi dengan menggunakan tabel tersebut.


Segmentasi


Segmentasi merupakan skema manajemen memori yang mendukung cara pandang seorang programmer terhadap memori. Ruang alamat logika merupakan sekumpulan dari segmen-segmen.Masing-masing segment mempunyai panjang dan nama. Alamat diartikan sebagai nama segmen dan offset dalam suatu segmen. Jadi jika seorang pengguna ingin menunjuk sebuah alamat dapat dilakukan dengan menunjuk nama segmen dan offsetnya. Untuk lebih menyederhanakan implementasi, segmen-segmen diberi nomor yang digunakan sebagai pengganti nama segment. Sehingga, alamat logika terdiri dari dua tupple: [segment-number, offset].

Segmentasi Perangkat Keras
Meskipun seorang pengguna dapat memandang suatu objek dalam suatu program sebagai alamat berdimensi dua, memori fisik yang sebenarnya tentu saja masih satu dimensi barisan byte. Jadi kita harus bisa mendefinisikan pemetaan dari dua dimensi alamat yang didefinisikan oleh pengguna ke satu dimensi alamat fisik. Pemetaan ini disebut sebagai sebuah segment table. Masing-masing masukan dari mempunyai segment base dan segment limit. Segment base merupakan alamat fisik dan segmen limit diartikan sebagai panjang dari segmen.


Setiap alamat dibangkitkan oleh CPU dengan membagi ke dalam 2 bagian yaitu :
  • Page number (p) digunakan sebagai indeks ke dalam table page (page table). Page table berisi alamat basis dari setiap page pada memori fisik.
  • Page offset (d) mengkombinasikan alamat basis dengan page offset untuk mendefinisikan alamat memori fisik yang dikirim ke unit memori.

Sebuah program adalah kumpulan segmen. Suatu segmen adalah unit logika seperti program utama, prosedur, fungsi, metode, obyek, variabel lokal, variabel global, blok umum, stack, tabel simbol, array dan lain-lain. Pandangan user terhadap sistem segmentasi dapat dilihat pada Gambar Arsitektur Segmentasi

Alamat logika terdiri dari dua bagian yaitu nomor segmen (s) dan offset (d) yang dituliskan dengan(nomor segmen, offset) 

Pemetaan alamat logika ke alamat fisik menggunakan tabel segmen (segment table), terdiri dari :
  • Segmen basis (base) berisi alamat fisik awal
  • Segmen limit merupakan panjang segmen. Seperti tabel page, tabel segmen dapat berupa register atau memori berkecepatan tinggi. Pada program yang berisi sejumlah segmen yang besar, maka harus menyimpan tabel page di memori.
  • Segment-table base register (STBR) digunakan untuk menyimpan alamat yang menunjuk ke segment table.
  • Segment-table length register (STLR) digunakan untuk menyimpan nilai jumlah segmen yang digunakan program.
  • Untuk alamat logika (s, d), pertama diperiksa apakah segment number s legal (s < STLR), kemudian tambahkan segment number ke STBR, alamat hasil (STBR + s) ke memori dari segment table.
Perangkat keras yang digunakan pada sistem segmentasi. Pemetaan dari alamat logika ke alamat fisik membutuhkan 2 acuan memori untuk setiap alamat logika. Hal ini akan menurunkan kecepatan sistem dengan faktor 2. Solusi standard yang digunakan adalah dengan cache (atau associative register) untuk menyimpan entri tabel segmen yang sering digunakan. Pemetaan alamat logika ke alamat fisik dengan menggunakan tabel segmen . Misalnya alamat logika dengan nomor segment 0 offset 88 akan dipetakan ke alamat fisik 1400 + 88 = 1488 karena offset < limit (88 < 1000). Alamat logika dengan nomor segment 1 offset 412 akan terjadi error karena offset > limit (412 > 400). Alamat logika dengan nomor segment 2 offset 320 akan dipetakan ke alamat fisik 4300 + 320 = 4620 karena offset < limit (320 < 400).





Dimulai dengan model 80386, microprocessor Intel menampilkan translasi alamat dengan 2 cara berbeda, yang disebut real mode dan protected mode. Real mode untuk memelihara kompatibilitas prosesor dengan model yang lebih lama dan untuk OS agar dapat melakukan bootstrap.

• Segmentation Registers

Logical address terdiri atas dua bagian : segment identifier dan sebuah offset yang menunjukkan alamat yang bersangkutan pada segment. Segment identifier adalah sebuah 16-bit field yang disebut segment selector. Untuk mempermudah memperoleh segment selectors dengan cepat, prosesor menyediakan segmentation register yang tujuannya hanya untuk memegang segment selectors. Ada enam segmentation register : cs, ss, ds, es, fs, dan gs.

• Segment Descriptor

Setiap segment direpresentasikan dengan 8-byte segment descriptor yang menggambarkan karakteristik segment. Segment descriptor disimpan pada Global Descriptor Table(GDT) atau pada Local Descriptor Table(LDT).

• Segment Selectors

Untuk mempercepat pengubahan dari logical address ke linear address, Intel menyediakan nonprogrammable register tambahan untuk setiap dari 6 programmable segmentation register. Setiap segment selector di-load pada sebuah segmentation register, segment descriptor yang bersangkutan di-load dari memori ke nonprogrammable CPU register yang bersesuaian. Jadi, pengubahan dari logical address ke linear address dilakukan tanpa mengakses GDT atau LDT yang berada pada memori utama. Akses ke GDT atau LDT hanya diperlukan bila isi dari segmentation register berubah. Setiap segment selector mengandung hal-hal berikut :

- Sebuah index 13-bit yang menunjukkan masukan segment descriptor yang berhubungan yang terdapat pada GDT atau LDT.

- Sebuah TI (tabe indicator) flag yang menunjukkan apakah segment descriptor terdapat pada GDt (Ti = 0) atau pada LDT (TI = 1).

- Sebuah RPl (requestor privilege level) 2-bit field, yang membuat current privilege level cPu tepat saat segment selector yang berhubungan di-load ke register cs.

• Segmentation Unit

Segmentatipn Unit melakukan operasi-operasi berikut :

- Memeriksa TI dari segment selector, untuk memutuskan apakah descriptor table berada pada segment descriptor.

- Menghitung alamat dari segment descriptor dari index filed segment selector.

- Menambahkan ke Base field dari segment descriptor, offset dari logical address, sehingga diperoleh linear address.



Perbedaan Segmentasi dan Paging

Ada beberapa perbedaan antara Segmentasi dan Paging diantaranya adalah: 
  1. Segmentasi melibatkan programer (programer perlu tahu teknik yang digunakan), sedangkan dengan paging, programer tidak perlu tahu teknik yang digunakan.
  2. Pada segmentasi kompilasi dilakukan secara terpisah sedangkan pada paging, kompilasinya tidak terpisah. 
  3. Pada segmentasi proteksinya terpisah sedangkan pada paging proteksinya tidak terpisah. 
  4. Pada segmentasi ada shared code sedangkan pada paging tidak ada shared code. 
  5. Pada segmentasi terdapat banyak ruang alamat linier sedangkan pada paging hanya terdapat satu ruang alamat linier. 
  6. Pada segmentasi prosedur dan data dapat dibedakan dan diproteksi terpisah sedangkan pada paging prosedur dan data tidak dapat dibedakan dan diproteksi terpisah. 
  7. Pada segmentasi pengubahan ukuran tabel dapat dilakukan dengan mudah sedangkan pada Paging pengubahan ukuran tabel tidak dapat dilakukan dengan mudah. 
  8. Segmentasi digunakan untuk mengizinkan program dan data dapat dipecahkan jadi ruang alamat mandiri dan juga untuk mendukung sharing dan proteksi sedangkan paging digunakan untuk mendapatkan ruang alamat linier yang besar tanpa perlu membeli memori fisik lebih. 


Sumber:

Bambang [2002] Bambang Hariyanto,. Ir. 2002. Sistem Operasi. Edisi kedua. Informatika. Bandung

http://herysusanto30.blogspot.com/2012/12/sistemfragmentasi-penyimpanandi.html (20 juni 2013)

Sabtu, 27 April 2013

Sistem Deadlock

                                                               
Deadlock

Deadlock menurut bahasa adalah buntut atau kebuntuan, terkunci.
Sedangkan menurut pengertian deadlock adalah sebuah proses yang memerlukan satu sumber daya atau lebih mengalami penundaan ataupun menunggu sumber daya digunakan oleh proses yang lain.
Sumber daya bersifat :
  • Preemptible : dapat mengambil dari proses lain tanpa ada efek lain, contoh : memori CPU.
  • Non-preemptible : tidak boleh mengambil sumber daya yang masih digunakan oleh proses lain, contoh : printer.
Akibat dari Deadlock!!!
Apabila peristiwa deadlock terjadi dalam kurung waktu yang lama maka akan terjadi “starvation”. Hal-hal yang membuat peristiwa startvation terjadi adalah satu proses, dua proses atau lebih yang memerlukan sumber daya secara bersamaan dan sumber daya yang dibutuhkan tidak sedikit sehingga menyebabkan proses lain tidak memperoleh sumber daya dan menunggu lama atau lebih buruknya lagi proses tersebut diabaikan oleh sumber daya.

Deadlock memiliki Model Sistem
Sebuah proses melakukan tiga hal yang dilakukan ketika menggunakan sumber daya :
  • Meminta (Request) : sebuah proses mengajukan permohonan kepada sumber daya untuk menggunakan jasa sumber daya sebagai alat transportasi.
  • Menggunakan (Use) : proses menggunakan jasa sumber daya sebagai alat transportasi.
  • Melepas (Release) : proses melepas sumber daya sebagai jasa pengantar.

Diagram Graf
Sebuah sistem komputer terdiri dari berbagai macam sumber-daya (resources), seperti:
• Fisik (Perangkat, Memori)
• Logika (Lock, Database record)
• Sistem Operasi (PCB Slots)
• Aplikasi (Berkas)

    Diantara sumber-daya tersebut ada yang preemptable dan ada juga yang tidak. Sumber-daya ini akan
digunakan oleh proses-proses yang membutuhkannya. Mekanisme hubungan dari proses-proses dan sumber-daya yang dibutuhkan/digunakan dapat di diwakilkan dengan graf.
    Graf adalah suatu struktur diskrit yang terdiri dari vertex dan sisi, dimana sisi menghubungkan vertex-vertex yang ada. Berdasarkan tingkat kompleksitasnya, graf dibagi menjadi dua bagian, yaitu simple graf dan multigraf. Simpel graf tidak mengandung sisi paralel (lebih dari satu sisi yang menghubungkan dua vertex yang sama). Berdasarkan arahnya graf dapat dibagi menjadi dua bagian yaitu graf berarah dan graf tidak berarah. Graf berarah memperhatikan arah sisi yang menghubungkan dua vertex, sedangkan graf tidak berarah tidak memperhatikan arah sisi yang menghubungkan dua vertex.
    Dalam hal ini akan dibahas mengenai implementasi graf dalam sistem operasi. Salah satunya dalah
graf alokasi sumber daya. Graf alokasi sumber daya merupakan graf sederhana dan graf berarah. Graf alokasi sumber daya adalah bentuk visualisasi dalam mendeteksi maupun menyelesaikan
masalah deadlock.

Graf alokasi sumber daya mempunyai komponen- komponen layaknya graf biasa. Hanya saja dalam
graf alokasi sumber daya ini, vertex dibagi menjadi dua jenis yaitu:
1. Proses P= {P0, P1, P2, P3,..., Pi,..., Pm}. Terdiri dari semua proses yang ada di sistem. Untuk
    proses, vertexnya digambarkan sebagai lingkaran dengan nama prosesnya.
2. Sumber daya R= {R0, R1, R2, R3,..., Rj,..., Rn}. Terdiri dari semua sumber daya yang ada di 
    sistem. Untuk sumber daya, vertexnya digambarkan sebagai segi empat dengan instansi yang 
    dapat dialokasikan serta nama sumber dayanya.

Sisi, E={Pi-->Rj,…, Rj-->Pi} terdiri dari dua jenis, yaitu:
a. Sisi permintaan: Pi-->Rj Sisi permintaan menggambarkan adanya suatu proses Pi yang meminta
    sumber daya Rj.
b. Sisi alokasi: Rj-->Pi. Sisi alokasi menggambarkan adanya suatu sumber daya Rj yang
    mengalokasikan salah satu instansi-nya pada proses Pi.


Misalkan suatu graph pengalokasian sumber daya dengan ketentuan sebagai berikut:
Himpunan P,R dan E:
• P={P1, P2, P3}
• R={R1, R2, R3, R4}
• E={P1-->R1, P2-->R3, R1-->P3, R2-->P2, R2-->P1, R3-->P3}
Instansi sumber daya:
• R1 memiliki satu instansi
• R2 memiliki dua instansi
• R3 memiliki satu instansi
• R4 memiliki tiga instansi

Status Proses:
• Proses P1 mengendalikan sebuah instansi R2 dan menunggu sebuah instansi dari R1.
• Proses P2 mengendalikan sebuah instansi dari R1 dan R2, dan menunggu sebuah instansi
   R3
• Proses P3 mengendalikan sebuah instansi dari R3.



Syarat terjadinya dan penyebab deadlock :
- Mutual Exclusion :
  sebuah proses memiliki hak pribadi untuk menggunakan sumber daya yang digunakan selama proses  berjalan hingga sampai tujuan dan proses lain baru bisa menggunakan sumber daya tersebut.

- Hold and Wait :
sebuah proses pertama yang membutuhkan dua sumber daya dimana proses tersebut sudah memperoleh satu sumber daya dan membutuhkan satu sumber daya lagi tapi untuk menambah sumber daya proses pertama harus menunggu proses kedua melepas sumber daya dan sedangkan proses ketiga membutuhkan sumber daya yang sama dengan proses kedua dan pada akhirnya salah satu proses diatas akan menahan sumber daya yang dibutuhkan dan menunggu sumber daya yang lain dilepas oleh proses lain.

- No Preemption :
selanjutnya adalah sebuah proses yang menggunakan sumber daya terlebih dahulu hingga selesai kemudian diberikan kepada proses lain yang membutuhkan sumber daya,apabila proses tersebut belum selesai menggunakan maka proses yang lain harus menunggu hingga proses tersebut selesai.

- Circular Wait :
adalah sebuah siklus yang membentuk sebuah lingkaran dimana sebuah proses disimbolkan dengan titik kecil, proses pertama memerlukan sumber daya yang dimiliki oleh proses kedua sedangkan proses kedua juga memerlukan sumber daya yang dimiliki oleh proses ketiga dan bahkan proses ketiga juga memerlukan sumber daya yang dimiliki oleh proses pertama. Dan siklus ini disebut dengan “lingkaran setan buntu”.


Penaganan Deadlock
Secara umum terdapat 3 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 atau Strategi Ostrich. Pelaksanaan algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan secara otomatis mematikan proses atau program yang mengalami deadlock.. Pendekatan yang paling sederhana adalah dengan menggunakan strategi burung unta: masukkan kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali.  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.
  Akan tetapi beragam pendapat muncul berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama sekali tidak dapat diterima dan semua keadaan deadlock harus ditangani. Sementara menurut para ahli Teknik, jika komputer lebih sering mengalami kerusakkan disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada sistem operasi. Maka ongkos yang dibayar untuk melakukan penanganan deadlock sangatlah besar dan lebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX dan MINIX.



2. Penghindaran. 

Menghindari keadaan deadlock atau mencegah sebelum deadlock itu terjadi pada sistem computer kita. Pada system biasanya permintaan sumber daya hanya dilakukan sekali saja. Dan system harus sudah tahu mana sumber daya yang aman dan tidak (agar aman dari deadlock) setelah itu baru disalurkan daya tersebut.
Ada 2 cara penyaluranya, yaitu :
          1.      Jangan memulai suatu proses apapun jika itu membawa pada deadlock
                   Jadi tidak akan terkena deadlock, karena proses akan dihentikan ketika akan menuju deadlock
          2.      Jangan memberI kesempatan pada suatu proses  untuk mendapatkan sumber daya lagi 
                   atau lebih

Jadi terdapat 2 cara untuk menghidarkan diri dari deadlock, pertama proses akan dicegah ketika akan menuju deadlock dan kemudian tidak memberikan sumber daya lagi pada suatu proses, sehingga deadlock tidak terjadi.  

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.


3. 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.

  • Mendeteksi dan Memperbaiki
         Caranya ialah dengan cara mendeteksi jika terjadi deadlock pada suatu proses maka dideteks system mana yg terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka dilakukan proses untuk memperbaiki dan menjadikan sistem berjalan kembali. Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada kondisi deadlock yang dapat berpengaruh terhadap performance sistem karena sumber daya tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu. Akhirnya sistem akan berhenti dan harus direstart.

Hal-hal yang terjadi dalam mendeteksi adanya Deadlock adalah:
• Permintaan sumber daya dikabulkan selama memungkinkan.
• Sistem operasi memeriksa adakah kondisi circular wait secara periodik.
• Pemeriksaan adanya deadlock dapat dilakukan setiap ada sumber daya yang hendak digunakan 

   oleh sebuah proses.
• Memeriksa dengan algoritma tertentu.



Ada beberapa jalan untuk kembali dari Deadlock, yaitu:


  • Lewat Preemption
Dengan cara untuk sementara waktu menjauhkan sumber daya dari pemakainya, dan memberikannya pada proses yang lain. Ide untuk memberi pada proses lain tanpa diketahui oleh pemilik dari sumber daya tersebut tergantung dari sifat sumber daya itu sendiri. Perbaikan  dengan cara ini sangat sulit atau dapat dikatakan tidak mungkin. Cara ini dapat dilakukan dengan memilih korban yang akan dikorbankan atau diambil sumber dayanya untuk sementara, tentu saja harus dengan perhitungan yang cukup agar waktu yang dikorbankan seminimal mungkin. Setelah kita melakukan preemption dilakukan pengkondisian proses tersebut dalam kondisi aman. Setelah itu proses dilakukan lagi dalam kondisi aman.

  • Lewat Melacak Kembali
Setelah melakukan beberapa langkah preemption, maka proses utama yang diambil sumber dayanya akan berhenti dan tidak dapat melanjutkan kegiatannya, oleh karena itu dibutuhkan langkah untuk kembali pada keadaan aman dimana proses masih berjalan dan memulai proses lagi dari situ. Tetapi untuk beberapa keadaan sangat sulit menentukan kondisi aman tersebut, oleh karena itu umumnya dilakukan cara mematikan program tersebut lalu memulai kembali proses. Meski pun sebenarnya lebih efektif jika hanya mundur beberapa langkah saja sampai deadlock tidak terjadi lagi. Untuk beberapa sistem mencoba dengan cara mengadakan pengecekan beberapa kali secara periodik dan menandai tempat terakhir kali menulis ke disk, sehingga saat terjadi deadlock dapat mulai dari tempat terakhir penandaannya berada.

  • Lewat mematikan proses yang menyebabkan Deadlock
Cara yang paling umum ialah mematikan semua proses yang mengalami deadlock. Cara ini paling umum dilakukan dan dilakukan oleh hampir semua sistem operasi. Namun, untuk beberapa sistem, kita juga dapat mematikan beberapa proses saja dalam siklus deadlock untuk menghindari deadlock dan mempersilahkan proses lainnya kembali berjalan. Atau dipilih salah satu korban untuk melepaskan sumber dayanya, dengan cara ini maka masalah pemilihan korban menjadi lebih selektif, sebab telah diperhitungkan beberapa kemungkinan jika si proses harus melepaskan sumber dayanya.
Kriteria pemilihan korban :
• Yang paling jarang memakai prosesor
• Yang paling sedikit hasil programnya
• Yang paling banyak memakai sumber daya sampai saat ini
• Yang alokasi sumber daya totalnya tersedkit
• Yang memiliki prioritas terkecil

   Selain itu juga ada kondisi yang hampir dapat dikatakan mirip dengan deadlock adalah livelock. Hanya saja livelock ini secara umum dapat dikatakan bahwa proses tidak berjalan. Livelock ini merupakan kasus khusus dalam source starvation. Kondisi yang dapat menggambarkan livelock ini adalah ketika dua orang bertemu di sebuah koridor yang sempit, dan masing-masing mencoba untuk bersikap sopan dengan menggerakkan badan ke samping untuk membiarkan lewat yang lain, tetapi mereka akhirnya bergoyang dari sisi ke sisi lain tanpa membuat kemajuan karena mereka berdua berulang kali pindah dengan cara yang sama pada waktu yang sama.
 Livelock sendiri merupakan risiko dari beberapa algoritma yang mendeteksi dan memulihkan dari deadlock. Jika lebih dari satu proses mengambil tindakan, pendeteksian oleh algoritma berulang kali dapat memicu deadlock. Hal ini dapat dihindari dengan memastikan bahwa hanya satu proses (dipilih secara acak atau dengan prioritas) yang mengambil tindakan.


sumber:
http://bayuzu.blogspot.com/2010/04/deadlock-deadlock-adalah-keadaan-dimana.html

Bambang [2002] Bambang Hariyanto,. Ir. 2002. Sistem Operasi. Edisi kedua. Informatika. Bandung