Sistem Operasi (Operating Systems) Minggu 5

Slides:



Advertisements
Presentasi serupa
Sistem Operasi Proses Fachry Khusaini ( ) Nur Yaqin ( )
Advertisements

Mengamati Proses pada SO Linux
Tim Teaching Grant Mata Kuliah Sistem Operasi
SINKRONISASI Pertemuan 5.
Pokok Bahasan Pokok Bahasan: Sinkronisasi dan Mutual Exclusion
Arief Cahyo S Rachmad Wahyudi S Abdul Qodir Jailani M. Choirur Rozi Rahmat Aidil FR
MANAJEMEN PROSES.
Dahlan Abdullah PERTEMUAN – 6 KULIAH SISTEM OPERASI SINKRONISASI & DEADLOCK.
SI 325 Konsep Sistem Operasi Minggu 3
Concurrency M-03.
Sistem Operasi (Operating Systems) Minggu 6
Concurrent Programming
“Process Synchronization”
STMIK AMIKOM YOGYAKARTA
Sistem Operasi (Operating Systems) Minggu 8
Pertemuan 4 Manajemen Proses 2.
Sistem Operasi (Operating Systems) Minggu 7
Pertemuan 5 Server dengan Multi Proses pada Linux
Operating Systems Concept (Konsep Sistem Operasi) Minggu 14 Universitas Multimedia Nusantara Serpong, Tangerang Dr. Ananda Kusuma
Slide 10 Concurrency, Mutual Exclusion, & Synchronization
Operating Systems Concept (Konsep Sistem Operasi) Minggu 11
Linear Algebra (Aljabar Linier) Week 14
Sinkronisasi Proses Catur Iswahyudi.
Oleh : Wahyu Andhyka Kusuma
Masalah Klasik Komunikasi Antar Proses
SINKRONISASI.
Sistem Operasi Sinkronisasi Proses.
SINKRONISASI DAN DEADLOCK
PERTEMUAN KE-15 PERKULIAHAN SISTEM OPERASI By : Nanda Prasetia, ST.
Sinkronisasi dan Deadlock Proses
Concurrency 1: Mutual Exclusion dan Sinkronisasi
INTERPROCESS COMMUNICATION
Pertemuan 6 Server dengan Multi Thread pada Linux
Sistem Operasi (Operating Systems) Minggu 4
MUTUAL EXCLUSION.
Bab 05 Tipe Data dan Mengisi Variabel
1 INTERPROCESS COMMUNICATION SEMAPHORES –Integer variable untuk menghitung jumlah wakeup –Bernilai negatif untuk menghitung jumlah permintaan yang tidak.
8.1. Multiprosesor Memori Bersama 8.2. Membangun Kepararelan Khusus Membuat Proses Simultan Threads Pengolahan Paralel/KK /1/51 8. Pemrograman Dengan.
PROSES DAN SINKRONISASI
SINKRONISASI DAN DEADLOCK
T0542 / INTERPROCESS COMMUNICATION Permasalahan: Penyampaian informasi antar proses Pengaturan proses agar tidak saling menghalangi Proper sequencing.
Sinkronisasi Proses.
Sistem Operasi Pertemuan 12.
T0542 / INTERPROCESS COMMUNICATION (LANJUTAN) SEMAPHORES Integer variable untuk menghitung jumlah wakeup Bernilai negatif bila ada permintaan yang.
1 Pertemuan 5 Komunikasi antar Proses / Interprocess Communication (IPC) Matakuliah: T0316/sistem Operasi Tahun: 2005 Versi/Revisi: 5 OFFCLASS01.
1 Pertemuan 6 Komunikasi antar Proses (IPC) Lanjutan Matakuliah: T0316/sistem Operasi Tahun: 2005 Versi/Revisi: 5 OFFCLASS01.
SISTEM OPERASI Dosen Pengampu : Erfanti Fatkhiyah, ST., M.Cs.
Sistem Operasi Proses dan Thread.
Menghindari Deadlock Sebuah keputusan yang dibuat secara dinamis apakah alokasi sumber daya sekarang akan ada permintaan, jika diberikan, berpotensi menjadi.
Wahyu nurjaya wk, st., m.kom.
SINKRONISASI.
PROSES BAB 2 By Abdul Kadir.
Processes Process Model Process Hierarchies
Sinkronisasi Proses.
SINKRONISASI & DEADLOCK
“Sinkronisasi Proses”
SINKRONISASI PADA THREAD
Konkurensi (Cont’d) SISTEM OPERASI Slide perkuliahan
Konkurensi (Cont’d) SISTEM OPERASI Slide perkuliahan
Konkurensi (Cont’d) SISTEM OPERASI Slide perkuliahan
Konkurensi 2 Sinkronisasi dan Semaphore
Sistem Operasi: Proses
JAva Threads.
Koordinasi Antar Proses DI DALAM SISTEM TERDISTRIBUSI
Konkurensi SISTEM OPERASI Slide perkuliahan
Konkurensi SISTEM OPERASI Slide perkuliahan
Sesi 5. Sinkronisasi Proses
SISTEM OPERASI MODUL Mutual exclusion Maria Cleopatra, S.Kom
PROSES DAN SINKRONISASI
Oleh : Rahmat Robi Waliyansyah, M.Kom.
Transcript presentasi:

