Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

“Sinkronisasi Proses”

Presentasi serupa


Presentasi berjudul: "“Sinkronisasi Proses”"— Transcript presentasi:

1 “Sinkronisasi Proses”
Sistem Operasi “Sinkronisasi Proses”

2 Mengapa Sinkronisasi Sinkronisasi diperlukan untuk menghindari terjadinya ketidakkonsistenan data akibat adanya akses data secara konkuren Diperlukan adanya suatu mekanisme untuk memastikan urutan / giliran pengaksesan suatu data yang saling bekerjasama sehingga terjadi sinkronisasi If we don’t make process synchronization: Race Condition

3 Review: Producer and Consumer
#define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; int counter = 0;

4 Producer while (true) { /* produce an item and put in nextProduced */ while (count == BUFFER_SIZE){ } // do nothing buffer [in] = nextProduced; in = (in + 1) % BUFFER_SIZE; count++; }

5 Consumer while (true) { while (count == 0){ } // do nothing
nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; count--; /* consume the item in nextConsumed }

6 Atomic Process The statements counter++; counter--; must be performed atomically. Atomic operation means an operation that completes in its entirety without interruption.

7 Bounded-Buffer Perintah “count++” diimplementasikan pada bahasa mesin:
register1 = counter register1 = register1 + 1 counter = register1 Perintah “count--” diimplementasikan pada bahasa mesin: register2 = counter register2 = register2 – 1 counter = register2 Jika kedua perintah tersebut berusaha mengakses nilai counter secara konkuren, maka dapat terjadi kesalahan pada nilai counter karena sifat bahasa mesin yang menggunakan register untuk mengupdate nilai counter Kesalahan nilai akhir counter dapat terjadi, tergantung dari penjadwalan yang dilakukan terhadap proses yang dilakukan oleh produsen dan konsumen. Dengan kata lain, masalah tersebut belum tentu terjadi, tapi dapat terjadi

8 Misalnya Consider this execution interleaving with “count = 5” initially: t0: producer execute register1 = count {register1 = 5} t1: producer execute register1 = register1 + 1 {register1 = 6} t2: consumer execute register2 = count {register2 = 5} t3: consumer execute register2 = register2 - 1 {register2 = 4} t4: producer execute count = register1 {count = 6 } t5: consumer execute count = register2 {count = 4}

9 Race Condition Race condition: situasi dimana beberapa proses mengakses dan memanipulasi suatu data secara konkuren. Nilai akhir dari data tersebut tergantung dari proses mana yang terakhir mengubah data Untuk menghindari terjadinya situasi tersebut, semua proses yang dapat mengakses suatu data tertentu harus disinkronisasi

10 Critical Section Lebih dari satu proses berlomba-lomba pada saat yang sama untuk menggunakan data yang sama. Setiap proses memiliki segmen kode yang digunakan untuk mengakses data yang digunakan secara bersama-sama. Segmen kode tersebut disebut critical section. Masalahnya: menjamin bahwa jika suatu proses sedang menjalankan critical section, maka proses lain tidak boleh masuk ke dalam critical section tersebut.

11 Solusi masalah critical section
Mutual Exclusion Tidak ada dua proses yang berada di critical section pada saat yang bersamaan. Terjadi kemajuan (Progress) Jika tidak ada proses yang sedang berada di critical section, maka proses lain yang ingin menjalankan critical section dapat masuk ke dalam critical section tersebut. Ada batas waktu tunggu (Bounded Waiting) Tidak ada proses yang menunggu selama-lamanya untuk masuk ke dalam critical section Assume that each process executes at a nonzero speed Tidak ada asumsi lain mengenai kecepatan relatif setiap proses ataupun jumlah CPU.

12 Implementasi solusi Solusi perangkat lunak Solusi perangkat keras
Dengan menggunakan algoritma-algoritma yang nilai kebenarannya tidak tergantung pada asumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang bukan nol Solusi perangkat keras Tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interuppt atau dengan mengunci (lock) suatu variabel tertentu

13 Implementasi software dan asumsinya
Misal hanya ada dua proses, yaitu P0 dan P1. Struktur umum dari proses Pi (proses yang lain: Pj) Proses-proses tersebut boleh berbagi beberapa variabel yang sama untuk mensinkronisasikan apa yang akan dilakukan oleh setiap proses tersebut.

14 Algoritma 1 Variabel yang digunakan bersama:
int turn; //pada awalnya turn = 0 turn = i; //Pi dapat masuk ke critical section Untuk proses Pi If P0 ingin akses critical section turn diset ke 0, if P1 juga akses, turn diset ke 1 Mutual exclusion but not progress nor bounded buffer If P0 selesai menggunakan critical section, turn diset ke 1, tapi P1 tidak ingin masuk ke critical section, jadi turn tidak akan diset ke 0.

15 Algoritma 2 Variabel yang digunakan bersama: boolean flag[2];
pada awalnya flag [0] = flag [1] = false flag [i] = true; //Pi dapat masuk ke critical section If P0 mengakses critical section P0 mengeset flag[0] ke True. Sementara P1 masih menggunakan critical section, P0 akan menunggu. If P0 finish, P0 akan set flag[0] ke false. Mutual exclusion but not progress nor bounded buffer Tapi jika P0 & P1 ingin akses ke critical section secara konkuren, keduanya akan set flag[0] & flag[1] ke true, dan semua proses menunggu terus…

16 Peterson’s Algorithm The two processes share two variables:
int turn; Boolean flag[2]; The variable turn indicates whose turn it is to enter the critical section. The flag array is used to indicate if a process is ready to enter the critical section. flag[i] = true implies that process Pi is ready!

17 Algorithm for Process Pi
while (true) { flag[i] = TRUE; turn = j; while ( flag[j] && turn == j); CRITICAL SECTION flag[i] = FALSE; REMAINDER SECTION } Mutual exclusion, progress, and bounded buffer! If P0 want to access critical section, P0 will set flag[0] to true and turn to P1.

18 Bakery Algorithm Critical section for: n processes
Sebelum memasuki critical section, setiap proses menerima sebuah nomor. Yang memegang ID terkecil yang dilayani dahulu. Skema penomoran selalu naik secara berurut, contoh: 1, 2, 2, 2, 3, 3, 4, 5… Diperkenalkan pertama kali oleh Leslie Lamport. Data yang digunakan bersama boolean choosing [n]; int number [n]; Struktur data diinisialisi awal ke false dan 0. (a,b) < (c,d) jika a < c atau jika a = c dan b < d

19 Bakery Algorithm

20 Sinkronisasi Hardware
Metode dalam sinkronisasi hardware Processor Synchronous ( Disable Interrupt ) Memory Synchronous ( Instruksi Test-And-Set ) Interrupt used in Round Robin Algorithm, with quantum time Processor synchronous Dengan mendisable interupsi (interrupt) Dalam lingkungan multiprocessor: Hanya satu processor bisa didisable interruptnya Memory synchronous Instruksi Test-And-Set Bisa dilakukan Semua processor tidak dapat memakai resource karena proteksi dilakukan di memory Instruksi harus bersifat atomik

21 cekAndSet dengan Java

22 Mutual Exclusion: Swap
HardwareData lock = new HardwareData(false); // a shared lock HardwareData key = new HardwareData(true); // my key while (true) { key.set(true); // my key is now true do { lock.swap(key); // my key got lock’s content. } while (key.get() == true); // this means lock was true locked! criticalSection( ); // now in critical section code lock.set(false); nonCriticalSection( ); // out of critical section } 1st Process key Lock false true 2nd Process 1st swap 2nd swap I got it!

23 Mutual Exclusion: Memory synchronous
Kelebihan: Dapat diaplikasikan ke beberapa prosesor, dengan sharing memory Simpel dan mudah diverifikasi Dapat digunakan untuk banyak critical section Kekurangan: Busy-waiting memakan processor time yang besar Mungkin terjadi starvation Deadlock Jika low priority process mendapat critical region dan higher priority process butuh juga, higher priority process akan mendapat processor dan low priority process akan menunggu

24 Semaphore Invented by Djikstra (1960)
Semaphore S – integer variable untuk menghitung berapa banyak proses yang aktif atau pasif Semaphore digunakan untuk memberi sinyal Jika proses menunggu sinyal, maka dia akan ditunda sampai sinyal yg ditunggu tersebut terkirim Operasi: wait dan signal Wait dan signal operations tidak dapat diinterupt Queue digunakan untuk menahan proses proses yang sedang menunggu semaphore

25 Semaphore Two standard operations modify S: wait() and signal()
Originally called P() and V() Can only be accessed via two indivisible (atomic) operations wait (S) { while S <= 0 ; // no-op S--; } jika s < 0 akan menunggu, lalu menjalankan proses lain signal (S) { S++; memberikan kesempatan bagi para proses untuk berkompetisi mendapatkan semafore

26 Semaphore: Wait - Spinlock

27 Semaphore: Wait – non spinlock

28 Semaphore: Signal

29 Implementasi Semafore
Untuk sinkronisasi antar proses: Misal: Inisialisasi: semafore = 0 Proses 1 Proses 2 56 Print “1” 17 Wait(S) 57 Signal(S) 18 Print “2” Pasti output selalu 1 dan 2, walaupun Proses 2 duluan

30 Implementasi Semaphore
Windows Fungsi yg dipakai adalah CreateSemaphore Biasanya digunakan untuk membatasi jumlah thread yang memakai suatu resource secara bersamaan Java Semafor di Java™ bersifat transparan oleh programmer Java™ menyembunyikan Semafor dibalik konsep monitor Reserved Word yang dipakai Java™ adalah synchronized

31 Classical Problems of Synchronization
Bounded-Buffer Problem Readers and Writers Problem Dining-Philosophers Problem

32 Bounded Buffer Pengertian: tempat penampung data yang ukurannya terbatas Contoh: proses produsen dan konsumen Masalah produsen-konsumen Produsen menaruh data pada buffer. Jika buffer tersebut sudah terisi penuh, maka produsen tidak melakukan apa-apa dan menunggu sampai konsumen mengosongkan isi buffer. Konsumen mengambil data dari buffer. Jika buffer tersebut kosong, maka konsumen tidak melakukan apa-apa dan menunggu sampai buffer tersebut diisi oleh produsen.

33 Penyelesaian dgn Semaphore
Semafor mutex Menyediakan mutual exclusion untuk mengakses buffer Inisialisasi dengan nilai 1 Semafor full Menyatakan jumlah buffer yang sudah terisi Inisialisasi dengan nilai 0 Semafor empty Menyatakan jumlah buffer yang kosong Inisialisasi dengan nilai n (jumlah buffer)

34 Bounded Buffer Consumer

35 Reader & Writers Diketahui dua macam proses:
Pembaca (reader) Penulis (writer) Kedua jenis proses berbagi sumber daya penyimpanan yang sama, Misal: Basis data Tujuan: data tidak korup. Kondisi: Proses-proses pembaca dapat membaca sumber daya secara simultan Hanya boleh ada satu penulis menulis pada setiap saat Bila ada yang menulis, tidak boleh ada yang membaca

36 Shared Data Data set Semaphore mutex initialized to 1, tanda mutual exclusion Semaphore wrt initialized to 1, tanda untuk menulis Integer readcount initialized to 0, tanda untuk membaca

37 Readers-Writers The structure of a writer process while (true) {
wait (wrt) ; // writing is performed signal (wrt) ; }

38 Readers-Writers The structure of a reader process while (true) {
wait (mutex) ; readcount ++ ; if (readcount == 1) wait (wrt) ; signal (mutex) // reading is performed readcount - - ; if (readcount == 0) signal (wrt) ; signal (mutex) ; }

39 Dining Philosopher Diketahui:
Mie (Data) Sebuah meja bundar N filsuf duduk melingkar di meja bundar Antara dua filsuf terdapat sebuah sumpit Didepan setiap filsuf terdapat semangkuk mie Setiap filsuf hanya dapat berada pada salah satu kondisi berikut: Berpikir Lapar Makan

40 Dining Philosopher Shared data Bowl of rice (data set)
Semaphore chopstick [5] initialized to 1 Dua hal yang harus diperhatikan: Deadlock: Semua filsuf ingin makan dan telah memegang sumpit Starvation: Ada filsuf yang kelaparan dalam waktu yang lama

41 The Structure of Philosopher i
While (true) { wait ( chopstick[i] ); //kanan wait ( chopStick[ (i + 1) % 5] ); //kiri // eat signal ( chopstick[i] ); //kanan signal (chopstick[ (i + 1) % 5] ); //kiri // think } Waiting Picked up A deadlock occurs!

42 Kelemahan Semaphore Termasuk Low Level
Kesulitan dalam pemeliharaannya, karena tersebar dalam seluruh program. Menghapus wait => dapat terjadi non- mutual exclusion. Menghapus signal => dapat terjadi deadlock Error yang terjadi sulit untuk dideteksi Lebih baik menggunakan high level construct

43 Terima kasih


Download ppt "“Sinkronisasi Proses”"

Presentasi serupa


Iklan oleh Google