Topan Husain. Diberdayakan oleh Blogger.

MUTUAL EXCLUSION

Mutual Exclusion
Mutual Exclusion 
Adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang mengerjakan hal yang sama. 
Bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama disebut Critical Section/Region. Mutual Exclusion merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau lebih memasuki Critical Section secara bersamaan 
Kesuksesan proses - proses kongkuren memerlukan pendefinisian Critical Section dan memaksakan Mutual Exclusion di antara proses-proses kongkuren yang sedang berjalan. Pemaksaan Mutual Exclusion merupakan landasan pemrosesan kongkuren.

Masalah-Masalah Konkuren 
A. Mutual Exclusion. 
Adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses-proses yang lain dilarang mengerjakan hal yang sama.
Bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama disebut Critical Section/Region. Mutual Exclusion merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau lebih memasuki Critical Section secara bersamaan. 
Kesuksesan proses- proses kongkuren memerlukan pendefinisian Critical Section dan memaksakan Mutual Exclusion di antara proses-proses kongkuren yang sedang berjalan. Pemaksaan Mutual Exclusion merupakan landasan pemrosesan kongkuren. 
Pemaksaan adanya mutual eclusion menimbulkan dua maslah, yaitu: 
- Deadlock. 
- Startvation. 

B. Deadlock. Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Karena beberapa proses itu saling menunggu, maka tidak terjadi kemajuan dalam kerja proses-proses tersebut. Deadlock adalah masalah yang biasa terjadi ketika banyak proses yang membagi sebuah resource yang hanya boleh dirubah oleh satu proses saja dalam satu waktu. 
Di kehidupan nyata, deadlock dapat digambarkan dalam gambar berikut.Pada gambar diatas, deadlock dianalogikan sebagai dua antrian mobil yang akan menyeberangi jembatan. Dalam kasus diatas, antrian di sebelah kiri menunggu antrian kanan untuk mengosongkan jembatan (resource), begitu juga dengan antrian kanan. Akhirnya tidak terjadi kemajuan dalam kerja dua antrian tersebut.Misal ada proses A mempunyai resource X, proses B mempunyai resource Y. 
Kemudian kedua proses ini dijalankan bersama, proses A memerlukan resource Y dan proses B memerlukan resource X, tetapi kedua proses tidak akan memberikan resource yang dimiliki sebelum proses dirinya sendiri selesai dilakukan. Sehingga akan terjadi tunggu-menunggu. 

