Jumat, 05 Desember 2014

Sistem Terdistribusi - All



1.      Komunikasi Data
Komunikasi data adalah merupakan bagian dari telekomunikasi yang secara khusus berkenaan dengan transmisi atau pemindahan data dan informasi diantara komputer-komputer dan piranti-piranti yang lain dalam bentuk digital yang dikirimkan melalui media komunikasi data.

 Komponen Komunikasi Data
-          Pengirim, adalah piranti yang mengirimkan data
-          Penerima, adalah piranti yang menerima data
-          Data, adalah informasi yang akan dipindahkan
-          Media pengiriman, adalah media atau saluran yang digunakan untuk mengirimkan data
-          Protokol, adalah aturan-aturan yang berfungsi untuk menyelaraskan hubungan.











2.      Protocol
Protokol dapat diartikan sebagai sebuah aturan yang mendefinisikan beberapa fungsi yang ada dalam sebuah jaringan komputer, misalnya mengirim pesan, data, informasi dan fungsi lain yang harus dipenuhi oleh sisi pengirim dan sisi penerima agar komunikasi dapat berlangsung dengan benar, walaupun sistem yang ada dalam jaringan tersebut berbeda sama sekali.
Secara umum fungsi dari protokol adalah untuk menghubungkan sisi pengirim dan sisi penerima dalam berkomunikasi serta dalam bertukar informasi agar dapat berjalan dengan baik dan benar. Sedangkan fungsi protokol secara detail dapat dijelaskan berikut:
-          Fragmentasi dan reassembly
Fungsi dari fragmentasi dan reassembly adalah membagi informasi yang dikirim menjadi beberapa paket data pada saat sisi pengirim mengirimkan informasi dan setelah diterima maka sisi penerima akan menggabungkan lagi menjadi paket informasi yang lengkap.
-          Encapsulation
Fungsi dari encapsulation adalah melengkapi informasi yang dikirimkan dengan address, kode-kode koreksi dan lain-lain.
-          Connection control
Fungsi dari connection control adalah membangun hubungan (connection) komunikasi dari sisi pengirim dan sisi penerima, dimana dalam membangun hubungan ini juga termasuk dalam hal pengiriman data dan mengakhiri hubungan.

-          Flow control
Berfungsi sebagai pengatur perjalanan datadari sisi pengirim ke sisi penerima.
-          Error control
Dalam pengiriman data tak lepas dari kesalahan, baik itu dalam proses pengiriman maupun pada waktu data itu diterima. Fungsi dari error control adalah mengontrol terjadinya kesalahan yang terjadi pada waktu data dikirimkan.
-          Transmission service
Fungsi dari transmission service adalah memberi pelayanan komunikasi data khususnya yang berkaitan dengan prioritas dan keamanan serta perlindungan data.

3.      Remote Procedure Call (RPC)
Remote Procedure Call (RPC) adalah sebuah metode yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain.
Kelebihan RPC
-          Relatif mudah digunakan :
Pemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan local procedure. Sehingga pemrogram dapat berkonsentrasi pada software logic, tidak perlu memikirkan low level details seperti socket, marshalling & unmarshalling.
-          Robust (Sempurna):
Sejak th 1980-an RPC telah banyak digunakan dlm pengembangan mission-critical application yg memerlukan scalability, fault tolerance, & reliability.

Kekurangan RPC

-          Tidak fleksibel terhadap perubahan:
Static relationship between client & server at run-time.
-          Berdasarkan prosedural/structured programming yang sudah ketinggalan jaman dibandingkan OOP.
4.      Object Remote
Meskipun teknologi RPC ini relatif sudah memberikan kenyamanan bagi developer, tapi perkembangan yang terjadi di bidang pemrograman berorientasi objek akhirnya menuntut kehadiran teknologi baru.
Aplikasi objek terdistribusi seringkali melakukan hal berikut:
-          Melokasikan objek remote: Aplikasi dapat menggunakan satu dari dua mekanisme untuk mendapatkan referensi ke objek remote. Aplikasi dapat mendaftarkan objek remote dengan fasilitas penamaan RMI (naming facility) yaitu rmiregistry atau aplikasi dapat mem-pass dan mengembalikan referensi objek remote sebagai bagian dari operasi normal.
-          Berkomunikasi dengan objek remote: Detail dari komunikasi antara objek remote ditangani oleh RMI, bagi programmer komunikasi remote tampak seperti invokasi method Java standar.
-          Memanggil (load) bytecode untuk objek yang di-pass: Karena RMI mengizinkan pemanggil (caller) untuk mem-pass objek ke objek remote, RMI menyediakan mekanisme yang diperlukan objek me-load kode objek, sebagaimana juga mentransmisikan datanya.
-           