Sistem Operasi (Operating Systems) Minggu 5 Dr. Ananda Kusuma e-mail: ananda_kusuma@yahoo.com Universitas Multimedia Nusantara Serpong, Tangerang

Agenda Komentar tentang Assignment (Pekerjaan Rumah) 1 Review kuliah Minggu 4 Producer-consumer problem & contoh implementasi Topik Minggu 5: Synchronization Mechanism Hardware Software: conditional variables, semaphores, message passing, barrier Quiz: jam 16.00-16.30

Review Minggu 4 Interprocess Communications

Interprocess Communications Bagaimana processes berkomunikasi? Bagaimana threads berkomunikasi? Apa yang dimaksud dengan Race condition dan apa penyebabnya? Critical region? Mutual Exclusion?

Producer-Consumer (Bounded-Buffer) Problem Salah satu contoh classic sinkronisasi antar dua jenis processes: Producer: membuat data dan menyimpan di buffer Consumer: mengambil data dari buffer Shared variable adalah buffer dengan kapasitas yang terbatas Producer tidak dapat menyimpan tambahan data jika buffer sudah penuh  producer sleep Consumer tidak dapat mengambil data jika buffer kosong  consumer sleep Producer di-wakeup oleh consumer jika ada ruang kosong di buffer Consumer di-wakeup oleh producer apabila ada data di buffer Apabila kedua process tidak sinkron (race condition), dapat berpotensi deadlock (misal kedua process menunggu untuk di-wakeup)

Producer and Consumer (Bounded-buffer problem) dengan sleep and wakeup system call Process/Thread producer Race Condition? Shared variable apa yang tidak dilindungi? Process/Thread consumer Sleep: system call yang menyebabkan proses yang memanggil diblock, atau ditunda (suspended) Wakup: system call yang menyebabkan proses dibangunkan, atau menjadi ready

Contoh program: Producer-Consumer menggunakan Threads (1) ... #define N 100 #define ARRY_SIZE 101 int data[ARRY_SIZE]; int count=0; pthread_t thrds[2]; int thrd_ids[2]={0,1}; pthread_mutex_t th_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t th_cv = PTHREAD_COND_INITIALIZER; void sleep1() { pthread_cond_wait(&th_cv,&th_mutex); } void wakeup1() pthread_cond_signal(&th_cv);

Contoh program: Producer-Consumer menggunakan Threads (2) ... void producer(int *id) { while(1) pthread_mutex_lock(&th_mutex); if (count == N) sleep1(); pthread_mutex_unlock(&th_mutex); data[count]= count; printf("Producer: %d %d\n",count,data[count]); count++; if (count == 1) wakeup1(); }

Contoh program: Producer-Consumer menggunakan Threads (3) ... void consumer(int *id) { int c; while(1) pthread_mutex_lock(&th_mutex); if (count == 0) sleep1(); pthread_mutex_unlock(&th_mutex); c = data[count]; printf("Consumer: %d %d\n",count,c); count--; if (count == (N-1)) wakeup1(); }

Contoh program: Producer-Consumer menggunakan Threads (4) ... int main() { int i,ret; ret = pthread_create(&(thrds[0]),NULL,(void *)producer,(void *)(&(thrd_ids[0]))); if (ret) perror("pthread_create: thrds[0]\n"); exit(EXIT_FAILURE); } ret = pthread_create(&(thrds[1]),NULL,(void *)consumer,(void *)(&(thrd_ids[1]))); perror("pthread_create: thrds[1]\n"); exit(EXIT_FAILURE); for (i=0; i<2;i++) pthread_join(thrds[i],NULL);

Synchronization Mechanism (Mekanisme sinkronisasi)

Mekanisme sinkronisasi Hardware Disable interrupts TSL (Test and Set Lock) Instruction Software (teknik-teknik pemrograman) Condition/lock variable Semaphore Mutex Monitor Message passing Barriers Implementasi: busy-waiting atau blocked

Hardware (1) Disable interrupts Process mematikan (disable) semua interrupt setelah memasuki critical region, dan menghidupkan kembali (re-enable) sebelum meninggalkannya Sebaiknya tidak dilakukan oleh user process. Kenapa? Masih ada problem untuk multiprocessor /multicore system Saat interrupts pada satu CPU dimatikan, CPU yang lain masih tetap dapat berjalan dan mengakses shared memory

Hardware (2) TSL (Test and Set Lock) Instruction  Lock memory bus sehingga CPU yang lain tidak dapat mengakses memory Berguna untuk multiprocessor system JNE: Jump If Not Equal