C. Starvation.  
Starvation adalah kondisi yang biasanya terjadi setelah deadlock. Proses yang kekurangan resource (karena terjadi deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami starvation (kelaparan). 

Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya. Ilustrasi starvation tanpa deadlock di dunia nyata dapat dilihat di bawah ini.Pada gambar diatas, pada antrian kanan terjadi starvationkarena resource (jembatan) selalu dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran. 

D. Sinkronisasi. 
Adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan. Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsistensi data karena pengaksesan oleh beberapa proses yang berbeda (mutual exclusion) serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan terhindar dari deadlock atau starvation.

(pada hari Sabtu, 28 April 2013  ----  20.10 WIB)




(pada hari Sabtu, 28 April 2013  ----  20.10 WIB)


(pada hari Sabtu, 28 April 2013  ----  20.10 WIB)
 

(pada hari Sabtu, 28 April 2013  ----  20.10 WIB)
 


 

DETEKSI DEADLOCK DAN PENCEGAHANNYA

PENDETEKSIAN, PENCEGAHAN,
DAN CARA MENGATASI DEADLOCK

Metode Pendeteksian Deadlock

Deadlock akan terjadi, jika dan hanya jika grafik tunggu memiliki siklus di dalamnya.Untuk mendeteksi deadlock, sistem harus memiliki grafik tunggu dan menjalankan algoritma deteksi deadlock secara periodik. Hal yang harus diperhatikan adalah seberapa sering algoritma deteksi harus dipanggil. Hal ini tergantung dari dua faktor:

1.      Frekuensi terjadinya deadlock pada umumnya
2.      Jumlah proses yang akan terpengaruh ketika deadlock terjadi.


Pencegahan deadlock

Jika pada awal kita membahas tentang ke-empat hal yang menyebabkan terjadinya deadlock. Maka pada bagian ini, kita akan membahas cara menanggulangi keempat penyebab deadlock itu, sehingga dengan kata lain kita mengadakan pencegahan terhadap deadlock.
·         Masalah Kondisi Mutual Eksklusif (Mutual exclusion)
Masalah ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial untuk satu proses, maka hal ini harus di dukung oleh kemampuan sistem operasi. Jadi diusahakan agar tidak mempergunakan kondisi spesial tersebut sehingga sedapat mungkin deadlock dapat dihindari.

·         Masalah Kondisi Menunggu dan Memegang (Hold and wait condition)
Penanggulangan deadlock dari kondisi ini lebih baik dan menjanjikan, asalkan kita dapat menahan proses yang memegang sumber daya untuk tidak menunggu sumber daya laun, kita dapat mencegah deadlock. Caranya ialah dengan meminta semua sumber daya yang ia butuhkan sebelum proses berjalan. Tetapi masalahnya sebagian proses tidak mengetahui keperluannya sebelum ia berjalan. Jadi untuk mengatasi hal ini, kita dapat menggunakan algoritma bankir. Yang mengatur hal ini dapat sistem operasi ataupun sebuah protokol. Hasil yang dapat terjadi ialah sumber daya lebih di-spesifikasi dan kelaparan sumber daya, atau proses yang membutuhkan sumber daya yang banyak harus menunggu sekian lama untuk mendapat sumber daya yang dibutuhkan.

·         Masalah tidak ada Preemption (No preemption condition)
Hal ketiga ialah jangan sampai ada preemption pada sumber daya yang telah dialokasikan. Untuk memastikan hal ini, kita dapat menggunakan protokol. Jadi jika sebuah proses meminta sumber daya yang tidak dapat dipenuhi saat itu juga, maka proses mengalami preempted. Atau dengan kata lain ada sumber daya dilepaskan dan diberikan ke proses yang menunggu, dan proses itu akan menunggu sampai kebutuhan sumber dayanya dipenuhi.
Jalan lain kita harus mencek sumber daya yang dimaui oleh proses di cek dahulu apakah tersedia. Jika ya maka kita langsung alokasikan, sedangkan jika tidak tersedia maka kita melihat apakah ada proses lain yang menunggu sumber daya juga. Jika ya, maka kita ambil sumber daya dari proses yang menunggu tersebut dan memberikan pada proses yang meminta tersebut. Jika tidak tersedia juga, maka proses itu harus menunggu. Dalam menunggu, beberapa dari sumber dayanya dapat saja di preempted, tetapi jika ada proses yang memintanya. Cara ini efektif untuk proses yang menyimpan dalam memory atau register.

·         Masalah Circular Wait
Masalah ini dapat ditangani oleh sebuah protokol yang menjaga agar sebuah proses tidak membuat lingkaran siklus yang dapat mengakibatkan deadlock

Atau kita harus mencek sumber daya yang dimaui oleh proses di cek dahulu apakah tersedia. Jika ya maka kita langsung alokasikan, sedangkan jika tidak tersedia maka kita melihat apakah ada proses lain yang menunggu sumber daya juga. Jika ya, maka kita ambil sumber daya dari proses yang menunggu tersebut dan memberikan pada proses yang meminta tersebut. Jika tidak tersedia juga, maka proses itu harus menunggu. Dalam menunggu, beberapa dari sumber dayanya bisa saja di preempted, tetapi jika ada proses yang memintanya. Cara ini efektif untuk proses yang menyimpan dalam memory atau register

Mengatasi Deadlock dan Dining Philosophers
Bila deadlock terjadi maka algoritma deteksi harus sering dipanggil. Resource yang dialokasikan ke proses-proses yang mengalami deadlock tidak akan digunakan sampai kondisi deadlock diatasi. Bila deadlock tidak segera diatasi maka jumlah proses yang terlibat dalam deadlock akan semakin bertambah. Salah satu ciri terjadinya deadlock adalah ketika beberapa proses mengajukan permohonan untuk resource, tetapi permohonan ini tidak dapat dipenuhi dengan segera. Sistem dapat saja memanggil algoritma deteksi setiap kali permohonan untuk resource tidak dapat diperoleh dengan segera. Namun,semakin sering algoritma deteksi dipanggil, maka waktu overhead yang dibutuhkan untuk komputasi menjadi semakin besar.

Banyak cara untuk menanggulangi deadlock:
1.      Mengabaikan masalah deadlock.
2.      Mendeteksi dan memperbaiki
3.      Penghindaran yang terus menerus dan pengalokasian yang baik dengan menggunakan protokol untuk memastikan sistem tidak pernah memasuki keadaan deadlock . Yaitu dengan deadlock avoidance sistem untuk men- data informasi tambahan tentang proses mana yang akan meminta dan menggunakan sumber daya.
4.      Pencegahan yang secara struktur bertentangan dengan 4 kondisi terjadinya deadlockdengan deadlock prevention sistem untuk memasti- kan bahwa salah satu kondisi yang penting tidak dapat menunggu.

Mengabaikan Masalah deadlock
Metode ini lebih dikenal dengan Algoritma Ostrich. Dalam algoritma ini dikatakan bahwa untuk menghadapi deadlock ialah dengan berpura-pura bahwa tidak ada masalah apapun. Hal ini seakan-akan melakukan suatu hal yang fatal, tetapi sistem operasi Unix menanggulangideadlock dengan cara ini dengan tidak mendeteksi deadlock dan membiarkannya secara otomatis mematikan program sehingga seakan-akan tidak terjadi apapun. Jadi jika terjadideadlock, maka tabel akan penuh, sehingga proses yang menjalankan proses melalui operator harus menunggu pada waktu tertantu dan mencoba lagi.

Mendeteksi dan Memperbaiki
Caranya ialah dengan cara mendeteksi jika terjadi deadlock pada suatu proses maka dideteksi sistem mana yang terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka diadakan proses untuk memperbaiki dan menjadikan sistem berjalan kembali. Ada beberapa jalan untuk kembali dari deadlock:
-          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 bisa dikatakan tidak mungkin. Cara ini bisa dilakukan dengan memilih korban yang akan dikorbankan atau diambil sumber dayanya utuk sementara, tentu saja harus dengan perhitungan yang cukup agar waktu yang dikorbankan seminimal mungkin.
-          Lewat melacak kembali
setelah kita lakukan 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. Meskipun 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 membunuh proses yang menyebabkan deadlock.
Cara yang paling umum ialah membunuh semua proses yang mengalami deadlock. Cara ini paling umum dilakukan dan dilakukan oleh hampir semua sistem operasi. 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 seleksi korban ialah :
a.       Yang paling jarang memakai prosesor
b.      Yang paling sedikit hasil programnya
c.       Yang paling banyak memakai sumber daya sampai saat ini
d.      Yang alokasi sumber daya totalnya tersedkit
e.       Yang memiliki prioritas terkecil

Kondisi Aman
Saat kondisi aman, maka suatu sistem bisa mengalokasikan sumber daya pada setiap proses (sampai pada batas maksimumnya) dengan urutan tertentu.

Jika sistem dalam state aman maka tidak terjadi deadlock, sedangkan jika sistem
dalam state tidak aman (unsafe state) maka kemungkinan terjadi deadlock seperti
Gambar 6-4. Metode menghindari deadlock menjamin bahwa sistem tidak pernah
memasuki state tidak aman.

SUMBER :
 (pada hari Miggu, 29 April 2013  ----  20.10 WIB
(pada hari Miggu, 29 April 2013  ----  20.15 WIB
(pada hari Miggu, 29 April 2013  ----  20.29 WIB
 
 

DEADLOCK dan MACAM SUMBER DAYA

DEADLOCK, CARA MENGHINDARINYA 
DAN MACAM SUMBER DAYA

Pengertian Deadlock
Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antar proses dan sering kita sebut “HAANG”. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set yang sedang menunggu.

Hal ini bisa disebabkan karena untuk setiap sumber daya yang dibutuhkan suatu sistem akan mengawasi ketersediaan sumber daya yang dibutuhkan, yang berarti sistem akan masuk kedalam status yang tidak aman, atau dapat dikatakan hasil dari status tersebut akan mengakibatkan terjadinya deadlock. Deadlock bisa dihindari dengan menghilangkan faktor penyebab dari terjadinya deadlock itu sendiri seperti menghilangkan : Mutual exclusion, Hold and wait condition, No preemption condition (Lockout), dan The circular wait condition. 

Penyebab Terjadinya DeadLock 
Menurut 1971 article by E. G. Coffman dalam artikelnya yang diterbitkan pada tahun 1971 terdapat empat penyebab terjadi deadlock yang dikenal sebagai Coffman conditions :
1.       Mutual exclusion, suatu sumber daya tidak bisa berbagi dengan lebih dari satu proses.
2.       Hold and wait condition, suatu proses yang telah mempunyai sumber daya kemungkinan meminta sumber daya yang baru.
3.      No preemption condition, Begitu diberi jatah waktu pemroses maka prosesor tidak dapat diambil alih oleh proses lain sampai proses itu selesai (run to completion) .
4.      Circular wait condition, adanya kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya.


Cara Menghindari Deadlock

Deadlock bisa dihindari jika mempunyai informasi mengenai proses yang tersedia serta sumber daya yang akan dibutuhkannya. Untuk setiap sumber daya yang dibutuhkan suatu sistem akan mengawasi ketersediaan sumber daya yang dibutuhkan, yang berarti sistem akan masuk kedalam status yang tidak aman, atau dapat dikatakan hasil dari status tersebut akan mengakibatkan terjadinya deadlock atau disebut juga hang. Sebuah sistem hanya akan menjamin permintaan dalam keadaan status aman, dalam permintaan suatu sistem untuk mengetahui bahwa status yang dijalankannya itu aman atau tidak adalah dengan mengetahui setiap tipe dari setiap proses dan banyaknya sumber daya yang ada, tersedia, dan yang dibutuhkan. Algorithm yang digunakan untuk menghindari deadlock salah satunya adalah Banker’s Algoritm, yang digunakan untuk mengetahui batas sumber daya yang dibutuhkan oleh suatu proses. Bagaimanapun, untuk kebanyakan sistem tidaklah mungkin untuk dapat diketahui apa yang dibutuhkan oleh proses, ini berarti bahwa menghindari deadlock atau hang hampir tidaklah mungkin.
1.      Jangan memulai proses apapun jika proses tersebut akan membawa kita pada kondisideadlock, sehingga tidak mungkin terjadi deadlock karena ketika akan menuju deadlocksudah dicegah
2.      Jangan memberi kesempatan pada suatu proses untuk meminta sumber daya lagi jika penambahan ini akan membawa kita pada suatu keadaan deadlock
Jadi diadakan dua kali penjagaan, yaitu saat pengalokasian awal, dijaga agar tidak deadlock dan ditambah dengan penjagaan kedua saat suatu proses meminta sumber daya, dijaga agar jangan sampai terjadi deadlock. Pada deadlock avoidance sistem dilakukan dengan cara memastikan bahwa program memiliki maksimum permintaan. Dengan kata lain cara sistem ini memastikan terlebih dahulu bahwa sistem akan selalu dalam kondisi aman. Baik mengadakan permintaan awal ataupun saat meminta permintaan sumber daya tambahan, sistem harus selalu berada dalam kondisi aman.

Macam Sumber Daya
Kejadian deadlock selalu tidak lepas dari sumber daya, bahwa hampir seluruhnya merupakan masalah sumber daya yang digunakan bersama-sama. Oleh karena itu, kita juga perlu tahu tentang jenis sumber daya, yaitu: sumber daya dapat digunakan lagi berulang-ulang dan sumber daya yang dapat digunakan dan habis dipakai atau dapat dikatakan sumber daya sekali pakai.
A.    Sumber Daya yang Bisa Dipakai Berulang-Ulang
Sumber daya ini tidak habis dipakai oleh proses manapun.Tetapi setelah proses berakhir, sumber daya ini dikembalikan untuk dipakai oleh proses lain yang sebelumnya tidak kebagian sumber daya ini. Contohnya prosesor, kanal I/O, disk, semaphores. Contoh peran sumber daya jenis ini pada terjadinya deadlock ialah misalnya sebuah proses memakai disk A dan B, maka akan terjadi deadlock jika setiap proses sudah memiliki salah satu disk dan meminta disk yang lain. Masalah ini tidak hanya dirasakan oleh pemrogram tetapi oleh seorang yang merancang sebuah sistem operasi. Cara yang digunakan pada umumnya dengan cara memperhitungkan dahulu sumber daya yang digunakan oleh proses-proses yang akan menggunakan sumber daya tersebut. Contoh lain yang menyebabkan deadlock dari sumber yang dapat dipakai berulang-ulang ialah berkaitan dengan jumlah proses yang memakai memori utama.

B.     Sumber Daya Sekali Pakai
Dalam kondisi biasa tidak ada batasan untuk memakai sumber daya apapun, selain itu dengan tidak terbatasnya produksi akan membuat banyak sumber daya yang tersedia.Tetapi dalam kondisi ini juga dapat terjadi deadlock.

SUMBER :
 (pada hari jum’at, 26 April 2013 --- 21.55 WIB)
 (pada hari jum’at, 26 April 2013 --- 22.05 WIB)
 (pada hari jum’at, 26 April 2013 --- 22.25 WIB)
 

Mutual Exclusion dan Metode Penjaminnya

A.    Penjelasan tema Mutual Exclusion
Pada system computer terdapat sumber daya yang tidak dapat dipakai bersama pada saat yang bersamaan seperti pada penggunaan printer, Sumber daya seperti hanya dapat menjalankan satu proses pada suatu saat, sumber daya ini disebut sumber daya kritis. Program yang menggunakan sumber daya kritis disebut sedang memasuki critical region / section .
Sistem operasi memberikan fasilitas untuk pemrogram dapat memberikan indikasi keberadaan critical region. Sistem operasi menyediakan layanan ( berupa system call ) untuk mencagah suatu proses masuk kedalam critical region akan tetapi di dalam critical region terdapat proses lain yang sedang berjalan. Mutual exclusion merupakan solusi bagi masalah pada critical region / section, mutual exclusion adalah persoalan untu menjamin hanya satu proses saja yang berjalan dalam suatu critical region / section.

B.    Metode-metode Penjamin Mutual Exclusion

1.    Metode Naif
Sebenarnya metode ini tidak menyelesaikan mutual exclusion, karena masih terdapat scenario proses yang membuat situasi kacau. Metode ini sering disebut metode variable lock sederhana.
Ketika proses hendak masuk critical section, proses lebih dulu memeriksa variable lock dengan ketentuan :
-    Jika variable lock bernilai 0, proses mengeset variable lock menjadi 1 dan segera masuk critical section.
-    Jika variable lock bernilai 1, proses menunggu sampai nilai variabel lock menjadi 0.

2.    Metode untuk situasi tertentu
Metode ini sering disebut metode bergantian secara ketat yang mengasumsikan proses-proses yang hendak masuk critical section secara bergantian terus menerus. Proses memeriksa terus menerus sehingga kondisi siap untuk diproses. Kondisi ini tidak dapat ditentukan lamanya waktu sehingga menyia-nyiakan waktu pemroses. Suatu saat kondisi akan crash ketika ada proses yang harus segera masuk sementara ada proses lain yang masih berjalan.

3.    Metode Busy Waiting
a)    Metode Penyelesaian Dekker
Algoritma Dekker mempunyai property-property berikut :
•    Tidak memerlukan instruksi-instruksi perangkat keras khusus.
•    Proses yang beroperasi di luar critical section tidak dapat mencegah proses lain memasuki critical section.
•    Proses yang ingin masuk critical section akan segera masuk bila dimungkinkan.
b)    Metode Penyelesaian Peterson
Sebelum masuk critical section, proses memanggil enter_critical_section, namun sebelumnya proses memeriksa sampai kondisi aman. Terjadi busy waiting, setelah selesai proses menandai pekerjaan dan mengijinkan proses lain masuk.
Keadaan awal tidak ada proses di critical section. Proses 0 akan masuk critical section. Proses menandai elemen arraynya dan mengeset turn ke 0. Proses memeriksa kondisi, dan prosedur enter_critical_section dilaksanakan. Jika kemudian, proses 1 akan masuk, proses akan menunggu sampai interest(0) menjadi FALSE. Kondisi ini hanya terjadi jika proses 0 mengeset elemen itu dan keluar dari critical section.
c)    Metode Pematian Interupsi
Proses mematikan interupsi ke pemroses dan segera masuk ke critical section. Proses kembali mengaktifkan interupsi segera setelah meninggalkan critical section. Metode ini mengakibatkan :
•    Pemroses tidak dapat beralih ke proses lain karena interupsi clock dimatikan sehingga penjadual pun tidak dieksekusi. Karena penjadual tidak beroperasi maka tidak terjadi alih proses.
•    Proses dapat memakai memori bersama tanpa takut terinvensi proses lain karena memang tidak ada proses lain yang dieksekusi saat itu.
•    Kelemahan utama :
•    Bila proses yang mematikan interupsi mengalami gangguan maka proses tidak akan pernah menghidupkan interupsi kembali. Kejadian ini mengakibatkan kematian seluruh system.
•    Jika terdapat dua pemroses atau lebih, mematikan interupsi hanya berpengaruh pada pemroses yang sedang mengeksekusi intruksi itu. Proses lain masih dapat memasuki critical section.

d)    Metode Test and Set Lock (TSL)
Metode ini membaca isi memori ke register dan kemudian menyimpan nilai bukan 0  ke alamat memori. Pemroses yang mengeksekusi instruksi tsl mengunci bus memori, mencegah pemroses lain mengkases memori.

