Sistem Operasi 2009 - Komputasi | Suatu Permulaan · –Banyak proses atau thread membaca & menulis...

Post on 18-Mar-2019

230 views 1 download

Transcript of Sistem Operasi 2009 - Komputasi | Suatu Permulaan · –Banyak proses atau thread membaca & menulis...

Pertemuan 5

Concurrency: Mutual Exclusion &

SynchronizationH u s n i

Lab. Sistem Komputer & JaringanTeknik Informatika Univ. Trunojoyo

Sistem Operasi 2009

2

Ikhtisar

• Prinsip Mendasar dari Concurrency– Mutual Exclusion: Dukungan Hardware– Semaphore– Monitor– Message Passing– Masalah Readers/Writers

3

Banyak Proses

• Sentral bagi perancangan SO modern adalah pengelolaan banyak proses– Multiprogramming– Multiprocessing– Distributed Processing

• Isu besarnya adalah Concurrency – Mengelola interaksi dari semua proses

4

Concurrency

Concurrency hadir pada:• Banyak aplikasi

– Waktu sharing

• Aplikasi terstruktur– Ekstensi dari rancangan modular

• Struktur sistem operasi– SO sendiri diimplementasikan sebagai

sekumpulan proses atau thread

5

Istilah Penting

6

Proses Interleaving & Overlapping

• Telah diketahui bahwa proses dapat diinterleave pada uniprocessor

7

Proses Interleaving & Overlapping

• Pada multi-processor, juga dapat overlapping

8

Kesulitan Concurrency

• Sharing sumber daya global– Penulisan suatu shared variable: urutan

penulisan sangat penting– Masalah besar adalah penulisan tidak

lengkap

• Pengelolaan alokasi resource secara optimal

• Sulit menemukan error pemrograman karena hasilnya bersifat tidak deterministic and reproducible.

9

Contoh Sederhana

void echo(){

chin = getchar();chout = chin;putchar(chout);

}

10

Contoh pada Multiprocessor

Proses P1 Proses P2. .

chin = getchar(); .. chin = getchar();

chout = chin; chout = chin;putchar(chout); .

. putchar(chout);

. .

11

Menerapkan Akses Tunggal

• Jika diterapkan suatu aturan yang hanya satu proses dapat memasuki fungsi tersebut pada suatu waktu, maka:

• P1 & P2 berjalan pada processor berbeda• P1 memasukkan echo lebih dahulu,

– P2 mencoba masuk tetapi diblok – P2 suspend

• P1 melengkapi eksekusi– P2 me-resume & mengeksekusi echo

12

Kondisi Race

• Race condition terjadi ketika – Banyak proses atau thread membaca &

menulis item data – Hasil akhir dari aktifitas baca & tulis tersebut

tergantung pada urutan eksekusi dari proses-yang terlibat.

• Output tergantung pada siapa yang terakhir menyelesaikan race.

13

Fokus SO

• Isu desain dan manajemen yang muncul karena adanya concurrency?

• SO harus – Menjaga track dari berbagai proses– Meng-alokasi-kan dan men-dealokasi-kan

sumber daya– Melindungi data & resource dari gangguan

proses lain– Memastikan bahwa proses & output terbebas

dari kecepatan pemrosesan

14

Interaksi Proses

15

Kompetisi Antar Proses (Resources)

Ada tiga masalah kendali utama:• Kebutuhan Mutual Exclusion

– Critical section (bagian kritis dari proses)

• Deadlock• Starvation

16

Syarat Mutual Exclusion (2)

• Hanya satu proses pada satu waktu yang dibolehkan ada dalam critical section bagi suatu resource

• Proses yang berhenti pada noncritical section-nya harus melakukan demikian tanpa gangguan dengan proses lain

• Tidak ada deadlock atau starvation

17

Syarat Mutual Exclusion (2)

• Proses harus tidak didelay akses ke suatu critical section saat tidak ada proses lain yang menggunakannya

• Tidak ada asumsi mengenai kecepatan proses relatif atau jumlah proses

• Proses tetap di dalam critical section-nya hanya selama waktu terbatas tertentu (finite)

18

Mutual Exclusion (Disabling Interrupts)

• Uniprocessor hanya membolehkan interleaving

