Pertemuan 5
Concurrency: Mutual
Exclusion &
Synchronization
Ikhtisar
• Prinsip Mendasar dari Concurrency
– Mutual Exclusion: Dukungan Hardware – Semaphore
– Monitor
– Message Passing
Banyak Proses
• Sentral bagi perancangan SO modern adalah pengelolaan banyak proses
– Multiprogramming – Multiprocessing
– Distributed Processing
• Isu besarnya adalah Concurrency
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
Proses Interleaving & Overlapping
• Telah diketahui bahwa proses dapat diinterleave pada uniprocessor
Proses Interleaving & Overlapping
• Pada multi-processor, juga dapat overlapping
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
Contoh Sederhana
void echo() { chin = getchar(); chout = chin; putchar(chout); }Contoh pada Multiprocessor
Proses P1 Proses P2. .
chin = getchar(); .
. chin = getchar(); chout = chin; chout = chin;
putchar(chout); .
. putchar(chout);
Menerapkan Akses Tunggal
• Jika diterapkan suatu aturan yang hanyasatu 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
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.
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
Kompetisi Antar Proses
(Resources)Ada tiga masalah kendali utama: • Kebutuhan Mutual Exclusion
– Critical section (bagian kritis dari proses)
• Deadlock • Starvation
Syarat Mutual Exclusion (2)
• Hanya satu proses pada satu waktu yangdibolehkan 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
Syarat Mutual Exclusion (2)
• Proses harus tidak didelay akses ke suatucritical 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
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
Pseudo-Code
while (true) { /* disable interrupts */; /* critical section */; /* enable interrupts */; /* remainder */; }Instruksi Mesin Khusus
• Instruksi Compare & Swap– Juga disebut “compare and exchange instruction”
Instruksi Compare&Swap
int compare_and_swap (int *word, int testval, int newval) {
int oldval;
oldval = *word;
if (oldval == testval) *word = newval; return oldval;
Instruksi Exchange
void exchange (int register, int memory) { int temp; temp = memory; memory = register; register = temp; }
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
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.
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:
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
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
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
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 */ }
Demo Animasi
• Producer/Consumer
– Ilustrasi operasi buffer producer-consumer.
• Bounded-Buffer Problem Using Semaphores
– Demontrasi masalah consumer/producer buffer terbatas menggunakan semaphore.
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.
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
Sinkronisasi
• Synchronisation dicapai dengan variabel
kondisi dalam suatu monitor
– Hanya dapat diakses oleh monitor.
• Fungsi monitor:
–Cwait(c)
: Men-suspend eksekusi dariproses yang memanggil pada kondisi c
–Csignal(c)
Me-resume eksekusi dariSolusi Buffer Terbatas
Menggunakan Monitor
Interaksi Proses
• Ketika proses berinteraksi satu dengan lainnya, dua syarat fundamental harus terpenuhi:
– Sinkronisasi, dan – komunikasi.
• Message Passing adalah (satu) solusi untuk syarat kedua
Message Passing
• Fungsi aktual dari message passing normalnya disediakan dalam bentuk pasangan primitif:
– send (destination, message) – receive (source, message)
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)
Blocking send, Blocking receive
• Sender & receiver diblok sampai messagetersampaikan (delivered)
• Dikenal sebagai rendezvous
• Menmungkinkan sinkronisasi ketat (tight) antar proses.
Non-blocking Send
• Lebih alami bagi banyak tugaspemrograman concurrent.
• Nonblocking send, blocking receive
– Sender terus jalan
– Receiver diblok sampai message yang diminta tiba
• Nonblocking send, nonblocking receive
Pengalamatan
• Proses pengiriman perlu mampumenentukan proses mana yang sebaiknya menerima message
– Direct addressing (langsung)
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
Pengalamatan Tak Langsung
• Message dikirim ke suatu struktur shareddata yang mengandung antrian (queues) • Queues disebut pula mailboxes
• Satu proses mengirimkan suatu message ke mailbox & proses lain mengambil
Masalah Readers-Writers
• Suatu area data dishare antar banyakproses
– 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
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 &