e)    Metode Exchange (XCHG)
Metode ini menggunakan instruksi exchange (xchg). Instruksi xchg menukarkan dua isi memori.
f)    Metode Instruksi Mesin
Keunggulan :
•    Sederhana dan mudah diverifikasi
•    Dapat diterapkan ke sembarang jumlah proses
•    Dapat digunakan untuk mendukung banyak critical region
Kelemahan :
•    Merupakan metode dengan busy waiting, sangat tidak efisien.
•    Adanya busy waiting memungkinkan terjadi deadlock dan starvation.ü

4.    Metode Penyelesaian Level Tinggi (Metode Semapore)
Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Proses berhenti sampai proses memperoleh penanda tertentu. Variabel khusus untuk penandaan ini disebut semaphore. Semaphore mempunyai dua property :
a)    Semaphore dapat diinisialisasi dengan nilai bukan negative.
b)    Ada dua operasi terhadap semaphore yaitu Operasi Up dan Operasi Down.

Operasi Down
Operasi ini menurunkan nilai semaphore. Jika nilai semaphore menjadi bukan positif maka proses yang mengeksekusinya diblok. Operasi Down adalah atomic (atomic action), tidak dapat diinterupsi sebelum selesai. Menurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblok sebagai instruksi tunggal. Tidak ada proses lain yang dapat diakses sampai proses selesai.