Bab 3
Secara tidak langsung, proses merupakan program yang sedang dieksekusi. Silberschatz: suatu proses adalah lebi hdari sebuah kode program, yang terkadang disebut text section.
1.       Thread
Thread adalah sebuah alur kontrol dari sebuah proses. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusi multi-threads, agar dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama.
Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dan proses dengan thread yang banyak adalah proses dengan thread banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu.

Keuntungan Thread

Keuntungan dari program yang multithreading dapat dipisah menjadi empat kategori:
1. Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meski pun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image.
2. Berbagi sumber daya: thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
3. Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.

Model-model Multithreading:

a. Model Many-to-One. Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.
b. Model One-to-One. Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.
 









c. Model Many-to-Many. Model ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.






  

Pembatalan Thread (Thread Cancellation)
Thread Cancellation ialah pembatalan thread sebelum tugasnya selesai. Umpamanya, jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dibatalkan terlebih dahulu. Contoh lain adalah di masalah search. Apabila sebuah thread mencari sesuatu dalam database dan menemukan serta mengembalikan hasilnya, thread sisanya akan dibatalkan. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target Thread dapat dilakukan dengan 2 cara:
a. Asynchronous cancellation. Suatu thread seketika itu juga membatalkan target thread.
b. Deferred cancellation. Suatu thread secara periodik memeriksa apakah ia harus batal, cara ini memperbolehkan target thread untuk membatalkan dirinya secara terurut.

Penjadwalan Thread

Begitu dibuat, thread baru dapat dijalankan dengan berbagai macam penjadwalan. Kebijakan penjadwalanlah yang menentukan setiap proses, di mana proses tersebut akan ditaruh dalam daftar proses sesuai proritasnya dan bagaimana ia bergerak dalam daftar proses tersebut.
Untuk menjadwalkan thread, sistem dengan model mulithreading many to many atau many to one menggunakan:
a. Process Contention Scope (PCS). Pustaka thread menjadwalkan thread pengguna untuk berjalan pada LWP (lightweight process) yang tersedia.
b. System Contention Scope (SCS). SCS berfungsi untuk memilih satu dari banyak thread , kemudian menjadwalkannya ke satu thread tertentu(CPU / Kernel).

2.       Client – Server
Server adalah komputer yang dapat memberikan service ke client, sedangkan client adalah komputer yang mengakses beberapa service yang ada di server. Ketika client membutuhkan suatu service yang ada di server, dia akan mengirim request kepada server lewat jaringan. Jika request tersebut dapat dilaksanakan, maka server akan mengirim balasan berupa service yang dibutuhkan untuk saling berhubungan menggunakan Socket. Socket adalah sebuah endpoint untuk komunikasi didalam jaringan.

Model Client-Server
Ada beberapa model client/server yang penting untuk diketahui. Dimulai dari arsitektur mainframe hingga arsitektur client/server.
a.       Arsitektur Mainframe

Pada arsitektur ini, terdapat sebuah komputer pusat (host) yang memiliki sumber daya yang sangat besar, baik memori, processor maupun media penyimpanan. Melalui komputer terminal, pengguna mengakses sumber daya tersebut. Komputer terminal hanya memiliki monitor/keyboard dan tidak memiliki CPU. Semua sumber daya yang diperlukan terminal dilayani oleh komputer host.

b.      Arsitektur File Sharing
Pada arsitektur ini komputer server menyediakan file-file yang tersimpan di media penyimpanan server yang dapat diakses oleh pengguna. Arsitektur file sharing memiliki keterbatasan, terutama jika jumlah pengakses semakin banyak serta ukuran file yang di shaing sangat besar. Hal ini dapat mengakibatkan transfer data menjadi lambat. Model ini populer pada tahun 1990-an.
c.       Arsitektur Client/Server
Karena keterbatasan sistem file sharing, dikembangkanlah arsitektur client/server. Salah satu hasilnya yaitu berupa software database server yang menggantikan software database berbasis file server. Dikenalkan pula RDBMS (Relational Database Management System). Dengan arsitektur ini, query data ke server dapat terlayani dengan lebih cepat karena yang ditransfer bukanlah file, tetapi hanyalah hasil dari query tersebut. RPC (Remote Procedure Calls) memegang peranan penting pada arsitektur client/server.
d.      Model Two-tier
Model Two-tier terdiri dari tiga komponen yang disusun menjadi dua lapisan: client (yang meminta service) dan server (yang menyediakan service). Tiga komponen tersebut yaitu :
-          User Interface, yaitu antar muka program aplikasi yang berhadapan dan digunakan langsung oleh user.
-          Manajemen proses
-          Database
Model ini memisahkan peranan user interface dan database dengan jelas, sehingga terbentuk dua lapisan.
e.       Model Three-tier
Pada model ini disisipkan satu layer tambahan diantara user interface tier dan database tier. Tier tersebut dinamakan middle-tier. Middle-Tier terdiri dari bussiness logic dan rules yang menjembatani query user dan database, sehingga program aplikasi tidak bisa mengquery langsung ke database server, tetapi harus memanggil prosedur-prosedur yang telah dibuat dan disimpan pada middle-tier.

