Rabu, 01 Mei 2013

Mutual Exclusion


A.    Penjelasan 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 . Critical Section merupakan bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama.
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 untuk menjamin hanya satu proses saja yang berjalan dalam suatu critical region / section. Mutual exclusion juga dapat diartikan sebagai jaminan hanya sebuah proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang mengerjakan hal yang sama.

B.     Ilustrasi Mutual Exclusion
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:
·         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).
·         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 skenari pertama tetapi masih di bawah yang seharusnya yaitu Rp 10.000.000,-.

C.    Kriteria Penyelesaian Mutual Exclusion
Kemampuan menjamin mutual-exclusion harus memenuhi kriteria-kriteria berikut:
§  Mutual-exclusion harus dijamin.
§  Hanya satu proses pada satu saat yang diizinkan masuk critical section yang sama pada saat telah ada proses yang masuk critical section itu.
§  Proses yang berada di noncritical section, dilarang mem-block proses-proses lain yang ingin masuk critical section.
§  Harus dijamin proses yang ingin masuk critical section tidak menunggu selama waktu yang tak berhingga atau tidak boleh terjadi deadlock maupun startvation.
§  Ketika tidak ada proses di critical section, maka proses yang ingin masuk critical section harus diizinkan segera masuk tanpa ada waktu tunda.
·         Tidak ada asumsi mengenai kecepatan relatif proses atau jumlah proses yang ada.
Kriteria pada nomor satu merupakan kriteria pokok yang harus dipenuhi. Metode yang melanggar kriteria nomor satu sama sekali tidak dapat di gunakan. Pelanggaran kriteria-kriteria lain berarti metode masih bisa digunakan pada situasi-situasi tertentu tapi harus dilakukan secara hati-hati.

D.    Metode-Metode Penjamin Mutual Exclusion
1)      Metode Naif
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
·         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, dan Proses yang ingin masuk critical section akan segera masuk bila dimungkinkan.
·         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.
·         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.
·         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.
·         Metode Exchange (XCHG)
Metode ini menggunakan instruksi exchange (xchg). Instruksi xchg menukarkan dua isi memori.
·         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.

E.     Kriteria Penyelesaian Mutual Exclusion
Daemon printer adalah proses penjadwalan & pengendalian pencetakan berkas-berkas di printer sehingga seolah-olah printer dapat digunakan secara simultan oleh proses-proses. Daemon printer mempunyai ruang disk (disebut direktori spooler) untuk menyimpan berkas-berkas yang akan dicetak. Direktori spooler membagi disk menjadi sejumlah slot. Slot-slot diisi berkas yang akan dicetak. Terdapat variable in menunjuk slot bebas di ruang disk yang kan dipakai menyimpan berkas yang ingin dijadwalkan untuk dicetak.

F.     Contoh Algortima Program
Berikut adalah algoritma program Mutual Exclusion :
Program Give_File_to_spooler;
Var
in : Integer;
berkasA, berkasB: File;
ProcedureStore (Berkas: File, next_slot: Integer);
{Untukmenyimpanberkaspadaslot kenext_slot}
Procedure ProsesA;
Var
next_free_slot: Integer;
Begin
next_free_slot:=in;
store(BerkasA, next_free_slot);
in:=next_free_slot+1;
End;

ProcedureProsesB;
Var
next_free_slot:Integer;
Begin
next_free_slot:=in;
store(BerkasB, next_free_slot);
in:=next_free_slot+1;
End;

Begin
in:=0;
Repeat
Parbegin
ProsesA;
ProsesB;
Parend
Forever
End.

G.    Daftar Pustaka

0 komentar:

Posting Komentar