Operasi Up
Operasi ini menaikkan nilai semaphore. Jika satu proses atau lebih telah diblok pada suatu semaphore tidak dapat menyelesaikan operasi down maka salah satu dipilih oleh system dan dibolehkan menyelesaikan operasi downnya. Operasi Up menaikan nilai semaphore, memindahkan dari antrian dan menempatkan satu proses ke senarai ready tidak dapat diinterupsi.
Sebelum masuk critical section, proses melakukan down. Bila berhasil maka proses masuk critical section. Bila tidak berhasil maka proses diblok pada semaphore. Proses yang diblok dapat melanjutkan jika proses yang berada di critical section keluar dan melakukan operasi up dan menjadikan proses yang diblok menjadi ready dan berlanjut hingga operasi downnya berhasil.

C.    Implementasi Semaphore 
  1. Pematian Interupsi : Sistem operasi mematikan interupsi selagi memeriksa semaphore, memperbarui, dan menjadikan proses diblok. Karena semua aksi hanya memerlukan beberapa instruksi, pematian interupsi tidak merugikan.
  2. Instruksi tsl : Pada banyak pemroses, tiap semaphore dilindungi variable lock dan instruksi tsl agar menjamin hanya satu pemroses yang saat itu memanipulasi semaphore

 

Mutual Exclusion

