download

Matakuliah : KONSEP BAHASA PEMROGRAMAN
Tahun
: 2010
KONKURENSI
Pertemuan 10
Outline Materi
•Pendahuluan
•Konkurensi aras subprogram
•Semaphore
•Monitor
•Message Passing
•Java Thread
•C# Thread
Bina Nusantara University
3
Pendahuluan
• Aslinya digunakan di SO tetapi sekarang juga digunakan
di bahasa pemrograman
• Diawali di PL/I dan sekarang juga di Ada 95, Java dan
C#
• Konkurensi dapat terjadi di empat aras :
–
–
–
–
Aras instruksi mesin
Aras pernyataan bahasa high-level
Aras unit
Aras program
• Karena tidak ada isu instruksi di aras mesin dan aras
program, keduanya tidak dibahas di sini
Bina Nusantara University
4
Arsitektur Komputer
• Akhir 1950-an: satu prosesor general-purpose dan satu
atau lebih prosesor khusus untuk operasi I/O
• Awal 1960-an: prosesor multipel utuh untuk konkurensi
aras program
• Pertengahan 1960an: prosesor multiple partial untuk
konkurensi aras instruksi
• Mesin SIMD : Single-Instruction Multiple-Data
• Mesin MIMD : Multiple-Instruction Multiple-Data ,
prosesor independen yang dapat disinkronisasi untuk
konkurensi aras unit
Bina Nusantara University
5
Kategori Konkurensi
• Thread of control adalah sekuen titik program yang
dilalui oleh alir kendali yang melalui program
• Kategori konkurensi :
– Physical concurrency - multiple independent processors (
multiple threads of control)
– Logical concurrency – kemunculan fisik konkurensi disajikan
oleh time-sharing one processor (software dapat didesain seperti
halnya ada multiple threads of control)
• Coroutines (quasi-concurrency) mempunyai thread of
control tunggal
Bina Nusantara University
6
Konkurensi Aras Subprogram
• Task atau process adalah unit program yang
eksekusinya bisa konkuren dengan unit program lain
• Task berbeda dari subprogram biasa dalam hal
– Task dimulai secara implisit
– Jika unit program memulai eksekusi task, ia tak perlu di-suspend
– Jika eksekusi task selesai kendali mungkin tidak kembali ke
pemanggil
• Task biasanya bekerja bersama-sama
Bina Nusantara University
7
Kategori Task
• Heavyweight tasks eksekusi didalam ruangnya sendiri
dan mempunyai run-time stack sendiri
• Lightweight tasks semuanya dieksekusi di ruang yang
sama dan menggunakan run-time stack yang sama
• Task disjoint jika ia tidak berkomunikasi dengan atau
mempengaruhi task lain dalam program dengan cara
apapun
• Task communication melalui : shared non-locals,
parameters, dan message passing.
• Form of communication: sinkronkan eksekusinya, shared
data atau keduanya.
• Komunikasi digunakan untuk sinkronisasi .
Bina Nusantara University
8
Sinkronisasi Task
• Mekanisme yang mengendalikan urutan task yang
dieksekusi
• Dibutuhkan jika task sharing data
• Dua tipe sinkronisasi
– Cooperation synchronization: Task A harus menunggu task B
untuk menyelesaikan eksekusinya sebelum task A melanjutkan
eksekusinya untuk mencegah buffer overflow dan/atau
underflow , e.g., masalah producer-consumer
– Competition synchronization: dua atau lebih task harus
menggunakan beberapa sumber yang tidak dapat digunakan
secara simultan untuk mencegah dua task mengakses shared
data pada saat yang sama.
• Kompetisi biasanya disediakan dengan mutually exclusive access
Bina Nusantara University i.e. semaphores, monitors dan message passing
9
Sinkronisasi Kompetisi
Bina Nusantara University
10
Scheduler
• Sinkronisasi memerlukan mekanisme untuk menunda
eksekusi task
• Pengendalian eksekusi task dikelola oleh program yang
disebut scheduler, yang memetakan eksekusi task ke
prosesor yang tersedia
Bina Nusantara University
11
State Task
• New – dibentuk tetapi belum dimulai
• Runnable atau ready – siap di-run tetapi belum running
(tak ada prosesor tersedia)
• Running
• Blocked – sedang running, tetapi tidak dapat lanjut
(biasanya menunggu munculnya event)
• Dead – tidak aktif lagi
Bina Nusantara University
12
Liveness dan Deadlock
• Liveness adalah karakterstik yang dipunyai unit program
atau tidak dipunyai
• Dalam kode sekuensial, berarti unit akan menyelesaikan
eksekusinya
• Di lingkungan konkurensi, task mudah kehilangan
liveness-nya
• Jika semua tasks dalam lingkungan konkurensinya
kehilangan liveness-nya, disebut deadlock
Bina Nusantara University
13
Isu Desain
• Sinkronisasi Kompetisi atau Kooperasi
• Metode sinkronisasi
– Semaphore
– Monitor
– Message Passing
• Pengendalian penjadwalan task
• Bagaimana dan kapan eksekusi tasks mulai dan
berakhir
Bina Nusantara University
14
Semaphore
• Dijkstra – 1965
• Semaphore adalah struktur data yang terdiri dari konter
dan queue untuk menyimpan dekriptor task yaitu
menyimpan semua informasi tentang state tasks
• Semaphore dapat digunakan untuk implementasi guards
untuk mengakses shared data structures
• Guard adalah alat yang mengijinkan guarded code
dieksekusi dengan kondisi tertentu yaitu hanya satu task
yang dapat mengakses shared data pada suatu waktu
• Semaphore hanya mempunyhai dua operasi, wait dan
release , aslinya disebut P dan V oleh Dijkstra
• Semaphore dapat digunakan untuk menfasilitasi
competition dan cooperation synchronization
Bina Nusantara University
15
Sinkronisasi Kooperasi Semaphore
• Contoh: shared buffer
• Buffer diimplementasikan sebagai TDA dengan operasi
DEPOSIT dan FETCH sebagai jalan untuk mengakses
buffer
• Gunakan dua semaphore untuk kooperasi: emptyspots
dan fullspots
• Konter semaphore digunakan untuk menyimpan banyak
empty spots dan full spots dalam buffer
• Emptyspots semaphore menyebabkan producer diqueued untuk menunggu adanya ruang kosong jika ia
penuh sedangkan fullspots semaphore
menyebabkan consumer di-queued untuk menunggu
dientri jika ia kosong
Bina Nusantara University
16
Sinkronisasi Kooperasi Semaphore
(lanjutan)
• DEPOSIT pertama harus mencek emptyspots untuk
melihat jika ada ruang di buffer
• Jika ada ruang, konter emptyspots dikurangi dan nilai
dimasukkan
• Jika tak ada ruang, caller disimpan di queue
emptyspots
• Ketika DEPOSIT selesai, ia harus menaikkan konter
fullspots
Bina Nusantara University
17
Sinkronisasi Kooperasi Semaphore
(lanjutan)
• FETCH pertama harus mencek fullspots untuk
melihat jika ada nilai
– Jika full spot, konter fullspots diturunkan dan nilainya
dipindahkan
– Jika tak ada nilai dalam buffer, caller harus diletakan di queue
fullspots
– Jika FETCH selesai, ia menaikkan konter emptyspots
• Operasi FETCH dan DEPOSIT di semaphore
dilaksanakan melalui operasi wait dan release
Bina Nusantara University
18
Operasi wait dan release
wait(aSemaphore)
if aSemaphore’s counter > 0 then
decrement aSemaphore’s counter
else
put the caller in aSemaphore’s queue
attempt to transfer control to a ready task
-- if the task ready queue is empty,
-- deadlock occurs
end
release(aSemaphore)
if aSemaphore’s queue is empty then
increment aSemaphore’s counter
else
put the calling task in the task ready queue
transfer control to a task from aSemaphore’s queue
end
Bina Nusantara University
19
Kode producer-consumer
semaphore fullspots, emptyspots;
fullstops.count = 0;
emptyspots.count = BUFLEN;
task producer;
loop
-- produce VALUE –wait (emptyspots); {wait for space}
DEPOSIT(VALUE);
release(fullspots); {increase filled}
end loop;
end producer;
Bina Nusantara University
20
Kode producer-consumer
task consumer;
loop
wait (fullspots);{wait till not empty}}
FETCH(VALUE);
release(emptyspots); {increase empty}
-- consume VALUE –end loop;
end consumer;
Bina Nusantara University
21
Sinkronisasi Kompetisi Semaphore
• Semaphore ketiga, access, digunakan untuk
mengendalikan akses (sinkronisasi kompetisi)
– Konter access hanya mempunyai dua nilai 0 dan 1
– Semaphore seperti ini disebut binary semaphore
• Catatan bahwa wait dan release harus atomik
Bina Nusantara University
22
Kode producer-consumer
semaphore access, fullspots, emptyspots;
access.count = 0;
fullstops.count = 0;
emptyspots.count = BUFLEN;
task producer;
loop
-- produce VALUE –wait(emptyspots); {wait for space}
wait(access);
{wait for access)
DEPOSIT(VALUE);
release(access); {relinquish access}
release(fullspots); {increase filled}
end loop;
end producer;
Bina Nusantara University
23
Kode producer-consumer
task consumer;
loop
wait(fullspots);{wait till not empty}
wait(access);
{wait for access}
FETCH(VALUE);
release(access); {relinquish access}
release(emptyspots); {increase empty}
-- consume VALUE –end loop;
end consumer;
Bina Nusantara University
24
Evaluasi Semaphore
• Un-save linkungan pemrograman
• Salahguna semaphore dapat menyebabkan gagalnya
sinkronisasi koooperasi, e.g., buffer akan overflow jika
wait of fullspots dan/atau emptyspots left out dan
deadlock jika kita tinggalkan release
• Salahguna semaphore dapat menyebabkan gagalnya
sinkronisasi kompetisi, e.g., program akan deadlock jika
release of access di tasks ditinggalkan dan akses tak
aman jika meninggalkan wait (access)
Bina Nusantara University
25
Monitor
•
•
•
•
•
•
•
Concurrent Pascal, Modula, Mesa, Ada, Java, C#
Dinamai oleh Hoare (1974)
TDA adalah solusi masalah semaphore
Ide: kapsulkan shared data dan operasinya untuk
membatasi akses dan menyembunyikan representasi
Monitor adalah TDA untuk shared data
Semua sinkronisasi pada shared data digabungkan
dalam satu unit program (Dijkstra, 1971)
Concurrent Pascal
– Bahasa pertama yang mengimplementasikan monitor
– Wirth’s Pascal + class (dariSimula 67) + process (=task) +
monitor
Bina Nusantara University
26
Monitor (lanjutan)
• Proses
– Sintaks mirip prosedur tetapi semantik berbeda
– Semua proses adalah tipe
• type process_name = process (formal parameters)
local declaration
process body
• end
– Pernyataan init harus digunakan untuk alokasi lokal untuk
memulai eksekusi
• init process_var_name (actual parameter)
Bina Nusantara University
27
Monitor (lanjutan)
• Bentuk umum
– type monitor_name = monitor (formal parameter)
•
•
•
•
Declarations of shared data
Definition of local procedure
Definition of exported procedure
Initialization code
– end
• Pernyataan init digunakan untuk membentuk instance
monitor
• Lifetime : mulai dengan init, berakhir bersama program
• Lingkup: dibatasi pada monitor
Bina Nusantara University
28
Sinkronisasi Kompetisi dan Kooperasi
• Sinkronisasi kompetisi, shared data menetap di monitor
bukannya di unit klien
– Implementasi monitor menjamin akses disinkronisasi dengan
hanya mengijinkan satu akses pada suatu waktu
– Pemanggilan prosedur monitor secara implisit di- queue jika
monitor sibuk saat dipanggil
• Sinkronisasi kooperasi tetap merupakan tugas
pemrograman; pemrogram harus menjamin bahwa
shared buffer tidak underflow atau overflow
Bina Nusantara University
29
Evaluasi Monitor
• Cara yang lebih baik untuk meyediakan sinkronisasi
kompetisi daripada semaphore
• Semaphore dapat diigunakan untuk implementasi
monitor, sebaliknya monitor juga dapat digunakan untuk
implementasi semaphore
• Dukungan kepada sinkronisasi kooperasi sangat mirip
dengan semaphore, sehingga ia mempunyai masalah
yang sama
Bina Nusantara University
30
Message Passing
• Monitor aman di memori tunggal; di sistem terdistribusi
dicapai melalui message passing (MP)
• Dipelopori oleh Brinch Hansen (1978) dan Hoare (1978)
• Basis pada guarded command (Dijkstra, 1975)
• Message passing adalah model umum untuk konkurensi
– Dapat menjadi model untuk semaphore dan monitor
– Tidak hanya untuk sinkronisasi kompetisi
• Ide dasar: komunikasi task seperti mengunjungi dokter—
sebagian besar waktu ia menunggu anda atau anda
menunggunya tetapi saat keduanya siap anda
bersamanya atau rendezvous
Bina Nusantara University
31
Fundamental
• Task kerap sibuk sehingga tidak ingin diinterupsi
• Task dapat ditunda karena
– Idel, atau
– Butuh informasi dari yang lain
• Jika task A ingin mengirim pesan ke B, dan B mau
menerimanya, pesan dapat dikirim. Transmisi aktual
disebut rendezvous
• Message menyebabkan
– Proses di penerima tidak sensible jika proses lain incomplete,
atau
– Menyediakan mekanisme untuk menspesifikasi yang lain jika is
siap menerima
Bina Nusantara University
32
MP Rendezvous
• Mekanisme yang mengindikasikan bahwa task siap
menerima pesan
• Task perlu cara mengingat siapa yang menunggu untuk
menerima pesannya dan beberapa cara lain untuk
memilih pesan berikutnya
• Jika pesan diterima oleh penerima task, transmisi pesan
aktual disebut rendezvous
Bina Nusantara University
33
Konkurensi di Ada
• Ada 83 model MP
– Bentuk task mirip package
– Ada task mempunyai bagian spesifikasi dan body, keduanya
dengan nama yang sama; spesifikasi mempunyai interface, yaitu
koleksi titik masuk untuk menerima pesan
– Titik masuk mungkin mempunyai parameter karena pesan dapat
berparameter
task Task_Example is
entry ENTRY_1 (Item : in Integer);
end Task_Example;
Bina Nusantara University
34
Task Body
• body task menguraikan aksi yang terjadi ketika
rendezvous muncul
• Task yang mengirim pesan di-suspend sambil
menunggu pesan diterima dan selama
rendezvous
• Titik masuk di spek di diuraikan dengan klausa
accept dalam body
accept entry_name (formal parameters) do
…
end entry_name
Bina Nusantara University
35
Contoh Task Body
task body TASK_EXAMPLE is
begin
loop
accept ENTRY_1 (ITEM: in FLOAT) do
...
end ENTRY_1;
end loop;
end TASK_EXAMPLE;
Bina Nusantara University
36
Semantik MP Ada
• task mengeksekusi klausa accept dan menunggu
pesan
• Selama eksekusi klausa accept , sender di- suspend
• Parameter accept dapat mengirim informasi ke satu
arah atau dua arah
• Setiap klausa accept beraosiasi dengan queue untuk
menyimpan waiting messages
Bina Nusantara University
37
Rendezvous Time Lines
Bina Nusantara University
38
Server/Actor Task MP
• Task yang mempunyhai klausa accept tetapi tidak
mempunyai kode lain disebut server task (contoh diatas
adalah server task)
• Task tanpa klausa accept disebut actor task
– Actor task dapat mengirim pesan ke task lain
– Catatan, pengirim harus tahu nama entry penerima tetapi tidak
sebaliknya
Bina Nusantara University
39
Contoh Actor Task
task WATER_MONITOR; -- specification
task body WATER_MONITOR is -- body
begin
loop
if WATER_LEVEL > MAX_LEVEL
then SOUND_ALARM;
end if;
delay 1.0; -- No further execution
-- for at least 1 second
end loop;
Bina Nusantara University
40
Titik Masuk Multiple
• Task dapat mempunyai lebih dari satu titik masuk
– Bagian specification task mempunyai klausa entry untuk
setiap klausa entri
– Bagian task body mempunyai klausa accept untuk setiap
klausa entry , diletakkan di klausa select yang berada di
loop
Bina Nusantara University
41
Task dengan Multiple Entri
task body TASK_EXAMPLE is
loop
select
accept ENTRY_1 (formal params) do
...
end ENTRY_1;
...
or
accept ENTRY_2 (formal params) do
...
end ENTRY_2;
...
end select;
end loop;
end TASK_EXAMPLE;
Bina Nusantara University
42
Semantik Task dengan klausa select
• Jika satu entry queue tidak kosong pilih pesan darinya
• Jika lebih dari satu entry queue tidak kosong, pilih
satu, nondeterministically, untuk menerima pesan
• Jika semua kosong, wait
• Konstruksi disebut selective wait
• Perluasan klausa accept – kode mengikuti klausa
tetapi sebelum klausa berikut
– Dieksekusi konkuren dengan caller
Bina Nusantara University
43
Sinkronisasi Kooperasi dengan MP
• Disediakan oleh klausa guarded accept
when not FULL(BUFFER) =>
accept DEPOSIT (NEW_VALUE) do
• Klausa accept dengan klausa when yang mungkin
open atau closed
– Klausa yang guard-nya true disebut open
– Klausa yang guard-nya false disebut closed
– Klausa tanpa guard selalu open
Bina Nusantara University
44
Semantik select dengan guard accept
• select pertama mencek guard semua klausa
• Jika satu buka, queue-nya dicek untuk pesan
• Jika lebih dari satu buka, pilih satu secara nondeterministik untuk mencek pesan
• Jika semua tutup, runtime error
• Klausa select dapat memuat klausa else untuk
menghindari eror;
• jika klausa else selesai, ulangi loop
Bina Nusantara University
45
Task dengan guard accept
task GAS_STATION_ATTENDANT is
entry SERVICE_ISLAND (CAR : CAR_TYPE);
entry GARAGE (CAR : CAR_TYPE);
end GAS_STATION_ATTENDANT;
Bina Nusantara University
46
Contoh Task dengan guarad accept
task body GAS_STATION_ATTENDANT is
begin
loop
select
when GAS_AVAILABLE =>
accept SERVICE_ISLAND (CAR : CAR_TYPE) do
FILL_WITH_GAS (CAR);
end SERVICE_ISLAND;
or
when GARAGE_AVAILABLE =>
accept GARAGE (CAR : CAR_TYPE) do
FIX (CAR);
end GARAGE;
else
SLEEP;
end select;
end loop;
end GAS_STATION_ATTENDANT;
Bina Nusantara University
47
Sinkronisasi Kompetisi dengan MP
•
•
•
•
Model akses mutually exclusive ke shared data
Contoh -- shared buffer
Kapsulkan buffer dan operasinya dalam task
Sinkronisasi kompetisi implisit dalam semantik klausa
accept
– Hanya satu klausa accept dalam task dapat aktif pada suatu
waktu
Bina Nusantara University
48
Terminasi Task
• Eksekusi task completed jika kendali mencapai akhir
kode body
• Jika task tidak membentuk dependent task dan ia
completed, ia terminated
• Jika task membentuk dependent tasks dan completed,
ia tidak terminated sampai semua dependent task-nya
terminated
Bina Nusantara University
49
Klausa terminate
• Klausa terminate dalam select tidak lain adalah
pernyataan terminate
• Klausa terminate dipilih ketika tak ada klausa accept
buka
• Jika terminate dipilih dalam task, task terminated
hanya jika master-nya dan semua dependents masternya completed atau waiting di terminate
• Block atau subprogram is not left sampai semua
dependent task-nya terminated
Bina Nusantara University
50
MP priority
• Prioritas sembarang task dapat di-set dengan pragma
priority
pragma Priority (expression);
• Prioritas task dipakai hanya jika ia ada didalam task
ready queue
Bina Nusantara University
51
Konkurensi di Ada 95
• Ada 95 memuat fitur konkurensi Ada 83
ditambah dua fitur baru
– Protected objects: cara yang lebih efisien untuk
implementasi shared data agar akses ke shared data
dapat dilakukan tanpa rendezvous
– Komunikasi asynchronous
Bina Nusantara University
52
Protected Object dan Komunikasi
Asynchronous
• Protected Object
– Mirip dengan TDA
– Akses ke protected object bisa melalui pesan yang dikirim ke
entries, atau melalui protected subprograms
– Protected procedure menyediakan akses read-write yang
mutually exclusive ke protected objects
– Protected function menyediakan akses read-only ke protected
objects
• Komunikasi asynchronous
– Disediakan melalui struktur asynchronous select
– asynchronous select mempunyai dua alternatif, klausa
entry atau delay
• Klausa entry di-trigger ketika mengirim pesan
• Klausa delay di-trigger ketika waktu batas dicapai
Bina Nusantara University
53
Evaluasi MP Ada
• Model konkurensi MP powerful dan umum
• Protected objects adalah cara yang lebih baik untuk
sinkronisasi shared data
• Jika tak ada prosesor terdistribusi , pilihan antara
monitor dan task dengan MP adalah soal selera
• Untuk sistem terdistribusi , MP adalah model yang lebih
baik
Bina Nusantara University
54
Java Thread
• Unit konkurensi di Java adalah metode dengan nama
run
– Metode run eksekusinya dapat konkuren dengan metode
serupa
– Proses dimana metode run dieksekusi disebut thread
Class myThread extends Thread
public void run () {…}
}
…
Thread myTh = new MyThread ();
myTh.start();
• Dukungan Java pada konkurensi relatif sederhana tetapi
efektif meskipun tidak se-powerful task Ada
55
Bina Nusantara University
Pengendalian Thread
• Klas Thread mempuyai sejumlah cara untuk
mengkontrol eksekusi thread-nya
– Metode yield adalah request dari running thread untuk
menghentikan prosesor secara sukarela
– Metode sleep dapat digunakan oleh pemanggil metode untuk
menblok thread
– Metode join digunakan untuk memaksa metode menunda
eksekusinya sampai metode run thread lain selesai eksekusinya
Bina Nusantara University
56
Prioritras Thread
• Nilai default prioritas thread adalah sama dengan thread
yang membentuknya
– Jika main membentuk , prioritas default-nya adalah
NORM_PRIORITY
• Thread mendefinisikan dua prioritas konstan lain,
MAX_PRIORITY dan MIN_PRIORITY
• Prioritas thread dapat diubah dengan metode
setPriority
Bina Nusantara University
57
Sinkronisasi Kompetisi dengan Java Thread
• Metode yang memuat modifier synchronized tidak
membolehkan metode lain running pada object selama
eksekusinya
…
public synchrnoized void deposit( int i) {…}
public synchrnoized int fetch() {…}
…
• Dua metode diatas adalah synchrnoized yang
mencegahnya saling interfensisatu sama lain r
• Jika hanya sebagian metode harus di-run tanpa
intervensi, ia dapat disinkronisasi melalui pernyataan
synchrnoized
Synchrnoized (expression) statement
Bina Nusantara University
58
Sinkronisasi Kooperasi dengan Java Thread
• Sinkronisasi kooperasi di Java dicapai melalui
metode wait, notify, dan notifyAll
– Semua metode didefine dalam Object, yaitu root
class di Java, sehingga semua obyek mewarisinya
• Metode wait harus dipanggil dalam loop
• Metode notify dipanggil untuk mengatakan
kepada seseorang menunggu thread yang
event-nya sedang menunggu apa ang kan
terjadi
• Meode notifyAll memabngunkan semua
threads pada daftar tunggu obyek
Bina Nusantara University
59
C# Thread
• Berbasiskan pada Java tetapi berbeda signifikan
• Operasi dasar
– Sembarang metode dapat run dalam thread-nya
– Thread dibentuk dengan meng-creat Thread object
– Pembentukan thread tidak menjalankan eksekusi
konkurensinya; ia harus diminta melalui metode Start
– Thread dapat dibuat untuk menunggu thread lain agar selesai
dengan Join
– Thread dapat di-suspend dengan Sleep
– Thread dapat diakhiri dengan Abort
Bina Nusantara University
60
Sinkronisasi C# Thread
• Tiga cara untuk mensinkronkan C# thread
– Class Interlock : digunakan jika operasi yang dibutuhkan
untuk sinkronisasi adalah menaikkan atau menurunkan bilangan
bulat
– Pernyataan lock : digunakan untuk menandai bagian kode kritis
dalam thread
lock (expression) {… }
– Class Monitor : menyediakan empat metode yang dapat
digunakan untuk sinkronisasi yang lebih rumit
• Lebih maju daripada Java thread, karena metode dapat
run di thread-nya sendiri, terminasi thread lebih jelas dan
sinkronisasi lebih baik
Bina Nusantara University
61
LATIHAN
A. SOAL PILIHAN
1. Dua karakteristik dasar yang disediakan oleh bahasa dengan concurrency adalah
a. mutually exclusive access, cooperation among task
b. mutually inclusive access, cooperation among task
c. mutually exclusive access, competition among task
d. mutually exclusive access, competition among task
2.Yang dimaksud dengan coroutine tidak lain adalah
a. physical concurrency
b. logical concurrency
c. quasi concurrency
d. structural concurrency
3. Producer-consumer problem yang awalnya dikembangkan di OS adalah contoh
dari
a. physical concurrency
b. logical concurrency
c. cooperation synchronization
d. competition synchronization
Bina Nusantara University
62
LATIHAN
4. Mutually exclusive access pada shared data diperlukan untuk
menjamin terjadinya
a. physical concurrency
b. logical concurrency
c. cooperation synchronization
d. competition synchronization
5. Salah satu karakteristik task yang membedakannya dengan
(ordinary) subprogram adalah
a. task dan subprogram keduanya dieksekusi secara explicit
b. task dan subprogram keduanya dieksekusi secara implicit
c. task dieksekusi secara implicit dan subprogram dieksekusi
secara explicit
d. task dieksekusi secara explicit dan subprogram dieksekusi
secara implicit
Bina Nusantara University
63
LATIHAN
B. SOAL URAIAN
1. Ada tiga alternatif untuk menjawab isu desain concurrency yaitu
semaphore, monitor dan message passing. Jelaskan apa yang
kamu ketahui tentang tiga terminologi tersebut.
2. Definisikan konsep tentang rendezvous, accept clause, entry
clause, actor task, server task, dan completed task.
Bina Nusantara University
64
Ringkasan
• Eksekusi konkurensi dapat terjadi di aras instruksi,
pernyataan atau subprogram
• Konkurensi fisik: ketika prosesor multipel digunakan
untuk mengeksekusi unit konkuren
• Konkurensi logikal: konkuren dieksekusi dalam satu
prosesor
• Dua fasilitas dasar untuk mendukung konmkurensi
subprogram: competition synchronization dan
cooperation synchronization
• Mekanisme : semaphores, monitors, MP
Bina Nusantara University
65