3.       Agent

Software Agent adalah entitas perangkat lunak yang didedikasikan untuk tujuan tertentu yang memungkinkan user untuk mendelegasikan tugasnya secara mandiri, selanjutnya software agent nantinya disebut agent saja. Agent bisa memiliki ide sendiri mengenai bagaimana menyelesaikan suatu pekerjaan tertentu atau agenda tersendiri.

Karakteristik dari Agen:
1.      Autonomy
2.      Intelligence, Reasoning, dan Learning
3.      Mobility dan Stationary.
4.      Delegation
5.      Reactivity
6.      Proactivity dan Goal-Oriented
7.      Communication and Coordination Capability

Bahasa Pemrograman yang digunakan
Bahasa pemrograman yang dipakai untuk tahap implementasi dari software agent, sangat menentukan keberhasilan dalam implementasi agent sesuai dengan yang diharapkan. Diantaranya yaitu :
A.      Object-Orientedness:
Karena agent adalah berhubungan dengan obyek, bahkan beberapa peneliti menganggap agent adalah obyek yang aktif, maka juga agent harus diimplementasikan kedalam pemrorgaman yang berorientasi obyek (object-oriented programming language).
B.        Platform Independence:
Seperti sudah dibahas pada bagian sebelumnya, bahwa agent hidup dan berjalan diberbagai lingkungan. Sehingga idealnya bahasa pemrograman yang dipakai untuk implementasi adalah yang terlepas dari platform, atau dengan kata lain program tersebut harus bisa dijalankan di platform apapun (platform independence).


C.       Communication Capability:
Pada saat berinteraksi dengan agent lain dalam suatu lingkungan jaringan (network environment), diperlukan kemampuan untuk melakukan komunikasi secara fisik. Sehingga diperlukan bahasa pemrograman yang dapat mensupport pemrograman yang berbasis network dan komunikasi.
D.      Security:
Faktor keamanan (security) adalah factor yang sangat penting dalam memilih bahasa pemrorgaman untuk implementasi software agent. Terutama untuk mobil agent, diperlukan bahasa pemrograman yang mensupport level-level keamanan yang bisa membuat agent bergerak dengan aman.
E.       Code Manipulation:
Beberapa aplikasi software agent memerlukan manipulasi kode program secara runtime, sehingga diperlikan bahasa pemrograman untuk software agent yang dapat menangani masalah runtime tersebut.
Dari karakteristik di atas dapat disimpulkan bahwa bahasa pemrograman yang layak untuk mengimplementasikan software agent adalah sebagai berikut :
• Java
• Telescript
• Tcl/Tk, Safe-Tcl, Agent-Tcl







Bab 4
 Sistem operasi (Operating System atau OS) adalah perangkat lunak sistem yang bertugas untuk melakukan kontrol dan manajemen perangkat keras serta operasi-operasi dasar sistem, termasuk menjalankan software aplikasi seperti program-program pengolah kata dan browser web.
Sistem Operasi secara umum terdiri dari beberapa bagian:
1.        Mekanisme Boot, yaitu meletakkan kernel ke dalam memory
2.        Kernel, yaitu inti dari sebuah Sistem Operasi
3.        Command Interpreter atau shell, yang bertugas membaca input dari pengguna
4.        Pustaka-pustaka, yaitu yang menyediakan kumpulan fungsi dasar dan standar yang dapat dipanggil oleh aplikasi lain
5.        Driver untuk berinteraksi dengan hardware eksternal, sekaligus untuk mengontrol mereka.

 Komponen Sistem Operasi