Mutual Exclusion

Adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang mengerjakan hal yang sama. Mutual exclusion ini dapat ditimbulkan akibat adanya interaksi antara proses-proses yang berjalan

Bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama disebut Critical Section/Region. Dengan adanya interaksi proses yang memungkinkan adanya kompetisi antar proses, konsep bagi-pakai maupun cooperative antar proses maka kemungkinan terjadinya critical section akan terjadi.

Untuk mengatasi hal tersebut maka dibuatlah sebuah sistem manajemen proses mutual exclusion. Mutualexclusion pertama kali diungkapkan oleh Edsger Djikstra pada tahun 1965. Sejak saat itu banyak solusi yangditawarkan untuk mengatasi adanya mutual exclusion.

A.    Konsep Mutual Exclusion

Untuk menjelaskan bagaimana konsep mutual exclusion. Maka akan diambil sebuah contoh kejadian. Anggap sebuah perintah didalam code merubah sebagian dari data selama beberapa penjalanan program, ketika thread lain yang mungkin dipicu oleh event yang tidak diperkirakan mulai dieksekusi. Jika pada saat yang bersamaan thread kedua ini membaca dari potongan data yang sama, sedangkan data tersebut dalam proses yang sedang akan ditulisi, maka kondisi ini adalah kondisi yang tidak konsisten dan tidak dapat  diperkirakan. Jika thread kedua mencoba meng-overwrite data tersebut, akan mengakibatkan keadaan yang tidak dapat ditangani (unresolveable state).

