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
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 (
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.
"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