Semaphores Variable integer khusus yang dikelola oleh OS (diimplementasikan via system calls) dan digunakan untuk menghitung jumlah blocked/sleeps dan unblocked/wakeups Arti nilai semaphore S: Kalau positif  jumlah process yang bisa decrement (turunkan satu) S tanpa blocking Kalau negatif  jumlah process yang sedang sleep/blocked dan menunggu untuk dibangunkan/wakeup/un-blocked Kalau nol  tidak ada process yang menunggu, tapi kalau di-decrement (turunkan satu), process ini akan di-blocked Arti nilai semaphore: Kalau positif, artinya nilai tersebut menunjukkan jumlah process yang bisa decrement S tanpa blocking Kalau negatif, artinya nilai tersebut menunjukkan jumlah process yang sedang sleep/blocked dan menunggu untuk dibangunkan/wakeup/unblocked Jika zero, artinya tidak process yang menunggu, tapi kalau di-decrement, process ini akan blocked

Operations on Semaphore S Down(S) S = S - 1 If (S<0) then the calling process is put to sleep/blocked Up(S) S = S + 1 If (S = 0) then wakeup/unblock the sleep/blocked process Operasi Up() dan Down() bersifat atomic Artinya saat operasi dimulai, dia tidak dapat diinterupsi sampai operasi selesai, atau sama sekali tidak dijalankan Operasi: checking dan updating nilai semaphore, dan action (block atau unblock) Notasi yang lain menurut karya tulis dari Dijkstra (pengusul konsep semaphore: P() = Down() V() = Up() Arti nilai semaphore: Kalau positif, artinya nilai tersebut menunjukkan jumlah process yang bisa decrement S tanpa blocking Kalau negatif, artinya nilai tersebut menunjukkan jumlah process yang sedang sleep/blocked dan menunggu untuk dibangunkan/wakeup/unblocked Jika zero, artinya tidak process yang menunggu, tapi kalau di-decrement, process ini akan blocked atomic action, artinya saat semopher operation dimulai, dia tidak dapat diinterupsi sampai operasi selesai atau blocked

Mutex Variable menggunakan Binary Semaphore Mutex variable  2 states yaitu unlocked dan locked Untuk melindungi critical region Binary semaphore  hanya ada 2 kemungkinan nilai yaitu 0 dan 1 Inisialisasi semaphore ke nilai 1 Agar hanya ada satu process berada di critical region yang dilindungi oleh semaphore, maka lakukan Down() untuk masuk critical region Up() untuk keluar dari critical region Contoh: semaphore mutex = 1; down(&mutex); /* Critical Section */ up(&mutex);

Producer-Consumer Problem menggunakan semaphores Event semaphores Hitung jumlah slot kosong Hitung jumlah slot yang terisi

Monitors Higher level synchronization (language concept) Kumpulan procedure, variable, dan struktur data yang dikelompokkan menjadi satu modul atau package Process dapat memanggil procedures yang ada di dalam monitor, tapi tidak dapat mengakses struktur data dari monitor Hanya ada satu process yang aktif di dalam monitor pada satu waktu Compiler membuat call ke monitor procedures berbeda dengan procedures biasa  ada beberapa instruksi ditambahkan untuk memeriksa apakah ada process lain yang sedang aktif di dalam monitor -

Producer-consumer problem menggunakan monitor

Message Passing (1) Kernel menyediakan 2 primitives: Send (destinationm&message) Receive (source, &message) Kelebihan Sinkronisasi sebagai bagian dari primitives yang disediakan oleh kernel Komunikasi antar process pada suatu jaringan komputer Portabilitas untuk aplikasi-aplikasi terdistribusi (distributed systems) Kekurangan: Tidak secepat shared memory untuk pertukaran pesan antar 2 processes di komputer yang sama Perlu protocol untuk antisipasi masalah-masalah pada jalur komunikasi, mis. Message lost, acknowledgement, clock synchronization, dsb.

Message Passing (2) Implementasi Komunikasi Direct: komunikasi langsung antar processes sbg sender dan receiver Indirect: komunikasi tidak langsung via mailbox (contoh: message queue pada Posix IPC) Naming/Addressing Host id, process id, port number, authentication Synchronous atau asynchronous Synchronous: blocked sender menunggu message diterima oleh receiver dan blocked receiver sampai ada message yang dikirim Asynchronous: melanjutkan instruksi yang lain tanpa menunggu message diterima atau dikirim

Producer-Consumer menggunakan message passing

Barrier Mekanisme sinkronisasi untuk sekelompok processes Aplikasi dibagi atas beberapa fase, di mana perpindahan fase hanya dapat dilakukan apabila semua processes di dalam kelompok siap untuk pindah ke fase berikutnya -

Presentasi Kelompok 1 Minggu Depan Akhir Kuliah Minggu 5 Terima kasih atas perhatiannya! Reminder: Presentasi Kelompok 1 Minggu Depan