Monday 10 March 2014

Interprocess Communication 1

No comments

1. Tentang pengenalan

IPC (Inter-process Communication)
Inter-Process Communication (IPC), adalah mekanisme pertukaran data antara satu proses dengan proses lainnya, baik itu proses yang berada di dalam komputer yang sama ataupun komputer yang berbeda terhubung melalui sebuah jaringan.
IPC dapat dilakukan dengan berbagai metode diantaranya:
  • Files, adalah sebuah record yang disimpan dalam disk yang dapat diakses oelh setiap proses. Metode ini dapat dijalankan di kebanyakan OS.
  • Signal, adalah komunikasi yang menggunakan perintah untuk mengirim dari satu proses ke proses lainnya. Metode ini dapat dijalankan di kebanyakan OS.
  • Socket, Sebuah aliran data yang dikirim melalui interface jaringan, baik untuk proses yang berbeda pada komputer yang sama atau komputer lain. Metode ini dapat dijalankan di kebanyakan OS.
  • Message Queue, adalah sebuah data stream anonim yang mirip dengan metode Pipe, tetapi Message Queue menyimpan dan mengambil informasi dalam bentuk packets. Metode ini dapat dijalankan di kebanyakan OS.
  • Pipe, adalah sebuah aliran data dua arah yang dihubungkan melalui standar input (stdin) dan output (stdout) dan membaca karakter demi karakter. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.
  • Named Pipe, adalah implementasi Pipe melalui sebuah file pada sistem file, bukan melalui standar input dan output. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.
  • Semaphore, adalah sebuah struktur sederhana yang mensinkronisasikan thread atau proses yang bekerja pada sumber daya yang sama. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.
  • Shared Memory, adalah proses yang memiliki akses ke memori yang sama, sehingga memungkinkan semua proses untuk mengubah dan membaca perubahan yang dilakukan oleh suatu proses. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.
  • Message Passing, adalah proses komunikasi antar bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan dua operasi yaitu mengirim pesan dan menerima pesan. Bila dua buah sistem ingin berkomunikasi satu sama lain, maka harus dibuat sebuah link komunikasi antara kedua sistem tersebut. Setelah itu, kedua bagian itu dapat saling bertukar pesan melalui link komunikasi tersebut. Metode ini digunakan di paradigma MPI, Java RMI, CORBA, DDS, MSMQ, Mailslots, QNX.
  • Memory-mapped File, adalah sebuah file yang dipetakan ke RAM dan dapat dimodifikasi dengan mengubah alamat memori secara langsung. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.

Application Programming Interface

