reni seftiani - sinkronisasi proses sistem operasi

16
Reni Seftiana NPM 142310115

Upload: belajarkomputer

Post on 20-Jul-2015

76 views

Category:

Education


2 download

TRANSCRIPT

Reni SeftianaNPM 142310115

5.1 Latar Belakang

Proses yang konkuren adalah proses yang lebih dari satu berada pada saat yang sama. Proses ini tak sepenuhnya bergantung dengan lain nya dapat juga berinteraksi,proses konkuren yang dilakukan bersama dapat membuat data tidak konsisten,agar data konsisten di butuhkan mekanisme untuk menjamin eksekusi yang beruutan pada proses yang bekerja sama.

Pada model shared memory,permasalahan bounded-buffer paling

banyak menyimpan n-1 pada saat yang sama. Modifikasi kode producer consumer menambahkan variable counter diinisiali 0 dan setiap 1 item baru di tambahkan ke buffer,definisi data yang digunakan bersama:

#define BUFFER_SIZE 10

typedef struct

. . .

} item;

item buffer[BUFFER_SIZE];

int in = 0;

int out = 0

int counter = 0;

Proses pada producer akan menambahkan satu nilai variable counter sebagai berikut:

item nextPruduced;

while (1) {

while (counter == BUFFER_SIZE)

; /* do nothing */

buffer[in] = nextProduced;

in = (in +1 ) % BUFFER_SIZE;

counter++;

}

Sebaliknya,pada proses consumer akan menurunkan satu nilai variabel counter sbb:

item nextConsumed;

while (1) {

while (counter == 0)

; /* do nothing */

nextConsumed = buffer[out];

out = (out +1 ) % BUFFER_SIZE;

counter--;

}

Pernyataan counter++ dan counter– harus dilakukan secara

Automatik,yaitu oprasi yang harus menyelesaikan seluruh pernyataan

tanpa interupsi. Pernyataan counter++ diimplementasikan dalam bahasa

mesin seperti berikut:

register1 = counter

register1 = registe1 + 1

counter = registe1

Sedangkan counter– diimplementasikan seperti berikut:

register1 = counter

register1 = registe1 + 1

counter = registe1

jika mengubah secara terpisah,maka pernyataan yang dijalankan

adalah:

prodecer: register1 = counter (register1 = 5)

prodecer: register1 = register1 + 1 (register1 = 6)

consumer: register2 = counter (register2 = 5)

consumer: register2 – 1 (registe2 = 4)

producer: counter = register1 (counter = 6)

consumer: counter = register2(counter = 4)

Nilai counter kemungkinan bernilai 4 atau 6,sedangkan yang benar

5,situasi ini dimaksud dengan data tidak konsisten. Situasi mengakses

data secara konkuren disebut race condition,dan untuk mencegahnya

proses konkuren harus dilaksanakan sinkronasi.

5.2 Permasalahan Critical-Section

Suatu sistem terdiri dari n proses dimana semua berkompetisi

menggunakan data yang sama,masing-masing proses mempunyai kode

yang disebut critical section dimana memungkinkan mengubah variabel

umum,sebuah tabel menulis file dan sebagainya.

permasalahan critical section digunakan untuk mendesain protokol

dimana proses dapat bekerja sama,dan harus meminta ijin untuk

memasuki critical section-nya. Daerah kode untuk

mengimplementasikan nya di sebut dengan entry dan critical section

biasanya diikuti daerah exit,sedangkan kode pengingat terletak pada

daerah remainder.

Solusi untuk permasalahan critical section harus memenuhi 3 syarat:

1. Mutual Exclusion : apanila proses Pi menjalankan critical section-nya,maka tidak ada proses lain yang dapat menjalankan nya.

2. Progress : apabila tidak ada proses yang menjalankan critical section-nya dan terdapat beberapa proses yang akan memasuki critical section-nya,maka hanya peroses itu yang tidak diprosess dalam daerah pengingat.

3. Bounded Waiting : terdapat batasan jumlah waktu yang diijinkan oleh proses lain untuk memasuki critical section setelah sebuah proses membuat permintaan untuk memasuki critical section-nya dan sebelum permintaan dikabulkan.

Ketika mengimplementasikan suatu algoritma,kita tentukan dahulu variabel yang digunakan untuk sinkronasi dan menggambarkan hanya proses P,entry section dan exit section menunnjukan segmen kode yang penting.

do {

critical section

remainder section

} while (1)

gbr 5.1

entry section

exit section

5.2.1 Pemecahan Dua Proses

Pada algoritma terdapat dua proses pada satu waktu yang diberi nama P0

dan P1,agar jelas ketika menyatakan Pi kita gunakan Pj dmana j=1 – i.

5.2.1.1 Algoritma 1

Pertama,semua proses menggunakan variabel integer turn diinisialisasi ke

0 (atau 1)

int turn;

Apabila turn = i,maka proses Pi diijinkan menjalankan critical section

structur dari proses Pi:

do {

while (turn != 1) ;

critical section

turn = j;

reminder section

} while (1) ;

