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.