1. Sistem Operasi
Terdistribusi
Sistem terdisitribusi merupakan
kumpulan autonomous computers yang terhubung melalui sistem jaringan computer
dan dilengkapi dengan sistem software tedistribusi untuk membentuk fasilitas
computer terintegrasi.
• Sebuah sistem dimana komponen software atau hardware-nya
terletak di dalam jaringan komputer dan saling berkomunikasi menggunakan message
pasing.
• Sebuah sistem yang tersusun oleh dua atau lebih komputer dan
memiliki koordinasi proses melalui pertukaran pesan sinkron atau asinkron
Proses:
- Dijalankan secara bersamaan (execute concurrently)
- interaksi untuk bekerjasama dalam mencapai tujuan yang sama
- mengkoordinasikan aktifitas dan pertukaran informasi yaitu
pesan
yang dikirim melalui jaringan komunikasi
Contoh Umum:
- Internet, global jaringan interkoneksi computer yang
berkomunikasi melalui IP (Internet Protocol)Protocol
- Intranet, jaringan teradministrasi terpisah dengan batasan
pada kebijakan keamanan local
- Mobile dan komputasi diberbagai tempat, laptops, PDA, mobile
phone, printers, peraltan rumah, dll
- World Wide Web (www), sistem untuk publikasi dan akses
sumber daya dan layanan melalui Internet.
Tantangan Sistem Terdistribusi
- Kompleksitas,
- Ukuran,
- Tantangan Teknologi
- Ketergantungan Sosial
Keberagaman
(Heterogeneity)
- Berfariasinya software dan hardware: membutuhkan standard (protocol,
middleware)
- Dukungan pada mobile code: virtual machine (JVM (Java
Virtual Machine)) Keterbukaan (Opennes)
- Tidak bergantung pada vendor
- Interface untuk key yang dapat dibulikasi: CORBA (Common
Object Request Broker Architecture),
- Mekanisme Komunikasi yang dapat
dipublikasi: Java RMI (Remote Method
Invocation)
Keamanan
- Kerahasiaan (Melindungi dari kebocoran)
- Integritas (melindungan dari pengubahan dan interfrensi)
mis. Data keuangan. Membutuhkan teknologi ekripsi dan informasi identitas.
- Ketersediaan (mempertahankan sistem tetap tersedia setiap
saat dibutuhkan)
Skalabilitas
- Tetap mampu bekerja efektif meskipun ukuran bertambah.
- Membutuhkan pengendalian biaya sumber daya, unjuk kerja,
dll.
- Contoh: Memperbesar kapasitas rasio computer/web server.
Jenis Sistem Operasi
Terdistribusi
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. 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 mengijinkan user untuk menggunakan resource yang ada tanpa ada
perubahan pada level aplikasi. Dengan penggunaan yang transparan, algoritma
proses migrasi dinamis, MOSIX melayani servis jaringan, seperti NFS, TCP/IP,
dari UNIX, untuk level proses, dengan menggunakan penyeimbangan load dan
distribusi dinamis pada cluster-cluster yang homogen.
c. Beowulf
Konsep Beowulf ini mulai
dikembangkan dengan menggunakan perangkat komputer yang sangat sederhana untuk
ukuran sekarang, 16 motherboard 486 DX 100 MHz, ethernet 10baseT (Sterling et
al., 1995). Tetapi telah mampu menghasilkan kinerja yang cukup menjanjikan.
Beowulf menggunakan protokol komunikasi standard Unix, sehingga kemampuannya
menjadi terbatasi oleh protokol ini, akan tetapi dalam pengembangannya Beowulf
telah melakukan modifikasi implementasi TCP/IP yang hasilnya sangat membantu
kualitas implementasi dari Linux pada umumnya. Dari sisi pemrograman Beowulf
memanfaatkan library Parallel Virtual Machine (PVM) untuk menyusun aplikasinya.
Sebagian besar aplikasi yang dijalankan pada model Beowulf ini memang aplikasi
jenis komputasi matematis. Beowalf merupakan free-software seperti Linux
ataupun FreeBSD yang berjalan pada komputer yang disusun secara pararel yang terhubung
dengan jaringan privat berkecepatan tinggi untuk menjalankan tugas perhitungan
dengan kemampuan tinggi. Yang dipentingkan dalam Beowulf adalah kecepatan bukan
reliabilitas seperti pada komputer cluster Linux. Untuk aplikasi yang berjalan
diatasnya dibutuhkan development yang berbeda supaya dapat berjalan. Alasan
mengapa orang-orang menggunakan Beowulf karena Beowulf menginginkan super
komputer yang murah daripada superkomputer tradisional.
d. Angel (City University of London)
Angel didesain sebagai sistem
operasi terdistribusi yang paralel, walaupun sekarang ditargetkan untuk PC
dengan jaringan berkecepatan tinggi. Model komputasi ini memiliki manfaal
ganda, yaitu memiliki biaya awal yang cukup murah dan juga biaya incremental
yang rendah. Dengan memproses titik-titik di jaringan sebagai mesin single yang
bersifat shared memory, menggunakan teknik distributed virtual shared memory
(DVSM), sistem ini ditujukan baik bagi yang ingin meningkatkan performa dan
menyediakan sistem yang portabel dan memiliki kegunaan yang tinggi pada setiap
platform aplikasi.
e. 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.
f. 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 paralel 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.
2. Penerapan
Procedure RMI dan RPC
a. RMI (Remote Method Invocation)
RMI biasa digunakan oleh para programer Java untuk dapat
memanggil method pada jarak jauh. RMI diartikan sebagai 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 client, 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 :
- stub/skeleton layer, yaitu stub pada sisi client (berupa
proxy), dan skeleton pada sisi server.
- remote reference
layer, yaitu perilaku remote reference ( misalnya pemanggilan kepada suatu
objek).
- transport layer, yaitu set up koneksi, pengurusannya dan
remote object tracking.
Batas antar masing-masing layer
disusun oleh interface dan protocol 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.
Sebuah client yang menjalankan
method pada remote server object sebenarnya menggunakan stub atau proxy yang
berfungsi sebagai perantara untuk menuju remote server object tersebut. Pada
sisi client, 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 client,
lalu melalui transport layer, remote reference layer, dan stub pada sisi
client. Teknik dalam RMI salah satunya adalah dynamic stub loading, yang
berfungsi untuk membuat client me-load stub yang belum ada di komputernya. Stub
mengimplementasi remote interface yang sama dengan yang diimplementasikan oleh
remote object.
Dengan RMI, komputer client bisa
memanggil remote object yang berada di server. Server juga bisa menjadi client
dari suatu remote object, sehingga komputer client bisa menjalankan
method-method tertentu di komputer server. Dengan menggunakan RMI, program yang
dijalankan di komputer client 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 (rmi registry terdapat dalam paket JDK).
Untuk mengimplementasikan
interface tersebut maka diperlukan class yang dapat mengeksekusinya.
Implementation class merupakan kelas yang mengimplementasikan remote interface.
Implementation class perlu 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 object bertipe apa saja, asal object-object
tersebut mengimplementasi interface java.io.Serializable.
Untuk remote objects,
penyampaiannya dilakukan dengan pass by reference. Referensi untuk suatu remote
object sebenarnya merupakan referensi untuk sebuah stub, yaitu proxy pada sisi
client untuk remote object. Pada method main di implementation class,
diperlukan pembuatan dan pemasangan sebuah security manager, yang bisa berupa
RMI Security Manager, 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 di-load.
Protokol yang dipakai oleh RMI
adalah Java Object Serialization dan HTTP. Protokol Object Serialization
digunakan untuk meneruskan panggilan client dan mentransfer data. Protokol HTTP
digunakan untuk mem-"POST" sebuah remote method invocation dan
mengembalikan data keluaran untuk situasi ketika komputer client dan server
dipisahkan oleh firewall.
Contoh implementasi dari RMI di
antaranya :
1. Perusahaan programming Avitek
yang berlokasi di Amerika Serikat, membuat program sistem accounting untuk
intranet yang memungkinkan client untuk meng-update dan mengubah data dengan
mudah. Tujuan dari proyek ini adalah untuk membuat dan mendukung pembuatan dari
bukti nyata untuk konsep penggunaan Java yang dikombinasikan dengan database.
2. Perusahaan CEAS Consulting
yang menyediakan jasa custom reengineering dan otomasi proses untuk
perusahaan-perusahaan manufakturing dan teknik, telah membuat program sistem
terdistribusi untuk client mereka.
b. RPC (Remote Procedure Call)
Yang dimaksud disini adalah sebuah metode yang memungkinkan
kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat
melakukan ini sebuah server harus menyediakan layanan remote procedure.
Pendekatan yang dilakukan adalah sebuah server membuka socket, lalu menunggu
client yang meminta prosedur yang disediakan oleh server. Bila client tidak
tahu harus menghubungi port yang mana, client bisa me- request kepada sebuah
matchmaker pada sebuah RPC port yang tetap. Matchmaker akan memberikan port apa
yang digunakan oleh prosedur yang diminta client. RPC masih menggunakan cara
primitif dalam pemrograman, yaitu menggunakan paradigma procedural programming.
Hal itu membuat kita sulit ketika menyediakan banyak remote procedure. RPC
menggunakan socket untuk berkomunikasi dengan proses lainnya. Pada sistem
seperti SUN, RPC secara default sudah ter- install ke dalam sistemnya, biasanya
RPC ini digunakan untuk administrasi sistem. Sehingga seorang administrator
jaringan dapat mengakses sistemnya dan mengelola sistemnya dari mana saja,
selama sistemnya terhubung ke jaringan.
RPC mengabstraksi interface
komunikasi ke level pemanggilan procedure. Programmer tidak akan menangani
socket secara langsung, dan seolah-olah memanggil prosedur lokal, padahal argumen
dari prosedur local tersebut dipaketkan dan dikirimkan ke tujuan jarak jauh.
Tapi RPC tidak bisa langsung dipakai dalam sistem objek terdistribusi. Dalam
sistem objek terdistribusi, diperlukan komunikasi antara objek objek yang ada
di level program, yang berada dibanyak tempat.
3. Penerapan Hardware Terdistribusi
Hardware atau
perangkat keras komputer adalah merupakan bagian fisik komputer. Dimana
hardware terdiri atas beberapa komponen yaitu input device, alat pemroses,
storage, dan output device. Untuk sistem terdistribusi sebagai contoh kita bisa
saling berbagi pakai fasilitas seperti Scanner, CD-ROM dan Printer