Anda di halaman 1dari 9

KOMUNIKASI & SINKRONISASI ANTAR PROSES

Masalah utama dalam pemrograman pada sistem MIMD adalah sinkronisasi dan komunikasi antar proses/prosesor. Untuk menyelesaikan masalah tersebut dapat digunakan Software atau Hardware Penyelesaian Dengan Software Menurut Ben- ri! "eterson # Silbers$hat%! penyelesaian masalah sinkronisasi yang menggunakan shared memory tidak membutuhkan hardware khusus! $ukup software sa&a Dengan menyediakan invisible atau ato i! o"eration! menghindari dua proses atau lebih masuk ke daerah kritis '$riti$al se$tion( pada saat yang bersamaan )ontoh *
De#larasivar turn$ %&&'( Inisialisasi turn $) %( P% P'

loop loop +hile turn ,-* do ' nothing ( end. +hile turn ,- / do 'nothing( end. , $riti$al se$tion , $riti$al se$tion turn 01 /. turn 01 *. ,other instru$tion,other instru$tionend end

nalisis 0 Solusi di atas men&amin hanya satu proses yang masuk ke daerah kritis setiap saat "roses yang berada di luar daerah kritis dapat memblok proses lain $ara di atas masih salah

)ontoh /
De#larasivar flag$ array*%&&'+ of ,OO-EAN( Inisialisasi flag*%+ $) false( flag*'+ $) false(

P%
loop +hile flag2/3 do 'nothing ( end. flag2*3 01 true. , $riti$al se$tion flag2*3 01 false. ,other instru$tionend

P'
loop +hile flag2*3 do 'nothing ( end. flag2/3 01 true , $riti$al se$tion flag2/3 01 false. ,other instru$tionend

nalisis0 Solusi di atas masih salah karena kedua proses masih bisa masuk ke daerah kritis pada saat yang sama. 4apan / saat bagaimana 555

)ontoh 6
De#larasivar flag$ array*%&&'+ of ,OO-EAN( Inisialisasi flag*%+ $) false( flag*'+ $) false(

P%
loop flag2*3 01 true. +hile flag2/3 do 'nothing ( end. , $riti$al se$tion flag2*3 01 false. ,other instru$tionend

P'
loop flag2/3 01 true +hile flag2*3 do 'nothing ( end. , $riti$al se$tion flag2/3 01 false. ,other instru$tionend

nalisis0 Solusi di atas masih salah karena kedua proses akan bisa looping selama-lamanya. Mengapa 555

)ontoh 7
De#larasivar turn$ %&&' flag$ array*%&&'+ of ,OO-EAN Inisialisasi turn $) %( flag*%+ $) false( flag*'+ $) false(

P%
loop flag2*3 01 true. turn 01 /. while flag2/3 and 'turn 1 /( do 'nothing( end. , $riti$al se$tion flag2*3 01 false. , other instru$tion end

P'
loop flag2/3 01 true turn 01 *. while flag2*3 and 'turn 1 *( do ' nothing ( end. , $riti$al se$tion flag2/3 01 false. , other instru$tion end

nalisis0 Solusi di atas benar. Mengapa 555

Penyelesaian .engan /ar.ware Dengan mematikan interrupt "ada waktu ada proses yang akan masuk daerah kritis! maka proses tersebut mematikan interrupt! sehingga tidak ada peralihan proses $ara ini tidak disukai Dengan menyediakan instruksi 8test0an.0set9 pada mikroprosesornya! seperti instruksi : S 'test and set(! ) S '$ompare and swap( pada mikroprosesor ;<=/=! dan instruksi >)H? 'e@$hange( pada mikroprosesor <=/<; Aperasi test-and-set sangat sederhana! terdiri dari dua langkah 0

*. Memba$a Bariabel BAACD E /. Men-Set Bariabel tersebut dengan nilai :FUD 4edua instruksi instru$tion di atas merupakan inBisible

"ro$edure testGandGset 'Bar lo$k0 BAACD E(0 BAACD E. Bar mem0 BAACD E. beginGatomi$ ' inBisible ( mem 01 lo$k. lo$k 01 true. return 'mem( endGatomi$ ' inBisible (

)ontoh penggunaan set-and-lo$k


Bar lo$k0 BAACD E lo$k 01 false. "i Coop while testGandGset'lo$k( do ' nothing ( end. , $riti$al se$tion lo$k 01 false. , other instru$tion end.

SEMAP/ORE Diperkenalkan oleh Di&kstra! *H;I

Dua operasi untuk setting # resetting signal disebut P dan 12 atau UP dan DO3N. Aperasi-operasi ini merupakan atomi$ atau inBisible instru$tion Semaphore lebih efisien dari konsep sinkronisasi dengan menggunakan 8busy wait9 loops. Mengapa 555 )ontoh aplikasinya 0
"i ...... "'sema(. , $riti$al se$tion J'sema( ......

Eilai semaphore dapat bertipe BAACD E disebut 8boolean semaphore9 Eilai semaphore dapat bertipe Integer disebut 8?eneral semaphore9

"ro$edure " dan J adalah sbb0 type Semaphore 1 re$ord Jalue 0 integer.

C0 CistGofG"ro$ID. end. "ro$edure " 'Bar S0 Semaphore(. begin S.Balue 01 S.Balue - *. if S.Balue , = then putlast 'S.C! a$tpro$(. blo$k 'a$tpro$(. end end ". "ro$edure J 'Bar S0 Semaphore(. Bar "new0 "ro$ID. begin S.Balue 01 S.Balue K *. if S.Balue then getfirst'S.C! "new(. ready'"new(. end end J.

)ontoh penggunaan semaphore pada 8produser $onsumer problem9


Bar empty0 Semaphore2*3. full0 Semaphore2=3. "ro$ess )onsumer. begin loop "'full(. ,empty bufferJ'empty(. ,pro$ess dataend. end pro$ess )onsumer.

"ro$ess "rodu$er begin loop ,generate data"'empty(. ,fill bufferJ'full(. end. end pro$ess "rodu$er.

Di samping semaphore yang sering &uga dipakai untuk komunikasi # sinkronisasi antar proses pada sistem MIMD adalah 0 Monitor! Message "assing dan Femote "ro$edure )all 'F")(
Process 1 Process 2

Process n

Buffer Area for Messages

A = Assignments R = Responses ?ambar 0 Danger Deadlo$k

Anda mungkin juga menyukai