REVIEW DAN REVISI BUKU
¾ Anggota Kelompok
Fani Jasmine Bahar(0606101326, Kelas B)
Fatimah(0606104246, Kelas A)
Muhammad Ghafur AWS(0606031515, Kelas B)
Winda Sagita (0606104353, Kelas A)
¾ Komentar Umum
Bab Konsep Interaksi secara umum membahas mengenai bagaimana beberapa
proses itu saling berhubungan dan bekerja sama. Adapun caranya bisa melalui
shared memory atau message passing. Bab ini sangat menarik karena kita bisa
melihat implementasinya secara langsung, misalnya dalam sistem client-server.
Dan penulis sudah menjelaskan tiap bagian dengan baik, tetapi tidak terlalu
banyak gambar yang dapat membantu pemahaman pembaca.
¾ Hubungan dengan bab sebelumnya
Kaitan dengan Bab 16 Evaluasi dan Ilustrasi sama sekali tidak ada, karena sudah
merupakan bagian yang berbeda. Bab 17 Konsep Interaksi termasuk pada Bagian
Proses dan Sinkronisasi, sedangkan Bab 16 Evaluasi dan Ilustrasi termasuk pada
Bagian Proses dan Penjadwalan.
¾ Hubungan dengan bab setelahnya
Terdapat hubungan pada Bab 17 Konsep Interaksi dan Bab 18 Sinkronisasi. Pada
bab 17 menerangkan bagaimana hubungan antar proses untuk saling
berkomunikasi dan bekerja sama. Dan pada bab 18 menerangkan sinkronisasi
sangat diperlukan dalam proses interaksi, dimana sinkronisasi berguna untuk
mencegah ketidakkonsistenan data ketika diakses secara konkuren.
¾ Komentar Kelengkapan per subbab
17.1 Pendahuluan
Subbab ini sudah cukup jelas, penulis sudah menjelaskan gambaran umum
tentang konsep interaksi. Dan sudah menggambarkan beberapa hal yang akan
dibahas selanjutnya seperti client-server dan RPC.
17.2 Komunikasi Antar Proses
Pada subbab ini menjelaskan bahwa komunikasi antar proses dapat dilakukan
dengan cara sistem berbagi memori dan sistem berkirim proses. Penulis sudah
jelas menerangkan subbab ini, tetapi penerapan sistem berkirim pesan kurang
contoh implementasinya, dan kami akan mencoba melengkapinya.
17.3 Sinkronisasi
Pada subbab ini penulis sudah menerangkan dengan jelas bahwa sinkronisasi
diperlukan pada komunikasi antar proses.
17.4 Penyangga
Penulis juga sudah menjelaskan dengan baik bahwa penyangga sangat
diperlukan, karena penukaran pesan antar proses membutuhkan tempat untuk
antrian.
17.5 Client/Server
Penulis menjelaskan apa itu Client/Server, tetapi kurang memberikan gambar,
karena dengan gambar membantu pemahaman pembaca.
17.6 RPC
Penulis menjelaskan apa itu RPC, tetapi kurang memberikan gambar, karena
dengan gambar membantu pemahaman pembaca.
17.7 Deadlock dan Starvation
Penjelasan mengenai deadlock dan starvation sudah dapat dimengerti pembaca
dengan baik.
17.7 Rangkuman
Sudah menrangkum dari semua subbab yang ada.
¾ Komentar dan Usul Kelengkapan Secara Umum
Secara umum materi yang sudah ada pada bab ini sudah bagus namun
rasanya akan lebih baik jika misalnya ditambahkan ilustrasi tambahan pada
subbab komunikasi antar proses, sistem client-server dan RPC. Sedangkan
pada subbab deadlock dan starvation ilustrasi yang diberikan sudah bagus dan
mampu memudahkan kita untuk memahami konsepnya.
APPENDIX : HASIL REVISI
Bab 17. Konsep Interaksi
17.1 Pendahuluan
Dalam bab ini kita akan mengulas bagaimana hubungan antar proses dapat
berlangsung, misalnya bagaimana beberapa proses dapat saling berkomunikasi dan
bekerja sama, pengertian sinkronasi dan penyangga, sistem client-server dan RPC,
serta penyebab deadlock dan starvation.
Sinkronisasi diperlukan untuk menghindari terjadinya ketidakkonsistenan data akibat
adanya akses data secara konkuren. Proses-proses disebut konkuren jika proses-proses
itu ada dan berjalan pada waktu yang sama, proses-proses konkuren ini bisa bersifat
independen atau bisa juga saling berinteraksi. Proses-proses konkuren yang saling
berinteraksi memerlukan sinkronisasi agar terkendali dan juga menghasilkan output
yang benar.
17.2 Komunikasi Antar Proses
Sistem Berbagi Memori
Sistem Berbagi Memori atau yang disebut juga sebagai Shared Memory System
merupakan salah satu cara komunikasi antar proses dengan cara mengalokasikan
suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan besar
alokasi memori yang digunakan biasanya ditentukan oleh pembuat program. Pada
metode ini, sistem akan mengatur proses mana yang akan memakai memori pada
waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.
Sistem Berkirim Pesan
Sistem berkirim pesan adalah proses komunikasi antar bagian sistem untuk membagi
variabel yang dibutuhkan. Proses ini menyediakan dua operasi yaitu mengirim pesan
dan menerima pesan. Ketika dua bagian sistem ingin berkomunikasi satu sama lain,
yang harus dilakukan pertama kali adalah membuat sebuah link komunikasi antara
keduanya. Setelah itu, kedua bagian itu dapat saling bertukar pesan melalui link
komunikasi tersebut.
Sistem berkirim pesan sangat penting dalam sistem operasi. Karena dapat
diimplementasikan dalam banyak hal seperti pembagian memori, pembagian bus, dan
melaksanakan proses yang membutuhkan pengerjaan bersama antara beberapa bagian
sistem operasi.
Terdapat dua macam cara berkomunikasi, yaitu:
1.
Komunikasi langsung. Dalam komunikasi langsung, setiap proses yang ingin
berkirim pesan harus mengetahui secara jelas dengan siapa mereka berkirim
pesan. Hal ini dapat mencegah pesan salah terkirim ke proses yang lain.
Karakteristiknya antara lain:
a. Link dapat otomatis dibuat
b. Sebuah link berhubungan dengan tepat satu proses komunikasi
berpasangan
c. Diantara pasangan itu terdapat tepat satu link
d. Link tersebut biasanya merupakan link komunikasi dua arah
2.
Komunikasi tidak langsung. Berbeda dengan komunikasi langsung, jenis
komunikasi ini menggunakan sejenis kotak surat atau port yang mempunyai ID
unik untuk menerima pesan. Proses dapat berhubungan satu sama lain jika
mereka membagi port mereka. Karakteristik komunikasi ini antara lain:
a. Link hanya terbentuk jika beberapa proses membagi kotak surat
mereka
b. Sebuah link dapat terhubung dengan banyak proses
c. Setiap pasang proses dapat membagi beberapa link komunikasi
d. Link yang ada dapat merupakan link terarah ataupun link yang tidak
terarah
Dengan komunikasi tidak langsung pesan akan dikirimkan pada dan diterima dari atau
melalui mailbox. Setiap mailbox memiliki sebuah identifikasi yang unik, sebuah
proses dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari
mailbox yang berbeda. Dua proses dapat saling berkomunikasi apabila kedua proses
tersebut sharing mailbox.
Contoh mailbox:
import java.util.*;
public class MessageQueue
{
private Vector q;
public MessageQueue()
{q = new Vector();}
//mengimplimentasikan pengiriman nonblocking
public void send( Object item )
{q.addElement( item );}
//mengimplimentasikan penerimaan nonblocking
public Object receive(){
Object item;
if ( q.size()==0 ) {return null;}
else{
item = q.firstElement();
q.removeElementAt(0);
return item;}
}
}
Program pada contoh diatas menunjukkan bahwa mailbox sering kali
diimplementasikan dengan menggunakan antrian (queue). Mengirim dan menerima
pesan dalam mailbox merupakan operasi yang fleksibel. Bila ketika mengirim queue
dalam keadaan kosong, pesan dapat langsung dicopy. Sedangkan bila queue dalam
keadaan penuh, pengirim punya 4 pilihan dalam menanggapi hal itu yaitu:
1.
2.
3.
4.
Menunggu samapi batas waktu yang tidak dapat ditentukan sampai terdapat
ruang kosong pada mailbox.
Menunggu paling banyak n milidetik.
Tidak menunggu, tetapi kembali (return) secepatnya.
Satu pesan dapat diberikan kepada sistem operasi untuk disimpan, walaupun
mailbox yang dituju penuh. Ketika pesan dapat disimpan pada mailbox, pesan
akan dikembalikan kepada pengirim (sender). Hanya satu pesan kepada mailbox
yang penuh yang dapat diundur (pending) pada suatu waktu unutk dijadikan
kepada thread pengirim.
17.3 Sinkronisasi
Komunikasi antara proses membutuhkan subroutine untuk mengirim dan menerima
data primitif. Terdapat desain yang berbeda-beda dalam implementasi setiap primitif.
Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking
(nonblocking) - juga dikenal dengan nama sinkron atau asinkron.
Ketika dalam keadaan sinkron, terjadi dua kejadian:
1.
2.
Blocking send. Pemblokiran pengirim sampai pesan sebelumnya diterima.
Blocking receive. Pemblokiran penerima sampai terdapat pesan yang akan
dikirim.
Sedangkan untuk keadaan asinkron, yang terjadi adalah:
1.
Non-blocking send . Pengirim dapat terus mengirim
memperdulikan apakah pesan sebelumnya sampai atau tidak.
Gambar 17.1. Non-blocking send
pesan
tanpa
2.
Non-blocking receive . Penerima menerima semua pesan baik berupa pesan
yang valid atau pesan yang salah (null).
Gambar 17.2.Non-blocking receive
17.4 Penyangga
Dalam setiap jenis komunikasi, baik langsung atau tidak langsung, penukaran pesan
oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga cara untuk
mengimplementasikan antrian tersebut:
1.
Kapasitas Nol. Antrian mempunyai panjang maksimum nol, sehingga tidak ada
penungguan pesan (message waiting). Dalam kasus ini, pengirim harus
memblok sampai penerima menerima pesan.
2.
Kapasitas Terbatas. Antrian mempunyai panjang yang telah ditentukan, paling
banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan
dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat
melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika
link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.
3.
Kapasitas Tak Terbatas. Antrian mempunyai panjang yang tak terhingga,
sehingga semua pesan dapat menunggu disini. Pengirim tidak akan pernah di
blok.
17.5 Client/Server
Dengan makin berkembangnya teknologi jaringan komputer, sekarang ini ada
kecenderungan sebuah sistem yang menggunakan jaringan untuk saling berhubungan.
Dalam jaringan tersebut, biasanya terdapat sebuah komputer yang disebut server, dan
beberapa komputer yang disebut client. Server adalah komputer yang dapat
memberikan service ke server, sedangkan client adalah komputer yang mengakses
beberapa service yang ada di client. Ketika client membutuhkan suatu service yang
ada di server, dia akan mengirim request kepada server lewat jaringan. Jika request
tersebut dapat dilaksanakan, maka server akan mengirim balasan berupa service yang
dibutuhkan untuk saling berhubungan menggunakan Socket.
Gambar 17.3.Client/Server
1.
Karakteristik Server
a. Pasif
b.
Menunggu request
c.
Menerima request, memproses mereka dan mengirimkan balasan berupa
service
2.
Karakteristik Client
a.
Aktif
b.
Mengirim request
c.
Menunggu dan menerima balasan dari server
Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses
atau thread berkomunikasi dengan membangun sepasang socket, yang masing-masing
proses memilikinya. Socket dibuat dengan menyambungkan dua buah alamat IP
melalui port tertentu. Secara umum socket digunakan dalam client/server system,
dimana sebuah server akan menunggu client pada port tertentu. Begitu ada client yang
menghubungi server maka server akan menyetujui komunikasi dengan client melalui
socket yang dibangun.
Sebagai contoh sebuah program web browser pada host x (IP 146.86.5.4) ingin
berkomunikasi dengan web server (IP 152.118.25.15) yang sedang menunggu pada
port 80. Host x akan menunjuk sebuah port. Dalam hal ini port yang digunakan ialah
port 1655. Sehingga terjadi sebuah hubungan dengan sepasang socket
(146.86.5.4:1655) dengan (152.118.25.15:80).
17.6 RPC
Remote Procedure Call (RPC) adalah sebuah metode yang memungkinkan kita untuk
mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat melakukan ini
sebuah server harus menyediakan layanan remote procedure. Pendekatan yang
dilakuan adalah sebuah server membuka socket, lalu menunggu client yang meminta
prosedur yang disediakan oleh server. Bila client tidak tahu harus menghubungi port
yang mana, client bisa me-request kepada sebuah matchmaker pada sebuah RPC port
yang tetap. Matchmaker akan memberikan port apa yang digunakan oleh prosedur
yang diminta client.
Gambar 17.4 .RFC
RPC masih menggunakan cara primitif dalam pemrograman, yaitu menggunakan
paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan
banyak remote procedure. RPC menggunakan socket untuk berkomunikasi dengan
proses lainnya. Pada sistem seperti SUN, RPC secara default sudah ter-install
kedalam sistemnya, biasanya RPC ini digunakan untuk administrasi sistem. Sehingga
seorang administrator jaringan dapat mengakses sistemnya dan mengelola sistemnya
dari mana saja, selama sistemnya terhubung ke jaringan.
17.7 Deadlock dan Starvation
Gambar 17.1. Dead Lock
Deadlock. Deadlock adalah suatu kondisi dimana dua proses atau lebih saling
menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Karena
beberapa proses itu saling menunggu, maka tidak terjadi kemajuan dalam kerja
proses-proses tersebut. Deadlock adalah masalah yang biasa terjadi ketika banyak
proses yang membagi sebuah resource yang hanya boleh dirubah oleh satu proses saja
dalam satu waktu. Di kehidupan nyata, deadlock dapat digambarkan dalam gambar
berikut. Pada gambar diatas, deadlock dianalogikan sebagai dua antrian mobil yang
akan menyeberangi jembatan. Dalam kasus diatas, antrian di sebelah kiri menunggu
antrian kanan untuk mengosongkan jembatan (resource), begitu juga dengan antrian
kanan. Akhirnya tidak terjadi kemajuan dalam kerja dua antrian tersebut. Misal ada
proses A mempunyai resource X, proses B mempunyai resource Y. Kemudian kedua
proses ini dijalankan bersama, proses A memerlukan resource Y dan proses B
memerlukan resource X, tetapi kedua proses tidak akan memberikan resource yang
dimiliki sebelum proses dirinya sendiri selesai dilakukan. Sehingga akan terjadi
tunggu-menunggu.
Starvation. Starvation adalah kondisi yang biasanya terjadi setelah deadlock. Proses
yang kekurangan resource (karena terjadi deadlock) tidak akan pernah mendapat
resource yang dibutuhkan sehingga mengalami starvation (kelaparan). Namun,
starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam
sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu
mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya.
Ilustrasi starvation tanpa deadlock di dunia nyata dapat dilihat di bawah ini. Pada
gambar diatas, pada antrian kanan terjadi starvation karena resource (jembatan) selalu
dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran.
Rangkuman
Dalam menjalankan fungsinya dalam sistem operasi, dibutuhkan interaksi antara
beberapa proses yang berbeda. Interaksi tersebut bertujuan agar terjadi
kesinambungan antar proses yang terjadi sehingga sistem operasi dapat berjalan
sebagaimana mestinya. Interaksi tersebut dapat melalui sistem berbagi memori atau
dengan cara saling berkirim pesan. Terkadang, beberapa pesan yang dikirim tidak
dapat diterima seluruhnya oleh penerima dan menyebabkan informasi yang lain
menjadi tidak valid, maka dibutuhkanlah sebuah mekanisme sinkronasi yang akan
mengatur penerimaan dan pengiriman pesan sehingga kesalahan penerimaan pesan
dapat diperkecil. Pesan yang dikirim dapat ditampung dalam penyangga sebelum
diterima oleh penerima.
Interaksi antar proses dapat juga terjadi antara proses yang memiliki sistem berbeda.
Dalam interaksi tersebut dikenal sebutan client dan server yang memungkinkan
sistem yang berbeda untuk berinteraksi dengan menggunakan socket. Dalam interaksi
tersebut dikenal juga RPC (Remote Procedure Call) yaitu metode yang
memungkinkan sebuah sistem mengakses prosedur sistem lain dalam komputer
berbeda.
Dalam interaksi antar proses, terkadang suatu proses saling menunggu proses yang
lain sebelum melanjutkan prosesnya, sehingga proses-proses tersebut saling
menunggu tanpa akhir, hal ini disebut deadlock. Jika deadlock terjadi dalam waktu
lama, maka terjadilah starvation, yaitu suatu proses tidak mendapatkan resource yang
dibutuhkan.
Rujukan
[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating
Systems Concepts. Seventh Edition. John Wiley & Sons.
[WEBFSF1991a] Free Software Foundation. 1991. GNU General Public License –
http://gnui.vLSM.org/ licenses/ gpl.txt . Diakses 29 Mei 2006.
[WEBWIKIA] Wikipedia. http://en.wikipedia.org/wiki/Client_%28computing%29 .
Diakses 24 Mei 2007.
[WEBWIKIB] Wikipedia. http://en.wikipedia.org/wiki/Server_%28computing%29 .
Diakses 24 Mei 2007.
[WEBWIKIC] Wikipedia. http://en.wikipedia.org/wiki/Client_server . Diakses 24
Mei 2007.
[WEBJANVI] Janvin http://www.javvin.com/protocolRPC.html. Diakses 1 April
2008.
[WEBJAVA] Javaworld http://www.javaworld.com/javaworld/jw-10-2001/jw-1019jxta.html. Diakses 1 April 2008.