Simulasi Mutual Exclusion Dosen: Jajang Kusnendar, M.T Variable Lock
Algoritma Variable Lock Program Mutex_with_lock; Var lock : Integer; Procedure enter_critical_section; //prosedur proses dalam critical section { mengerjakan kode-kode kritis } Procedure ProsesA; Begin While lock <> 0 Do Begin End; lock := 1; enter_critical_section; lock :=0; End; Procedure ProsesB; Begin While lock <> 0 Do Begin End; lock := 1; enter_critical_section; lock :=0; End;
Penjelasan Prosedur Proses Procedure ProsesA; Begin //memulai prosedur proses While lock <> 0 Do Begin End; //melakukan pengecekan apakah variable “lock” = 0 atau tidak. selama “lock” = 0 proses terus berulang lock := 1; //mengubah “lock” menjadi = 1(ada proses) enter_critical_section; //memanggil prosedur enter_critical_section lock :=0; //setelah proses selesai “lock” di ubah menjadi = 0 (tidak ada proses dalam critical section) End; //mengakhiri proses
Simulasi Variable Lock Proses Simulasi Variable Lock Penjadwal A Variable Lock 1 B Critical Section
Proses 1 1 Penjadwal B A
Proses 1 Penjadwal B
Simulasi Kegagalan Variable Lock Proses Variable Lock Penjadwal B 1 A Critical Section C
Proses Penjadwal B 1 C Disini lah terjadi kesalahan dimana proses B memasuki critical Section Padahal Proses C ada di dalamnya