Atau bisa kita sebut API, API adalah sebuah adalah sekumpulan perintah, fungsi, dan protocol yang bisa digunakan pengembang software untuk membagun perangkat lunak tertentu. API menyediakan bahan yang biasa diolah seperti perintah dasar, contohnya membuat windows atau tombol. Selain itu, API juga biasa digunakan untuk perintah lanjutan.
Pada sistem terdistribusi API digunakan sebagai penanganan proses send and receive atau singkatnya yaitu melakukan proses komunikasi. terdapat beberapa karakteristik IPC menggunakan API ini
a. Synchronous and asynchronous communication Pada bentuk komunikasi synchronous pengiriman dan penerimaan proses sinkronisasi terjadi pada setiap pesan, pada kasus ini kedua receiver dan sender menggunakan operasi blocking, maksud dari blocking disini adalah sender tidak akan melakukan proses sebelum receiver sinyal bahwa pesan yang dikirim sudah diterima, sedangkan dari segi receiver, maka receiver tidak akan menerima pesan dari sender lain selama pesan dari sender sebelumnya diterima. Sedangkan pada bentuk komunikasi asynchronous menggunakan operasi sender non-blocking, penjelasan tentang operasi non-blocking adalah sender tidak akan mengirim pesan lain sebelum pesan yang sebelumnya diterima oleh receiver. untuk receiver bisa menggunakan operasi blocking atau non-blocking.
b. Message destinations Dengan konsep message destination ini pengirim harus tahu sampai pada tingkat port, karena sebuah penerima bisa saja memiliki banyak pengirim, sehingga untuk mengefektifkan terdapat banyak port untuk menerima data.
c. Reliability Pada karakteristik ini muncul akibat dari banyak terjadinya paket kiriman data yang hilang atau packet lost, maka dari itu bagaimana membuat pesan yang dikirim harus reliable atau handal. faktor validitas dan integritas juga mempengaruhi realible ini.
d. Ordering Pada dasarnya sebuah data pesan sebelum dikirim akan dipecah menjadi bentuk paket-paket dan dikirim secara independen. maka dari itu ordering atau pengurutan paket diperlukan agar ketika penggabungan pada penerima tidak terjadi eror.
SOCKET
Socket adalah interface pada jaringan yang menjadi titik komunikasi antarmesin pada Internet Protocol, dan tentunya tanpa komunikasi ini, tidak akan ada pertukaran data dan informasi jaringan. Socket terdiri dari elemen-elemen utama sebagai berikut:
(1)    Protokol.
(2)    Local IP.
(3)    Local Port.
(4)    Remote IP.
(5)    Remote Port.
Komunikasi socket jaringan memang tidak mengenal lelah, pertukaran data terjadi terus-menerus dan memegang peranan vital.
Bayangkan sebuah server game online yang berkomunikasi tanpa henti, dimainkan oleh entah berapa banyak client yang tersebar. Ini merupakan salah satu contoh aplikasi dari sekian banyak aplikasi yang menggunakan socket jaringan untuk saling berkomunikasi dan bertukar data.

UDP, singkatan dari User Datagram Protocol, adalah salah satu protokol lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP.
Gambar diatas merupakan datagram yang disediakan oleh Java API
TCP (Transmission Control Protocol)
Adalah sekelompok protocol yang mengatur komunikasi data komputer di Internet. Komputer-komputer yang terhubung ke internet berkomunikasi dengan protocol ini. Karena menggunakan bahasa yang sama, yaitu protocol TCP/IP, perbedaan jenis komputer dan system operasi tidak menjadi masalah. Komputer PC dengan system Operasi Windows dapat berkomunikasi dengan komputer Macintosh atau dengan Sun SPARC yang menjalankan Solaris. Jadi, jika sebuah komputer menggunakan protocol TCP/IP dan terhubung langsung ke Internet, maka komputer tersebutdapat berhubungan dengan komputer di belahan dunia manapun yang juga terhubung ke Internet.
Dalam TCP steam communication ada beberapa hal yang di tangani, Message sizes, Flow control, Message duplication and ordering, Message destinations



Eksternal Data Representation and Marshalling
Informasi yang disimpan pada program yang sedang berjalan disebut struktur data. Dimana untuk pengiriman struktur data perlu dilakukan pengubahan kedalam bentuk urutan bytes sebelum dikirim dan diubah kembali menjadi struktur data ketika sudah sampai ditujuan. Pengiriman data pada awal waktu sangat sulit dilakukan, karena tiap data memiliki masing-masing tipe seperti bilangan terdapat interger dan float, bahkan pada integer sendiri terbagi menjadi 2 jenis tipe instruksi (big-endian dan little-endian), oleh karena itu pada saat ini mulai dilakukan penyetaraan metode pengiriman data yang memungkinkan dua komputer untuk dapat saling bertukar data (data biner) :
1. Pesan diubah menjadi bentuk lain yang telah disepakati kedua belah pihak sebelum dikirim dan kemudian diubah kedalam bentuk masing-masing lagi setelah sampai ditujuan.
2. Pesan menggunakan format si pengirim, kemudian baru si penerima mengubahnya.
Namun secara keseluruhan poin 1 adalah yang digunakan, sehingga penggunaan standar eksternal dalam merepresentasikan struktur data disebut external data representation. Sedangkan Marshalling adalah penyusunan item data (translation) kedalam bentuk yang cocok untuk proses pengiriman dan unmarshalling adalah pengubahan susunan item data (generation) tadi pada sisi penerima.

