Anda di halaman 1dari 3

SISTEM OPERASI

LATIHAN 4

KONKURENSI

Mushthafa Aminur Rahman

1305220006

1. Thread dengan kode sebagai berikut:

Sem.Wait()

x = x +1

Sem.Signal()

Sem.Wait()

Print x

Sem.Signal()

Jika semaphore diinisiasi dengan 1:

a) Terdapat berapa critical section dalam kode di atas?


2 critical section
b) Tuliskan bagian kode yang masuk dalam critical section!
X = x+1 | print x
c) Shared resource apa yang diakses oleh thread-thread tersebut?
Variable X, sem digunakan untuk akses ke critical section

Isilah kolom semaphore, shared dan block

Semaphore adalah nilai semaphorenya.

Var x adalah nilai variable x

Blocked adalah antrian untuk blocked thread misal: dapat diisi thread a diblock, tidak ada yang diblock.
Thread A Thread B Semaphore Var x Blocked
… … 1 3 Tidak ada
Sem.Wait() 0 3 Tidak Ada
Sem.Wait() -1 3 B
x=x+1 -1 4 B
x=x+1 -1 5 B
Sem.Signal() 0 5 Tidak Ada
x=x+1 0 6 Tidak Ada
Sem.Signal() 1 6 Tidak Ada
Sem.Wait() 0 6 Tidak Ada
Print x 0 6 Tidak Ada
Sem.Wait() -1 6 A
Print x -1 6 A
Sem.Signal() 0 6 Tidak Ada
Print x 1 6 Tidak Ada
Sem.Signal() 0 6 Tidak Ada

2. Diketahui kode sebagai berikut

Thread A: Thread B

Sem.wait() Sem.signal()

Print x Print y

Jika semaphore diinisiasi dengan 0:

a. Apakah terjadi race condition?


Tidak, karena diinisiasi dengan nilai 0 yang membuat thread A menunggu sinyal dari
thread B
b. Variabel manakah yang akan diprint terlebih dahulu?
variable Y
c. Jelaskan!
thread A menunggu sinyal yang akan dikeluarkan oleh thread B sebelum mencetak nilai
X, jadi thread B diprioritaskan mencetak Y terlebih dahulu

Jika semaphore diinisiasi dengan 1:


a. Apakah terjadi race condition?
Tidak, karena diinisiasi dengan nilai 1 thread A langsung mengeksekusi X
b. Variabel manakah yang akan diprint terlebih dahulu?
Variable X
c. Jelaskan!
dengan semaphore dinilai degan nilai 1, membuat thread a dapat langsung
mengeksekusi nilai X

3. Isilah kolom Sem_x dan Sem_y berikut ini jika sem_x dan sem_y diinisiasi dengan nilai 0:

Thread A Thread B Sem_x Sem_y Blocked


… … 0 0 Tidak ada
Statement 1 Tidak Ada
Sem_x.signal() 1 Tidak Ada
Sem_y.wait() -1 B
Statement 2 B0
Sem_y.signal() 0 Tidak Ada
Sem_x.wait() 0 Tidak Ada
Statement 3
Statement 4

Jelaskan hasil apa yang diingin dicapai menggunakan konfigurasi semaphore di atas?

Anda mungkin juga menyukai