Komponen sistem operasi terdiri dari:
A. Manajemen Proses
B. Manajemen Memori Utama
C. Manajemen Berkas
D. Manajemen Sistem I/O
E. Manajemen Penyimpanan Sekunder
F. Sistem Proteksi
G. Command-Interpreter System
H. Jaringan
Sistem operasi terdistribusi adalah salah satu implementasi dari sistem terdistribusi, di mana sekumpulan komputer dan prosesor yang heterogen terhubung dalam satu jaringan. Tujuan utamanya adalah untuk memberikan hasil secara lebih, terutama dalam:
file system
name space
Waktu pengolahan
Keamanan
Akses ke seluruh resources, seperti prosesor, memori, penyimpanan sekunder, dan perangakat keras.
Manfaat Sistem Operasi Terdistribusi
Sistem operasi terdistribusi memiliki manfaat dalam banyak sistem dan dunia komputasi yang luas. Manfaat-manfaat ini termasuk dalam sharing resource, waktu komputasi dan komunikasi.
1. Shared Resource
Walaupun perangkat sekarang sudah memiliki kemampuan yang cepat dalam proses-proses komputasi, atau misal dalam mengakses data, tetapi pengguna masih saja menginginkan sistem berjalan dengan lebih cepat. Apabila hardware terbatas, kecepatan yang diinginkan user dapat di atasi dengan menggabung perangkat yang ada dengan sistem DOS.
2. Manfaat Komputasi
Salah satu keunggulan sistem operasi terdistribusi ini adalah bahwa komputasi berjalan dalam keadaan paralel. Proses komputasi ini dipecah dalam banyak titik, yang mungkin berupa komputer pribadi, prosesor tersendiri, dan kemungkinan perangkat prosesor-prosesor yang lain. Sistem operasi terdistribusi ini bekerja baik dalam memecah komputasi ini dan baik pula dalam mengambil kembali hasil komputasi dari titik-titik cluster untuk ditampilkan hasilnya.
3. Reliabilitas
Fitur unik yang dimiliki oleh DOS ini adalah reliabilitas. Berdasarkan design dan implementasi dari design sistem ini, maka hilangnya satu node tidak akan berdampak terhadap integritas sistem. Hal ini berbeda dengan PC, apabila ada salah satu hardware yang mengalami kerusakan, maka sistem akan berjalan tidak seimbang, bahkan sistem bisa tidak dapat berjalan atau mati.
4. Komunikasi
Sistem operasi terdistribusi biasanya berjalan dalam jaringan dan biasanya melayani koneksi jaringan. Sistem ini biasanya digunakan user untuk proses networking. Uses dapat saling bertukar data, atau saling berkomunikasi antara titik baik secara LAN maupun WAN.
Jenis Sistem Operasi Terdistribusi
Beberapa contoh dari sistem operasi terdistribusi ini diantaranya :
1.        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.
2.        Angel (City University of London). Angel didesain sebagai sistem operasi terdistribusi yang pararel, 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.
3.        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.
4.        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.























Bab 5. File Service

 File adalah kumpulan informasi yang berhubungan dan tersimpan dalam secondary storage.  
Operasi pada File
• Membuat ( Create )
– Menemukan free space
– Entry baru dibuat dalam tabel direktori yang mencatat nama dan lokasi
– Ukuran yang diinisialisasi 0
• Menulis ( Write )
– OS melihat ke direktori untuk mencari lokasinya dalam disk
– Melakukan transfer dari memori ke lokasi dalam disk (suatu pointer digunakan sebagai penunjuk lokasi penulisan berikutnya)
– Entry dalam direktori di update
• Membaca ( Read )
– OS melakukan hal yang sama dengan penulisan file kecuali operasinya membaca dari lokasi dalam disk ke dalam memori
• Menghapus
– OS melihat ke direktori mencari entry dengan nama yang dimaksud
– Membebaskan space yang teralokasi
– Menghapus entry
• Reposition dalam file
– OS melihat ke direktori untuk mencari entry yang dimaksud,
– Pointer di set dengan harga (lokasi) tertentu yang diberikan
• Menghapus dengan menyisakan atribut ( Truncate )
– sama dengan menghapus file kecuali entry tidak dihapuskan tapi ukuran file diisi 0
File service adalah suatu perincian atau pelayanan dari file sistem yang ditawarkan pada komputer client.  File System merupakan struktur logika yang digunakan untuk mengendalikan akses terhadap data yang ada pada disk. File System terdiri dari dua bagian:
• Kumpulan file yang masing-masingnya menyimpan data-data yang berhubungan
• Struktur direktori yang mengorganisasi dan menyediakan informasi mengenai seluruh file dalam system
File System merupakan interface yang menghubungkan sistem operasi dengan disk. Ketika program aplikasi yang sedang dijalankan memerlukan pembacaan file dari hard disk, sistem operasi meminta file system untuk membuka file yang diinginkan. File system harus mengetahui lokasi penyimpanan file yang dibaca. Setelah menemukan lokasinya, file system membaca data yang ada dan mengirimkan data tersebut pada sistem operasi.
Kebutuhan File System Terdistribusi
1. Transparency
2. Concurrent File Updates
3. ile Replication
4. Hardware dan Operating Systems
5. Fault Tolerance
6. Consistency
7. Security
8. Efficiency

