Artana Yasa 0805021100 Vc CONTOH DARI PENDISTRIBUSIAN

advertisement
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.
Download