Anda di halaman 1dari 3

Riffa Rufaida 13507007

Sinkronisasi dan IPC pada Windows


Sinkronisasi
Proses dapat bekerja sendiri(independent process), ataupun bekerja sama dengan proses-proses yang
lain(cooperating process). Pada umumnya ketika proses saling bekerja sama (cooperating process) maka
proses-proses tersebut akan saling berbagi data. Pada saat proses-proses berbagi data, ada
kemungkinan bahwa data yang dibagi secara bersama itu akan menjadi tidak konsisten dikarenakan
adanya kemungkinan proses-proses tersebut melakukan akses secara bersamaan yang menyebabkan
data tersebut berubah, hal ini dikenal dengan istilah Race Condition. Oleh karena itu, kita membutuhkan
sinkronisasi yang merupakan suatu upaya yang dilakukan agar proses-proses yang saling berkerja
bersama-sama dieksekusi secara beraturan demi mencegah timbulnya Race Condition.

Objek Sinkronisasi

Objek sinkronisasi merupakan objek yang handle-nya dapat ditetapkan dalam satu diantara wait
functions untuk mengoordinasikan eksekusi dari beberapa threads. Lebih dari satu proses dapat
memiliki handle ke objek sinkronisasi yang sama, membuat sinkronisasi antar proses menjadi mungkin.
Tipe objek yang disediakan khusus untuk sinkronisasi :

Tipe Deskripsi
Event Memberitahukan satu atau lebih threads yang menunggu saat sebuah event terjadi.
Mutex Dapat dimiliki hanya oleh satu thread dalam satu waktu, membuat threads bisa
berkoordinasi dalam akses ke sumber bersama.
Semaphore Mengurus hitungan antara nol dan nilai maksimum, membatasi jumlah threads
yang secara simultan mengakses sumber bersama.
Waitable timer Memberitahukan satu atau lebih threads yang menunggu saat waktu yang telah
ditentukan tiba.
Untuk sinkronisasi akses ke sebuah sumber, dapat digunakan satu dari objek sinkronisasi pada wait
functions. Status dari objek sinkronisasi adalah signaled atau nonsignaled. Wait functions
memperbolehkan sebuah thread untuk memblok eksekusinya sendiri hingga sebuah objek khusus
nonsignaled diubah ke status signaled. Beberapa proses dapat memiliki handle ke event, mutex,
semafor, atau timer object yang sama, sehingga objek-objek ini dapat digunakan untuk menyelesaikan
sinkronisasi antar proses.

IPC (Inter-process communication)


Sistem operasi Windows menyediakan mekanisme untuk memfasilitasi komunikasi dan berbagi data
antara aplikasi. Secara umum, aktivitas yang dapat terjadi karena mekanisme ini disebut IPC. Beberapa
bentuk dari IPC memfasilitasi pembagian tugas di antara beberapa proses yang khusus, dan lainnya di
antara beberapa komputer dalam jaringan. Secara khas, aplikasi dapat menggunakan IPC dengan
kategori sebagai client atau server. Client adalah aplikasi atau proses yang meminta servis dari beberapa
aplikasi atau proses lain. Server adalah aplikasi atau proses yang merespon terhadap permintaan client.
Banyak aplikasi yang bertindak sebagai client maupun server, tergantung kepada situasi.

Metode yang digunakan dari IPC dapat berbeda-beda sesuai dengan bandwidth dan latency dari
komunikasi di antara thread, dan tipe data yang dikomunikasikan. Mekanisme IPC yang didukung oleh
Windows adalah :
Riffa Rufaida 13507007

• Clipboard
Clipboard bertindak sebagai tempat penyimpanan pusat untuk berbagi data di antara aplikasi.
Semua aplikasi mendukung clipboard dalam bentuk format data yang dimengerti oleh aplikasi tersebut.
Saat pengguna melakukan operasi cut atau copy di aplikasi, aplikasi tersebut akan menyimpan data yang
terpilih pada clipboard dalam satu atau lebih standar atau format yang ditentukan oleh aplikasi tersebut.
• COM
Aplikasi yang menggunakan OLE mengatur compound documents –dokumen yang terdiri atas
data dari beberapa macam aplikasi. OLE menyediakan servis yang membuat mudah sebuah aplikasi
untuk melakukan panggilan ke aplikasi lain untuk mengedit data. Pondasi dari OLE adalah Component
Object Model (COM). Komponen perangkat lunak yang menggunakan COM dapat berkomunikasi
dengan berbagai macam komponen lain. Komponen tersebut berinteraksi sebagai objek dan client.
• Data Copy
Data copy dapat digunakan untuk mengirim informasi ke aplikasi lain secara cepat melalui pesan
pada Windows.
• DDE
DDE merupakan protokol yang membuat aplikasi dapat bertukar data dalam berbagai format.
Aplikasi dapat menggunakan DDE untuk satu kali pertukaran data ataupun pertukaran data yang terus–
menerus –yaitu saat aplikasi saling memperbahaui data satu sama lain-. Format data yang digunakan
DDE sama dengan clipboard. DDE dapaat dilihat sebagai perluasan dari mekanisme clipboard. DDE
dimulai dengan komando pengguna, lalu biasanya berlanjut ke fungsi yang tidak melibatkan interaksi
dengan pengguna.
• File Mapping
File mapping merupakan jalan yang efisien untuk dua atau lebih proses pada komputer yang
sama untuk berbagi data, tetapi harus disediakan sinkronisasi di antara proses-proses tersebut. Ini untuk
menghindari kehilangan sebagian data pada lingkungan multitasking.
• Mailslots
Merupakan mekanisme untuk one-way IPC. Aplikasi dapat menyimpan pesan pada mailslots.
Pemilik dari mailslot tersebut dapat membuka pesan yang tersimpan disana. Pesan-pesan ini biasanya
dikirim melalui jaringan kepada sebuah komputer atau semua komputer dalam suatu domain. Domain
adalah sebuah grup dari stasiun kerja dan server yang membagi nama grup.
Mailslot merupakan cara sederhana untuk sebuah proses untuk membagikan pesan ke beberapa
proses. Mailslot membagikan pesan menggunakan datagram. Datagram adalah paket keci informasi
yang jaringan kirimkan melalui kabel. Datagram tidak menyediakan konfirmasi penerimaan, tidak ada
cara untuk menjamin bahwa sebuah datagram telah diterima.
• Pipes
Anonymous pipes. Membuat proses yang saling berelasi mampu melakukan transfer informasi
satu sama lain. Biasanya digunakan untuk mengalihkan standar masukan maupun keluaran dari sebuah
child process sehingga dapat berinteraksi dengan parent process.
Named pipes. Digunakan untuk transfer data di antara proses yang tidak berelasi dan antara
proses di komputer yang berbeda. Umumnya sebuah proses dari named-pipe server membuat sebuah
named-pipe dengan nama yang jelas untuk dikomunikasikan ke client. Proses dari named-pipe client
yang mengetahui nama pipe dapat membuka ujungnya, dan dapat melakukan pertukaran data melalui
operasi pada pipe.
• RPC
RPC membuat aplikasi dapat memanggil fungsi-fungsi yang berelasi. Oleh karena itu, RPC
membuat IPC sama mudahnya dengan pemanggilan fungsi. RPC beroperasi di antara proses pada satu
Riffa Rufaida 13507007