Contoh File System
NFS (Network File System)










Tujuan dari NFS adalah untuk memungkinkan terjadinya pertukaran sistem berkas secara transparan antara mesin-mesin bebas tersebut. Hubungan yang terjadi di sini didasarkan pada hubungan client-server yang menggunakan perangkat lunak NFS server dan NFS client yang berjalan diatas workstation.
Jika misalnya terjadi sebuah pertukaran sistem berkas antara server dan client , maka pertukaran sistem berkas yang terjadi disini harus dipastikan hanya berpengaruh pada tingkat client dan tidak mempengaruhi sisi server , karena server dan client adalah mesin yang berbeda dan sama-sama bebas. Untuk itu, mesin client harus melakukan operasi mount terlebih dahulu agar remote directory dapat diakses secara transparan.
NFS umumnya menggunakan protokol Remote Procedure Call (RPC) yang berjalan di atas UDP dan membuka port UDP dengan port number 2049 untuk komunikasi antara client dan server di dalam jaringan. Client NFS selanjutnya akan mengimpor sistem berkas remote dari server NFS, sementara server NFS mengekspor sistem berkas lokal kepada client.
operasi-operasi yang didukung oleh NFS adalah sebagai berikut:
a. Mencari berkas di dalam direktori.
b. Membaca kumpulan direktori.
c. Memanipulasi link dan direktori.
d. Mengakses atribut berkas.
e. Membaca dan menulis berkas.
Beberapa manfaat NFS diantaranya ialah
– Lokal workstations menggunakan ruang disk lebih kecil
– Pemakai tidak harus membagi direktori home pada setiap mesin di jaringan
– Direktori home dapat di set up pada NFS server dan tersedia melalui jaringan
– Device penyimpanan seperti floppy disk, CDROM drives, dll dapat digunakan oleh mesin lainnya

Kerugian /Kelemahan NFS
– Desain awal hanya untuk jaringan yang lokal dan tertutup
– Security
– Congestion (Traffic yang tinggi bisa menyebabkan akses lambat)




Bab 6 : Name Service


Name Service dalam Sistem Terdistribusi merupakan layanan penamaan yang berfungsi untuk menyimpan naming context, yakni kumpulan binding nama dengan objek, tugasnya untuk me-resolve nama. Name Service memiliki konsentrasi pada aspek penamaan dan pemetaan antara nama & alamat, bukan pada masalah rute, yang dibahas di Jaringan Komputer. Resource yang dipakai dalam Name Service adalah: komputer, layanan, remote object, berkas, pemakai.
Contoh penamaan pada aplikasi sistem terdistribusi:
– URL untuk mengakses suatu halaman web.
– Alamat e-mail utk komunikasi antar pemakai.

Tujuan Penamaan
1. Identifikasi
Seorang pemakai menginginkan obyek/layanan A, bukan obyek/layanan B.
2. Memungkinkan terjadinya sharing
Lebih dari satu pemakai dapat mengindentifikasikan resource dengan nama yang sesuai (tidak harus nama yang sama).
3. Memungkinkan location independence:
Perubahan lokasi tidak menuntut perubahan nama, asalkan lokasi tidak menjadi bagian dari nama resource tsb.
4. Memberikan kemampuan keamanan (security)
Jika sebuah nama dipilih secara acak dari himpunan besar interger, maka nama tsb hanya bisa diketahui dari legitimate source, bukan dari menebak. Jadi jika seseorang mengetahui nama obyek tsb, maka dia memang diberitahu, karena sulit sekali menebak nama tsb.

Jenis Nama
1. User names:
– Dibuat oleh pemakai (user).
– Merujuk pada suatu obyek atau layanan.
– Terdiri dari strings of characters.
– Contoh: hp201 untuk pencetak, ~bettyp/tmp/test.c untuk berkas.
2. System names:
– Terdiri dari bit string.
– Internal untuk sistem, tidak ditujukan untuk manusia.
– Lebih compact dari user names, sehingga dapat dibandingkan dengan lebih efisien.