Tiga pendekatan alternatif kepada External Data Representation dan Marshalling diantaranta :
1. Bentuk Umum Data Corba = fokus dengan representasi eksternal untuk jenis terstruktur dan primitif yang dapat dilalui sebagai argumen dan hasil metode remote doa di CORBA.
2. Serialisasi objek Java = fokus terhadap perataan dan representasi data eksernal dari objek single atau pohon objek yang mungkin dibutuhkan untuk dikirim dalam pesan  atau disimpan dalam disk.
3. XML (Extensible Markup Language) = mendefnisikan format textual untuk representasi struktur data.
A. CORBA’S Common Data Representation (CDR)
CORBA CDR adalah representasi data eksternal. CDR dapat merepsentasikan semua tipe data yang dapat digunakan sebagai argument dan nilai keluaran dalam remote invocation. Terdapat 15 tipe primitif dalam CDR yaitu :
- shot (16 bit) - double - float
- long (32 bit) - char - any
- unsigned long - boolean - octect
- unsigned short - tipe komposit
Setiap argumen atau hasil dari pengaturan permintaan direpsentasikan dalam urutan byte dalam permintaan atau hasil pesan. Dalam tipe primitif, CDR menjelaskan sebuah representasi untuk permintaan big-endian dan little-endian, dengan nilai yang dikirimkan menyesuaikan dengan si pengirim. Si penerima akan mengubah pesan tersebut apabila membutuhkan instruksi yang berbeda. Sedangkan dalam tipe Constructred, merupakan nilai primitif yang meliputi setiap tipe pembentuknya dimasukkan kedalam baris byte. Contohnya :
Merupakan 3 field pada struct person, dimana setiap barisnya terdiri dari 4 byte yang mana diasumsikan 1 byte mewakili 1 karakter. Operasi marshalling pada contoh ini dapat dengan otomatis tergenerate / terbentuk dari spesifikasi tipe data yang dikirimkan melalui pesan. Tipe dari struktur data dan tipe dari basis data dijelaskan pada COBRA IDL. Contohnya :
struct Person {
string name;
string place;
unsigned long  year;
}
B. Java Object Serialization
Pada Java RMI, kedua objek dan nilai data primitif mungkin akan di kirim sebagai argumen dan hasil dari method permintaan. Objek adalah sebuah contoh/kejadian pada class Java. Contoh Java class yang setara dengan struct person yang didefinisikan dengan COBRA IDL :
Kondisi kelas tersebut mengimplementasikan Serializable interface, dengan tanpa method yang memungkinkan instance nya di serialkan. Serializable dalam java memiliki arti aktifitas menyetarakan sebuah objek atau sekumpulan objek yang terhubung kedalam bentuk yang serial yang memungkinkan untuk disimpan atau dikirimkan melalui pesan.
Pada objek Java dapat memiliki ikatan terhadap objek lain. Ketika sebuah objek di serialkan, maka semua objek yang memiliki hubungan dengannya akan diserialkan ini bertujuan agar ketika objek dibentuk ulang di tujuan (sisi penerima), semua yang berhubungan dengan objek tersebut akan masih terhubung.
Untuk menserialkan objek, informasi dari class objek tersebut harus dituliskan, diikuti dengan tipe dan nama variabel instancenya. Jika variabel instancenya mengacu pada class yang baru maka akan dilakukan hal yang sama, terus menerus hingga tidak terdapat lagi variabel yang mengacu pada suatu class. Setiap kelas memilik penangannannya dan tidak ada class yang ditulis lebih dari satu kali kedalam aliran byte.

