Interactive IA. Kelas Interaktif menggunakan aturan yang sama dengan aturan dengan kelas

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

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 119 dapat diblok blocking atau tidak dapat dibloking nonblocking - juga dikenal dengan nama sinkron atau asinkron. Ketika dalam keadaan sinkron, terjadi dua kejadian: 1. Blocking send . Pemblokiran pengirim sampai pesan sebelumnya diterima.

2. 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 pesan tanpa memperdulikan apakah pesan sebelumnya sampai atau tidak.

2. Non-blocking receive . Penerima menerima semua pesan baik berupa pesan yang valid atau

pesan yang salah null.

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. ClientServer

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. 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 clientserver 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. 120