Struktur Nama
1. Primitive/flat names (Unique Identifiers = UIDs)
– Tanpa struktur internal, hanya string of bits.
– Digunakan utk perbandingan dengan UID lain.
– Tidak membawa informasi lain -> pure names.
– Sangat berguna & banyak digunakan karena:
Location & application independent, sehingga tidak menjadi masalah bagi mobilitas obyek.
• Seragam, fixed size.
Compact: mudah disimpan, di-pass, & jika cukup besar menjadi sulit ditebak.
2. Partitioned Names (PN)
– Komposisi dari beberapa nama primitif, biasanya disusun secara hirarkis.
– Contoh: telaga.cs.ui.ac.id, /cs/docs/akademik/SisDis/naming.ppt.
– Membawa informasi -> impure names.
– Biasanya tidak secara unik mengidentifikasikan obyek, beberapa nama bisa dipetakan ke satu obyek (e.g. UNIX file links).
3. Descriptive names (DN)
– Daftar atribut yang secara bersama-sama mengidentifikasikan obyek secara unik.
– Membawa informasi -> inpure names.
– DN adalah superset dari PN.

Contoh Name Service
1. DNS (Domain Name Service) - memetakan nama domain ke alamat
2. GNS (Global Name Service)
- memetakan global name ke atribut-atribut
- skalabilitas, dapat menangani perubahan
3. X500 directory service
- memetakan nama orang ke dalam alamat suatu e-mail dan nomor telepon
4. Jini discovery service
- mencari objek sesuai dengan atribut yang ada










7.Time & Coordination

Time
Time adalah pengembangan dari sistem multiprogram. Time juga disebut dengan sistem komputasi interaktif, dimanasistem komputer menyediakan komunikasi on-line antara user dengan sistem.
Coordination
Sekumpulan algoritma yang tujuannya bermacam-macam namun men-share tujuannya, sebagai dasar dalam sistem terdistribusi : berupa sekumpulan proses untuk mengkoordinasikan tindakan atau menyetujui satu atau beberapa nilai.
Logical Clock
Hampir seluruh komputer memiliki sebuah circuit untuk menunjukan waktu. Pada kenyataannya circuit tersebut bukanlah penunjuk waktu (jam) yang sebenarnya. Kata yang tepat untuk mendeskripsikan circuit tersebut adalah timer. Dapat membuat mekanisme pewaktuan sederhana yaitu pengurutan kejadian-kejadian berdasarkan pada nilai-nilai clock yang mengikat yang dijamin konsisten dengan keterdahuluan sebab.
Synchrounous distributed system
  Dalam synchronous distributed system terdapat satu waktu global.
  Hanya synchronous distributed system dapat memprediksi perilaku (waktu).
  Dalam synchornous distributed system dimungkinkan dan aman untuk menggunakan mekanisme timeout dalam mendekteksi error atau kegagalan dalam proses atau komunikasi.
  Contohnya digunakan pada floopy, artinya ketika anda menyalin sebuah file ke floopy, perubahan secara fisik langsung ditulis ke floppy saat anda memberikan perintah copy
Asynchronous Distributed System
  Tidak ada batasan dalam waktu pengkeksekusian.
  Tidak ada batasan dalam delay transmission (penundaan pengiriman)
  Tidak ada batasan terhadap fuktuasi waktu local.
Perbandingan asinkron dan sinkron
  Untuk blok-blok data yang cukup besar, transmisi sinkronisasi jauh lebih efisien daripada asinkron. Transmisi asinkron memerlukan overhead 20 % atau lebih.
  Bila menggunakan transmisi sinkron biasanya lebih kecil dari 1000 bit, yang mengandung 48 bit kontrol informasi (termasuk flag), maka untuk pesan 1000 bit, overheadnya adalah 48 / 1048 X 100% = 4.6%



























8.Shared Data dan Transaction

Shared Data
Dalam sistem terdistribusi, shared data dapat di artikan sebagai beberapa komputer yang berbeda saling terhubung satu sama lain melalui jaringan sehingga komputer yang satu dapat mengakses dan menggunakan sumber daya yang terdapat dalam situs lain.
Pengaksesan resource pada sistem terdistribusi yang memerlukan:
      Nama resource (untuk pemanggilan)
      Alamat (lokasi resource tersebut)
      Rute (bagaimana mencapai lokasi tersebut)
Keuntungan Shared Data :
1.      Mengurangi biaya duplikasi usaha pengumpulan data
2.       Aman-menjaga data dalam lingkungan yang aman
3.       Back-up data
Transaksi (Transaction)
Merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data.
Jenis –Jenis Transaksi :
         Flat Transaction.
         Nasted Transaction.