komputer atau jaringan komputer. RPC mendukung konversi data secara otomatis, dan komunikasi
dengan sistem operasi lain.
• Windows Sockets
Windows socket adalah antarmuka yang protokol-independen. Mengambil keuntungan dari
kapabilitas komunikasi yang mendasari protokol. Aplikasi yang menggunakan ini dapat berkomunikasi
dengan implementasi socket lain pada jenis sistem yang berbeda.

Masalah Dining Philosophers


Lima filosofis duduk mengelilingi sebuah meja bundar dan melakukan
satu dari dua hal : makan atau berpikir. Saat makan, mereka tidak
berpikir, dan sebaliknya. Setiap filosofis memiliki sepiring spageti dan
ada sebuah garpu yang diletakkan di antara dua filosofis. Tiap filosofis
harus makan menggunakan dua buah garpu. Saat seorang filosofis
lapar, dia akan berusaha mengambil garpu kanan dan kiri, satu dalam
satu waktu, dengan urutan bebas. Jika sukses mendapatkan dua garpu,
dia akan makan untuk beberapa saat, lalu menyimpan kembali
garpunya, dan mulai berpikir lagi. Para filosofis tidak pernah berbicara satu sama lain, sehingga dapat
timbul terjadinya deadlock di saat semua filosofis memegang garpu kiri dan menunggu garpu kanan,
ataupun sebaliknya. Dapatkah kita menyediakan program untuk setiap filosofis melakukan kegiatannya
tanpa berhenti ?

Kita dapat membuat program dengan cara menambahkan prosedur untuk mengecek apakah garpu yang
satunya masih tersedia. Jika tidak tersedia, filosofis akan menyimpan satu garpu yang telah dia ambil,
menunggu beberapa saat, lalu mengulang kembali keseluruhan proses. Solusi ini masih bisa gagal untuk
alasan yang berbeda. Jika pada suatu saat seluruh filosofis dapat secara tidak sengaja memulai algoritma
tersebut secara bersamaan, seterusnya pun akan bersamaan. Situasi seperti ini, dimana program
berjalan tanpa akhir tapi gagal untuk membuat progres apapun disebut starvation.

Perkembangan dari solusi di atas, dapat menggunakan mutex. Saat akan mengambil garpu, mutex di-
down, saat menyimpan kembali, mutex di-up. Ini memiliki satu kelemahan, bahwa hanya akan ada satu
filosofis yang makan pada satu waktu padahal dengan meja seperti itu, dua filosofis bisa makan
bersamaan.

Solusi yang bebas dari deadlock dan menyediakan angka maksimal untuk filosofis menggunakan array
dan state –untuk mengetahui apakah filosofis sedang makan, berpikir atau lapar (akan mengambil
garpu). Seorang filosofis dapat masuk ke state makan jika tidak ada filosofis di sampingnya yang sedang
makan. Array yang digunakan merupakan array dari semaphore, satu untuk setiap filosofis sehingga
setiap filosofis yang lapar dapat diblok jika garpu sedang dipakai.

Dibuat makro LEFT dan RIGHT yang menyatakan filosofis yang berada di samping kanan dan kiri. Kode
utama ada pada prosedur philosophers, di dalamnya terdapat prosedur take_forks, dan put_forks. Pada
prosedur take_forks mutex di-down, state filosofis menjadi lapar, dan dilakukan pengecekan untuk
mengambil garpu –apakah LEFT dan RIGHT tidak ada yang sedang makan-. Jika bisa mengambil garpu,
pindah ke state makan dan mutex di-up. Setelah makan, masuk ke prosedur put_forks, disini yang terjadi
adalah mutex di-down, masuk ke state berpikir, lalu dilakukan pengecekan ke LEFT dan RIGHT –apakah
ada filosofis yang bisa segera makan-. Setelah itu mutex di-up. Ini dilakukan berulang terus-menerus
menggunakan array filosofis sehingga semua kegiatan filosofis bisa dilakukan tanpa berhenti.