27 Maret 2004 Daftar I si 1 Pendahuluan 6 1.1 Apakah yangdimaksud dengan SistemTerdistribusi ? . . . . . 6 1.2 Contoh SistemTerdistribusi . . . . . . . . . . . . . . . . . . . 6 1.3 Keuntungan dan Permasalahan SistemTerditribusi . . . . . . 8 1.3.1 Keuntungan SistemTerdistribusi . . . . . . . . . . . . 8 1.3.2 PermasalahandalamSistemTerdistribusi . . . . . . . . 8 1.4 Karakteristik SistemTerdistribusi . . . . . . . . . . . . . . . . 9 1.4.1 Transparency . . . . . . . . . . . . . . . . . . . . . . . 9 1.4.2 Communication . . . . . . . . . . . . . . . . . . . . . . 10 1.4.3 Performanceand Scalability . . . . . . . . . . . . . . . 11 1.4.4 Heterogeneity . . . . . . . . . . . . . . . . . . . . . . . 11 1.4.5 Opennes . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.4.6 Reliability dan Fault Tolerance . . . . . . . . . . . . . 13 1.4.7 Security . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5 Model dalamSistemTerdistribusi . . . . . . . . . . . . . . . . 14 1.5.1 Architectural Models . . . . . . . . . . . . . . . . . . . 15 1.5.2 Interaction Models . . . . . . . . . . . . . . . . . . . . 17 1.5.3 FailureModels . . . . . . . . . . . . . . . . . . . . . . 18 2 K omunikasi 20 2.1 SistemKomunikasi . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2 Network Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.1 TCP dan UDP . . . . . . . . . . . . . . . . . . . . . . 21 2.2.2 Komunikasi Request - Reply . . . . . . . . . . . . . . . 22 2.3 RPC dan RMI . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.1 RMI (RemoteMethod Invocation) . . . . . . . . . . . 23 2.3.2 RPC (RemoteProcedureCall) . . . . . . . . . . . . . . 29 2 DAFTAR ISI 3 3 Proses 30 3.1 Konsep Proses . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1.1 Denisi Proses . . . . . . . . . . . . . . . . . . . . . . 31 3.1.2 Status Proses . . . . . . . . . . . . . . . . . . . . . . . 32 3.1.3 Proses Control Block . . . . . . . . . . . . . . . . . . . 33 3.2 Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.1 Apa itu thread ? . . . . . . . . . . . . . . . . . . . . . 35 3.2.2 Keuntungan Thread . . . . . . . . . . . . . . . . . . . 38 3.2.3 User danKernel Thread . . . . . . . . . . . . . . . . . 39 3.2.4 MultithreadingModel . . . . . . . . . . . . . . . . . . 40 3.2.5 Fork dan Exec SystemCall . . . . . . . . . . . . . . . 42 3.2.6 Cancellation . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2.7 Penanganan Sinyal . . . . . . . . . . . . . . . . . . . . 44 3.2.8 Thread Pools . . . . . . . . . . . . . . . . . . . . . . . 45 4 Sistem Operasi Terdistribusi 47 4.1 Apakah sistemoperasi terdistribusi ? . . . . . . . . . . . . . . 47 4.1.1 SistemOperasi terdistribusi vs SistemOperasi J aringan 47 4.2 Fungsi SistemOperasi Terdistribusi . . . . . . . . . . . . . . . 49 4.2.1 Shared Resource . . . . . . . . . . . . . . . . . . . . . 49 4.2.2 Manfaat Komputasi . . . . . . . . . . . . . . . . . . . 49 4.2.3 Reliabilitas . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2.4 Komunikasi . . . . . . . . . . . . . . . . . . . . . . . . 50 4.3 KomponenSistemOperasi . . . . . . . . . . . . . . . . . . . . 50 4.3.1 Arsitektur Software . . . . . . . . . . . . . . . . . . . . 51 4.3.2 Manajemen Berkas . . . . . . . . . . . . . . . . . . . . 52 4.4 Proses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5 File Service 55 5.1 Pengenalan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.1.1 Konsep SistemFiles terdistribusi . . . . . . . . . . . . 56 5.1.2 J enis FileService . . . . . . . . . . . . . . . . . . . . . 57 5.2 KomponenFileService . . . . . . . . . . . . . . . . . . . . . . 58 5.2.1 Naming . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2.2 FileSharingSemantik . . . . . . . . . . . . . . . . . . 60 5.2.3 Chaching . . . . . . . . . . . . . . . . . . . . . . . . . 61 DAFTAR ISI 4 6 Name Service 62 6.1 Pengenalan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.1.1 Tujuan Penamaan . . . . . . . . . . . . . . . . . . . . 63 6.1.2 Contoh Penamaanyangmemberikankemampuankea- manan . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.1.3 J enis Nama . . . . . . . . . . . . . . . . . . . . . . . . 64 6.1.4 Struktur Nama . . . . . . . . . . . . . . . . . . . . . . 65 6.1.5 Tujuan Fasilitas Penamaan. . . . . . . . . . . . . . . . 66 Daftar Gambar 1.1 Contoh sistem terdistribusi, Automatic Banking (teller ma- chine) System . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Arsitektur sofwarepada sistemterdistribusi . . . . . . . . . . 12 1.3 SistemTerdistribusi pada dua titik . . . . . . . . . . . . . . . 13 1.4 Model arsitektur client - server . . . . . . . . . . . . . . . . . 16 1.5 Model Proxy Server . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1 Model komunikasi dan implementasi layer pada sistemterdis- tribusi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2 Ilustrasi implementasi RMI . . . . . . . . . . . . . . . . . . . 24 2.3 Ilustrasi implementasi RPC . . . . . . . . . . . . . . . . . . . 29 3.1 Status proses . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2 Proses Control Block . . . . . . . . . . . . . . . . . . . . . . . 35 3.3 Status proses . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.4 Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.5 Many to one . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.6 Oneto one. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.7 Many to many . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.1 Skema SistemOperasi J aringan . . . . . . . . . . . . . . . . . 48 5 Bab 1 Pendahuluan 1.1 Apakah yangdimaksud dengan SistemTer- distribusi ? SistemTerdistribusi adalah Sekumpulan komputer otonomyangterhubung kesuatu jaringan, dimana bagi pengguna sistemterlihat sebagai satu kom- puter.Maksudkomputer otonomi adalahwalaupunkomputer tidakterhubung kejaringan, komputer tersebut tetap data berjalan. Dengan menjalankan sistemterdistribusi, komputer dapat melakukan : Koordinasi Aktitas Berbagi sumber daya : hardware, softwaredan data Dengandenisi tersebut diatasmakainternet sesungguhnyabukanlahsu- atusistemterdistribusi, melainkaninfrastruktur dimana sistemterdistribusi dapat di aplikasikan pada jaringan tersebut. 1.2 Contoh Sistem Terdistribusi SistemTelepon - ISDN, PSTN Manajemen J aringan - Adminstrasi sesumber jaringan 6 BAB 1. PENDAHULUAN 7 Gambar~1.1: Contoh sistem terdistribusi, Automatic Banking (teller ma- chine) System Network FileSystem(NFS) - Arsitektur untuk mengakses sistemlemelalui jaringan WWW - Arsitektur client/ server yangditerapkandi atasinfrastruktur internet - Shared Resource(melalui URL) dll... BAB 1. PENDAHULUAN 8 1.3 K euntungan dan Permasalahan SistemTer- ditribusi 1.3.1 Keuntungan Sistem Terdistribusi Keuntunganyangdidapatkandalammenerapkansistemterdistribusi, antara lain : Performance Kumpulandari beberapa prosesor akanmemberikankinerjayanglebih baik dari pada komputer yangterpusat. Begitu juga kalau dilihat dari sisi biaya. Distribution Reliability (Fault tolerance) apabila salah satu komponen terjadi kerusakan, system tetap dapat berjalan Incremental Growth Mudah dalammelakukan penambahan komputer/ komponen SharingData/Resources Berbagi data adalah salah satu hal yang pokok pada kebanyakan ap- likasi. 1.3.2 Permasalahan dalam Sistem Terdistribusi Kelemahan pada sistemterdistribusi adalah : Kesulitan dalammembangun perangkat lunak . Kesulitanyangakandihadapi antaralain: bahasapemrogrammanyang harus dipakai, sistemoperasi dll. Masalah J aringan Karena sistemterdistribusi di implementasikan dalam jaringan kom- puter, makaisu2yangberkaitandengan jaringan komputer akan men- jadi pertimbanganutamadalammerancangdanmengimplementasikan sistem. BAB 1. PENDAHULUAN 9 Masalah Keamanan Karenapadasistemterdistribusi berbagi data/ sumber dayamerupakan hal yang mutlak maka muncul masalah2 yang berkaitan dengan kea- manan data dll. 1.4 K arakteristik Sistem Terdistribusi Ada beberapahal yangharusdiperhatikandalammembangunsistemterdis- tribusi, yaitu : Transparency (Kejelasan) Communication (Komunikasi) Performance& Scalability (Kinerja dan RuangLingkup) Heterogeneity (Keanekaragaman) Opennes (Keterbukaan) Reliability & Fault Tolerancy (Kehandalandan Toleransi Kegagalan) Security (Kemanan) 1.4.1 Transparency Access transparency Sumber daya lokal dan remote di akses dengan menggunakan operasi yang sama. Location transparency Pengguna sistemtidak tahu mengetahui keberadaan hardwaredan software (CPU,ledan data). Migration (Mobility) transparency Sumber daya(baikberupaHardwaredan/ atausoftware) dapat bebasberpin- dah tanpa mengubah sistempenamaan. BAB 1. PENDAHULUAN 10 Replication transparency Sistembebas untuk menambah le atau sumber daya tanpa diketahui oleh user (dalamrangkan meningkatkan kinerja) Concurency transparency User tidak akan mengetahui keberadaan user lain dalam sistem, walaupun user tersebut menggunakan sumber daya yangsama. Failure transparency Aplikasi harus dapat menyelesaikanproses nyawalaupunterdapat kegagalan pada beberapa pada komponen sistem. Performance transparency Beban kerja yangbervariasi tidak akan menyebabkan turunnya kinerja sis- tem, hal ini dapat di capai dengan melakukan automatisasi kongurasi ter- hadap perubahan beban. 1.4.2 Communication Komponen2 pada sistem terdistribusi harus melakukan komunikasi dalam suatuurutan. Sebagai berikut : Infrastruktur jaringan (interkoneksi dan softwarejaringan) Metodedan Model komunikasi yangcocok Metodekomunikasi : - Send - Receive - RemoteProcedureCall Model Komunikasi - client - server communication : pertukaranpesan antara dua proses : dimana satu proses (client) menggunakan / meminta layanan pada server dan server menyediakan hasil dari proses tersebut. BAB 1. PENDAHULUAN 11 - groupmulitcast : target dari pesanyangdikirimkanadalahgabungan dari proses, yangberasal dari suatu grup. 1.4.3 Performance and Scalability Ada beberapa faktor yang mempengaruhi kinerja (performance) dari pada sistemterdistribusi : Kinerja dari pada personal workstations Kecepatan infrastruktur komunikasi Fleksibilitas dalam membagi beban kerja : contoh, apabila terdapat prosesor (workstation) yangidlemakadapat di alokasikansecaraotoma- tis untuk mengerjakan tugas2user. Scalability Sistemtetapharusmemperhatikanefesiensi walaupunterdapat penambahan secara signikan user atau sumber daya yangterhubung: Cost (biaya) penambahan sumber daya (resources) harus reasonable. Penurunan kinerja (performance) diakibatkan oleh penambahan user atau sumber daya harus terkontrol. 1.4.4 Heterogeneity Aplikasi yangterdistribusi biasa berjalan dalamkeberagaman : Hardware: mainframes, workstations, PCs, server dll. Software : UNIX, MS Windows, IMB OS/ 2, LINUX dll. Devices : teller machine, robot, sistemmanufacturingdll. Network dan Protocol : Ethernet, FDDI, ATM, TCP/ IP dll Melihat keaneka ragaman di atas maka salah satu solusi yang bisa di terapkanadalah Middleware: berfungsi sebagai jembatan untuk komunikasi dan proses. BAB 1. PENDAHULUAN 12 Gambar~1.2: Arsitektur sofwarepada sistemterdistribusi 1.4.5 Opennes Salahsatuhal terpentingyangharusdimiliki olehsistemterdistribusi adalah opennes (keterbukaan) dan exibility (eksibilitas) : Setiap layanan (services) harus dapat di akses oleh semua user. Mudah dalamimplementasi, install dan debugservices; User dapat membuat dan menginstall serviceyangtelah dibuat olehsi user tersebut. Aspek kunci pada opennes : Interface dan Protocol yangstandard (seperti protokol komunikasi di internet) Support terhadapkeanekaragaman. ( denganmembuat midlewareseperti CORBA) BAB 1. PENDAHULUAN 13 Gambar~1.3: SistemTerdistribusi pada dua titik 1.4.6 Reliability dan Fault Tolerance Salahsatutujuandalammembangunsistemterdistribusi adalahmemunkinkan untuk melakukan improvisasi terhadapkehandalan sistem. Availability : kalau mesin mati (down), sistem tetap harus berjalan dengan jumlah layananan yangtersisa. Dalam sistem terdistribusi componen yang sangat vital (critical re- sources) berjumlah seminimal mungkin. Yangdimaksud dengan crit- ical resources adalah komponen yang harus ada untuk menjalankan sistemterdistribusi. Masing- masingSoftwaredan Hardwareharus di replikasi : kalau ter- jadi kegagalan / error maka yanglainakan menangani. Data dalamsistemtidak boleh hilang, copy dari le tersebut disimpan pada secara redundan pada server lain, tapi tetap harus dijaga konsistensi datanya. Fault Tolerance: Sistemharusbisamendeteksi kegagalandanmelakukan tindakandengan dasar sebagai berikut : Mask thefault (menutupi kegagalan) : tugas harus dapat dilanjutkan dengan menurunkan kinerja tapi tanpa terjadi kehilangan data atau informasi. BAB 1. PENDAHULUAN 14 Fail Gracefully : membuat suatu antisipasi terhadap suatu kegagalan kesuatu prosedur yangtelah di rencanakandanmemungkinkan untuk menghentikan proses dalamwaktu yangsingkat tanpa menghilangkan informasi atau data. 1.4.7 Security Condentiality : keamanan terhadap data yang di akses oleh user yang tidak di per- bolehkan (unauthorizes user) Integrty: keamanan terhadapkelengkapandan autentikasi data. Availability Menjaga agar resource dapat selalu di akses. Sistemterdistribusi harusmemperbolehkankomunikasi antaraprogram/ user/ resources pada computer yang berbeda, maka resiko keamanan akan muncul apabila memberlakukanfreeaccess. Danadahal lainjugayangharusdijamindalam sistemterdistribusi, yaitu : penggunaan rerources yangtepat olehuser yang berlainan. 1.5 Model dalam Sistem Terdistribusi Model dalamsistemterdistribusi : Model Arsitektur (Architectural Models) Model Interaksi (Interaction Models) Model Kegagalan (FailureModels) Resources dalamsistemterdistribusi dipakai secarabersamaoleh users. Biasa nya di bungkus (encapsulated) dalam suatu komputer dan dapat di akses oleh komputer lain dengan komunikasi. BAB 1. PENDAHULUAN 15 Setiap resourcedi atur olehprogramyangdisebut dengan resourceman- ager. Resourcemanager memberikan kemungkinan komunikasi interfacean- tar resource. Resource Managers dapat digeneralisasi sebagai proses, kalau sistem di designdengan sudut pandangobject (Object Oriented), resourcedibungkus dalamsuatu objek. 1.5.1 Architectural Models Bagaimana cara kerja sistemterdisribusi antara komponen - komponen sis- temdan bagaimana komponen tersebu berada pada sistemterdistribusi : Client - Server Model Proxy Server Peer processes ( peer to peer ) Client - Server Model Sistemyangterdiri dari kumpulan2proses disebut dengan server, dan mem- berikan layanan kepada user yangdisebut dengan client. Model client-server biasanyaberbasiskan protokol request/ reply. Contoh implementasi nya, atara lain: RPC (Remote Procedure Calling) dan RMI (RemoteMethodInvocation) : client mengirimkan request berupa pesan ke server untuk mengakses suatuservice. server menerima pesan tersebut dan mengeksekusi request client dan mereply hasil keclient BAB 1. PENDAHULUAN 16
Gambar~1.4: Model arsitektur client - server
Gambar~1.5: Model Proxy Server BAB 1. PENDAHULUAN 17 Proxy Server Proxy server menyediakan hasil copy (replikasi) dari resource yang di atur oleh server lain Biasa nya proxy server di pakai untuk menyimpan hasil copy web re- sources. Ketika client melakukan request ke server, hal yang pertama di- lakukan adalah memeriksa proxy server apakah yangdimita oleh client ter- dapat pada proxy server. Proxy server dapat diletakkan pada setiap client atau dapat di pakai bersama oleh beberapa client. Tujuannyaadalahmeningkatkanperformancedanavailibitydenganmence- gah frekwensi akses keserver. Peer Process Semua proses (object) mempunyai peranyangsama. Proses berinteraksi tanpa ada nya perbedaan antara client dan server. Pola komunikasi yangdigunakan berdasarkan aplikasi yangdigunakan. Merupakan model yangpalinggeneral dan eksible. 1.5.2 I nteraction Models Untuk interaksi nya sistemterdistribusi dibagi menjadi dua bagian : Synchrounous distributedsystem Asynchronous distributed system Synchronous Distributed System Batas atas dan batas bawah waktu pengeksekusian dapat di set. Pesan yangdikirimdi terima dalamwaktuyangsudah di tentukan Fluktuasi ukuran antara waktu local berada dalamsuatubatasan. Beberapa hal yangpentinguntuk di perhatikan : BAB 1. PENDAHULUAN 18 Dalamsynchronous distributed systemterdapat satu waktu global. Hanya synchronous distributed system dapat memprediksi perilaku (waktu). Dalam synchornous distributed system dimungkinkan dan aman un- tuk menggunakan mekanisme timeout dalam mendekteksi error atau kegagalan dalamproses atau komunikasi. Asynchronous Distributed System Banyak sistemterdistribusi yangmenggunakanmodel interaksi ini (termasuk Internet) Tidak ada batasan dalamwaktu pengkeksekusian. Tidak ada batasan dalamdelay transmission(penundaan pengiriman) Tidak ada batasan terhadap uktuasi waktulocal. Asynchronous systemsecara parktek lebih banyak digunakan. 1.5.3 Failure Models Kegagalanapasajayangdapat terjadi danbagaimanaefekyangditimbulkan ? Omission Faluires Arbitary Failures TimingFailures Kegagalandapat terjadi pada proses atau kanal komunikasi. Dan penye- babnya bisa berasal dari hardwareataupun software. Model Kegagalan(FailureModels) dibutuhkandalammembangunsuatu sistemdenganprediksi terhadap kagagalan2yangmungkin terjadi. BAB 1. PENDAHULUAN 19 Ommision Failures Yangdimaksud denganOmmision Failures adalah ketika prosesor dan kanal komunikasi mengalami kegagalan untuk melakukan hal yangseharusnya di- lakukan. Dikatakan tidak mempunyai ommision failures apabila : Terjadi keterlambatan (delayed) tetapi akhirnya tetap tereksekusi. Sebuahaksi di eksekusi walaupun terdapat kesalahan pada hasil. Dengan synchronous system, ommision failures dapat dideteksi dengan timeouts. Kalau kita yakin bahwa pesan yangdikirimsampai, timeout akan mengindikasikan bahwa proses pengiriman rusak, seperti fail-stop behavior pada sistem. Arbitary Failures Ini adalah kegagalan yangpalingburuk dalamsistem. Tahapan proses atau komunikasi diabaikan atau yang tidak diharapkan terjadi dieksekusi. Se- hinggahasil yangdiharapkantidakterjadi ataumegeluarkanhasil yangsalah. Timing Failures TimingFailuresdapat terjadi padasynchronoussystem, dimanabataswaktu di atur untuk eksekusi proses, komunikasi danuktuasi waktu. TimingFail- ures terjadi apabila waktu yangtelahditentukanterlampaui. Bab 2 K omunikasi 2.1 Sistem K omunikasi Pada bab ini akan dibahas bagaimana komunikasi antara object2dalamsis- tem terdistribusi, khusus nya dengan menggunakan RMI (Remod Method Invokation) dan RPC (RemoteProcedureCall). RMI danRPC berbasiskan metoderequest danreply. Gambar~2.1: Model komunikasi dan implementasi layer pada sistemterdis- tribusi Request dan repy diimplementasikan pada protokol jaringan. 20 BAB 2. KOMUNIKASI 21 2.2 Network Protocol Middlewaredanaplikasi terdistribusi di implementasikandiatasprotokol net- work.Protocol diimplementasikan dalambeberapa lapisan(layer). Layer protocol pada Internet 2.2.1 TCP dan UDP TCP TCP ( Transport Control Protocol) dan UDP (User Datagram Protocol) adalahprotokol transport yangberadadi ataslapisanInternet Protocol (IP). TCP adalah protocol yang handal, TCP dapat memastikan data yang dikirimkan sampai ketujuan begitu juga sebaliknya. TCP menambahkan beberapa prosedur diatas layer internet protocol un- tuk memastikan reliabilitas transport data : Sequencing Pada setiap transmisi data (paket) diberi nomor urut. Sehingga pada titik tujuan tidak ada segmen yang diterima sampai semua segmen pada urutan bawah belumdi terima. FlowControl Pengirimtidakakanmembanjiri penerima.Karenapengirimandidasarkan pada periode acknowledgment yang di terima oleh pengirimyang be- rasal dari penerima. Retrasnmission dan duplicate handling BAB 2. KOMUNIKASI 22 Apabilasegmentidak mendapatkanacknowledgedari penerimasampai waktu timeout yangditentukan terlampaui maka pengirimakan men- girimulang. Berdasarkannomor urut penerimadatadapat mendeteksi dan menolak kalau terjadi duplikasi. Buering Bueringdigunakanuntukmenyeimbangkanantarapengirimdanpener- ima. Kalau buer pada penerima penuh, maka segmen yang datang akanputus, sehingga menyebabkantidak adaacknowledgekepengirim dan pengirimakanmelakukantransmot ulang. Checksum Setiap segment membawa checksum. Apabila checksumsegmen yang di terima tidak sesuai maka paket data tersebut akan di drop (dan kemudianakan di transmit ulang) UDP UDP tidak memberikan garansi seperti halnya yangdi berikan oleh TCP. UDP tidak memberikan garansi terhadap pengiriman data Pada Internet Protocol paket data dapat drop karena suatu hal con- tohnya jaringan yangrusak, UDP tidak mempunyai mekanismeuntuk menanggulangi hal tersebut. KalauinginmenggunakanUDP sebagai protocol pengirimanyanghan- dal, makamekanismekehandalanyangdiinginkandi lakukanpadalayer aplikasi. 2.2.2 Komunikasi Request - Reply Komunikasi antara proses dan objek pada sistem terdistribusi dilakukan melalui messagepassing. BAB 2. KOMUNIKASI 23 Client melakukan : 1. Mengirim(request) pesan keserver 2. Menerima hasil (reply dari server) Server melakukan : 1. Penerimaan pesan (request) dari client 2. Mengeksekusi permintaan dari client 3. Mengirimhasil (reply) keclient. 2.3 RPC dan RMI Tujuan dari RPC dan RMI dibuat bagi programmer, agar computer yang terdistribusi terlihat seperti computer yang terpusat. Dan berguna untuk melihat sistemterdistribusi dari sisi pemrogramman. RPC dan RMI berada pada Middleware 2.3.1 RMI (Remote Method I nvocation) Berikut ilustrasi yangterjadi pada metodeRMI : Programmer pada client menulis : - BAB 2. KOMUNIKASI 24 server_ id.service(values_ to_ server,result_ arguments); - Pada sisi server mempunyai fungsi sebagai berikut : public service(in type1argfromclient; out type2argto_ client) {}; Programmer pada client tidak mengetahui bahwa reply message yang didapatkan berasal dari server yangdikirimmelalui jaringan. Gambar~2.2: Ilustrasi implementasi RMI Komponen2dalamRMI (gambar 2.2): Object A (client) : meminta layanan Object B (server) : menghantarkan layanan Proxy for B - Ketikaobject A mempunyai remotereferencekeobject B, makaakan timbul objek Proxy B pada host object A. Proxy terbuat ketika remoteobject referencedigunakan pertama kali BAB 2. KOMUNIKASI 25 - Proxy adalah perwakilan objek yang berada pada remote, dengan kata lain ketika terjadi invokasi dari A ke B ditangani seolah - olah hanya mengakses Proxy B. - Ketika invokasi terjadi proxy menggunakan metode marshals un- tuk membungkus pesan yangakan dikirimkeserver. Dan setelah menerimahasil dari server proxymenggunakanmetodeunmarshal (membuka bungkus) untukkemudianditeruskankeclient (Object A) Skeleton for object B - Padasisi server, terdapat object kerangka(skeleton) yangberhubun- gan ke class, kalau object pada class tersebut dapat diakses oleh RMI. - Skeletonmenerimapesankemudianmelakukanunmarshal danmeneruskan kemethodobject yangdituju. Dankemudianmenungguhasil dari object B dan kemudian membungkus hasil (unmarshal) dan ke- mudian dikirimkan keclient (Objec A). - Ada bagian dari skeleton B yang disebut dengan dispatcher. dis- patcher menerima request dari communication module, dan ke- mudian mengidentikasi invokasi dan mengarahkan permintaan kecorrespondingmethod ( method pada skeleton yangberfungsi untuk berkomunikasi dengan object). Communication Modul (Modul Komunikasi) -Communication modul pada client atau server bertanggung jawab dalampertukaran pesan yang dilakukan melalui metode request dan reply. RemoteReferenceModule - Bagian ini bertugas untuk menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi antara mereka disimpan dalamremoteobject table. Yangmengenerateclass untuk proxy dan skeleton adalah middleware. contoh : CORBA, J ava RMI BAB 2. KOMUNIKASI 26 Object A dan object B dipunyai oleh aplikasi (berada pada Ap- plication Layer) Remote Reference Modul dan Communication modul dimiliki oleh middleware. Proxy B danSekeletonB berada antaramiddlewaredan aplikasi yangdi generateoleh middleware. Langkah2proses dengan RMI : Urutan pemanggilan pada object client mengaktifkan method pada proxy yang akan berhubungan dengan invoked method (method yang ter-invokasi) pada object B. Kemudianmethodyangada padaproxy melakukanpembungkusanar- gumen menjadi suatu pesan (marshalling) dan meneruskan ke modul komunikasi. Berdasarkanpadaremotereferenceyangdidapat dari remotereference modul,modul komunikasi memulai request dan reply protocol melalui network. Modul komunikasi padaserver menerimarequest dari client. Kemudian berdasarkan referensi lokal yangditerima dari remotereferencemodul maka akan mengaktifkan method untuk berkomunikasi dengan object pada skeleton B (correspondingmethod). Methodpadaskeletonmeng-ekstrak(unmarshalling) argumenpadape- san yangdi terima dan mengaktifkan corresponding method (method yangberfungsi untuk melakukan komunikasi) pada object B (server). Setelahmenerimahasil dari object B, methoddari skeletonakanmem- bungkushasil tersebut dalamsebuahpesan(marshalling) danmeneruskan pesan yangsudah dibungkus kemodul komunikasi. Modul komunikasi mengrimkanpesantersebut keclient melalui jaringan. Modul komunikasi pada client menerima hasil (reply) dari server dan meneruskan kecorrespondingmethod pada proxy. BAB 2. KOMUNIKASI 27 Kemudian proxy meng-ektrak hasil (unmarshalling) dan meneruskan keobject A (client). Contoh RMI dengan menggunakan J ava RMI : Server object akan mencetak Hello Ruddy ke layar & mengembalikan pesan ke klien Pada sisi server : Server Method i mport j ava. rmi . *; publ i c i nterf ace Si mpl eI nterf ace extends Remote { Str i ng pri ntMessage(Str i ng name) throws RemoteExcepti on; } Server Object i mport j ava. rmi . *; i mport j ava. rmi . ser ver. *; publ i c cl ass Si mpl eServer ext ends Uni castRemoteObj ect i mpl ements Si mpl eI nt erf ac publ i c Si mpl eServer() t hrows RemoteExcepti on { super( ); } publ i c Stri ng pri ntMessage(Stri ng name) thr ows RemoteExcepti on { System. out. pr i ntl n(name); ret urn(Hel l o +name); } publ i c st ati c voi d mai n( Stri ng args[]) { System. setSecuri tyManager(newRMI Secur i tyManager ()); try { Si mpl eServer newServer =newSi mpl eSer ver() ; System. out. pr i ntl n(Si mpl eSer ver attempti ng to bi nd to the r egi st ry); Nami ng. r ebi nd(/ / ruddy. i nf o: 30010/ Si mpl eServer, newServer); System. out. pr i ntl n(Si mpl eSer ver bound i n the regi stry); } catch( Excepti on e) { BAB 2. KOMUNIKASI 28 System. out. pr i ntl n(Si mpl eSer ver error: +e. getMessage()); e. pri ntStackTrace( ); } } } Pada sisi client : i mport j ava. rmi . *; publ i c cl ass Si mpl eCl i ent { pri vate stati c SI mpl eI nterf ace server =nul l ; publ i c stati c voi d mai n(Stri ng ar gs[]) { try { ser ver =(Si mpl eI nterf ace) Nami ng. l ookup(/ / ruddy. i nf o: 30010/ Si mpl eServer); System. out. pr i ntl n(server. pr i ntMessage(Ruddy)); } catch( Excepti on e) { System. out. pr i ntl n(Si mpl eCl i ent error: +e. getMessage()); e. pri ntStackTrace( ); } } } BAB 2. KOMUNIKASI 29 2.3.2 RPC (Remote P rocedure Call) Proses nyakuranglebihsamadenganRMI. KalauRMI kitamengenal Proxy danSkeleton, padaRPC dikenal denganStub(Client StubdanServer Stub). Gambar~2.3: Ilustrasi implementasi RPC RemoteReferenceModul danCommunicationModul beradapadatatanan sistemoperasi. Bab 3 Proses 3.1 K onsep Proses J ika kita berdiskusi mengenai sistem operasi, maka akan timbul sebuah pertanyaan yaitu mengenai istilah apa yang tepat untuk menyebut semua kegiatan yang dilakukan oleh CPU. Sistem batch mengeksekusi jobs seba- gaimanasuatusistemtime-sharemenggunakanprogrampengguna(user pro- grams) atau tasks. Bahkan pada sistem dengan pengguna tunggal pun, seperti padaMicrosoft WindowsdanMacintoshOS, seorangpenggunamampu menjalankanbeberapaprogrampadasaat yangsama, contohnyaWordProces- sor, Web Browser, dan paket e-mail. Bahkan jika pengguna hanya dapat menjalankansatuprogrampadasatuwaktu, sistemoperasi perluuntukmen- dukung aktivitas programinternalnya sendiri, seperti managemen memori. Dalambanyak hal, seluruhaktivitas ini adalah serupa, maka kita menyebut seluruh programitu proses-proses. Istilahjobdanprosesdigunakanhampir dapat dipertukarkanpadatulisan ini. Walau kami sendiri lebih menyukai istilah proses, banyak teori dan ter- minologi sistemoperasi dikembangkan selama suatu waktu ketika aktivitas utama sistemoperasi adalah job processing. Akanmembingungkanjikakita menghindari penggunaan istilah yang telah diterima oleh masyarakat yang memasukkankatajobhanyakarenaprosesmemiliki istilahjobsebagai peng- ganti atau pendahulunya. 30 BAB 3. PROSES 31 3.1.1 Denisi P roses Secara tidak langsung, proses merupakan programyang sedang dieksekusi. Menurut Silberschatz, suatu proses adalah lebih dari sebuah kodeprogram, yangterkadangdisebut text section. Prosesjugamencakupprogramcounter, yaitu sebuah stack untuk menyimpan alamat dari instruksi yangakan diek- sekusi selanjutnya dan register. Sebuah proses pada umumnya juga memi- liki sebuah stack yang berisikan data-data yang dibutuhkan selama proses dieksekusi seperti parameter metoda, alamat return dan variabel lokal, dan sebuah data section yangmenyimpan variabel global. Sama halnya dengan Silberschatz, Tanenbaumjuga berpendapat bahwa prosesadalahsebuahprogramyangdieksekusi yangmencakupprogramcounter, register, dan variabel di dalamnya. Kami tekankanbahwa programitusendiri bukanlahsebuahproses; suatu programadalah satu entitas pasif; seperti isi dari sebuah berkas yang dis- impan didalamdisket. Sedangkan sebuah proses dalamsuatu entitas aktif, dengan sebuah programcounter yangmenyimpan alamat instruksi selanjut yang akan dieksekusi dan seperangkat sumber daya (resource) yang dibu- tuhkan agar sebuah proses dapat dieksekusi. Untuk mempermudah kita membedakan program dengan proses, kita akan menggunakan analogi yang diberikan oleh Tanenbaum. Misalnya ada seorang tukang kue yang ingin membuat kue ulang tahun untuk anaknya. Tukangkuetersebut memiliki resepkueulangtahundanbahan-bahan yang dibutuhkan untuk membuat kue ulang tahun di dapurnya seperti: tepung terigu, telur, gula, bubuk vanila dan bahan-bahan lainnya. Dalamanalogi ini, resep kue ulang tahun adalah sebuah program, si tukang kue tersebut adalaprosesor (CPU), danbahan-bahanuntukmembuat kuetersebut adalah data input. Sedangkan proses-nya adalah kegiatan sang tukang kue untuk membaca resep, mengolah bahan, dan memanggangkuetersebut. Walau dua proses dapat dihubungkan dengan programyang sama, pro- gramtersebut dianggap dua urutan eksekusi yangberbeda. Sebagai contoh, beberapa pengguna dapat menjalankan salinanyangberbeda padamail pro- gram, ataupenggunayangsamadapat memintabanyaksalinandari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian text-section adalah sama, data section-nya bervariasi. Adalah umumuntuk memiliki proses yangmenghasilkan banyak proses begituia bekerja. BAB 3. PROSES 32 3.1.2 Status P roses Bila sebuah proses dieksekusi, maka statusnya akan berubah-ubah. Sta- tus dari sebuah proses mencerminkan aktivitas ataukeadaan dari proses itu sendiri. Berikut ini adalahstatus-statusyangmungkindimiliki sebuahproses menurut Tanenbaum: Running: pada saat menggunakan CPU pada suatuwaktu. Ready: proses diberhentikan sementara karena menunggu proses lain untuk dieksekusi. Blocked: tidak dijalankan sampai event dari luar, yang berhubungan dengan proses tersebut terjadi. Sedangkanmenurut Silberschatz, terdapat lima macamjenis status yang mungkin dimiliki oleh suatu proses: New: status yangdimiliki pada saat proses baru saja dibuat. Running: statusyangdimiliki padasaat instruksi-instruksi dari sebuah proses dieksekusi. Waiting: status yangdimiliki pada saat proses menunggu suatu event (contohnya: proses I/ O). Ready: statusyangdimiliki padasaat prosessiapuntuk dieksekusi oleh prosesor. Terminated: status yang dimiliki pada saat proses telah selesai diek- sekusi. Nama-nama tersebut adalahberdasar opini, istilah tersebut bervariasi di sepanjangsistemoperasi. Keadaanyangmereka gambarkanditemukanpada seluruh sistem. Namun, pada sistemoperasi tertentu lebih baik menggam- barkan keadaan/ status proses. Penting untuk diketahui bahwa hanya satu proses yangdapat berjalan pada prosesor mana pun pada satu waktu. Na- mun, banyak proses yang dapat berstatus ready atau waiting. Keadaan diagram yang berkaitan dengan keadaan tersebut dijelaskan pada gambar 3.1 Ada tiga kemungkinan bila sebuah proses memiliki status running: BAB 3. PROSES 33 Gambar~3.1: Status proses J ika programtelah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated. J ikawaktuyangdisediakanolehOSuntuk proses tersebut sudahhabis maka akan terjadi interrupt dan proses tersebut kini berstatus Ready. J ikasuatuevent terjadi padasaat prosesdieksekusi (seperti adarequest I/ O) maka proses tersebut akan menunggu event tersebut selesai dan proses berstatus Waiting. 3.1.3 Proses Control Block Tiap proses digambarkan dalam sistem operasi oleh sebuah process con- trol block (PCB) - juga disebut sebuah control block. Sebuah PCB ditun- jukkandalamGambar 3.2. PCB berisikanbanyakbagiandari informasi yang berhubungandengansebuahproses yangspesik, termasuk hal-hal di bawah ini: Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi. Programcounter: suatu stack yangberisi alamat dari instruksi selan- jutnya untuk dieksekusi untuk proses ini. BAB 3. PROSES 34 CPU register: Register bervariasi dalamjumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stackpointer, general-purposesregister, ditambahcode information pada kondisi apa pun. Beserta dengan programcounter, keadaan/ status informasi harus disimpan ketika gangguan terjadi, un- tukmemungkinkanprosestersebut berjalan/bekerjadenganbenar sete- lahnya(lihat Gambar 3.3Tiapprosesdigambarkandalamsistemoperasi olehsebuahprocess control block (PCB) - jugadisebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 3-2. PCB berisikan banyak bagian dari informasi yangberhubungandengan sebuahproses yangspesik, termasuk hal-hal di bawah ini: Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi. Programcounter: suatu stack yangberisi alamat dari instruksi selan- jutnya untuk dieksekusi untuk proses ini. CPU register: Register bervariasi dalamjumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stackpointer, general-purposesregister, ditambahcode information pada kondisi apa pun. Beserta dengan programcounter, keadaan/ status informasi harus disimpan ketika gangguan terjadi, un- tukmemungkinkanprosestersebut berjalan/bekerjadenganbenar sete- lahnya (lihat Gambar 3.3). Informasi managemenmemori: Informasi ini dapat termasuk suatu in- formasi sebagai nilai dari dasar danbatasregister, tabel page/halaman, atautabel segmentergantungpadasistemmemori yangdigunakanoleh sistemoperasi (lihat Bab 5). Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan wakturiil yangdigunakan, batas waktu, jumlah akun jumlahjob atau proses, danbanyak lagi. Informasi status I/ O: Informasi termasuk daftar dari perangkat I/ O yangdi gunakanpadaprosesini, suatudaftar berkas-berkasyangsedang diakses dan banyak lagi. PCB hanyaberfungsi sebagai tempat penyimpananinformasi yangda- pat bervariasi dari proses yangsatu dengan yanglain. BAB 3. PROSES 35 Gambar~3.2: Proses Control Block 3.2 Thread 3.2.1 Apa itu thread ? Threadmerupakanunit dasar dari penggunaanCPU, yangterdiri dari Thread_ ID, programcounter, register set, danstack. Sebuahthreadberbagi codesection, data section, dansumber daya sistemoperasi dengan Thread lain yangdim- iliki oleh proses yangsama. Thread juga sering disebut lightweight process. Sebuahprosestradisional atauheavyweight process mempunyai threadtung- gal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan threadtunggal denganproses denganthreadyangbanyak adalahprosesden- gan thread yangbanyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu. Banyakperangkat lunakyangberjalanpadaPC moderndirancangsecara multi-threading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnyasebuahwebbrowser mempunyai threaduntuk menampilkangam- BAB 3. PROSES 36 Gambar~3.3: Status proses BAB 3. PROSES 37 Gambar~3.4: Thread bar atautulisansedangkanthreadyanglainberfungsi sebagai penerima data dari network. Kadang kala ada situasi dimana sebuah aplikasi diperlukan untuk men- jalankan beberapatugas yangserupa. Sebagai contohnya sebuahweb server dapat mempunyai ratusanklienyangmengaksesnyasecaraconcurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal makaiahanya dapat melayani satuklienpadapadasatusatuanwaktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai kliensebelumnyaselesai dilayani. Solusinyaadalahdenganmembuat web server menjadi multi-threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika per- mintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut. J ava mempunyai pengunaan lain dari thread. Perlu diketahui bahwa J ava tidak mempunyai konsep asynchronous. Sebagai contohnya kalau pro- gramjavamencoba untuk melakukankoneksi keserver makaia akanberada dalamkeadaan block statesampai koneksinya jadi (dapat dibayangkan apa yang terjadi apabila servernya mati). Karena J ava tidak memiliki konsep asynchronous makasolusinyaadalahdenganmembuat threadyangmencoba BAB 3. PROSES 38 untuk melakukan koneksi ke server dan thread lain yangpertamanya tidur selamabeberap waktu (misalnya 60 detik) kemudian bangun. Ketika waktu tidurnya habis maka ia akan bangun dan memeriksa apakah thread yang melakukan koneksi ke server masih mencoba untuk melakukan koneksi ke server, kalauthreadtersebut masihdalamkeadaanmencobauntukmelakukan koneksi ke server maka ia akan melakukan interrupt dan mencegah thread tersebut untuk mencoba melakukan koneksi keserver. 3.2.2 Keuntungan Thread Keuntungandari programyangmultithreadingdapat dipisahmenjadi empat kategori: 1. Responsi: Membuat aplikasi yanginteraktif menjadi multithreadingda- pat membuat sebuah programterus berjalan meskipun sebagian dari programtersebut diblok atau melakukanoperasi yangpanjang, karena itu dapat meningkatkanrespons kepada pengguna. Sebagai contohnya dalamwebbrowser yangmultithreading, sebuahthreaddapat 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 yangberbeda dalamlokasi memori yangsama. 3. Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pen- galokasian 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 pengatu- ran, tetapi secaraumumpembuatandanpengaturanproseslebihlama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5kali lebih lama dibandingkan context switchthread. 4. Utilisasi arsitektur multiprocessor: Keuntungan dari multithreadingda- pat sangat meningkat pada arsitektur multiprocessor, dimana setiap BAB 3. PROSES 39 thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankansetiap thread se- carabergantiantetapi hal ini berlangsungsangat cepat sehingga men- ciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yangdijalankanCPU padasatu-satuanwaktu(satu-satuanwaktupada CPU biasa disebut timesliceatau quantum). 3.2.3 User dan K ernel Thread User T hread User thread didukungdi atas kernel dan diimplementasi oleh thread library pada user level. Library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan managemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadualanthreaddilakukan di user spacetanpaintervensi dari kernel. Oleh karena itu, user-level thread biasanya cepat untuk dibuat dan diatur. Tetapi user threadmempunyai kelemahanyaituapabilakernelnyamerupakan threadtunggal makaapabilasalahsatuuser-level threadmenjalankanblock- ingsystemcall maka akan mengakibatkan seluruh proses diblok walau pun adathreadlainyangdapat jalandalamaplikasi tersebut. Contohuser-thread libraries adalah POSIX Pthreads, Mach C-threads, dan Solaris threads. K ernel T hread Kernel thread didukung langsung oleh sistem operasi. Pembuatan, pen- jadualan, dan managemen thread dilakukan oleh kernel pada kernel space. Karena pengaturan thread dilakukan oleh sistemoperasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Ke- untungannya adalah thread diatur olehkernel, karenaitujikasebuah thread menjalankan blocking systemcall maka kernel dapat menjadualkan thread lain di aplikasi untuk melakukan eksekusi. Keuntunganlainnya adalah pada lingkunganmultiprocessor, kernel dapat menjadual thread-threadpadaproces- sor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX. BAB 3. PROSES 40 Gambar~3.5: Many to one 3.2.4 Multithreading Model Many to one Model Many-to-Onemodel memetakanbanyakuser-level threadkesatukernel thread. Pengaturan thread dilakukan di user space, oleh karena itu ia esien tetapi ia mempunyai kelemahan yangsama dengan user thread. Selain itu karena hanyasatuthreadyangdapat mengaksesthreadpadasuatuwaktumakamul- tiple thread tidak dapat berjalan secara pararel pada multiprocessor. User- level threadyangdiimplementasi padasistemoperasi yangtidak mendukung kernel thread menggunakan Many-to-Onemodel. One to one Model One-to-Onemodel memetakansetiapuser threadkekernel thread. Iamenye- diakan lebih banyak concurrency dibandingkan Many-to-One model. Keun- tungannya sama dengan keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan pembuatan kernel thread. Karena pembuatan thread dapat menurunkan performa dari sebuah BAB 3. PROSES 41 Gambar~3.6: Oneto one aplikasi maka implmentasi dari model ini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang mendukung One-to-One model adalahWindows NT dan OS/ 2. Many to many Model Many-to-many model multiplexes banyak user-level thread kekernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread. J umlah kernel thread dapat spesik untuk sebagian aplikasi atau sebagian mesin. Many-to-Onemodel mengizinkandeveloper ntukmembuat user thread sebanyakyangiamautetapi concurrencytidakdapat diperolehkarenahanya satu thread yangdapat dijadual oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati un- tuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalamjumlah yang terbatas). Many-to-Many model tidak menderita kelemahan dari 2model di atas. Developer dapat membuat user thread sebanyak yangdiperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada mul- tiprocessor. Dan juga ketika suatu thread menjalankan blocking system BAB 3. PROSES 42 Gambar~3.7: Many to many call maka kernel dapat menjadualkanthreadlain untuk melakukan eksekusi. Contoh sistemoperasi yangmendukungmodel ini adalah Solaris, IRIX, dan Digital UNIX. 3.2.5 Fork dan Exec System Call Ada dua kemungkinan dalam system UNIX jika fork dipanggil oleh salah satu thread dalamproses: Semua thread diduplikasi. Hanya thread yangmemanggil fork. Kalau thread memanggil exec SystemCall maka programyang dispesi- kasi di parameter execakan mengganti keseluruhanprosestermasuk thread dan LWP. Penggunaan dua versi dari fork di atas tergantung dari aplikasi. Kalau exec dipanggil seketika sesudah fork, maka duplikasi seluruh thread tidak BAB 3. PROSES 43 dibutuhkan, karenaprogramyangdispesikasi di parameter execakanmeng- ganti seluruh proses. Pada kasus ini cukup hanya mengganti thread yang memanggil fork. Tetapi jikaprosesyangterpisahtidakmemanggil exec sesu- dahfork makaprosesyangterpisahtersebut hendaknyamenduplikasi seluruh thread. 3.2.6 Cancellation Thread cancellation adalah tugas untuk memberhentikan thread sebelumia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan J ava Virtual Machine (J VM) maka sebelum J VM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Threadyangakan diberhentikan biasa disebut target thread. Pemberhentiantarget threaddapat terjadi melalui duacarayangberbeda: Asynchronouscancellation: suatuthreadseketikaitujugamemberhen- tikan target thread. Defered cancellation: target thread secara perodik memeriksa apakah diaharusberhenti, caraini memperbolehkantarget threaduntukmem- berhentikan dirinya sendiri secara terurut. Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situ- asi dimana sumber daya sudah dialokasikan untuk thread yangakan diber- hentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedangmeng-updatedatayangiabagi denganthreadlain. Hal ini akanmen- jadi masalahyangsulit apabiladigunakanasynchronouscancellation. Sistem operasi akanmengambil kembali sumber dayadari threadyangdiberhentikan tetapi seringkali sistemoperasi tidak mengambil kembali semuasumber daya dari thread yangdiberhentikan. Alternatifnya adalah dengan menggunakan deered cancellation. Cara kerja dari deered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhen- tikan. Tetapi pemberhentianhanyaakanterjadi jikatarget threadmemeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia dapat diberhen- tikansecaraamanyangaman. Pthreadmerujuktersebut sebagai cancellation points. BAB 3. PROSES 44 Pada umumnya sistemoperasi memperbolehkan proses atau thread un- tuk diberhentikan secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini berarti sistem operasi yang mengimplemen- tasikan Pthread API akan mengizinkan deferred cancellation. 3.2.7 Penanganan Sinyal Sebuah sinyal digunakan di sistemUNIX untuk notify sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal dapat diterima secara synchro- nousatauasynchronoustergantungdari sumber danalasankenapaperistiwa itu memberi sinyal. Semua sinyal (asynchronous dan synchronous) mengikuti pola yang sama: Sebuahsinyal dimunculkan oleh kejadian dari suatu persitiwa. Sinyal yangdimunculkantersebut dikirimkeproses. Sesudah dikirim, sinyal tersebut harus ditangani. Contoh dari sinyal synchronous adalah ketika suatu proses melakukan pengaksesanmemori secarai ilegal ataupembagiandengannol, sinyal dimunculkan dan dikirimke proses yang melakukan operasi tersebut. Contoh dari sinyal asynchronousmisalnyakitamengirimkansinyal untukmematikanprosesden- gankeyboard(ALT-F4) makasinyal asynchronousdikirimkeprosestersebut. J adi ketikasuatusinyal dimunculkanolehperistiwadiluar prosesyangsedang berjalanmakaprosestersebut menerimasinyal tersebut secaraasynchronous. Setiap sinyal dapat ditangani oleh salah satu dari dua penerima sinyal: Penerima sinyal yangmerupakan set awal dari sistemoperasi. Penerima sinyal yangdidenisikan sendiri ole user. Penanganan sinyal pada programyang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengirimkan sinyal keprosesnya. Tetapi mengirimkan sinyal lebih rumit pada programyang multithreading, karena sebuah proses dapat memiliki beberapa thread. Secara umumada empat pilihan kemana sinyal harus dikirim: BAB 3. PROSES 45 Mengirimkan sinyal kethread yangdituju oleh sinyal tersebut. Mengirimkan sinyal kesetiap thread pada proses tersebut. Mengirimkan sinyal kethread tertentu dalamproses. Menugaskan thread khusus untuk menerima semua sinyal yang ditu- jukan pada proses. Cara untuk mengirimkansebuah sinyal tergantungdari jenis sinyal yang dimunculkan. Sebagai contoh sinyal synchronous perludikirimkankethread yang memunculkan sinyal tersebut bukan thread lain pada proses tersebut. Tetapi situasi dengan sinyal asynchronous menjadi tidak jelas. Beberapa sinyal asynchronous seperti sinyal yang berfungsi untuk mematikan proses (contoh: alt-f4) harus dikirimke semua thread. Beberapa versi UNIX yang multithreadingmengizinkanthreadmenerimasinyal yangakaniaterimadan menolak sinyal yang akan ia tolak. Karena itu sinyal asynchronouns hanya dikirimkankethreadyangtidak membloksinyal tersebut. Solaris 2mengim- plementasikan pilihan ke-4 untuk menangani sinyal. Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinya Windows 2000 menggunakan asynchronous procedure calls (APCs). Fasilitas APC memperbolehkan user thread untuk memanggil fungsi tertentu ketika user thread menerima notikasi peristiwa tertentu. 3.2.8 Thread Pools Pada web server yangmultithreadingada dua masalah yangtimbul: Ukuranwaktuyangdiperlukanuntukmenciptakanthreaduntukmelayani permintaan yangdiajukanterlebihpada kenyataannyathreaddibuang ketika ia seketika sesudah ia menyelesaikantugasnya. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem. SolusinyaadalahdenganpenggunaanThreadPools, carakerjanyaadalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka kepools, dimana mereka duduk diamdan menunggu untuk bekerja. J adi ketikaserver menerimapermintaanmaka makaia akanmembangunkan BAB 3. PROSES 46 thread dari pool dan jika thread tersedia maka permintaan tersebut akan dilayani. Ketikathreadsudahselesai mengerjakantugasnyamakaiakembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada satu thread yang bebas. Keuntungan threadpool: Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibandingdengan menunggu thread baru dibuat. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpadasistemyangtidakdapat mendukungbanyakthread yangberjalan secara concurrent. J umlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem, jumlahmemori sik, dan jumlah permintaan klienyangconcurrent. Bab 4 Sistem Operasi Terdistribusi 4.1 Apakah sistem operasi terdistribusi ? Sistemoperasi terdistribusi adalah salah satu implementasi dari sistemter- distribusi, di mana sekumpulan komputer dan prosesor yangheterogen ter- hubung dalam suatu jaringan. Koleksi-koleksi dari objek-objek ini secara tertutup bekerja secara bersama-sama untuk melakukan suatu tugas atau pekerjaan tertentu. Tujuan utamanya adalahuntuk memberikan hasil secaralebih, terutama dalam: lesystem namespace waktu pengolahan keamanan akses ke seluruh resources, seperti prosesor, memori, penyimpanan sekunder, dan perangkat keras. 4.1.1 Sistem Operasi terdistribusi vs Sistem Operasi J aringan Suatu sistem operasi terdistribusi yang sejati adalah yang berjalan pada beberapa buah mesin, yang tidak melakukan sharing memori, tetapi ter- lihat bagi user sebagai satu buah komputer single. Pengguna tidak perlu 47 BAB 4. SISTEM OPERASI TERDISTRIBUSI 48 memikirkan keberadaanperangkat keras yangada, seperti prosesor. Contoh dari sistemseperti ini adalah Amoeba. Sistemoperasi terdistribusi berbedadengansistemoperasi jaringan. Un- tukdapat membedakannya, sistemoperasi jaringanmemiliki ciri-ciri sebagai berikut: Tiap komputer memiliki sistemoperasi sendiri Tiappersonal komputer memiliki sistemlesendiri, di manadata-data disimpan Sistemoperasi tiap komputer dapat berbeda-beda atau heterogen Penggunaharusmemikirkankeberadaankomputer lainyangterhubung, dan harus mengakses, biasanya menggunakan remotelogin (telnet) Filesystemdapat digunakan dengan dukungan NFS Contoh dari sistemini adalah Unix danLinux Server Gambar~4.1: Skema SistemOperasi J aringan BAB 4. SISTEM OPERASI TERDISTRIBUSI 49 4.2 Fungsi Sistem Operasi Terdistribusi Sistemoperasi terdistribusi memiliki manfaat dalambanyaksistemdandunia komputasi yangluas. Manfaat-manfaat ini termasuk dalansharingresource, waktu komputasi, reliabilitas, dan komunikasi. 4.2.1 Shared Resource Walaupunperangkat sekarangsudahmemiliki kemampuanyangcepat dalam proses-proses komputasi, ataumisal dalammengakses data, tetapi pengguna masih saja menginginkan sistemberjalandengan lebih cepat. Apabilahard- wareterbatas, kecepatan yang diinginkan user dapat diatasi dengan meng- gabungperangkat yangadadengansistemDOS(DistributedOperatingSys- tem). 4.2.2 Manfaat K omputasi Salah satu keunggulan sistem operasi terdistribusi ini adalah bahwa kom- putasi berjalan dalamkeadaan pararel. Proses komputasi ini dipecahdalam banyaktitik(nodes), yangmungkinberupakomputer pribadi, prosesor tersendiri, dan kemungkinanperangkat prosesor-prosesor yanglain. Sistemoperasi ter- distribusi ini bekerjabaikdalammemecahkomputasi ini danbaikpuladalam mengambil kembali hasil komputasi dari titik-titikcluster untuk ditampilkan hasilnya. 4.2.3 Reliabilitas Fitur unikyangdimiliki olehDOSini adalahreliabilitas. Berdasarkandesign dan implementasi dari design sistemini, maka hilangnya suatu node tidak akan berdampak terhadap integritas system. Hal ini berbeda dengan kom- puter personal, apabilaadasalah satuhardwareyangmengalami kerusakan, maka systemakan berjalan tidak seimbang, bahkan sistembisa tidak dapat berjalanatau mati. Dalam sistem operasi terdistribusi tadi sebenarnya cara kerjanya mirip denganpersonal computer, tetapi bedanyaapabilaadanodeyangmati, maka akanterjadi proses halt terhadapnodetersebut danproses komputasi dapat dialihkan. Hal ini akan membuat sistem DOS selalu memiliki reliabilitas yangtinggi. BAB 4. SISTEM OPERASI TERDISTRIBUSI 50 4.2.4 Komunikasi Sistemoperasi terdistribusi biasanya berjalan dalamjaringan, dan biasanya melayani koneksi jaringan. Sistemini biasanyadigunakanuser untuk proses networking. User dapat saling bertukar data, atau saling berkomunikasi antar titik baik secara LAN maupunWAN. 4.3 K omponen Sistem Operasi Sistemoperasi terdistribusi, yang saat ini akan dibahas sebagai titik tolak adalah Amoeba, yang saat ini banyak digunakan sebagai salah satu imple- mentasi dari sistemoperasi terdistribusi itusendiri. SistemAmoebaini tum- buhdari bawahhinggaakhirnyatumbuhmenjadi sistemoperasi terdistribusi. Design SistemOperasi Amoeba Sistemoperasi terdistribusi padaumumnyamemerlukanhardwaresecara spesik. Komponen utama dalam sistem ini adalah : workstation, LAN, gateway, danprocessor pool, seperti yangdiilustrasikanpadagambar di atas. Workstation atau komputer personal mengeksekusi proses yang memer- lukan interaksi dari user seperti text editor atau manager berbasis window. Server khusus memiliki fungsi untuk melakukan tugas yangspesik. Server BAB 4. SISTEM OPERASI TERDISTRIBUSI 51 ini mengambil alih proses yang memerlukan I/ O yang khusus dari larikan disk. Gateway berfungsi untuk mengambil alih tugas untuk terhubung ke jaringan WAN. Procesor pool mengambil alih semua proses yang lain. Tiap unit ini biasanya terdiri dari prosesor, memori lokal, dan koneksi jaringan. Tiap prosesor mengerjakan satu buah proses sampai prosesor yang tidak digu- nakan habis. Untuk selanjutnya proses yanglain berada dalamantrian me- nunggu proses yang lain selesai. Inilah keunggulan sistem operasi terdis- tribusi dalam hal reliabilitas. Apabila ada satu unit pemroses yang mati, makaprosesyangdialokasikanharus di restart, tetapi integritas sistemtidak akan terganggu, apabila proses deteksi berjalan dengan baik. Desain sistem ini memungkinkan untuk 10sampai 100prosesor. Spesikasi perangkat keras yangharus disediakan pada tiapcluster min- imalnya adalah : Fileserver: 16MB RAM, 300MB HD, Ethernet card. Workstation: 8MB RAM, monitor, keyboard, mouse Pool processor: 4MB RAM, 3.5oppy drive 4.3.1 Arsitektur Software Sistem operasi terdistribusi sejati memiliki arsiitektur software yang unik. Arsitektur software ini dikarakterkan dalam objek di dalamhubungan an- tara klien dan server. Proses-proses yang terjadi di klien menggunakan re- mote procedure yang memanggil dan mengirimkan request ke server untuk memproses data atau objek yangdibawa. Tiap objek yangdibawa memiliki karakteristik yangdisebut sebagai kapabilitas. Kapabilitas ini besarnya adalah 128bits. 48 bits pertama menunjukkan servis mana yangmemiliki objek tersebut. 24bits berikutnya adalah nomor dari objek. 8bits berikutnya menampilkan operasi yang diijinkan terhadap objek yangbersangkutan. Dan 48bits terakhir merupakan check eld yang merupakan eld yang telah terenkripsi agar tidak dapat dimodikasi oleh proses yanglain. Operasi diselesaikan olehRPC (remoteprocedurecalls) yangdibuat oleh klien di dalam proses yang kecil dan ringan. Proses dengan tipe seperti BAB 4. SISTEM OPERASI TERDISTRIBUSI 52 ini memiliki bidang alamat sendiri, dan bisa saja memiliki satu atau lebih hubungan. Hubungan ini ketika berjalan memiliki program counter dan stack sendiri, tetapi dapat saling berbagi kode dan data antara hubungan lain di dalamproses. Ada 3 macambasis panggilan sistemyang dapat di- gunakan dalamproses yangdimiliki user, yaitu do_ operation, get_ request, dan send_ reply. Bagian yangpertama mengirimkan pesan keserver, setelah proses mem- blok sampai server mengirimkan balasan. Server menggunakan panggilan sistem ke dua untuk mengindikasikan bahwa server akan menerima pesan pada port tertentu. Server juga menggunakan panggilan sistemke tiga un- tuk mengirimkan kembali informasi keproses yangdipanggil. Dengan dibangun dari perintah sistem yang primitif, maka sistem ini menjadi antarmukauntuk programaplikasi. Hal ini diselesaikan olehtingkat dari pengarahanyangmengijinkan pengguna untuk berkir terhadapstruk- tur ini sebagai objek dan operasi-operasi terhadap objek ini. Berhubungan dengan objek-objek adalah class. Kelas dapat berisi kelas yang lain dan juga hierarki secara alami. Pewarisan membuat antarmuka objek untuk implementasi manipulasi objek seperti menghapus, membaca, menulis, dan sebagainya. 4.3.2 Manaj emen Berkas Dalamsistemoperasi terdistribusi ini sistemberkas dipetakan dengan baik dengan berorientasi pada objek yang ada dan kapabilitasnya. Hal ini akan menjadi berkesan abstrak, terutama untuk kelas pengguna. Ada tingkatan yanglebih ekstra dalampemetaan berkas yangada, mulai dari simbol, pen- gurutannamapath, dan kapabilitasnya. Melalui sistemini objek lokal tidak ada bedanya dengan objek publik. Dalam sistem ini ada semacan tingkatan akses yang sebenarnya mirip UNIX. Setiap user dan group memiliki hak akses yang berbeda-beda pada setiap berkas atau folder yangada pada sistemoperasi terdistribusi. Dalam implementasi sistem Amoeba, terutama di negeri Belanda, hak akses yang dimiliki pengguna terbatas pada hak baca le, tulis/ membuat le, dan hapus le. Dengan hal ini, maka keamanan server dapat terjaga. Pelayanan terhadap direktori yang ada dibuat sangat ketat dalam hal keamanan. Bahkan dibuat semacan kode acak yang akan menyandikan le BAB 4. SISTEM OPERASI TERDISTRIBUSI 53 tersebut sehingga tidak mudah dibaca oleh siapapun. Kode penyandinya akan digunakan lagi oleh sistem untuk mengembalikan le seperti semula kepada user. Kode ini hanya akan diberikan kepada pemilik le tersebut. J adi ketika user mengakses le/berkas yang bersangkutan, maka kode penyandi akan dibuat oleh sistem, agar pemilik ledapat membacanya. Pelayanandirektori ini jugabertanggungjawabdalamhal backupsistem. Hal ini akanmenyebabkan leselaluberada dalamkeadaanyangaman, dan lebihkebal tehadapgangguanyangterjadi di dalamsistem, karenapelayanan direktori ini menyimpan cachedari le atau direktori yangberada pada sis- tem. 4.4 Proses Dalamsistemoperasi terdistribusi yangsejati, tiap proses berada pada ala- mat segmen-segmenvirtual. Proses-proses ini dapat memiliki lebihdari satu hubungan. Kaitan-kaitanini dialokasikankeprosesor-prosesor sampai semua prosesor habis digunakan. Hasil dari manajemen proses seperti ini meng- hasilkan utilisasi yanglebih baik, di mana tidak perlu switch apabila harus ada proses yang berat, karena satu proses dialokasikan ke satu prosesor. Sedangkan untuk proses yang tidak kebagian tempat, maka akan masuk ke antrian. Kaitan-kaitan proses ini menggunakan semaphore untuk menun- jukkan aktitasnya Masing- masing proses memiliki kontrol sendiri pada spasi alamatnya. Masing-masingproses dapat menambah atau menghapus segmen dari spasi alamat virtualnya melalui operasi pemetaan. Objek seperti le yang berisi kapabilitas, dan yangmembaca adalah kernel, dan apabila proses diijinkan, maka ia dapat memetakan atau menghapus pemetaan segmen pada alamat virtualnya. Untukmembangunsebuahproses, makapendekripsi prosesmengirimkan- nya ke kernel. Hal ini diketahui sebagai pengiriman request untuk proses. Sebuah deskriptor proses dapat berisi deskriptor host, kapabilitas proses, penanganan kapabilitas, dan juga jumlah segmen. Deskriptor host berisi proses ini memiliki jenis apa, dan dapat berjalan di mana. Isinya adalah baris instruksi, kebutuhan memori, kelas mesin, informasi, dan sebagainya. Kernel harus memiliki deskriptor host yangsamauntuk melanjutkan proses. BAB 4. SISTEM OPERASI TERDISTRIBUSI 54 Kapabilitas proses adalah memiliki tingkatan lebih tinggi dari proses, yangmengatur apayangdapat dilakukan oleh proses, atau proses ini hanya dapat dilakukanolehsiapa. Pengatur kapabilitasmiripdenganhal ini, tetapi hanya bekerja untuk proses yangtidak normal. Alamat proses terenkapsulasi di dalam peta memori internal. Peta ini meiliki entri untuk setiap segmen dari alamat untuk proses yangpotensial. Entri berisi alamat virtual, panjangsegmen, pemetaansegmen, dan kapabil- itas dari objek yangmengetahui dari mana objek tersebut diinisialisasi.. Ada juga kaitan pemetaan yangmendeskripsikan atribut yanglain, ter- masuk di antaranya mendenisikan inisial keadaan dari kaitan, status pros- esor, programcounter, stack pointer, stack base, nilai register, dan keadaan sistempemanggil. Hal ini mengijinkandeskriptor untuk digunakandi proses. Proses memiliki dua macamkeadaan, yaitu proses sedangberjalan atau sedangstunned. Stunnedterjadi bilaprosesmasihada, tetapi tidakmelakukan eksekusi apapun, atau sedang dalam proses debug. Pada keadaan ini ker- nel memberitahu komunikator (kernel yanglain) adanya proses yangdalam keadaan stunned. Kernel yang lain tersebut berusaha berkomunikasi den- gan proses itu sampai proses di-kill atau proses tersebut berjalan kembali. Debuggingdan migrasi pada proses ini selesai setelah adanya stunning. Bab 5 File Service 5.1 Pengenalan Presently, our most common exposureto distributedsystems that exemplify some degree of transparency is through distributed le systems. Wed like remoteles to look and feel just likelocal ones. A le systemis responsiblefor theorganization, storage, retrieval, nam- ing, sharing, and protection of les. File systems providedirectory services, whichconvert a lename(possibly ahierarchical one) intoan internal iden- tier (e.g. inode, FAT index). They contain a representationof theledata itself and methods for accessingit (read/ write). Thelesystemis responsi- blefor controllingaccess to thedataandfor performinglow-level operations such as bueringfrequentlyused data and issuingdisk I/ O requests. Our goals in designing a distributed le system are to present certain degrees of transparency to the user and thesystem: access transparency Clients are unaware that les are distributed and can access themin thesameway as local les areaccessed. location transparency A consistent name space exists encompassing local as well as remote les. Thenameof a ledoes not giveit location. concurrency transparency 55 BAB 5. FILE SERVICE 56 All clients have the same view of the state of the le system. This means that if one process is modifying a le, any other processes on thesamesystemor remotesystems that areaccessingtheles will see themodications in a coherent manner. failuretransparency Theclient and client programs should operatecorrectly after a server failure. heterogeneity Fileserviceshouldbeprovidedacrossdierent hardwareandoperating systemplatforms. scalability The le system should work well in small environments (1 machine, a dozen machines) and also scale gracefully to huge ones (hundreds through tens of thousands of systems). replication transparency To support scalability, we may wish to replicate les across multiple servers. Clients should beunawareof this. migration transparency Files shouldbeableto movearound without theclients knowledge. 5.1.1 Konsep Sistem Files terdistribusi A le service is a specication of what the le systemoers to clients. A le server is the implementation of a le service and runs on one or more machines. A le itself contains a name, data, and attributes (such as owner, size, creation time, access rights). An immutable le is one that, once created, cannot bechanged. Immutablelesareeasy tocacheand toreplicateacross servers sincetheir contents areguaranteedto remain unchanged. Two forms of protection are generally used in distributed le systems, andtheyareessentiallythesametechniques that areusedinsingle-processor non-networked systems: BAB 5. FILE SERVICE 57 capabilities Eachuser is granted aticket (capability) fromsometrusted sourcefor each object to which it has access. Thecapability species what kinds of access areallowed. access control lists Each le has a list of users associated with it and access permissions per user. Multiple users may be organized into an entity known as a group. 5.1.2 J enis File Service Toprovidearemotesystemwithleservice, wewill havetoselect oneof two models of operation. One of these is the upload/ download model. In this model, therearetwofundamental operations: readletransfersanentirele fromtheserver to therequestingclient, andwritelecopies theleback to theserver. It isasimplemodel andecient inthat it provideslocal accessto thelewhenit is beingused. Threeproblems areevident. It canbewasteful if the client needs access to only a small amount of thele data. It can be problematic if the client doesnt have enough spaceto cache the entire le. Finally, what happens if others need to modify the same le? The second model is a remoteaccess model. The leserviceprovides remoteoperations such as open, close, read bytes, write bytes, get attributes, etc. The le systemitself runs on servers. The drawback in this approach is the servers areaccessedfor theduration of leaccess rather thanonceto download the leand again to upload it. Another important distinction in providing le service is that of under- standingthedierencebetweendirectoryserviceandleservice. A directory service, in the context of le systems, maps human-friendly textual names for les totheir internal locations, whichcanbeused by theleservice. The le service itself provides the le interface (this is mentioned above). An- other component of ledistributed lesystems is the client module. This is theclient-side interfacefor le and directory service. It provides a local le systeminterfaceto client software (for example, the vnode lesystemlayer of a UNIX kernel). BAB 5. FILE SERVICE 58 5.2 K omponen File Service 5.2.1 Naming In designing a distributed le service, we should consider whether all ma- chines (and processes) should have the exact same view of the directory hierarchy. We might also wish to consider whether the name space on all machines should have a global root directory (a.k.a. super root) so that les can be accessed as, for example, / / server/ path. This is a model that was adopted by theApollo Domain System, an early distributedlesystem, and more recently by the web community in the construction of a uniform resource locator (URL). Inconsideringour goals in nameresolution, wemust distinguish between location transparency and location independence. By location transparency we mean that the path name of a le gives no hint to where the le is located. For instance, wemay refer to aleas / / server1/dir/le. Theserver (server) can move anywhere without the client caring, so we have location transparency. However, if the lemoves to server2 things will not work. If wehavelocation independence, the les can be moved without their names changing. Hence, if machineor server names areembedded into pathnames wedo not achievelocation independence. It is desirabletohaveaccess transparency, sothat applications and users can access remote les just as they access local les. To facilitate this, the remote le system name space should be syntactically consistent with the local name space. One way of accomplishing this is by redening the way les are named and require an explicit syntax for identifying remote les. This cancauselegacyapplicationstofail anduser discontent (users will have to learn a newway of naming their les). An alternate solution is to use a le systemmounting mechanismto overlay portions of another le system over a node in a local directory structure. Mounting is used in the local environment to construct a uniformname space fromseparate le systems (whichresideondierent disksor partitions) aswell as incorporatingspecial- purposelesystemsintothenamespace(e.g. / proconmany UNIX systems allows lesystemaccesstoprocesses). A remotelesystemcan bemounted at aparticular point inthelocal directory tree. Attempts to access les and directories under that nodewill bedirectedtothedriver for that lesystem. To summarize, our namingoptions are: BAB 5. FILE SERVICE 59 machineand path naming(machine:path, ./machine/ path). mount remotelesystems onto the local directory hierarchy (merging thetwo namespaces). providea singlenamespacewhich looks the same on all machines. Therst two of theseoptions arerelatively easy to implement. Tipe Nama When we talk about le names, we refer to symbolic names (for example, server.c). Thesenames are used by people (users or programmers) to refer to les. Another name is the identier used by the system internally to refer to a le. Wecan think of this as a binary name (moreprecisely, as an address). On most UNIX lesystems, this would bethedevicenumber and inodenumber. OnMS-DOSsystems, this would bethedriveletter and FAT index. Directories provideamappingfromsymbolic names toleaddresses (bi- nary names). Typically, one symbolic name maps to one le address. If multiple symbolic names map onto one binary name, these are called hard links. On inode-based le systems (e.g., most UNIX systems), hard links must exist within the same device since the address (inode) is unique only on that device. On MS-DOS systems, they are not supported because le attributes arestored with thenameof thele. Having two symbolic names refer to the same data will cause problems in synchronizing le attributes (howwould youlocateother les that point to this data?). A hack to allow multiplenames to refer to the same le(whether its on the samedevice or a dierent device) is to havethesymbolic namerefer to a singleleaddress but that lemay havean attributeto tell the systemthat its contents con- tain asymbolic lenamethat shouldbedereferenced. Essentially, this adds a level of indirection: access a lewhich contains another le name, which references the le attributes and data. These les are known as symbolic links. Finally, it is possible for one symbolic name to refer to multiple le addresses. This doesnt make much sense on a local system1, but can be useful on a networked le system to provide fault tolerance or enable the systemto use thele address which is most ecient. BAB 5. FILE SERVICE 60 5.2.2 File Sharing Semantik Theanalysis of le sharingsemantics is that of understandinghowles be- have. For instance, onmost systems, if areadfollowsawrite, thereadof that location will returnthevaluesjust written. If two writes occur insuccession, thefollowingread will return theresults of thelast write. Filesystems that behavethis way aresaid to observesequential semantics. Sequential semantics can be achieved in a distributed systemif there is only one server and clients do not cache data. This can cause performance problems sinceclients will begoingtotheserver for everyleoperation(such assingle-bytereads). Theperformanceproblemscanbealleviatedwithclient caching. However, nowif theclient modiesitscacheandanother client reads datafromtheserver, it will get obsoletedata. Sequential semanticsnolonger hold. Onesolutionis tomakeall thewriteswrite-throughtotheserver. Thisis inecient and does not solvetheproblemof clients havinginvalid copies in their cache. To solvethis, theserver would haveto notify all clients holding copies of thedata. Another solution is to relax thesemantics. We will simply tell theusers that things do not work thesameway on thedistributedlesystemas they didon thelocal lesystem. Thenewrulecanbechanges toan openleare initially visibleonly to theprocess (or machine) that modied it. Theseare known as session semantics. Yet another solution is to make all the les immutable2. That is, a le cannot be open for modication, only for reading or creating. If we need to modify a le, well createa completely newleunder theold name. Immutableles are an aid to replication but they do not help with changes to theles contents (or, moreprecisely, that theold leis obsoletebecause a newone with modied contents succeeded it). We still have to contend with the issue that there may be another process reading the old le. Its possibletodetect that alehaschangedandstart failingrequests fromother processes. A nal alternativeistouseatomictransactions. Toaccessaleor agroup of les, aprocessrst executesabegintransactionprimitivetosignal that all futureoperations will beexecuted indivisibly. Whenthework is completed, an end transaction primitive is executed. If two or more transactions start BAB 5. FILE SERVICE 61 at the same time, thesystemensures that the end result is as if they were runin somesequential order. All changes haveanall or nothingproperty. 5.2.3 Chaching We can employ caching to improve system performance. There are four places in a distributed systemwherewecan hold data: 1. on theservers disk 2. in a cachein theservers memory 3. in theclients memory 4. on theclients disk Therst two places arenot an issuesinceany interfaceto theserver can check the centralized cache. It is in thelast two places that problems arise and we have to consider the issue of cacheconsistency. Several approaches may betaken: write-through What if another client reads its own cached copy? All accesses would require checking with theserver rst (adds network congestion) or re- quiretheserver to maintainstateonwhohas what les cached. Write- through also does not alleviatecongestion on writes. delayed writes Datacanbebueredlocally(whereconsistencysuers) but lescanbe updated periodically. A singlebulk writeis far moreecient than lots of littlewrites everytimeany lecontentsaremodied. Unfortunately thesemantics becomeambiguous. writeonclose This is admittingthat thelesystemuses session semantics. centralized control Server keeps track of who has what open in which mode. We would haveto support a stateful systemand deal with signalingtrac. Bab 6 Name Service 6.1 Pengenalan Pengaksesan resourcepd sistemterdistribusi memerlukan: Nama resource(untuk pemanggilan). Alamat (lokasi resource tsb). Rute(bagaimana mencapai lokasi tsb). Konsentrasi pada aspek penamaan, dan pemetaanantara nama & ala- mat, bukan pada masalah rute, ygdibahas di J aringan Komputer. Yang dimaksud dengan resource adalah : komputer, layanan, remote object, berkas, pemakai. Berikut contohnamingpd aplikasi sistemterdistribusi: URL utk mengakses suatu halaman web. Alamat e-mail utk komunikasi antar pemakai. Namingsering dianggap remeh, tapi mendasar dlmsistemterdistribusi. Karena dalamhal ini nameberfungsi sebagai identier (pengenal) pada sis- tem 62 BAB 6. NAME SERVICE 63 6.1.1 Tujuan Penamaan Identikasi: Seorangpemakai menginginkanobyek/ layananA, bukanobyek/ layanan B. Memungkinkan terjadinya sharing Lebih dari satu pemakai dapat mengindentikasikan resource dengan nama yangsesuai (tidak harus nama yangsama). Memungkinkan locationindependence: Perubahanlokasi tidakmenuntut perubahannama, asalkanlokasi tidak menjadi bagiandari nama resourcetsb. Memberikan kemampuan keamanan (security) - J ikasebuahnama dipilih secara acak dari himpunan besar interger, makanamatsbhanyabisadiketahui dari legitimatesource, bukan dari menebak. - J adi jika seseorangmengetahui nama obyek tsb, maka dia memang diberitahu, karena sulit sekali menebak nama tsb. 6.1.2 Contoh Penamaan yang memberikan kemampuan keamanan Nama dipilih secara acak dari 128bit integer -> ada sekitar 3 x 1038 nama yang berbeda. J ika sekumpulan obyek membutuhkan nama yang unik, dan di-generate 1 juta dalam 1 detik selama 100 tahun, maka pada akhirnya akan ada sekitar 3x 1015 obyek (nama). Proporsi nama yangdipakai, jauh lebih kecil dari keseluruhan nama yang tersedia. Probabilitas benar dalam menebaknamaobyektsbadalah1:1023. J ikadalamdalam1detik dilakukan 1 juta tebakan, maka diperlukan sekitar 1010 tahun untuk menebak nama yangbenar. BAB 6. NAME SERVICE 64 Ilustrasi kerja nameservice 6.1.3 J enis Nama User names: Dibuat olehpemakai (user). Merujuk pada suatuobyek atau layanan. Terdiri dari strings of characters. Contoh: hp201untuk pencetak, ~bettyp/ tmp/ test.c untuk berkas. Systemnames: Terdiri dari bit string. Internal untuk sistem, tidak ditujukan untuk manusia. Lebihcompact dari user names, shgdapat dibandingkan dengan lebih esien. BAB 6. NAME SERVICE 65 6.1.4 Struktur Nama Primitive/ at names (UniqueIdentiers = UIDs) Tanpa struktur internal, hanya stringof bits. Digunakan utk perbandingan denganUID lain. Tidak membawa informasi lain -> purenames. Sangat berguna & banyak digunakan karena: - Location&applicationindependent, shgtidakmenjadi masalahbagi mobilitas obyek. - Seragam, xed size. - Compact: mudah disimpan, di-pass, & jika cukup besar menjadi sulit ditebak. Partitioned Names (PN) Komposisi dari beberapa nama primitif, biasanya disusun secara hi- rarkis. Contoh: www.gunadarma.ac.id/ cs/ docs/akademik/SisDis/ naming.ppt. Membawa informasi ->impurenames. Biasanya tidak secara unik mengidentikasikan obyek, beberapa nama bisa dipetakan kesatu obyek (e.g. UNIX lelinks). Descriptive names (DN) Daftar atribut yang secara bersama-sama mengidentikasikan obyek secara unik. Membawa informasi ->impurenames. DN adalah superset dari PN. BAB 6. NAME SERVICE 66 6.1.5 Tujuan Fasilitas Penamaan Esien, karena fasilitas penamaan merupakan dasar pada sisdis & di- gunakan secara terus menerus. Terdistribusi. Renungkan jika UIDs dibangkitkanolehcentralizedgen- erator. - Bottleneck. - Nodetempat generator tsb mengalami kegagalan. Tampak seperti global space, tidak tergantung konektitas, topologi, dan lokasi obyek. Mendukung pemetaan 1:many antara nama & obyek, untuk memu- ngkinkan multicast. Mendukungdynamic relocation of objects, jika obyek/ proses potensial untuk mobile (berpindah-pindah). J adi diperlukan dynamic binding antara nama & alamat, juga antara alamat & rute. Memungkinkan local aliases, shg pemakai dapat mengekspresikan in- terpretasi semantik mereka thdp suatu obyek. Tentu saja diperlukan pemetaan antara aliases danfull names.