Apabila turn=0 dan Pi siap untuk memasuki critical,P1 tidak dapat melakukannya meskipun P0 mungkin didalam remainder sectionnya. kelemahan nya adalah tidak ada informasi yang cukup tentang state dari masing masing proses,maka variabel turn diganti dengan array.

5.2.1.2 Algoritma 2

Boolean flag[2] ;

Awwal flag [0] = flag [1] = false,jika flag[i] bernilai true,Pi siap memasuki critical section,strukturnya adalah:

do {

flag[i] := true;

while (flag[j]) ;

critical section

flag [i] = false;

reminder section

} while (1);

Pemecahan ini memenuhi mutual exclusion tetapi belum memenuhi progres.

5.2.1.3 Algoritma 3

Menggunakan dua variabel:

Int turn;

Boolean flag[2];

Flag [0] = flag[1] = false dan nilai turn bernilai 0 atau 1,proses Pi:

do {

flag [i]:= true;

turn = j;

while (flag [j] and turn = j) ;

critical section

flag [i] = false;

remainder section

} while (1);

Algoritma ini memenuhi ketiga syarat critical section dan memecahkan masalah untuk dua proses.

5.2.2 Algoritma Bakery

Digunakan pemecahan permasalahan critical section pada n proses.

Proses yang mempunyai nomor terkecil yang mampu memasuki critical

sectionpada proses Pi dan Pj,jika i<j maka Pi dilayani lebih

dahulu,skema pemberian nomor menaikan nomor urut misal

1,2,3,3,3,3,3,4,5...dst. Pada algoritma bakery terdapat notasi <= untuk

urutan nomor (ticked #,process id #)sbb:

(a,b) < (c,d)if a <c or if a = c and b < d

Mac (a0,..., an-1)is a number,k such that k> ai for i – 0,...,n-1

Variabel umum yang digunakan:

boolean choosing[n];

int number[n];

Struktur data diatas diinisialisasi false dan 0,dari proses Pi:

Do {

choosing[i] = true;

number[i] = max (number[0], number[1] , ..., number [n – 1]) +1;

choosing [i] = false;

for (j = 0; j < n; j++ {

while (choosing [j] ) ;

while ((number [j] != 0) && (number [j],j < number [i],i)) ;

}

critical section

number [i] = 0;

remainder section

} while (1);

5.3 Perangkat Keras Sinkronasi

pada sistem multiprosesor,prosesor pemroses bertindak independe.

Interupsi disatu pemroses tidak mempengaruhi pemrosesan yang lain.

Pemrosesan yang memakai memori bersama maka pengaksesan

terhadap suatu memori dijaga pada tingkat perangkat keras agar tidak

boleh pemrosesan lain tidak dapat mengakses suatu lokasi yang sama

disaat yang sama. Perancang perangkat keras menyediakan berbagai

macam interuksi mesin diantaranya:

tsl (test and set lock)

tas atau ts (test and set), digunakan ibm s/360, keluarga motorola m68000, dan lain-lain.

cs (compare and set), digunakan ibm 370 series

exchange (xchg), digunakan intel x68, dsb.

5.3.1 Metode Test and Set

Melakukan testing dan modifikasi isi memori secara atonomik.

5.3.2 Metode Swap

Menggunakan prosedur swap untuk menukar dua variable secara atomic.

5.4 Semaphore

Adalah pendekatan yang dikemukakan Dijkstria. Semaphore adalah alat untuk sinkronasi yang tidak membutuhkan busy waiting, dan hanya dapat diaksess melalui operasi atomic yang tak dapat diinterupsi sampai kode selesai.

Terdapat dua bentuk semaphre,yaitu counting semaphore dan binary semaphore. Counting semaphore menggunakan nilai integer yang mempunyai jangkauan tak terbatas,sedangkat Binary semaphre menggunakan nilai integer dengan jangkauan 0 dan 1 sehingga implementasinya lebih sederhana.

5.5 Masalah Klasik Informasi

5.5.1 Bounded-Buffer

Produsen menghasilkan barang dan konsumen akan menggunakannya. Ada beberapa batasan yang harus dipenuhi,yaitu:

Barang yang dihasilkan oleh prdusen terbatas

Barang yang dipakai konsumen terbatas

Konsumen hanya boleh menggunakan barang yang dimaksud setelah prdusen menghasilkan barang dalam jumlah tertentu

Produsen hanya boleh memproduksi barang jika konsumen sudah kehabisan barang.

5.2.2 Reader and Writer Problem

Terdapat dua variasi masalah yaitu:

Seorang reader tidak perlu menunggu reader lain untuk selesai hanya

karena ada writer menunggu(prioritas reader lebih tinggi)

Jika ada writer yang sedang menunggu, maka tidak boleh ada reader

lain yang bekerja(prioritas writer lebih tinggi).

5.3.3 Dining-Philosophers Problem

adalah dimana terdapat 5 filosof yang akan makan. Disana disediakan 5

sumpit,jika filosof lapar ia akan mengambil 2 sumpit yaitu ditangan

kanan dan kiri. Adakalanya hanya diambil satusumpit saja. Jika ada

filosof yang mengambil 2 sumpit,maka ada filsf yang harus menunggu

sampai sumpit diletakkan.

Thank You..