• Interrupt Disabling– Proses berjalan sampai ia meng-invoke suatu

layanan SO atau sampai ia diinterupsi– Disabling interrupts menjamin terwujudnya

mutual exclusion– Tidak akan bekerja pada arsitektur

multiprocessor

19

Pseudo-Code

while (true) {/* disable interrupts */;/* critical section */;/* enable interrupts */;/* remainder */;

}

20

Instruksi Mesin Khusus

• Instruksi Compare & Swap – Juga disebut “compare and exchange

instruction”

• Intruksi exchange

21

Instruksi Compare&Swap

int compare_and_swap (int *word, int testval, int newval){

int oldval;oldval = *word;if (oldval == testval) *word = newval;return oldval;

}

22

Mutual Exclusion (gambar 5.2)

23

Instruksi Exchange

void exchange (int register, int memory){

int temp;temp = memory;memory = register;register = temp;

}

24

Instruksi Exchange (gambar 5.2)

25

Keuntungan Mutual Exclusion Hardware

• Dapat diterapkan terhadap banyak proses pada processor tunggal atau multi processor yang berbagi (sharing) main memory

• Simple, karena itu mudah diwujudkan• Dapat digunakan untuk mendukung

banyak critical section

26

Kerugian Mutual Exclusion Hardware

• Busy-waiting mengkonsumsi waktu processor

• Starvation mungkin ketika suatu proses meninggalkan critical section dan lebih dari satu proses menunggu (waiting). – Beberapa proses dapat ditolak aksenya

dalam waktu tak terbatas.

• Deadlock juga mungkin

27

Semaphore

• Semaphore: – Suatu nilai integer (bilangan bulat) yang

digunakan untuk pensinyalan (signalling) antar proses.

• Hanya tiga operasi dapat dikerjakan pada suatu semaphore, semuanya bersifat atomik: – initialize

– Decrement (semWait)

– increment (semSignal)

28

Primitif Semaphore

29

Primitif Semaphore Biner

30

Semaphore Kuat & Lemah

• Antrian (queue) digunakan untuk menangani proses yang menunggu (waiting) pada semaphore– Dalam urutan bagaimana proses dihapus dari

antrian?

• Semaphore Kuat menggunakan FIFO• Semaphore Lemah tidak menentukan

urutan penghapusan dari antrian

31

Contoh Mekanisme Semaphore Kuat

32

Contoh Mekanisme Semaphore

33

MutEx Menggunakan Semaphore

34

Proses Menggunakan Semaphore

35

Masalah Producer-Consumer

• Situasi Umum:– Satu atau lebih producer membangkitkan data &

menempatkannya dalam suatu buffer– Consumer tunggal mengambil item keluar buffer satu

pada satu waktu– Hanya satu producer atau consumer yang boleh

mengakses buffer pada satu waktu

• Masalahnya:– Pastikan bahwa Producer tidak dapat menambahkan

data ke dalam buffer yang penuh & comsumer tidak dapat menghapus data dari buffer kosong

Producer/Consumer Animation

36

Fungsi

Producer Consumer

while (true) { /* produce item v */ b[in] = v; in++; }

while (true) { while (in <= out) /*do nothing */; w = b[out]; out++; /* consume item w */}

• Anggap suatu buffer tak terbatas b dengan suatu array linier elemen

37

Buffer

38

Solusi SALAH

39

Scenario yang Mungkin

40

Solusi BENAR

41

Semaphore

42

Buffer Terbatas

43

Semaphore

44

Fungsi dalam Bounded Buffer

Producer Consumer

while (true) {/* produce item v */while ((in + 1) % n == out)

/* do nothing */;b[in] = v;in = (in + 1) % n}

while (true) {while (in == out)

/* do nothing */;

w = b[out];out = (out + 1) % n;/* consume item w */

}

45

Demo Animasi

• Producer/Consumer – Ilustrasi operasi buffer producer-consumer.

• Bounded-Buffer Problem Using Semaphores– Demontrasi masalah consumer/producer buffer

terbatas menggunakan semaphore.

46

Monitor

• Monitor merupakan suatu konsepsi bahasa pemrograman yang menyediakan fungsi sama dengan semaphore & lebih mudah dikontrol.