Shared data  diatas yang sedang diakses oleh critical sections bagaimanapun juga harus dilindungi, jadi proses lain yang membaca dari atau menulis ke dalam potongan data harus dikeluarkan dari pengeksekusian.

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

B.     Ilustrasi aplikasi tabungan

Seluruh sistem yang melibatkan banyak proses mengakses satu sumber daya bersama selalu menimbulkan persoalan mutual-exclusion.
Contohnya adalah sebagai berikut.
·         Pada aplikasi tabungan, misalnya rekening A berisi Rp 1.000.000,- yang terdaftar di kantor cabang bandung.
·         Kemudian pada suatu saat program aplikasi kantor cabang di Jakarta melayani penyetoran Rp 3.000.000,- ke rekening A. lalu program aplikasi membaca saldo akhir rekening A
Persoalan di atas dapat tidak terjamin mutual-exclusion jika:
1.      Program aplikasi bandung menulis ke rekening A secara cepat sehingga di hasilkan saldo Rp 6.000.000. Setelah itu, program aplikasi kantor cabang Jakarta menimpa hasil itu dengan saldo Rp 4.000.000,- . Dalam kasus ini saldo akhir yang diperoleh adalah Rp 4.000.000,- bukan Rp 10.000.000,- (yang seharusnya).
2.      Program aplikasi Jakarta dilakukan menulis ke rekening A secara cepat sehingga dihasilkan saldo Rp 4.000.000,-. Setelah itu program aplikasi di kantor bandung menimpa hasil itu dengan saldo Rp 6.000.000,-. Hasil yang lebih baik dibanding skenario pertama tetapi masih di bawah yang seharusnya yaitu Rp 10.000.000,-.

Kriteria penyelesaian Mutual Exclusion :

1.      Mutual Exclusion harus dijamin.
2.      Hanya satu proses pada satu saat yang diizinkan masuk Critical Section/Region.
3.      Proses yang berada di noncritical section, dilarang memblok proses-proses yang ingin masuk critical section.
4.      Harus dijamin proses yang ingin masuk critical section tidak menunggu lama hingga waktu tak terhingga, agar tidak terjadi deadlock atau starvation.
5.      Ketika ada proses di critical section maka proses yang ingin masuk critical section harus diijinkan segera masuk tanpa waktu tunda.
6.      Tidak ada asumsi mengenai kecepatan relative proses atau jumlah proses yang ada.

sumber: 
              (pada hari Sabtu, 28 April 2013  ----  17.10 WIB
                    (pada hari Sabtu, 28 April 2013  ----  17.19 WIB