Kesimpulan
      Share data
            Merupakan pemakaian file data tunggal oleh ebih dari satu orang atau komputer, atau suatu akses yang diberikan kepada orang lain untuk mengkases data tersebut, mempunyai tujuan untuk berbagi akses kepada user lain pada suatu folder atau drive yang diinginkan, dimana kita bisa memilih kepada user mana saja yang bisa atau boleh mengakses folder kita dan juga bisa memberikan akses kepada semua orang yang ada pada jaringan/network.
      Transaksi terdistribusi
            merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data.


Bab 9
DATABASE TERDISTRIBUSI
Sebuah sistem database terdistribusi berisikan sekumpulan site, di mana tiap-tiap site dapat berpartisipasi dalam pengeksekusian transaksi-transaksi yang mengakses data pada satu site atau beberapa site. Tiap-tiap site dapat memproses transaksi lokal yaitu sebuah transaksi yang mengakses data pada satu site di mana transaksi telah ditentukan.

Ada 2 aspek penting dari DDB :

1. Distribusi : data tidak disimpan pada tempat (prosesor) yang sama,
sehingga DDB dapat dibedakan dari database tunggal, sentralisasi

2. Korelasi logika : data memiliki property yang berhubungan sehingga DDB
dapat dibedakan dari sekumpulan database local atau file yang disimpan
pada tempat yang berbeda pada jaringan komputer.
Site-site dalam database terdistribusi dihubungkan secara fisik dengan berbagai cara. Beberapa topologi digambarkan sebagai sebuah graph yang simpulsimpulnya bersesuaian dengan site. Sebuah edge dari simpul A ke simpul B bersesuaian dengan sebuah hubungan langsung antara dua site. Beberapa konfigurasi (bentuk) digambarkan sebagai berikut:

Fully Connected network :
Keuntungan : kalau salah satu node rusak, yang lainnya masih dapat berjalan (tetapi biaya mahal).
Kerugian : control management tidak terjamin

Partially connected network :
Keuntungan : reliability rendah, biaya dapat ditekan
Kerugian : control management tidak terjamin

Tree structure network :
Keuntungan : bersifat sentral, control management lebih terjamin
Kerugian : kalau node pusat (A) rusak, semua akan rusak.
Cat : setiap proses dimulai dari bawah.

Ring Network (LAN) :
Keuntungan : rusak satu, yang lain masih berjalan
Kerugian : Control management kurang terjamin karena bersifat desentralisasi

Star Network (LAN) :
Keuntungan : - control management lebih terjamin, karena bersifat sentral
- reliability rendah
Kerugian : kalau pusat rusak, yang lainnya rusak


Bab 10

Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. 

TUJUAN PARALLEL PROCESSING
Tujuan utama dari pemrosesan paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. 

PARALLEL PROCESSING
Komputasi paralel

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak.

Yang perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer. Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.

Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal (menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model komputasi yang digunakan, yaitu:
·                     SIMD
·                     SIMD
·                     MISD
·                     MIMD

SISD

Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.


SIMD

Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).


MISD

Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.


MIMD

Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

Singkatnya untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini:


Penyelesaian Sebuah Masalah pada Komputasi Tunggal




Penyelesaian Sebuah Masalah pada Komputasi Paralel


Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal. Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.
Komputasi paralel membutuhkan :
· algoritma
· bahasa pemrograman
· compiler

Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU.
Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. 

* Message Passing Interface (MPI)
MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram
untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel.
MPI menyediakan fungsi-fungsi untuk menukarkan
antar pesan. Kegunaan MPI yang lain adalah
1. menulis kode paralel secara portable
2. mendapatkan performa yang tinggi dalam pemrograman paralel, dan
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak
begitu cocok dengan model data paralel. 

* Message Passing Interface (MPI)
MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram
untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel.
MPI menyediakan fungsi-fungsi untuk menukarkan
antar pesan. Kegunaan MPI yang lain adalah
1. menulis kode paralel secara portable
2. mendapatkan performa yang tinggi dalam pemrograman paralel, dan
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak 
begitu cocok dengan model data paralel.

Hubungan antara Komputasi Modern dengan Paralel Processing

Hubungan antara komputasi modern dan parallel processing sangat berkaitan, karena penggunaan komputer saat ini atau komputasi dianggap lebih cepat dibandingkan dengan penyelesaian masalah secara manual. Dengan begitu peningkatan kinerja atau proses komputasi semakin diterapkan, dan salah satu caranya adalah dengan meningkatkan kecepatan perangkat keras. Dimana komponen utama dalam perangkat keras komputer adalah processor. Sedangkan parallel processing adalah penggunaan beberapa processor (multiprocessor atau arsitektur komputer dengan banyak processor) agar kinerja computer semakin cepat.