• Diimplementasikan dalam sejumlah bahasa pemrograman, termasuk– Concurrent Pascal, Pascal-Plus,– Modula-2, Modula-3, dan Java.

47

Karakteristik Utama

• Variabel data lokal hanya dapat diakses oleh monitor

• Proses memasuki monitor dengan menjalankan salah satu prosedurnya

• Hanya satu proses yang boleh berjalan (executing) dalam monitor pada satu waktu

48

Sinkronisasi

• Synchronisation dicapai dengan variabel kondisi dalam suatu monitor – Hanya dapat diakses oleh monitor.

• Fungsi monitor:

–Cwait(c): Men-suspend eksekusi dari proses yang memanggil pada kondisi c

–Csignal(c) Me-resume eksekusi dari beberapa proses yang diblok setelah cwait pada kondisi yang sama

49

Struktur Monitor

50

Solusi Buffer Terbatas Menggunakan Monitor

51

Solusi Menggunakan Monitor

52

Monitor Buffer Terbatas

53

Interaksi Proses

• Ketika proses berinteraksi satu dengan lainnya, dua syarat fundamental harus terpenuhi: – Sinkronisasi, dan – komunikasi.

• Message Passing adalah (satu) solusi untuk syarat kedua– Bonus: bekerja dengan shared memory &

dengan sistem terdistribusi.

54

Message Passing

• Fungsi aktual dari message passing normalnya disediakan dalam bentuk pasangan primitif:– send (destination, message)– receive (source, message)

55

Synchronization

• Komunikasi memerlukan sinkronisasi– Sender (pengirim) harus mengirim sebelum

receiver (penerima) dapat menerima

• Apa yang terjadi terhadap proses setelah ia menjalankan primitif send atau receive?– Sender & receiver mungkin (bisa pula tidak)

menjadi blocking (waiting for message)

56

Blocking send, Blocking receive

• Sender & receiver diblok sampai message tersampaikan (delivered)

• Dikenal sebagai rendezvous• Menmungkinkan sinkronisasi ketat (tight)

antar proses.

57

Non-blocking Send

• Lebih alami bagi banyak tugas pemrograman concurrent.

• Nonblocking send, blocking receive– Sender terus jalan– Receiver diblok sampai message yang

diminta tiba

• Nonblocking send, nonblocking receive– Tidak ada pihak yang harus menunggu

58

Pengalamatan

• Proses pengiriman perlu mampu menentukan proses mana yang sebaiknya menerima message– Direct addressing (langsung)– Indirect Addressing (tidak langsung)

59

Pengalamatan Langsung

• Primitif send menyertakan suatu pengenal (identifier) khusus dari proses tujuan

• Primitif receive segera dapat mengetahui proses mana yang menjadi tujuan message

• Primitif receive dapat memanfaatkan parameter source untuk mengembalikan suatu nilai ketika operasi receive selesai dikerjakan.

60

Pengalamatan Tak Langsung

• Message dikirim ke suatu struktur shared data yang mengandung antrian (queues)

• Queues disebut pula mailboxes• Satu proses mengirimkan suatu message

ke mailbox & proses lain mengambil message dari mailbox tersebut

61

Komunikasi Proses Tak Langsung

62

Format Message Umum

63

MutEx Menggunakan Message

64

Message Producer-Consumer

65

Masalah Readers-Writers

• Suatu area data dishare antar banyak proses– Beberapa proses hanya membaca area data,

beberapa hanya menulis ke area tersebut.

• Kondisi untuk dicapai:1.Banyak readers boleh membaca file at once.2.Hanya satu writer pada satu waktu yang

dapat menulis3.Jika suatu writer sedang menulis ke file, maka

tidak ada reader yang dapat membacanyainteraction of readers and writers.

66

Readers Dengan Prioritas

67

Writers dengan Priority

68

Writers Dengan Prioritas

69

Message Passing

70

Message Passing

71

Tugas Pertemuan 5

• Kerjakan problem 5.1 & 5.2!• Jelaskan definisi dari Proses, Thread,

Mutual Exclution, Race Condition, Sinkronisasi, Deadlock, Starvation, Monitor, dan Semaphore!

• Uraikan implementasi sinkronisasi & mutual exclusion di Windows & Linux!