DISTRIBUTED SYSTEMS Concept and Design – Fifth Edition
George Coulouris
Cambridge University
Jean Dollimore
formerly of Queen Mary, University of London
Tim Kindberg
matter 2 media
Gordon Blair
Lancaster University
Pengertian
IPC (Inter-Process Communication) adalah komunikasi antar proses untuk mengirim data dari satu proses ke proses yang lain, baik antar proses dalam satu komputer maupun proses-proses dalam komputer yang berbeda.
Multicast merupakan syarat penting untuk aplikasi didistribusikan dan harus disediakan bahkan jika dukungan yang mendasari untuk IP multicast tidak tersedia. Hal ini biasanya disediakan oleh jaringan overlay dibangun di atas jaringan TCP / IP yang mendasarinya. Jaringan overlay juga dapat memberikan dukungan untuk file sharing, ditingkatkan keandalan dan distribusi konten.
The Message Passing Interface (MPI) adalah standar yang dikembangkan untuk menyediakan API untuk satu set operasi pesan-lewat dengan varian sinkron dan asinkron.
Cara-cara inter proses communication
Sistem Berbagi Memori
Sistem Berbagi Memori atau yang disebut juga sebagai Shared Memory System yaitu salah satu cara komunikasi antar proses mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Pada cara ini pembuat program menentukan alamat danbesar memori yang diperlukan. Pada cara ini, pekerjaan dilakukan efektif karena pda cara ini da pengaturan proses mana yang akan memakai memori dalam waktu tertentu.
Pipe
Pipe adalah komunikasi sequensial antar proses yang saling terelasi dan hanya bisa digunakan untuk komunikasi antar proses yang saling berhubungan serta komunikasinya secara sequensial. Di dalam pipe urutan informasi yang ada, mirip dengan antrian queue. Komunikasi pada pipe hanya mampu digunakan dengan satu arah, dan apa bila kita membutuhkan dua arah komunikasi, maka harus ada dua pipe.
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.
Cara berkomunikasi, ada 2 yaitu:
Pertama komunikasi langsung. Komunikasi langsung adalah (wajah wajah) komunikasi tatap muka. Selain itu, saya menjalankan komunikasi langsung untuk melakukannya di telepon untuk memesan. Jadi Anda dapat mengatakan komunikasi langsung dari interaksi antara manusia langsung manusia dan lainnya.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 link dapat otomatis dibuat, sebuah link berhubungan dengan tepat satu proses komunikasi berpasangan, diantara pasangan itu terdapat tepat satu link, link tersebut biasanya merupakan link komunikasi dua arah.
Kedua komunikasi tidak langsung. Komunikasi tidak langsung adalah komunikasi melalui perantara, untuk mengirim pesan untuk menyampaikan pesan.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 link hanya terbentuk jika beberapa proses membagi kotak surat mereka, sebuah link dapat terhubung dengan banyak proses, setiap pasang proses dapat membagi beberapa link komunikasi, link yang ada dapat merupakan link terarah ataupun link yang tidak terarah.
Contoh kasus komunikasi langsung dan tak langsung:
Contoh komunikasi tidak langsung adalah proses me kompile dan me run sebuah program java di cmd. Pada sa’at proses compile, cmd mengecek dan mengirim pesan yang tak terlihat kepada port notepet++, apakah program java ada kesalahan (eror) apa tidak. Setelah proses pemanggilan itu, notepet++ mengirim balasan pesan(feedbeck) ke cmd, berupa informasi ada apa tidaknya eror program. Jika tidak ada eror, maka proses komunikasi akan berlanjut hingga pe run nan. Dalam proses ini ada ID khusus yang di gunakan. Misalnya proses pemanggilan (compile ) pada setiap bahasa pemograman berbeda itu menunjukkan Id yang berbeda pula.
Contoh komunikasi langsung :
Mengirim pesan singkat lewat handphone, maupun email
Proses komunikasi menggunakan whatsapp, dan media sosial lainnya.
API Untuk Protocol
Internet bagian ini, kita membahas karakteristik umum komunikasi interprocess dan kemudian membahas protokol Internet sebagai contoh, menjelaskan bagaimana programmer dapat menggunakannya, baik dengan cara pesan UDP atau melalui TCP stream.
API untuk Java yang berorientasi objek tetapi mirip dengan yang dirancang awalnya di sistem operasi Berkeley BSD 4.x UNIX; studi kasus pada yang terakhir ini tersedia di situs web untuk buku [www.cdk5.net/ipc].
Karakteristik komunikasi interprocess
Pesan lewat antara sepasang proses dapat didukung oleh dua operasi komunikasi pesan, mengirim dan menerima, didefinisikan dalam hal tujuan dan pesan. Untuk berkomunikasi, satu proses mengirimkan pesan (urutan byte) ke tujuan dan proses lain di tempat tujuan menerima pesan. Kegiatan ini melibatkan komunikasi data dari proses pengiriman ke proses penerima dan mungkin melibatkan sinkronisasi dua proses.
Komunikasi Synchronous dan asynchronous
Antrian A dikaitkan dengan masing-masing tujuan pesan. Proses pengiriman menyebabkan pesan yang akan ditambahkan ke antrian terpencil dan menerima proses menghapus pesan dari antrian lokal. Komunikasi antara mengirim dan menerima proses dapat berupa sinkron atau asinkron. bentuk sinkron Dalamkomunikasi, proses pengiriman dan penerimaan menyinkronkan pada setiap pesan. Dalam hal ini, dan menerima mengirim operasi memblokir. adalah Setiap kalisebuah mengirim dikeluarkan proses pengiriman (atau benang) diblokir sampai sesuai menerima dikeluarkan. Setiap kali menerima dikeluarkan oleh proses (atau benang), itu blok sampai pesan tiba.
Dalam asynchronous bentuk komunikasi, penggunaan send operasi adalah non memblokir dalam proses pengiriman dibiarkan berlanjut segera setelah Pesan telah disalin ke buffer lokal, dan transmisi pesan hasil secara paralel dengan proses pengiriman. Menerima operasi dapat memiliki blocking dan varian non-blocking. Dalam non-blocking varian, proses penerimaan hasil program setelah mengeluarkan menerima operasi, yang menyediakan penyangga untuk diisi di latar belakang, tetapi secara terpisah harus menerima pemberitahuan bahwa buffer telah diisi, dengan pemungutan suara atau mengganggu.
Dalam lingkungan sistem seperti Java, yang mendukung beberapa benang dalam suatu proses tunggal, pemblokiran menerima tidak memiliki kelemahan, untuk itu dapat dikeluarkan oleh satu thread sementara thread lain dalam proses tetap aktif, dan kesederhanaan sinkronisasi benang menerima dengan pesan yang masuk adalah keuntungan besar. Komunikasi non-blocking tampaknya lebih efisien, tetapi melibatkan kompleksitas tambahan dalam proses penerimaan terkait dengan kebutuhan untuk memperoleh pesan yang masuk dari alirannya kontrol. Untuk alasan ini, sistem saat ini umumnya tidak memberikan bentuk blocking non- menerima.
Tujuan Pesan
Sebuah port lokal adalah tujuan pesan dalam komputer, ditetapkan sebagai integer. Sebuah port memiliki tepat satu penerima (port multicast adalah pengecualian) tetapi dapat memiliki banyak pengirim. Proses dapat menggunakan beberapa port untuk menerima pesan. Server umumnya mempublikasikan nomor port mereka untuk digunakan oleh klien. Jika klien menggunakan alamat Internet tetap untuk merujuk ke layanan, maka layanan yang selalu harus dijalankan pada komputer yang sama untuk alamat untuk tetap berlaku. Hal ini dapat dihindari dengan menggunakan pendekatan berikut untuk memberikan transparansi lokasi: program Client merujuk ke layanan dengan nama dan menggunakan nama server atau pengikat untuk menerjemahkan nama mereka ke lokasi server pada runtime. Hal ini memungkinkan layanan yang akan direlokasi tetapi tidak bermigrasi yaitu untuk dipindahkan sementara pada yang sistem yang berjalan.
Keandalan
Bab 2 mendefinisikan komunikasi yang handal dalam hal validitas dan integritas. Sejauh properti validitas yang bersangkutan, layanan pesan point-to-point dapat digambarkan sebagai diandalkan jika pesan dijamin akan disampaikan sejumlah meskipun 'wajar' dari paket yang dijatuhkan atau hilang. Sebaliknya, layanan pesan point-to-point dapat digambarkan sebagai tidak bisa diandalkan jika pesan tidak dijamin akan disampaikan di wajah bahkan satu paket terjatuh atau hilang. . Untuk integritas, pesan harus tiba tidak rusak dan tanpa duplikasi.
Pemesanan
Beberapa aplikasi mengharuskan pesan disampaikan dalam rangka pengirim yaitu urutan di mana mereka dikirim oleh pengirim. Penyampaian pesan dari urutan pengirim dianggap sebagai kegagalan oleh aplikasi tersebut.
Socets
Kedua bentuk komunikasi (UDP dan TCP) menggunakan soket abstraksi, yang menyediakan endpoint untuk komunikasi antara proses. Soket berasal dari BSD UNIX tetapi juga hadir di sebagian besar versi lain dari UNIX, termasuk Linux serta Windows dan Macintosh OS. Interprocess komunikasi terdiri dari transmisi pesan antara soket dalam satu proses dan soket dalam proses lain. Untuk proses untuk menerima pesan, soket harus terikat ke port lokal dan salah satu alamat Internet dari komputer yang berjalan. Pesan yang dikirim ke alamat internet dan nomor port tertentu dapat diterima hanya oleh proses yang soket dikaitkan dengan alamat Internet dan nomor port. Proses dapat menggunakan soket yang sama untuk mengirim dan menerima pesan. Setiap komputer memiliki sejumlah besar dari nomor port yang mungkin untuk digunakan oleh proses lokal untuk menerima pesan. Setiap proses dapat menggunakan beberapa port untuk menerima pesan, namun proses tidak dapat berbagi port dengan proses lain pada komputer yang sama. (Proses menggunakan IP multicast merupakan pengecualian dalam bahwa mereka berbagi port). Namun, sejumlah proses dapat mengirim pesan ke port yang sama. Setiap socket dikaitkan dengan protokol tertentu - baik UDP atau TCP Internet.
Java API untuk alamat Internet • Sebagai paket IP yang mendasari UDP dan TCP dikirim ke alamat Internet, Java menyediakan kelas, InetAddress, yang mewakili alamat Pengguna kelas ini mengacu pada komputer dengan Domain Name System (DNS) nama host (lihat Bagian 3.4.7). Misalnya, contoh InetAddress yang berisi alamat Internet dapat dibuat dengan memanggil metode statis InetAddress,memberikan nama host DNS sebagai argumen. Metode ini menggunakan DNS untuk mendapatkan alamat internet yang sesuai. Misalnya, untuk mendapatkan obyek yang mewakili alamat Internet dari tuan rumah yang DNS nama adalah bruno.dcs.qmul.ac.uk,gunakan:
InetAddress acomputer = InetAddress.getByName ("bruno.dcs.qmul.ac.uk");
Metode ini dapat melempar Unknown Host Exception. Perhatikan bahwa pengguna kelas tidak perlu menyatakan nilai eksplisit dari alamat Internet. Bahkan, kelas merangkum rincian representasi alamat internet. Jadi antarmuka untuk kelas ini tidak tergantung pada jumlah byte yang diperlukan untuk mewakili alamat Internet -. 4 byte dalam IPv4 dan IPv6 dalam 16 byte.
UDP datagram komunikasi
Sebuah datagram dikirim oleh UDP ditransmisikan dari Proses pengiriman ke proses penerima tanpa pengakuan atau mencoba lagi. Jika terjadi kegagalan, pesan mungkin tidak tiba. Sebuah datagram ditransmisikan antara proses ketika satu proses mengirimkannya dan lain menerimanya. Untuk mengirim atau menerima pesan proses pertama harus membuat soket terikat ke alamat Internet dari host lokal dan port lokal. Sebuah server akan mengikat soket ke port server - salah satu yang membuat diketahui klien sehingga mereka dapat mengirimkan pesan itu. Seorang klien mengikat socket untuk port lokal gratis. Menerima metode mengembalikan alamat Internet dan port pengirim, selain pesan, yang memungkinkan penerima untuk mengirim balasan datagram.
Model Kegagalan untuk UDP datagram
Bab 2 menyajikan model kegagalan untuk saluran komunikasi dan mendefinisikan komunikasi yang handal dalam hal dua sifat : integritas dan validitas. Properti integritas mengharuskan pesan tidak boleh rusak atau digandakan. Penggunaan checksum memastikan bahwa ada kemungkinan diabaikan bahwa setiap pesan yang diterima rusak. UDP datagram menderita kegagalan berikut:
Kegagalan kelalaian : Pesan dapat turun kadang-kadang, baik karena kesalahan checksum atau karena tidak ada ruang buffer yang tersedia di sumber atau tujuan. Untuk mempermudah pembahasan, kita menganggap kirim-kelalaian dan menerima-kelalaian kegagalan sebagai kegagalan kelalaian dalam saluran komunikasi.
Pengurutan : Pesan kadang-kadang dapat disampaikan rusak pengirim sendiri.
Aplikasi menggunakan datagram UDP yang tersisa untuk memberikan mereka pemeriksaan untuk mencapai kualitas komunikasi yang handal yang mereka butuhkan. Sebuah layanan pengiriman yang handal dapat dibangun dari satu yang menderita kegagalan kelalaian dengan menggunakan ucapan terima kasih.
Penggunaan UDP
Untuk beberapa aplikasi, dapat diterima untuk menggunakan layanan yang bertanggung jawab terhadap kegagalan kelalaian sesekali. Sebagai contoh, Domain Name System, yang terlihat nama-nama DNS di Internet, dilaksanakan atas UDP. Voice over IP (VOIP) juga berjalan di atas UDP. Datagrams UDP kadang-kadang pilihan yang menarik karena mereka tidak menderita dari overhead yang terkait dengan pengiriman pesan dijamin. Ada tiga sumber utama overhead :
kebutuhan untuk menyimpan informasi negara di sumber dan tujuan;
transmisi pesan tambahan;
latency untuk pengirim;
Java API UDP datagram
Java API menyediakan datagram komunikasi dengan cara dua kelas : Datagram Packet dan Datagram Socket.
DatagramPacket : Kelas ini menyediakan konstruktor yang membuat sebuah instance dari array byte yang terdiri pesan, panjang pesan dan alamat Internet dan nomor lokal port soket tujuan, sebagai
Datagram packet
array byte yang mengandung panjang pesan dari Internet nomor pesan alamat port
Sebuah contoh dari DatagramPacket dapat ditularkan antara proses ketika satu proses mengirimkannya dan lain berikut menerimanya.
Class ini menyediakan konstruktor lain untuk gunakan ketika menerima pesan. Argumen menentukan array byte di mana untuk menerima pesan dan panjang array. Sebuah pesan yang diterima diletakkan di DatagramPacket bersama-sama dengan panjangnya dan alamat Internet dan port dari soket pengiriman. Pesan dapat diambil dari cara DatagramPacket dengan metode getData. Metode getPort dan getAddress mengakses port dan alamat Internet.
No comments:
Post a Comment