Kinerja komputasi dengan menggunakan paralel processing itu menggunakan dan memanfaatkan beberapa komputer atau CPU untuk menemukan suatu pemecahan masalah dari masalah yang ada. Sehingga dapat diselesaikan dengan cepat daripada menggunakan satu komputer saja. Komputasi dengan paralel processing akan menggabungkan beberapa CPU, dan membagi-bagi tugas untuk masing-masing CPU tersebut. Jadi, satu masalah terbagi-bagi penyelesaiannya. Tetapi ini untuk masalah yang besar saja, komputasi yang masalah kecil, lebih murah menggunakan satu CPU saja.












Bab 11






KEAMANAN PADA SISTEM TERDISTRIBUSI

Keamanan sering dipandang hanyalah merupakan masalah teknis yang melibatkan dapat atau tidaknya tertembusnya suatu sistem. Keamanan ini sendiri memiliki suatu konsep yang lebih luas yang berkaitan dengan ketergantungan suatu institusi terhadap institusi lainnya. Di dalam aplikasi, suatu pembentukan sistem yang aman akan mencoba melndungi adanya beberapa kemungkinan serangan yang dapat dilakukan pihak lain diantaranya adalah :

1. Intrusion : penyerangan jenis ini seseorang penyerang akan dapat menggunakan sistem komputer yang kita miliki.
2. Denail of services : penyerangan ini mengakibatkan pengguna yang sah tidak dapat mengakses sistem.
3. Joyrider : penyerangan jenis ini disebabkan oleh orang yang merasa iseng dan ingin memperoleh kesenangan dengan cara menyerang suatu sistem.
4. Vandal : jenis serangan ini bertujuan untuk merusak sistem yang sering dituju untuk site-site besar.
5. Scorekeeper: jenis serangan ini hanyalah bertujuan untuk mendapatkan reputasi dengan cara mengacak-acak system sebanyak mungkin.
6. Mata-mata : jenis serangan ini bertujuan untuk memperoleh data atau informsi rahasia dari pihak pesaing. Tujuan utama adanya sistem keamanan adalah untuk membatasi akses informasi dan resources hanya untuk pemakai yang memiliki hak.

Beberapa ancaman keamanan yang dapat mengancam suatu sistem adalah :
1.      Leakgace : pengambilan informasi oleh penerima yang tidak berhak.
2.      Tampering : pengubahan informasi yang tidak legal.
3.      Vandalism : gangguan operasi sistem tertentu, dimana pelaku tidak mengharapkan kuntungan apapun.

Adapun bentuk perancangan sistem yang aman adalah :
1.      Rancangan harus mengikuti standard yang ada
2.      Mendemokan validasi melawan ancaman yang diketahui
3.      Melakukan audit terhadap kegagalan yang terdeteksi
4.      Adanya keseimbangan antara biaya terhadap serangan yang ada

Layanan Keamanan menurut definisi OSI yaitu :
1.      Access control : perlindungan terhadap pemakaian tak legal
2.      Authentication : menyediakan jaminan identitas seseorang
3.      Confidentiality : perlindungan terhadap pengungkapan identitas tak legal
4.      Integrity : melindungi dari pengubahan data yang tak legal
5.      Non-repudiation : melindungi terhadap penolakan komunikasi yang sudah pernah dilakukan.

Tiga dasar mekanisme keamanan yang dibangun :
1.      Enkripsi : digunakan untuk menyediakan kerahasiaan, dapat menyediakan authentication dan perlindungan integritas
2.      Digital signature : digunakan untuk menyediakan authentication, perlindungan integritas
3.      Algoritma checksum/hash : digunakan untuk menyediakan perlindungan integritas dan dapat menyediakan authentication.
Selain itu juga terdapat pula metode-metode penyerangan terhadap suatu sistem. Klasifikasi metode penyerangan tersebut adalah :
1.      Eavesdropping : mendapatkan duplikasi pesan tanpa ijin
2.      Masquerading : mengirim atau menerima pesan menggunakan identitas lain tanpa ijin mereka
3.      Message tampering : mencegat atau menangkap pesan dan mengubah isinya sebelum dilanjutkan ke penerima sebenarnya.
4.      Replaying : menyimpan pesan yang ditangkap untuk pemakaian berikutnya dan mengubah isinya sebelum dilanjutkan kepenerima sebenarnya
5.      Denail of services : membanjiri saluran atau resources dengan pesan yang bertujuan untuk menggagalkan pengaksesan pemakaian lain