Serialization pada objek Java menggunakan refleksi untuk menemukan nama kelas dari objek yang akan diserialkan beserta nama, tipe, dan nilai dari variabel instance. Sedangkan pada sisi Deserialization, nama class pada bentuk serial digunakan untuk membentuk ulang sebuah class dengan objek yang memiliki nama, tipe, serta nilai instancenya sesuai dengan yang diserialkan sebelumnya.

C. Extensible Markup Language (XML)
XML adalah bahasa markup yang didefinisikan oleh World Wide Web Consortium untuk penggunaan Web. Bahasa markup secara umum mengacu pada pengkodingan textual yang merepsentasikan sebuah text dan detail sebagai strukturnya. XML dan HTML diturunkan dari SGML (Standardized Generalized Markup Language), sebuah bahasa markup yang sangat sulit. HTML didesain untuk tampilan dari sebuah web, sedangkan XML didesain untuk menulis struktur dokumen untuk sebuah web.
Item data XML di tag dengan string “markup”. Tag ini berfungsi untuk menjelaskan struktur logika dari data dan asosiasi passangan nilai atribut dengan struktur logika. Dimana penggunaan tag ini berbeda dengan HTML yang berfungsi untuk menspesifikasikan bagaimana sebuah browser dapat menampilkan teks. Fungsi dari XML itu sendiri adalah untuk memungkinkan komunikasi antara client dengan web service, pendefinisian interface, serta properti web lainnya.
Contoh dari XML untuk kasus struct person :
Pada XML ini terdiri dari tag dan karater data. Karakter data adalah sebuah data pada contoh diatas adalah “Smith” atau “1984”, dan dokumen XML diapit oleh 2 buah tag contohnya adalah dengan

Element dan atribut pada XML
1. Element : Merupakan data yang diapit oleh kedua tag. Contohnya : Smith
2. Atribut : Merupakan pemberian id/label terhadap data. Contohnya : id=”123456”
3. Nama : Nama dari tag dan attribut dapat diawali dengan garis bawah / sama dengan, yang dilanjutkan dengan huruf,angka, dll. Namun tidak bisa mengawali dengan kata “xml”.
4. Data Biner : Perepsentasian data kedalam biner menggunakan basis 64 dengan hanya mampu mengenkripsi karakter aplhanumerik ditambah dengan +,/ dan =.
Parsing dan bentuk dokumen
Bentuk dokumen umum yang benar adalah .. dan ... Selain itu maka akan muncul fatal error.
1. CDATA, untuk penguraian konten dari elemen karena mungkin mengandung struktur bersarang. Kemudian untuk spesial karakter dapat juga menggunakan CDATA. Sebagai contoh :
2. XML Prolog,s etiap dokumen XML harus memiliki prolog / pendahuluan yang memiliki paling tidak spesifikasi dari versi XML. Dapat juga ditambah dengan jenis encoding dll. Contoh
XML namespaces
Adalah sekumpulan nama untuk koleksi dari tipe element dan attribut yang tujukan dengan URL. Dokumen XML lain dapat menggunakan XML namespaces dengan mangacu ke URLnya. Contoh :
XML Schemas
Menjelaskan tentang elemen dan atribut yang dapat muncul dalam dokumen tersebut, bagaimana elemen di sarangkan. Contoh :
D. Remote Object References
adalah sebuah pengidentifikasi untuk remote objek yang cocok dalam sebuah sistem terdistribusi. Remote objek digunakan ketika client meminta sebuah method melalui sebuah server dengan menggunakan remote objek. Remote Object References haruslah unik karena banyak client yang menggunakan metode ini untuk miminta objek. Ada beberapa cara untuk membuat teknik ini menjadi unik, diantaranya adalah menggabungkan alamat IP user dengan nomer port dari proses yang dibentuk, ditambah dengan waktu pembentukan proses dan sebuah nomor objek lokal (nomor proses pembentukan objek).

No comments :

Post a Comment