Artana Yasa 0805021100 Vc CONTOH DARI PENDISTRIBUSIAN PROGRAM Ada berbagai macam sistem operasi terdistribusi yang saat ini beredar dan banyak digunakan. Keanekaragaman sistem ini dikarenakan semakin banyaknya sistem yang bersifat opensource sehingga banyak yang membangun OS sendiri sesuai dengan kebutuhan masing-masing, opensource yang sudah ada. yang merupakan pengembangan dari OS Beberapa contoh dari sistem operasi terdistribusi ini diantaranya: a. Amoeba (Vrije Universiteit) Amoeba adalah sistem berbasis mikro-kernel yang tangguh yang menjadikan banyak workstation personal menjadi satu sistem terdistribusi secara transparan. Sistem ini sudah banyak digunakan di kalangan akademik, industri, dan pemerintah selama sekitar 5 tahun. b. Angel (City University of London) Angel didesain sebagai sistem operasi terdistribusi yang pararel, walaupun sekarang ditargetkan untuk PC dengan jaringan berkecepatan tinggi. Model komputasi inimemiliki manfaal ganda, yaitu memiliki biaya awal yang cukup murah dan juga biayaincremental yang rendah. Dengan memproses titik-titik di jaringan sebagai mesinsingle yang bersifat shared memory, menggunakan teknik distributed virtual sharedmemory (DVSM), sistem ini ditujukan baik bagi yang ingin meningkatkan performadan menyediakan sistem yang portabel dan memiliki kegunaan yang tinggi pada setiap platform aplikasi. c. Chorus (Sun Microsystems) CHORUS merupakan keluarga dari sistem operasi berbasis mikro-kernel untuk mengatasi kebutuhan komputasi terdistribusi tingkat tinggi di dalam bidang telekomunikasi, internetworking, sistem tambahan, realtime, sistem UNIX, supercomputing, dan kegunaan yang tinggi. Multiserver CHORUS/MiX merupakan implementasi dari UNIX yang memberi kebebasan untuk secara dinamis mengintegrasikan bagian-bagian dari fungsi standar di UNIX dan juga service dan aplikasi-aplikasi di dalamnya. d. GLUnix (University of California, Berkeley) Sampai saat ini, workstation dengan modem tidak memberikan hasil yang baik untuk membuat eksekusi suatu sistem operasi terdistribusi dalam lingkungan yang shared dengan aplikasi yang berurutan. Hasil dari penelitian ini adalah untuk menempatkan resource untuk performa yang lebih baik baik untuk aplikasi pararel maupun yang seri/berurutan. Untuk merealisasikan hal ini, maka sistem operasi harus menjadwalkan pencabangan dari program pararel, mengidentifikasi idle resource di jaringan, mengijinkan migrasi proses untuk mendukung keseimbangan loading, dan menghasilkan tumpuan untuk antar proses komunikasi. e. GUIDE Guide (Grenoble Universities Integrated Distributed Environment) adalah system operasi terdistribusi yang berorientasi obyek untuk pempangunan dan operasi dari aplikasi terdistribusi pada PC atau server dengan jaringan yang tersambung LAN. Guide adalah hasil penggabungan Bull and the IMAG Research Institute (Universities of Grenoble), yang telah membangun Bull-IMAG joint Research Laboratory. Ini juga memiliki kaitan erat dengan COMANDOS Esprit Project (Construction and Management of Distributed Open Systems) dan BROADCAST Esprit Basic Research project. f. Hurricane Sistem operasi Hurricane memiliki hierarki sebagai sistem operasi dengan cluster yang merupakan implementasi dari Hector multiprocessor. Peng-cluster-an mengatur resource pada sistem, menggunakan pasangan yang ketat antara cluster, dan kehilangan pasangan pada cluster. Prinsip sistem terdistribusi diaplikasikan dengan mendistribusikan dan mereplika servis pada sistem dan objek data untuk meningkatkan kelokalan, meningkatkan konkurensi, dan untuk mencegah sistem terpusat, sehingga membuat sistem berimbang. g. Mach (Carnegie Mellon University) Mach adalah satu dari beberapa komunitas penelitian tentang sistem operasi. Sistem ini aslinya dimulai di CMU, dan Mach menjadi basis dari banyak sistem penelitian. Walaupun pekerjaan dengan Mach di CMU sudah lama tidak diterapkan, tetapi masih banyak kelompok-kelompok lain yang masih menggunakan Mach sebagai basis pada penelitiannya. h. Mach at OSF (OSF Research Institute) OSF Research Institute masih menggunakan teknologi yang dimulai dari CMU dan menggunakan ini sebagai basis dari banyak penelitian, termasuk sistem operasi untuk mesin pararel , kernel berorientasi objek yang aman, dan penelitianpenelitian tentang sistem operasi yang lain. i. Maruti (University of Maryland) Group Members Maruti adalah sistem operasi berbasis waktu, yang merupakan proyek di University of Maryland. Dengan Maruti 3.0, kita memasuki fase baru pada proyek ini. Menurut mereka, mereka memiliki sistem operasi yang lebih nyaman untuk kalangan yang lebih luas. j. Masix (Blaise Pascal Institute MASI Laboratory) Masix adalah sistem operasi terdistribusi yang berbasis pada mikro kernel dari Mach, yang saat ini di bawah pengembangan dari MASI Laboratory. Tujuan utama dari sistem ini adalah untuk secara simultan mengeksekusi banyak data aplikasi personal, yang berjalan baik baik di semua platform, baik Unix, DOS, OS/2 dan Win32. k. MOSIX (Hebrew University, Jerusalem, Israel) Sebuah solusi untuk masalah saat ini menjadi ada untuk lingkungan multikomputer,yang disebut MOSIX. Mosix adalah pengembangan dari UNIX, yang mengijinkanuser untuk menggunakan resource yang ada tanpa ada perubahan pada level aplikasi.Dengan penggunaan yang transparan, algoritma proses migrasi dinamis, MOSIXmelayani servis jaringan, seperti NFS, TCP/IP, dari UNIX, untuk level proses, denganmenggunakan penyeimbangan load dan distribusi dinamis pada cluster-cluster yanghomogen. l. Plan 9 (Bell Labs Computing Science Research Center) Plan 9 adalah sistem operasi baru yang dibangun di Bell Labs. Ini adalah sebuah sistem yang terdistribusi. Pada kebanyakan konfigurasi, ini menggunakan tiga macam komponen : terminal yang ada pada meja pengguna, server file yang menyimpan data permanen, dan server CPU yang melayani CPU lainnya lebih cepat, authentikasi user, dan network gateways. Salah satu kesemuan yang menarik dari Plan 9 adakah pengiriman file yang esensial pada semua servis system. m. Puma and relatives (Sandia National Laboratory) Sistem operasi Puma menargetkan aplikasi dengan performa tinggi yang dipasangkan dengan arsitektur memory terdistribusi. Ini adalah turunan dari SUNMOS. Selain sistem operasi-sistem operasi di atas, masih banyak lagi sistem operasi terdistribusi yang dibangun, baik secara opensource maupun yang ‘closed source’. Sistem-sistem itu diantaranya adalah : • Alpha Kernel (Carnegie Mellon University) • QNX • Spring Real-Time Project (University of Massachsetts, Amherst) • Spring System (Sun) • Sprite (University of California, Berkeley) • Sting • Sumo (Lancaster University) • Tao Operating System (Tao Systems) • Tigger (Trinity College Dublin) • TUNES CONTOH DARI PENDISTRIBUSIAN PROCEDURE A. RMI RMI adalah salah satu teknologi java yang dapat di gunakan untuk membangun suatu sistem tersebar. RMI merupakan suatu mekanisme yang memungkinkan suatu computer client menggunakan suatu method dari object yang berada di computer server. RMI berbasis pada pemrograman berorientasi object. pada dasarnya arsitektur dari RMI dapat di gambarkan sebagai berikut : Arsitektur tersebut dapat di jelaskan sebagai berikut : 1. RMI server akan mendaftarkan Remote Object (Object-object yang dapat di remote oleh client) ke RMI Registry melalui “Bind” dengan nama yang unik 2. RMI Client yang akan menggunakan method dari Remote Object harus meminta reference Remote Object dari RMI Registry. Intinya si client harus tau object-object apa saja sih yang bisa di gunakan, jadi si client meminta list object-object itu ke RMI Registry 3. Kemudian RMI Registry memberikan daftar Object-object yang method-method nya dapat di gunakan oleh client 4. Setelah RMI Client mengetahui daftar object-object yang dapat di gunakan, maka RMI Client tinggal menggunakan method-methodnya. RMI (Remote Method Invocation) adalah cara programmer Java untuk membuat program aplikasi Java to Java yang terdistribusi. Program-program yang menggunakan RMI bisa menjalankan metode secara jarak jauh, sehingga program dari server bisa menjalankan method di komputer klien, dan begitu juga sebaliknya. Java RMI yang ada pada bahasa Java telah didesain khusus sehingga hanya bisa bekerja pada lingkungan Java. Hal ini berbeda dengan sistem RMI lainnya, misalnya CORBA, yang biasanya didesain untuk bekerja pada lingkungan yang terdiri dari banyak bahasa dan heterogen. Pemodelan objek pada CORBA tidak boleh mengacu pada bahasa tertentu. Sistem RMI terdiri atas tiga layer/lapisan, yaitu 1. Stub/skeleton layer, yaitu stub pada sisi klien (berupa proxy), dan skeleton pada sisi server. 2. Remote reference layer, yaitu perilaku remote reference (misalnya pemanggilan kepada suatu objek) 3. Transport layer, yaitu set up koneksi, pengurusannya dan remote object tracking. Batas antar masing-masing layer disusun oleh interface dan protokol tertentu, yaitu tiap layer bersifat independen terhadap layer lainnya, dan bisa diganti oleh implementasi alternatif tanpa mengganggu layer lainnya. Sebagai contoh, implementasi transport yang digunakan RMI adalah yang berbasis TCP (menggunakan Java socket), tapi bisa digantikan dengan menggunakan UDP. Layer application berada di atas sistem RMI. Hubungan antara layer-layer tersebut dapat dijelaskan pada gambar berikut : Klien Stub Serve r Skeleton Remote Reference Layer Transport layer Sebuah remote method invocation dari klien ke remote server object akan melalui layer-layer pada sistem RMI dari layer transport pada sisi klien ke layer transport pada sisi server. Sebuah klien yang menjalankan method pada remote server object sebenarnya menggunakan stub atau proxy yang berfungsi sebagai perantara untuk menuju remote server object tersebut. Pada sisi klien, reference ke remote object sebenarnya merupakan reference ke stub lokal. Stub ini adalah implementasi dari remote interface dari sebuah remote object, dan meneruskan panggilan ke server object melalui remote reference layer. Stub dibuat dengan menggunakan kompiler rmic. Supaya sebuat panggilan method tersebut bisa sampai di remote object, panggilan tersebut diteruskan melalui remote reference layer. Panggilan tersebut sebenarnya diteruskan ke skeleton yang berada di sisi server. Skeleton untuk remote object ini akan meneruskan panggilan ke kelas remote object implementation yang menjalankan method yang sebenarnya. Jawaban, atau return value dari method tersebut akan dikirim melalui skeleton, remote reference layer dan transport layer pada sisi klien, lalu melalui transport layer, remote reference layer, dan stub pada sisi klien. Teknik dalam RMI salah satunya adalah dynamic stub loading, yang berfungsi untuk membuat klien me-load stub yang belum ada di komputernya. Stub mengimplementasi remote interface yang sama dengan yang diimplementasikan oleh remote object. Dengan RMI, komputer klien bisa memanggil remote object yang berada di server. Server juga bisa menjadi klien dari suatu remote object, sehingga komputer klien bisa menjalankan method-method tertentu di komputer server. Dengan menggunakan RMI, program yang dijalankan di komputer klien bisa berupa applet, maupun berupa aplikasi. Program RMI memerlukan remote interface, kelas-kelas implementasi dari remote interface tesebut (implementation class), dan program rmiregistry yang sedang dijalankan di komputer server (rmiregistry terdapat dalam paket JDK). Pada paket Whiteboard, RMI digunakan untuk program-program Chat, Whiteboard dan Projector. Dalam program Chat, RMI digunakan untuk memasukkan input dari para pengguna, baik dosen maupun mahasiswa, ke komputer server. Setelah itu, server akan mengeluarkan output berupa hasil percakapan antar pengguna kepada semua komputer klien. Pada Whiteboard, penggunaan RMI terletak pada pengiriman graphics dan image antara komputer server dan klien. Sedangkan pada Projector, RMI digunakan agar dosen, sebagai klien, bisa mengatur indeks tampilan pada Projector yang berlangsung pada komputer mahasiswa, yang berfungsi sebagai klien lainnya. Kelas Whiteboard Client adalah tampilan yang dimunculkan pada komputer klien, sedangkan penggunaan RMI dilakukan oleh kelas Whiteboard Client Manifest Implementation. Kelas Whiteboard Client Manifes tImplementation merupakan kelas yang mengimplementasikan interface WhiteboardClientManifest. Dalam konsep RMI, interface WhiteboardClientManifest ini adalah remote interface untuk klien. Sedangkan pada server dijalankan program WhiteboardServer Implementation yang berupa implementasi dari interface WhiteboardServer. WhiteboardServer juga merupakan remote interface. Program WhiteboardServer Implementation ini bersifat public, sehingga bisa diakses oleh klien.Remote interface harus meng-extend interface java.rmi.Remote. Setiap method pada remote interface harus meng-throw java.rmi.RemoteException. Whiteboard Client Manifest adalah implementation mengimplementasikan Implementation dan WhiteboardServer Implementation classes. remote Implementation interface. class Implementation merupakan class perlu kelas yang mendefinisikan konstruktor untuk remote object, sekaligus membuat instance dari remote object tersebut. Implementation class juga menyediakan implementasi dari method yang bisa dijalankan secara remote. Selain itu implementation class juga perlu membuat dan menjalankan Security Manager. Tambahan lagi, implementation class juga harus me-register atau mendaftarkan paling tidak sebuah remote object pada RMI remote object registry. Pada program implementation class, semua argumen untuk remote method dan semua return value dari remote method bisa berupa mengimplementasi interface object bertipe java.io.Serializable. apa saja, Untuk asal object-object tersebut remote objects, penyampaiannya dilakukan dengan pass by reference. Referensi untuk suatu remote object sebenarnya merupakan referensi untuk sebuah stub, yaitu proxy pada sisi klien untuk remote object. Pada method main di implementation class, diperlukan pembuatan dan pemasangan sebuah security manager, yang bisa berupa RMISecurityManager, ataupun security manager yang sebelumnya telah didefinisikan dulu secara khusus oleh sang programmer. Security manager ini diperlukan untuk menjaga agar kelas-kelas yang dipakai tidak melakukan operasi-operasi yang bisa mengancam keamanan sistem. Jika dalam method main tidak terdapat security manager, RMI tidak bisa digunakan karena kelas-kelas RMI tidak akann diijinkan untuk diload. Dalam method main, suatu instance dari remote object harus diciptakan. Konstruktor akan menghasilkan remote object, dan sebagai hasilnya, setelah konstruktor dipakai untuk menciptakan instance, sebuah remote object akan siap untuk mendengar method-method panggilan dari komputer klien. Agar komputer klien bisa menjalankan method di remote object, klien sebelumnya harus membuat referensi kepada remote object tersebut. Biasanya referensi diambil dengan cara dijadikan parameter dari suatu remote method, ataupun diambil dari return value suatu remote method. Untuk keperluan bootstrapping, RMI menyediakan registry yang bisa mem-bind suatu URL ke remote object. Bentuk atau format dari URL tersebut adalah : //host/nama_object, dan nama_object harus berupa nama berbentuk string. Setelah suatu remote object diregistrasi di server, komputer-komputer klien bisa mencari nama objek tersebut, mengambil referensi ke remote-object, dan seterusnya menjalankan method pada objek tersebut. RMI akan membuat referensi ke stub dari remote object dengan referensi yang ditentukan oleh argumen kedua dari perintah Naming.rebind(URL, argumen ke-2). Objek implementasi yang ada di komputer klien (remote implementation objects) akan selalu berada di komputer klien, jadi sewaktu klien melakukan pencarian ke remote object yang ada ada di registry di server, komputer server akan melakukan referensi ke stub yang berada di komputer klien. Protokol yang dipakai oleh RMI adalah Java Object Serialization dan HTTP. Protokol Object Serialization digunakan unntuk meneruskan panggilan klien dan mentransfer data. Protokol HTTP digunakan untuk mem-"POST" sebuah remote method invocation dan mengembalikan data keluaran untuk situasi ketika komputer klien dan server dipisahkan oleh firewall. B. RPC RPC adalah suatu protokol yang menyediakan suatu mekanisme komunikasi antar proses yang mengijinkan suatu program untuk berjalan pada suatu komputer tanpa terasa adanya eksekusi kode pada sistem yang jauh ( remote system ).Protokol RPC digunakan untuk membangun aplikasi klien-server yang terdistribusi. Cara Kerja RPC : Tiap prosedur yang dipanggil dalam RPC, maka proses ini harus berkoneksi dengan server remote dengan mengirimkan semua parameter yang dibutuhkan, menunggu balasan dari server dan melakukan proses kemudian selesai. Proses di atas disebut juga dengan stub pada sisi klien. Sedangkan Stub pada sisi server adalah proses menunggu tiap message yang berisi permintaan mengenai prosedur tertentu. Gambar 1. Alur Remote Procedure Call Diagram diatas memberikan gambaran mengenai flow dari eksekusi dalam proses RPC. Berikut ini adalah diagram yang akan menjelaskan secara rinci mengenai proses yang terjadipada klien dan server dalam eksekusi suatu prosedur RPC : Gambar 2. Proses Klien Server dalam RPC Berikut penjelasan dari diagram diatas : 1. Klien memanggil prosedur stub lokal. Prosedur Stub akan memberikan parameter dalam suatu paket yang akan dikirim ke jaringan. Proses ini disebut sebagai marshalling. 2. Fungsi Network pada O/S (Operating system - Sistem Operasi) akan dipanggil oleh stub untuk mengirim suatu message. 3. Kemudian Kernel ini akan mengirim message ke sistem remote. Kondisi ini dapat berupa connectionless atau connection-oriented. 4. Stub pada sisi server akan melakukan proses unmarshals pada paket yang dikirim pada network. 5. Stub pada server kemudian mengeksekusi prosedur panggilan lokal. 6. Jika eksekusi prosedur ini telah selesai, maka eksekusi diberikan kembali ke stub pada server. 7. Stub server akan melakukan proses marshals lagi dan mengirimkan message nilai balikan ( hasilnya ) kembali ke jaringan. 8. Message ini akan dikirim kembali ke klien. 9. Stub klien akan membaca message ini dengan menggunakan fungsi pada jaringan. 10. Proses unmarshalled kemudian dilakukan pada message ini dan nilai balikan aka diambil untuk kemudian diproses pada proses lokal. Proses diatas akan dilakukan berulang-ulang ( rekursif ) dalam pengeksekusian RPC dalam suatu remote sistem. CONTOH PENDISTRIBUSIAN HARDWARE Sharing Printer dengan Samba Seperti kita ketahui Linux yang kita kenal dapat kita fungsikan juga sebagai printer dan file sharing, yaitu penggunaan resource perangkat keras komputer secara bersama-sama dalam suaatu jaringan komputer baik printer maupun media penyimpanan, Samba dapat difungsikan sebagai jembatan yang akan menghubungkan antara sistem operasi berbasis Unix/Linux dengan sistem operasi Microsoft Windows, sehingga dua sistem tersebut bisa saling berbagi resource, samba menggunakan protokol SMB (Server Message Block) sebagai protokol standar untuk menghubungkan keduanya. Disini kita hanya akan membahas salah satu fitur dari samba yaitu printer sharing, untuk melakukan instalasi Samba sebelumnya pastikan printer anda yang nantinya akan kita share telah terdeteksi dengan baik di Linux, kita disini mengunakan distribusi Ubuntu Linux 7.04 sebagai servernya, untuk memulainya langkah pertamna yang harus kita lakukan adalah install aplikasi Samba terlebih dahulu dengan perintah; apt-get install samba Setelah paket samba terinstall maka selanjutnya adalah dengan menambahkan beberapa opsi konfigurasi Samba, untuk distribusi Ubuntu file konfigurasi samba terletak di /etc/samba/smb.conf, untuk mengubahnya kita dapat menggunakan editor yang biasa kita pake di Linux, misalkan disini kita mengunakan vim, maka perintahnya adalah vim /etc/samba/smb.conf Beberapa opsi yang perlu kita rubah adalah pada bagian Authentication, ubah menjadi seperti baris berikut : security = share Keterangan : Tujuannya adalah agar apabila user melakukan login ke Samba server tidak diminta untuk memasukan autentikasi username dan password. guest account = nobody Keterangan : Opsi ini berfungsi apabila user login ke server maka user tersebut akan dipetakan ke user yang berada di server, disini berarti user login akan dipetakan sebagai user nobody. Kemudian pada bagian Printing ubah hingga menjadi seperti berikut printing = cups Keterangan : Opsi ini digunakan untuk mengaktifkan fasilitas printing CUPS (Common Unix Printing System) yang berfungsi agar Samba menhubungi CUPS ini apabila akan melakukan printing, dan selanjutnya proses printing akan ditangani oleh CUPS. load printers = yes Keterangan : opsion ini berfungsi agar semua printer yang berada di princap di sharing. printcap name = cups Keterangan : opsi ini digunakan untuk melakukan pendataan printer yang terpasang di komputer dan nilainya di ambil dari CUPS. Pada bagian share definision di tag printers tambahkan option berikut browseable = yes Keterangan : opsi ini berfungsi agar resource yang kita share dapat terlihat di komputer lain dalam jaringan. public = yes Keterangan : Opsi ini digunakan agar user yang akan memanfaatkan resource yang kita sharing tidak memerlukan autentifikasi useername dan password. Kemudian langkah terakhir untuk melakukan uji coba, buka dari komputer client baik Windows ataupun Linux dan tambahkan printer baru dari network kemudian lakukan pengujian printing, apabila tidak ada kesalahan komfigurasi maka user dalam jaringan kita dapat menggunakan printer yang kita sharing.