13.07.2015 Views

resume - Teknik Elektro UGM

resume - Teknik Elektro UGM

resume - Teknik Elektro UGM

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Dukungan Sistem OperasiReza Pradipta Sanjaya, 32770Galdita A. Chulafak, 33024Aditya Rizki Yudiantika, 33045Jurusan <strong>Teknik</strong> <strong>Elektro</strong> FT <strong>UGM</strong>,Yogyakarta1. PendahuluanSuatu aspek penting dari sistem terdistribusi adalah sumber daya yang digunakan secara bersama.Aplikasi klien melibatkan operasi pada sumber daya yang sering digunakan pada node lain atau palingtidak pada proses yang lain. Aplikasi (dalam wujud klien) dan jasa (dalam wujud sumber daya)menggunakan lapisan middleware untuk interaksi mereka. Middleware menyediakan pemanggilan jarakjauh antar objek atau proses di node pada suatu sistem terdistribusi. Pada bab ini, kita akan melanjutkanuntuk memusatkan pada pemanggilan jarak jauh, tanpa jaminan real-timeLapisan di bawah middleware adalah lapisan sistem operasi. Tugas tentang segala sistem operasiadalah untuk menyediakan abstrak yang berorientasi mendasari masalah sumber daya fisik- pengolah,memori, komunikasi, dan media penyimpanan. Suatu sistem operasi seperti UNIX Atau Windows Nt[Custer 1998] menyediakan programmer tersebut, sebagai contoh, file daripada blok disk, dan dengan socketdaripada akses jaringan mentah. Hal itu mengambil alih sumber daya phisik pada node tunggal danmengaturnya untuk menyajikan abstraksi sumber daya ini sampai system-call alat penghubung.Sebelumnya kita mulai pemenuhan yang terperinci peran sistem operasi middleware pendukungan, halitu adalah berguna bagi keuntungan beberapa perspektif historis dengan pengujian dua operasi konsepsistem yang sudah berakibat sepanjang pengembangan dari sistem terdistribusi : sistem operasi jaringan danmembagi-bagikan sistem operasi. Definisi bertukar-tukar. Tetapi konsep di belakangnya adalah kira-kirasebagai berikut.Kedua-duanya UNIX dan Windows NT adalah contoh sistem operasi jaringan. Mereka mempunyaisuatu kemampuan membangun networking ke dalamnya pertengahan maka dapat digunakan untuk aksessumber daya jarak jauh. Akses adalah network-transparent untuk beberapa- tidak semua- jenis sumber daya.Untuk contoh, melalui suatu sistem file terdistribusi seperti NFS, para pengguna mempunyai networktransparentmengakses ke file. Itu adalah. banyak dari file yang akses para pengguna disimpan sedikit, padasebuah server, dan ini adalah sebagian besar transparan kepada aplikasi mereka.Tetapi melukiskan karakteristik node yang berlari/menjalankan suatu jaringan yang beroperasimempertahankan sistem otonomi didalam untuk memanage mereka sendiri & memproses sumber daya.Dengan kata lain, ada berbagai gambaran sistem, setiap satu node. Dengan suatu sistem operasi jaringan,seorang pengguna dapat sedikit membukukan ke komputer lain, menggunakan rlogin atau telnet, dan prosesdijalankan di sana. Bagaimanapun, tidak sama dengan operasi system kendali proses menabrak node sendiriitu tidak menjadwalkan proses ke seberang node itu. Pengguna harus dilibatkan.Sebagai pembanding, orang bisa mempertimbangkan suatu sistem operasi di mana para penggunatidak pernah terkait dengan jika program mereka dijalankan, atau penempatan tentang segala sumber daya ,Ada suatua gambaran sistem tunggal. Sistem operasi mempunyai kendali di atas semua node di dalamsistem, dan itu dengan jelas menempatkan proses baru pada penyesuaian node apapun penjadwalankebijakan.Dukungan Sistem Operasi 1


Sesungguhnya. tidak ada system operasi terdistribusi pada penggunaan secara umum , hanya sistemoperasi jaringan seperti UNIX, MacOS dan macam-macam Windows. Hal ini untuk tinggal kasus ini, untukdua pertimbangan utama. Yang pertama, para pengguna telah banyak menginvestasikan pada aplikasiperangkat lunak mereka, yang mana sering mereka temui kebutuhan pemecahan masalah saat ini; merekatidak akan mengadopsi suatu sistem operasi baru yang tidak akan bisa menjalankan aplikasi mereka, apapunefisiensi keuntungan ditawarkan. Percobaan yang telah dibuat untuk meyaingi UNIX dan kernel sistemoperasi lain di atas kernel baru, tetapi performa system operasi saingan tersebut belum memuaskan.Bagaimanapun juga, memelihara persaingan semua sistem operasi utama yang terbaru meningkatkanmenjadi suatu karya sangat besar.Alasan yang kedua adalah perlawanan terhadap adopsi dari sistem operasi terdistribusi adalah bahwapara pengguna cenderung untuk menyukai untuk mempunyai suatu tingkat derajat otonomi untuk mesinmereka. Hal tersebut terutama sekali karena performa [Douglis dan Ousterhout 1991].Kombinasi middleware dan sistem operasi jaringan menyediakan suatu keseimbangan yang dapatditerima antara kebutuhan untuk otonomi, pada satus sisi, dan sumber daya network-transparent untukmengakses pada sisi lainnya. Sistem operasi jaringan memungkinkan para pengguna untuk menjalankanpengolah kata favorit mereka dan aplikasi lain berdiri sendiri. Middleware memungkinkan untuk mengambilkeuntungan dari servis yang tersedia pada sistem yang terdistribusi.Bagian yang berikutnya menjelaskan fungsi lapisan sistem operasi. Bagian 6.2 menguji mekanismelow-level untuk perlindungan sumber daya, yang perlu kita pahami dalam rangka menghargai hubunganantara proses dan threads, dan peran kernelnya sendiri. Bagian 6.4 untuk menguji proses, alamat proses danthreads abstrak. Di sini topik yang utama adalah concurrency, manajemen sumber daya lokal danperlindungan, dan penjadwalan. Bagian 6.5 kemudian meliputi komunikasi sebagai bagian dari pemanggilanmekanisme. Bagian 6.6 mendiskusikan jenis arsitektur sistem operasi yang berbeda, mencakup hal yangdisebut monolitis dan microkernel disain.2. Layer Sistem OperasiPara pengguna akan senang jika kombinasi middleware-OS mereka mempunyai performa yang baik.Middleware dapat berjalan pada berbagai kombinasi (platform) OS-Hardware di node suatu sistemterdistribusi. OS yang berjalan pada suatu node, suatu kernel dan servis user-level yang berhubungan,contohnya libraries, menyediakan abstraksi sendiri dari sumber daya perangkat keras local untukmemproses, media penyimpanan dan komunikasi. Middleware menggunakan kombinasi dari sumber dayalokal ini untuk menerapkan mekanismenya untuk pemanggilan jarak jauh antar object atau proses di node.Tujuan kita di dalam bab ini adalah untuk menguji dampak dari mekanisme OS tertentu padakemampuan middleware untuk mengirimkan sumber daya terdistribusi yang digunakan secara bersama kepara pengguna. Kernel dan klien dan proses server yang mengeksekusi atas proses tersebut adalahkomponen arsitektural utama yang berhubungan dengan proses tersebut. Kernel dan Proses Server adalahkomponen yang mengatur sumber daya dan klien kini hadir dengan suatu alat penghubung kepada sumberdaya itu. Sehingga sedemikian rupa, kita memerlukan sedikitnya di antara hal-hal berikut :- Encapsulation : Mereka harus menyediakan suatu servis yang bermanfaat untuk menghubungkan kesumber daya mereka, itu adalah satu set operasi yang sama dengan kebutuhan c1ients. Detil sepertimanajemen memori dan alat yan digunakan untuk menimplmentasikan sumber daya harustersembunyi dari klien.- Protection : Sumber daya memerlukan perlindungan dari akses yang illegalDukungan Sistem Operasi 2


- Concurent processing : Klien mungkin menggunakan bersama sumber daya dan mengaksesnyasecara bersamaan.Klien mengakses sumber daya dengan cara pembuatan, sebagai contoh, pemanggilan metode jarakjauh bagi suatu server obyek, atau sistem yang dipanggil ke suatu kernel. Kita menyebut pengaksesan suatusumber daya yang terbungkus adalah suatu mekanisme pemanggilan, bagaimanapun hal tersebut diterapkan.Suatu kombinasi libraries, kernel dan servers mungkin dipanggil untuk melaksanakan pemanggilan tugasberikut yang terkait :- Communication : Parameter operasi dan hasilnya harus melalui dan berasal dari para manajersumber daya, di atas suatu jaringan atau di dalam suatu komputer.- Scheduling : Ketika suatu operasi dilibatkan, pengolahan nya harus dijadwalkan di dalam kernel atauserver.Perangkat lunak OS dirancang untuk menjadi suatu yang dapat dibawa antara arsitektur computeryang mungkin. Hal ini berarti bahwa mayoritasnya adalah coded pada suatu high-level language seperti C,C++, atau Modula-3, dan bahwa fasilitas adalah berupa lapisan sedemikian sehingga komponen machinedependentdikurangi menjadi minimal suatu lapisan paling bawah. Beberapa kernel dapat mengeksekusishared-memory multiprocessors.Komponen inti OS adalah sebagai berikut :- Process Manager : Menangani penciptaan dan operasi atas proses. Suatu proses adalah suatu unitmanajemen sumber daya, mencakup suatu alamat dan satu atau lebih threads.- Threads Manger : Menciptakan Threads, sinkronisasi dan penjadwalan. Threads adalah aktivitasterjadwal yang terkait dengan proses.- Communication Manager : Komunikasi antara threads berkait dengan proses yang berbeda padasuatu komputer yang sama. Beberapa kernel juga mendukung komunikasi antara thread pada prosejarak jauh. Kernel lain tidak mempunyai pemikiran dari komputer lain untuk membangun kedalamnya, dan suatu servis tambahan yang diperlukan untuk komunikasi eksternal.- Memory Manager : Manajemenen fisik dan memori virtual.- Supervisor : Pengiriman interrupt, sistem yang sering disebut perangkap dan pengecualian lainnya :kendali manajemen unit memori dan tempat hardware caches; pengolah dan manipulasi floatingpoint unit register3. ProteksiUntuk memahami apa yang yang disebut dengan 'akses ilegal` untuk suatu sumber daya, denganmempertimbangkan sebuah file. Untuk menjelaskan hal itu, di mana pembukaan file yang mempunyai duaoperasi, yaitu write dan read. Melindungi file terdiri dari dua sub-problems. Yang pertama adalah untukmemastikan bahwa masing-masing file dua operasi dapat dilakukan hanya oleh klien dengan hak untukmelaksanakan itu.Jenis lain dari akses ilegal, yang kita akan tunjukkan di sini adalah jika sebuah kejahatan klien operasisidesteps yang merupakan sumber daya ekspor. Tentu saja, ini adalah suatu operasi tidak berarti yang akanmengganggu penggunaan file normal dan pekerjaan file itu tidak pernah akan dirancang untuk mengekspor.Kita dapat melindungi sumber daya dari pemanggilan ilegal seperti setFilePointerRandomly. Suatu arahuntuk menggunakan suatu bahasa program type-safe, seperti Java atau Modula-3. Suatu bahasa type-safesedemikian hingga tidak ada modul yang boleh untuk mengakses suatu target modul kecuali jika hal itumempunyai suatu acuan untuk target modul tersebut. sebagaimana mungkin pada C atau C++. Dan mungkinhanya menggunakan acuannya kepada modul target untuk melaksanakan pemanggilan (method calls atauDukungan Sistem Operasi 3


procedure calls) di mana target dari programmer dibuat tersedia untuk itu. Dengan membandingkannya, didalam C++ programmer boleh melempar suatu titik penunjuk bagaimanapun dia suka, dan dengan begitumelaksanakan pemanggilan non-type-safe.Kita dapat juga mempekerjakan perangkat keras untuk mendukung perlindungan modul dari satu sama laindi tingkatan dari pemanggilan individu, dengan mengabaikan bahasa di mana mereka tertulis. Untukmengoperasikan rencana ini pada suatu general-purpose komputer, kita memerlukan suatu kernel.Kernel Dan Perlindungan Kernel adalah suatu program yang dibedakan oleh fakta bahwa itu selaluberjalan dan kodenya dieksekusi dengan akses perlakuan khusus untuk sesumber fisik pada komputer hostnya.Secara khusus hal itu dapat mengendalikan unit manajemen memori dan menetapkan processor registersehingga tidak ada kode lain yang boleh mengakses sesumber fisik mesin kecuali dengan jalan yang bisaditerima.Kebanyakan pengolah mempunyai suatu mode register perangkat keras yang menentukan apakahinstruksi mana yang dapat dieksekusi. Suatu kernel memroses eksekusi dengan processor dalam modesupervisor.Kernel juga menetapkan ruang alamat untuk melindungi dirinya sendiri dan proses lain dari proses yangmenyimpang. Suatu ruang alamat adalah suatu koleksi kumpulan range lokasi virtual memori. Suatu prosestidak bisa mengakses memori di luar ruang alamatnya. Ketika suatu proses mengeksekusi kode aplikasi, iamengeksekusi dalam suatu user-level untuk aplikasi tersebut.4. Proses Dan ThreadSuatu proses terdiri dari suatu execution environment bersama-sama dengan satu atau lebih thread.Suatu threads adalah abstraksi sistem operasi dari suatu aktivitas. Suatu execution environment merupakanunit manajemen sesumber. Suatu execution environment terdiri dari:‣ suatu ruang alamat;‣ thread sinkronization dan communication resource, misalnya semaphore;‣ sesumber higher-level, seperti window dan open file.Execution environment biasanya mahal untuk menciptakan dan mengatur, tetapi beberapa threadsdapat digunakan secara bersama. Mereka dapat menggunakan secara bersama semua sesumber yang dapatdiakses di antara mereka. Dengan kata lain, suatu execution environment menghadirkan wilayahperlindungan yang mengeksekusi threads.Threads dapat diciptakan dan dihancurkan dengan dinamis jika dibutuhkan. Tujuan multiple threadadalah untuk memaksimalkan derajat concurent eksekusi antar operasi, hal itu memungkinkan prosesconcurrent pada multiprosesor.4.1 Ruang AlamatSuatu addres space adalah suatu unit manajemen dari proses virtual memori. Suatu region adalahsuatu area virtual memori yang dapat diakses dengan threads yang memiliki proses tersebut.Dukungan Sistem Operasi 4


Figure 6.3Address space2 NAuxiliaryregionsStac kHeap0Tex tInstructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3© Addison-Wesley Publishers 2000Masing-masing region ditetapkan oleh sifat:‣ lingkupnya ( ukuran dan alamat virtual terendah);‣ perijinan read/write/execute untuk process`s threads;‣ apakah dapat naik atau turun.Penggunaan region bersama meliputi:‣ Pustaka: Kode pustaka dapat sangat besar dan akan memboroskan memori jika dimunculkansecara terpisah ke dalam tiap-tiap proses yang menggunakannya.‣ Kernel: Sering kode kernel dan data dipetakan ke dalam tiap-tiap ruang alamat pada lokasi yangsama. Ketika suatu proses membuat suatu panggilan sistem atau suatu perkecualian terjadi, tidakdibutuhkan untuk men-switch ke suatu kumpulan dari pemetaan alamat.‣ Data sharing dan komunikasi: Dua proses, atau suatu proses dan kernel, membutuhkan share datauntuk bekerja sama dengan beberapa task.4.2 Pembentukan Proses BaruPenciptaan suatu proses baru secara tradisional tak terpisahkan dalam penyajian sistem operasi.Untuk sistem terdistribusi, desain dari mekanisme proses pembentukan harus mengambil accountpemanfaatan berbagai computer. Konsekwensinya, dukungan proses infrastruktur terbagi menjadi sistemservis yang terpisah.Penciptaan suatu proses baru dapat dipisahkan ke dalam dua aspek:‣ Pilihan suatu tuan target host.‣ Penciptaan suatu execution environment ( dan suatu initial threads di dalamnya).Kebijakan transfer menentukan apakah untuk meletakkan suatu proses baru secara lokal atau secaraterkendali. Kebijakan penempatan menentukan node mana yang sebaiknya host pilih untuk dipindahkan.Dukungan Sistem Operasi 5


Keputusan ini tergantung pada sejumlah besar node, pada arsitektur mesinnya dan pada sesumber khususyang diprosesnya.Kebijakan penempatan proses mungkin adaptip atau statis. Load-Sharing sistem mungkin terpusat,desentralisasi, atau hirarkis. Dan terdapat beberapa struktur pohon. Load manager mengumpulkaninformasi tentang node dan menggunakannya untuk mengalokasikan proses baru ke node.Ketika suatu host komputer telah dipilih, sebuah proses baru memerlukan suatu lingkunganeksekusi yang terdiri dari suatu alamat dengan konten yang terinisialisasi. Ada dua pendekatan untukmelukiskan dan inisialisasi alamat tersebut suatu proses yang baru saja diciptakan. Pendekatan pertamayang digunakan jika alamat merupakan format yang secara statis digambarkan.Sebagai alternatif, alamat dapat digambarkan berkenaan dengan suatu lingkungan eksekusi yangtelah ada. Copy-On-Write adalah suatu teknik umum, sebagai contoh, ini juga digunakan untukmengcopy pesan besar, maka kita memerlukan banyak waktu untuk menjelaskan operasinya di sini.Mari kita mengikuti suatu contoh daerah RA dan RB, memori yang mana yang digunakan bersamacopy-on-write di antara dua proses, A dan B ( Gambar 6-4). Dengan keterbatasan, kita asumsikan bahwaset proses A pada daerah RA untuk copy-inherited oleh “anak”nya, proses B, dan bahwa daerah RBadalah dengan diciptakan pada proses B.Kita mengasumsikan, bahwa halaman milik daerah A adalah berada di dalam memori. Yang padaawalnya, semua bingkai halaman berhubungan dengan daerah bersama antara kedua tabel halamanproses. Halaman pada awalnya write-protected di tingkatan perangkat keras, sesungguhnya punhaltersebut merupakan kepunyaan daerah yang secara logika bisa dituliskan. Jika sebuah thread padapercobaan proses lainnya yang mana mencoba untuk memodifikasi data itu, maka suatu perkecualianperangkat keras untuk memanggil suatu halaman kesalahan. Mari kita katakan proses B mencoba untukditulis. Kesalahan halaman handler mengalokasikan suatu bingkai baru untuk proses B dan menyalin databingkai yang asli ke dalam byte untukbyte. Sejumlah frame sebelumnya digantikan oleh nomor frame yang baru pada suatu halamanproses, hal itu tidak berarti frame terdahulu dibiarkan berada pada halaman lain. Keduanya bersesuaianhalaman pada proses A dan B yang kemudian setiap kali dibuat tertulis perintah di perangkat keras.Setelah semua ini berlangsung, proses B memodifikasi instruksi yang diijinkan untuk diproses.4.3 ThreadAspek kunci berikutnya dari suatu proses untuk mempertimbangkan lebih detail adalah threadnya.Berdasarkan gambar di bawah, server mempunyai suatu kelompok yang terdiri satu atau lebih thread,masing-masing secara berulang-ulang menghilangkan sebuah request dari suatu antrian request yangditerima dan memrosesnya. Agar lebih sederhana, kita asumsikan masing-masing thread menggunakanprosedur yang sama untuk memroses request. Kita asumsikan masing-masing request rata-ratamemerlukan 2 miliseconds untuk memroses dan 8 miliseconds untuk waktu tunda ketika input-outputketika server membaca dari suatu disk (tidak terdapat caching). Kita asumsikan juga bahwa servermengeksekusi dengan sebuah processor computer.Berdasarkan throughput server maksimal, perhitungan pada permintaan client ditangani tiap detikuntuk jumlah thread yang berbeda. Jika sebuah thread harus melakukan semua processing, kemudianwaktu untuk menangani request rata-rata 2+8=10 miliseconds, maka server ini dapat menangani 100request dari client tiap detiknya. Request baru yang tiba ketika server sedang menangani suatu requestakan mengantri pada server port.Dukungan Sistem Operasi 6


Sekarang kita lihat jika pada server mengandung dua buah thread. Kita asumsikan jika threadtersebut terjadwal bebas, sebuah thread dapat dijadwalkan ketika yang lainnya menjadi di-block selamainput-output. Kemudain thread nomor dua dapat memroses request selama sedetik ketika thread nomorsatu di-block ataupun sebaliknya. Hal ini meningkatkan throughput pada server. Pada contoh yangdiberikan, thread di-block pada sebuah disk drive. Jika semua request diserialkan dan memerlukan 8miliseconds masing-masingnya, maka maksimum throughput-nya adalah 1000/8 = 125 request/detik.Sekarang kita asumsikan terdapat chaching. Server menyimpan data yang dibacanya pada bufferpada lokasi alamatnya. Suatu server thread yang meminta data pertama-tama mengamati cache yang disharedan menghindari mengakses disk jika menemukannya. Jika terdapat 75% hit rate, rata-rata waktuinput-output per request berkurang hingga (0.75x0 + 0.25x8) = 2 miliseconds, dan maksimal throughputsecara teori meningkat hingga 500 request per detik. Tapi jika rata-rata waktu processor untuk sebuahrequest meningkat hingga 2.5 miliseconds per request sebagai hasil dari caching maka hasil tersebut takdapat dicapai. Server yang terbatasi oleh processor sekarang dapat menangani paling banyak 1000/2.5=400 request per detik.Throughput dapat ditingkatkan dengan menggunakan suatu shared memory multiprocessor untukmemudahkan processor bottleneck. Suatu proses multi-thread biasanya memetakan ke suatu sharedmemory multiprocessor. Lingkungan eksekusi berbagi dapat diimplementasikan pada shared memory,dan banyak thread dapat dijadwalkan untuk berjalan pada banyak processor.4.3.1 Arsitektur Server Multi-ThreadMulti-thread dapat memungkinkan server untuk memaksimalkan throughput-nya yang dihitungberdasarkan jumlah request yang diproses tiap detiknya. Gambar di atas memperlihatkan salah satukemungkinan arsitektur threading, worker pool architecture. Pada bentuk paling sederhananya, servermembentuk suatu kelompok yang tetap dari „worker‟ thread untuk memroses request ketika iamemulainya. Modul menandai „receipt dan queuing‟ pada gambar di atas biasanya diimplementasikanpada suatu thread I/O yang menerima request dari suatu kumpulan socket atau port dan meletakkannyapada suatu shared request untuk retrieval oleh para worker.Kadang terdapat suatu persyaratan untuk memberi request berbagai prioritas. Kita dapat menanganiberbagai prioritas request dengan menggunakan banyak antrian ke dalam arsitektur worker pool sehinggaworker thread memindai antrian dalam suatu urutan untuk menurunkan prioritas. Kelemahan dariarsitektur ini adalah ketidakfleksibilitasnya. Kelemahan lainnya adalah level yang tinggi dari switchingantara I/O dan worker thread seperti saat memanipulasi antrian yang berbagi.Pada arsitektur thread-per-request, thread I/O menggunakan thread worker yang baru pada tiaprequest, dan worker tersebut menghancurkan dirinya ketika telah memroses request daripada mendesainremote object. Arsitektur ini mempunyai keuntugan yaitu thread tidak berisi shared queue, danDukungan Sistem Operasi 7


throughput dimaksimalkan karena thread I/O dapat membentuk worker sebanyak request yang ada.Kelemahannya adalah overhead dari pembentukan thread dan operasi yang merusak.Arsitektur thread-per-koneksi mengasosiasikan thread dengan masing-masing koneksi. Servermembentuk suatu worker thread yang baru ketika suatu client membuat suatu koneksi danmenghancurkan thread ketika client menutup koneksi. Client dapat membentuk banyak request padakoneksi dan mempunyai target pada satu atau lebih remote object. Arsitektur thread-per-objectmengasosiakan suatu thread denagn masing-masing remote object. Suatu thread I/O menerima requestmengantrikannya pada worker, tetapi kali ini terdapat suatu per-object antrian.Pada dua arsitektur yang terakhir keuntungan server yaitu dari menurunkan manajemen threadoverhead dibandingkan dengan arsitektur thread-per-request. Kelemahannya adalah client akan menundaselama thread worker mempunyai beberapa request tetapi thread lain tidak ada pekerjaan untu kmelakukannya.w orkersper-connection threadsper-object threadsI/OremoteobjectsremoteobjectsI/Oremoteobjectsa. Thread-per-request b. Thread-per-connection c. Thread-per-object4.3.2 Thread dalam ClientThread dapat menjadi berguna untuk client seperti pada server. Gambar 6.5 juga memperlihatkansuatu proses pada client dengan dua thread. Thread pertama membangkitkan hasil untuk dilewatkan keserver dengan remote method invocation, tetapi tidak memerlukan balasan. Remote method invocationbiasanya mem-block pemanggil. Proses pada client ini dapat menggabungkan sebuah thread kedua yangmana melakukan remote method invocation dan pemblokan, selama itu thread pertama dapatmelanjutkan komputasi untuk hasil yang lebih jauh. Thread pertama meletakkan hasilnya pada buffer,yang mana dikosongkan oleh thread kedua. Hal ini hanya diblok ketika semua buffer penuh.4.3.3 Thread vs Banyak ProsesThread memungkinkan komputasi menjadi overlap dengan input-output , begitu pulamultiprocessor. Terdapat dua alasan mengapa digunakan multi-thread, yang pertama adalah thread lebihmurah untuk dibentuk dan diatur daripada proses, dan yyang kedua adalah berbagi sesumber dapatdilakukan lebih efisien antar thread daripada antar proses karena thread berbagi suatu lingkunganeksekusi.Dukungan Sistem Operasi 8


Gambar di atas memperlihatkan suatu execution environment dan thread diasosiasikan ke ruangalamat pada memory utama, sedangkan data dan instruksi pada hardware cache. Perbandingan antaraproses dan thread yaitu:‣ membentuk suatu thread baru pada proses yang ada lebih murah daripada membentuk suatu proses.‣ switching ke suatu thread yang berbeda dalam proses yang sama lebih murah daripada switchingantar thread pada proses yang berbeda.‣ thread di dalam suatu proses dapat berbagi data dan sesumber lain serta secara efisien dibandingkandengan proses yang terpisah.‣ thread dalam suatu proses tidak terlindung dari yang lainnya.Overhead yang berhubungan dengan pembentukan suatu proses pada umumnya lebih besardaripada membentuk thread baru. Execution environment yang baru harus pertama kali dibentuk,termasuk tabel alokasii alamat. Pada suatu kernel yang menyupport virtual memory, proses baru akanmenganggap kesalahan halaman sebagai data dan instruksi direferensikan sebagai yang pertama.Hardware cache akan dianggap tidak mempunyai data untuk proses yang baru, dan hal ini harusmendapatkan cache entry selama dieksekusi.Suatu context switch merupakan transisi antara context yang berjalan ketika switching antar thread,atau ketika suatu thread tunggal membuat suatu panggilan sistem atau mengambil perkecualian yang lain.Switching antar thread akan saling berbagi execution environment yang sama pada level user tidakberpengaruh pada transisi domain dan biasanya murah. Switching ke kernel atau thread lain padaexecution environtment yang sama melalui kernel mempengaruhi transisi domain. Biaya yangdibutuhkan lebih besar tetapi jikakernel dipetakan ke lokasi alamat proses, hal ini masih dianggap rendah.4.3.4 Thread ProgrammingThread programming merupakan pemrograman bersamaan. Kebanyakan thread programmingdilakukan pada bahasa konvensional seperti C yang telah diaugmentasi dengan suatu pustaka thread.Beberapa bahasa menyediakan layanan langsung untuk thread, seperti java. Pada beberapa implementasithread, Java menyediakan metode untuk membentuk thread, menghancurkannya, danmensinkronisasikannya. Kelas Java Thread termasuk constructor dan management method yang terlihatpada gambar di bawah.Dukungan Sistem Operasi 9


preemptive (kadang disebut penjadwalan coroutine), suatu thread berjalan hingga ia membuat suatupanggilan ke sistem thread (misalnya sistem pemanggilan), ketika sistem dapat menjadwalkan ulang danmenjadwalkan thread lain untuk berjalan.Keuntungan penjadwalan non-preemptive yaitu pada beberapa kode yang tidak mengandung suatupemanggilan ke sistem thread secara otomatis dianggap seksi kritis. Namun penjadwalan thread nonpreemptivetidak dapat mengambil keuntungan dari multiprocessor. Penjadwalan thread non-preemptivejuga tidak cocok untuk aplikasi real time, yang mana even diasosiasikan dengan waktu absolute ketikaharus diproses.4.3.7 Threads implementationBanyak kernel menyediakan layanan untuk proses multi-thread, termasuk Windows NT, Solaris,Mach, dan Chorus. Kernel tersebut menyediakan pembentukan thread dan memanajemen sistempanggilan, dan mereka menjadwalkan individual thread. Beberapa kernel lainnya hanya mempunyaisebuah abstraksi proses thread tunggal. Multi-thread memroses harus diimplementasikan pada suatupustaka dari prosedur dihubungkan ke aplikasi program. Pustaka thread run time mengorganisirpenjadwalan dari thread. Suatu thread akan mem-blok proses dan semua thread di dalamnya jika iamembuat suatu pemanggilan sistem blocking, sehingga asynchronous (non-blocking) fasilitas inputoutputdari kernel yang ada dieksploitasi. Implementasinya dapan mengutilisasi penyediaan waktukernel dan fasilitas software interrupt ke bagian waktu antar thread.Ketika tidak ada kernel yang menyupport untuk prose multi-thread disediakan, thread levelpengguna akan menemui beberap masalah:‣ Thread di dalam proses tidak dapat mendapat keuntungan dari multiprocessor‣ Suatu thread yang mengambil kesalahan halaman mem-block proses yang ada dan semua threaddi dalamnya‣ Thread di dalam proses yang berbeda tidak dapat dijadwalkan berdasarkan suatu skema tunggalberdasarkan prioritasImplementasi thread level user pada sisi lain mempunyai keuntungan yang signifikan melaluiimplementasi level kernel:‣ Operasi thread yang ada membutuhkan biaya yang lebih rendah.‣ Variasi pada persyaratan penjadwalan menjadi semakin besar karena konsiderasi aplikasi yangkhusus.‣ Lebih banyak thread level user dapat ditunjang daripada dengan kernel yang ada.Suatu penjadwal level pengguna menandai masing-masing thread level pengguna ke suatu threadlevel kernel. Skema ini dapta memberi keuntungan dari multiprocessor, dan juga menguntungkankarena beberapa operasi pembentukan thread dan switching thread terjadi pada level pengguna.Kelemahan dari skema ini adalah masih kurang fleksibilitas, jika thread memblok kernel, maka semuathread level pengguna ditandai dan juga dilarang berjalan.Sistem penjadwalan berbasis event menanggapi komponen sistem utama menjadi kernel yangberjalan pada komputer dengan satu atau lebih processor, dan suatu set program aplikasi berjalan diatasnya. Masing-masing proses aplikasi mengandung suatu penjadwal level pengguna yang mengaturthread di dalam proses. Kernel bertanggungjawab untuk mengalokasikan virtual processor untukmemroses. Jumlah virtual processor yang memroses tergantung pada faktor persyaratan aplikasi,prioritas hubungannya, dan total pemasukan pada processor. Pada gambar di bawah memperlihatkansuatu contoh dari tiga mesin processor , yang mana kernel mengalokasikan sebuah virtual processoruntuk memroses A, menjalankan pekerjaan dengan prioritas rendah yang berhubungan, dan dua virtualDukungan Sistem Operasi 11


processor untuk memroses B. Disebut virtual processor karena kernel dapat mengalokasikan processorfisik yang berbeda pada masing-masing proses dengan sejalannya waktu.Jumlah virtual processor yang dibutuhkan bervariasi. Proses dapat balik memberi suatu virtualprocessor yang tidak dibutuhkan lagi, proses juga dapat meminta tambahan virtual processor. Gambardi atas yang b memperlihatkan proses memberitahu kernel ketika dua tipe kejadian terjadi. Gambartersebut juga memperlihatkan bahwa kernel memberitahu proses ketika beberapa dari 4 kejadian terjadi.Suatu scheduler activation (SA) merupakan suatu panggilan dari kernel ke proses yang memberitahukanpenjadwalan proses dari suatu event. Penjadwal level pengguna mempunyai tugas untuk menandaithread READY-nya untuk mengeset SA. Empat tipe event di mana kernel memberitahukan kepenjadwal level pengguna yaitu:Pengalokasian virtual processor: kernel menandai suatu virtual processor yang baru ke proses, danini merupakan bagian yang pertama. Penjadwal dapat membuka SA dengan conteks dari suatu threadREADY yang dapat merekomendasikan eksekusiSA diblok: suatu SA telah memblok pada kernel, dan kernel menggunakan SA untuk memberitahupenjadwal. Penjadwal mengeset bagian dari thread yang berhubungan untuk BLOCKED dan dapatmengalokasikan suatu thread READY untuk memberitahu SA.SA tidak diblok: suatu SA yang diblok pada kernel menjadi tidak diblok dan siap untuk dieksekusilagi pada level pengguna. Penjadwal dapat mengembalikan thread yang bersangkutan pada daftarREADY. Untuk membentuk pemberitahuan ke SA, kernel juga mengalokasikan suatu processor virtualyang baru untuk memroses atau harus menduduki SA lain pada proses yang sama.SA di-preempt: kernel telah mengambil spesifikasi SA dari proses. Penjadwal meletakkan threadyang di-preempt pada daftar READY dan mengevaluasi ulang alokasi thread.Skema penjadwalan hirarki ini fleksibel karena proses penjadwal level pengguna dapatmengalokasikan thread ke SA dalam berbagai persyaratan masih dapat dibangun pada puncak eventDukungan Sistem Operasi 12


level rendah. Sekema tersebut efisien karena tidak ada thread level pengguna yang butuh tinggal padadaerah READY jika terdapat virtual processor yang menjalankannya.5. Komunikasi Dan PemanggilanBeberapa kernel didesain untuk sistem terdistribusi telah menyediakan komunikasi primitif ke tipepemanggilan. Meletakkan komunikasi level tinggi secara fungsional pada kernel mempunyai keuntungandari efisiensi. Pada prakteknya, middleware, bukan kernel, menyediakan hampir semua fasilitas komunikasilevel tinggi yang ditemukan pada sistem saat ini, termasuk RPC/RMI, pemberitahuan event dan komunikasigrup. Mengembangkan semacam software yang kompleks seperti kode level pengguna lebih sederhanadibandingkan mengembangkannya pada kernel. Pengembang biasanya mengimplementasikan middlewaremelalui socket memberikan akses ke protokol standar internet. Alasan menggunakan socket adalah karenaportabilitas dan interoperabilitasnya. Middleware dibutuhkan untuk mengoperasikan selebar mungkin sistemoperasi yang mungkin ddigunakan.Salah satu satu persyaratan utama dari sistem operasi adalah untuk menyediakan protokol standar yangmemungkinkan internetworking antar implementasi middleware pada platform yang berbeda. Kernel hanyamenyediakan pesan lewat antar proses lokal saja, dan meninggalkan proses protokol jaringan ke suatu serveryang berjalan pada puncak dari kernel.Kompabilitas pada level TCP dan UDP dibutuhkan oleh sistem operasi pada hampir semua peralatanjaringan yang terkecil, dan sistem operasi masih dibutuhkan untuk mengaktifkan middleware untukmendapatkan keuntungan dari protokol level rendah. Protokol biasanya disusun pada suatu tumpukan layer.Banyak sistem operasi mengijinkan layer yang baru untuk diintegrasikan secara statis dengan memasukkansuatu layer seperti IrDA sebagai suatu driver protokol yang terinstal secara permanen. Dynamic protocolcomposition merupakan suatu teknik di mana tumpukan protokol dapat disusun pada suatu ruang untukmenemukan persyaratan dari suatu bagian aplikasi, dan untuk mengoptimalkan phisical layer yang ada padaplatform.Contoh dari dynamic protocol composition digunakan pada protokol request-reply melalui suatulayer jaringan nirkabel untuk menurunkan latensi.5.1 Kinerja PemanggilanKinerja pemanggilan merupakan faktor penting dalam desain sistem terdistribusi. Semakinperancang memisahkan fungsionalitas antara ruang alamat, semakin dibutuhkan juga pemanggilanpemanggilanremote (jarak jauh). Klien dan server dapat membuat banyak jutaan operasi pemanggilanterhubungdalam siklus hidupnya, sehingga sebagian kecil dalam milidetik dihitung dalam kebutuhanpemanggilan. Teknologi jaringan terus membaik, tetapi kebutuhan waktu pemanggilan tidak berkurangsecara proporsional dengan kenaikan bandwidth jaringan. Bagian ini akan menjelaskan bagaimanaoverhead perangkat lunak sering mendominasi overhead jaringan dalam waktu pemanggilan - palingtidak, untuk kasus LAN atau intranet. Hal ini berbeda dengan pemanggilan remote melalui internet -misalnya, mengambil sumber daya web. Di Internet, latency jaringan sangat bervariasi, tetapi rata-ratamempunyai nilai yang tinggi, bandwidth seringkali rendah, dan beban server sering mendominasisepanjang kebutuhan pemrosesan per-request.Implementasi RPC dan RMI telah menjadi subjek studi, karena secara luas mekanisme inidigunakan untuk client-server-processing secara umum. Banyak penelitian telah dilakukan berdasarpemanggilan dalam jaringan, dan terutama mengenai bagaimana mekanisme pemanggilan dapatmengambil keuntungan dari kinerja tinggi jaringan [Hutchinson et al. 1989, van Renesse et al. 1989,Schroeder dan Burrows 1990, Johnson dan Zwaenepoel 1993, von Eicken et al.1995, Gokhale danSchmidt 1996]. Ada juga, seperti yang akan kita tunjukkan, kasus penting RPC antar proses dikontrololeh komputer yang sama [Bershad et al. 1990, Bershad et al. 1991].Dukungan Sistem Operasi 13


5.1.1 Biaya PemanggilanMemanggil suatu prosedur konvensional, membuat sebuah sistem panggilan, mengirim pesan,memanggil prosedur remote pemanggilan semuanya adalah contoh dari mekanisme pemanggilan.Setiap mekanisme menyebabkan kode untuk dieksekusi keluar dari jangkauan prosedur atau objek yangterpanggil. Secara umum, komunikasi argumen ke kode ini dan pengembalian nilai data ke pemanggil.Mekanisme pemanggilan dapat dilakukan secara sinkron, misalnya dalam kasus konvensional danpanggilan prosedur remote, atau juga dapat dilakukan secara asynchronous.Perbedaan penting terkait kinerja mekanisme pemanggilan, terlepas dari apakah sinkron atau tidaksinkron, adalah apakah mereka melibatkan sebuah domain transisi (yaitu, apakah mereka menyeberangiruang alamat), apakah mereka melibatkan komunikasi melalui jaringan, dan apakah mereka melibatkanpenjadwalan dan switching suatu thread. Gambar 6.1.1 menunjukkan kasus-kasus tertentu dari suatusistem panggilan, pemanggilan remote proses antar proses yang dikontrol oleh komputer yang sama,dan suatu pemanggilan remote antar proses pada node berbeda dalam sistem terdistribusi.5.1.2 Pemanggilan Melalui JaringanSebuah null RPC (juga, null RMI) didefinisikan sebagai RPC tanpa parameter yang menjalankanprosedur null, dan tidak mengembalikan nilai. Pelaksanaannya melibatkan pertukaran pesan yangmembawa sedikit data system dan tidak ada data pengguna. Hingga saat ini, waktu untuk null RPCantara dua proses pengguna yaitu pada PC 500MHz melalui 100 megabit / detik LAN adalah padaurutan kesepuluh satu millisecond. Sebagai perbandingan, panggilan prosedur konvensional nullmengambil sebagian kecil mikrodetik. Pada urutan total 100 byte diteruskan ke seluruh jaringan untuksuatu null RPC. Dengan bandwidth mentah 100 megabit / detik, total waktu transfer jaringan untukDukungan Sistem Operasi 14


jumlah data ini adalah sekitar 0,01 milidetik. Jelas, banyak penundaan yang dilakukan – waktu totalpanggilan RPC yang dialami oleh seorang klien harus dipertanggungjawabkan oleh tindakan-tindakankernel sistem operasi dan tingkatan user saat menjalankan kode RPC .Biaya pemanggilan null (RPC, RMI) penting karena hal tersebut mengukur overhead yang tetap,yaitu latency. Invocation biaya meningkat sejalan dengan ukuran argumen dan hasilnya, tapi dalambanyak kasus, latency bersifat signifikan dibandingkan dengan pengingat tunda.Perhatikan suatu RPC yang mengambil jumlah tertentu data dari server. Hal ini memiliki satupermintaan argument bertipe integer,dimana penetapan ukuran data diperlukan. Ada dua argumentjawaban, suatu integer menentukan keberhasilan atau kegagalan (klien mungkin telah memberikanukuran yang tidak valid), dan, bila panggilan sukses sebuah array byte diperoleh dari server.Gambar 6.12 menunjukkan, secara skematik, penundaan klien terhadap ukuran data yang diminta.Penundaan kira-kira sebanding dengan ukuran sampai ukuran tersebut mencapai ambang batas sekitarukuran paket jaringan. Batas di luar itu, setidaknya satu paket tambahan harus dikirim, untuk membawadata tambahan. Tergantung protocol yang digunakan, paket selanjutnya dapat digunakan untukmengakui paket tambahan ini. Lompatan dalam grafik muncul setiap kali jumlah paket meningkat.Penundaan bukan satu-satunya faktor yang menarik untuk sebuah implementasi RPC: bandwidth(atau throughput) RPC juga menjadi keprihatinan ketika data tersebut harus ditransfer dalam jumlahbesar. Bandwidth/throughput ini adalah kecepatan transfer data antara komputer dalam sebuah RPC.Jika kita kaji Gambar 6,12, kita dapat melihat bahwa bandwidth relatif rendah untuk data dalam jumlahkecil, tetapi ketika fixed processing overhead mendominasi. Karena jumlah data meningkat, makabandwidth yang meningkat sebagai overhead menjadi kurang signifikan. Gokhale dan Schmidt [I996]mengutip, sebuah throughput menjadi sekitar 80 megabit / detik saat mentransfer 64 kilobyte, dalamsebuah RPC antara workstation melalui jaringan ATM dengan nominal bandwidth 155 megabit / detik.Dalam kurang lebih 0,8 milidetik untuk mentransfer 64 kilobyte, ini berada dalam urutan yang samabesarnya seperti waktu yang dikutip di atas untuk null RPC lebih dari Ethernet 100 megabit / detik.Ingat bahwa langkah-langkah dalam sebuah RPC adalah sebagai berikut (RMI melibatkanlangkah-langkah serupa):Dukungan Sistem Operasi 15


‣ Suatu client stub menyusun argumen ke dalam pesan, mengirim pesan permintaan dan menerima danmengembalikan/membalas jawaban;‣ Pada server, suatu worker thread menerima permintaan yang masuk, atau suatu thread I / Omenerima permintaan dan dilewatkan ke worker thread; dalam salah satu kasus, worker memanggilserver stub yang tepat;‣ Server stub membalas pesan yang diminta, memanggil prosedur yang ditunjuk, dan memecahprosedur dan mengirimkan jawaban.Berikut ini adalah komponen utama perhitungan untuk tunda pemanggilan remote, selain waktutransmisi jaringan: Penyusunan: penyusunan dan pemecahan prosedur, yang melibatkan penggandaan dan konversidata, menjadi suatu overhead penting overhead sebagai jumlah data yang menaik. Penyalinan data: sangat berpotensi, bahkan setelah penyusunan, data pesan disalin beberapa kalidalam perjalanan sebuah RPC:1. melintasi batas pengguna kernel, antara klien atau ruang alamat server dan kernel buffer;2. melintasi setiap layer protokol (misalnya, RPC / UDP / IP / Ethernet);3. antara antarmuka jaringan dan kernel buffer.Transfer antara antarmuka jaringan dan memori utama biasanya ditangani oleh akses memorilangsung /direct access memory (DMA). Prosesor menangani salinan lain. Paket Inisialisasi: Ini melibatkan inisialisasi protokol header dan trailer, termasuk checksum. Olehkarena itu, biaya proporsional, sebagian, ke dalam jumlah data yang terkirim. Penjadwalan dan context switching thread : ini mungkin terjadi sebagai berikut:1. beberapa panggilan sistem (yaitu, konteks switch), yang dibuat selama RPC, seperti stubmemanggil operasi komunikasi kernel;2. satu atau lebih thread server dijadwalkan;3. jika sistem operasi menggunakan proses pengendalian jaringan terpisah, maka setiappengiriman melibatkan context switch ke salah satu thread. Menunggu suatu acknowledgement: Pemilihan protokol RPC dapat mempengaruhi penundaan,terutama ketika sejumlah besar data dikirimkan.Ketelitian desain dari sistem operasi dapat membantu mengurangi beberapa masalah tersebut.Studi kasus Firefly RPC, desain tersedia di www.cdk3.net/oss menunjukkan beberapa di antaranyasecara rinci, serta teknik-teknik yang berlaku dalam implementasi middleware. Kita telah menunjukkanbagaimana dukungan sistem operasi untuk thread dapat membantu mengurangi overhead multithreading.Sistem operasi dapat juga berdampak dalam mengurangi penyalinan memori-memorioverheadmelalui fasilitas sharing.5.1.3 Memory SharingDaerah terbagi (diperkenalkan di Subbab 6.4) dapat digunakan untuk komunikasi cepat antaraproses pengguna dan kernel, atau antar proses pengguna. Data dikomunikasikan dengan penulisan danpembacaan dari area yang sama. Data ditransmisikan secara efisien, tanpa menyalin dan dari ruangalamat kerneI. Namun interupsi panggilan dan perangkat lunak sistem mungkin diperlukan untuksinkronisasi - misalnya ketika proses pengguna (user-process) telah menulis data yang harusDukungan Sistem Operasi 16


ditransmisikan, atau ketika kernel telah menulis data untuk proses pengguna untuk dipakai. Tentu saja,sebuah wilayah terbagi (shared region) hanya dibenarkan jika digunakan cukup untuk mengimbangibiaya pengaturan awal .Bahkan dengan pembagian region, kernel masih harus menyalin data dari buffer ke antarmukajaringan. Arsitektur U-Net [von Eicken et al. 1995] bahkan memungkinkan kode level user untukmemiliki akses langsung ke jaringannya sendiri, sehingga kode level user dapat mentransfer data kejaringan tanpa salinan.5.1.4 Pemilihan ProtokolKeterlambatan bahwa suatu pengalaman klien selama interaksi request-reply melalui TCPdaripada UDP tidak selalu buruk, dan kadang-kadang lebih baik, terutama untuk pesan besar. Namun,perawatan diperlukan ketika mengimplementasikan interaksi request-reply dalam sebuah protokolseperti TCP, yang tidak secara khusus dirancang untuk tujuan ini. Secara khusus, kinerja buffering TCPdapat menghalangi kinerja yang baik, dan overhead koneksi diletakkan di posisi yang kurangmenguntungkan dibandingkan dengan UDP, kecuali pesan cukup dibuat lebih dari satu koneksi untukmembuat overhead per-request terabaikan.Koneksi overhead TCP sangat jelas dalam pemanggilan Web, karena HTTP 1.0 membuat koneksiTCP yang terpisah untuk setiap pemanggilan. Browser klien ditunda ketika sambungan dibuat.Selanjutnya, TCP algoritma slow-start memiliki efek tunda transfer data HTTP yang tidak perlu dalambanyak kasus. Algoritma slow-start beroperasi secara pesimis dalam menghadapi kemungkinankemacetan jaringan dengan mengizinkan adanya frame kecil data yang akan dikirim pada awalnyanya,sebelum sebuah acknowledgement diterima. Nielson et al. (1997) mendiskusikan bagaimana HTTP 1. 1memanfaatkan apa yang disebut koneksi persistent, yang terakhir selama beberapa pemanggilan. Biayakoneksi awal kemudian diamortisasi, selama beberapa pemanggilan yang dibuat untuk web server yangsama. Hal ini mungkin karena pengguna sering mengambil beberapa halaman dari situs yang sama,masing-masing berisi beberapa gambar.Nielson et al. juga menemukan bahwa sistem operasi override buffering default bisa memilikidampak signifikan pada penundaan pemanggilan. Hal ini sering menguntungkan untuk mengumpulkanbeberapa pesan kecil dan kemudian mengirimkannya bersama-sama, daripada mengirimkan merekadalam paket terpisah, karena per-paket latency yang telah dijelaskan di atas. Untuk alasan ini, OS tidakperlu segera melakukan dispatch data melalui setelah korespondensi socket write () call. Perilakudefault OS adalah menunggu sampai buffer penuh atau untuk menggunakan timeout sebagai kriteriauntuk mengirim data melalui jaringan, dengan harapan bahwa akan semakin banyak data yang datang.Nielson et al, menemukan bahwa dalam kasus HTTP 1.1 perilaku system operasi default dapatmenyebabkan keterlambatan yang signifikan karena timeout. Untuk menghapus penundaan ini makadapat dilakukan dengan pengaturan TCP kerneI tersebut, dan memaksa dispatch jaringan pada batasbataspermintaan HTTP. Ini adalah contoh yang baik bagaimana sebuah sistem operasi dapat membantuatau menghalangi middleware karena kebijakan yang diterapkan.5.1.5 Pemanggilan dalam KomputerBershad et al. [1990] melaporkan sebuah studi yang menunjukkan bahwa, dalam proses instalasiyang telah diperiksa, kebanyakan pemanggilan cross-address-space terjadi dalam komputer ataupuntidak, sebagaimana bisa diharapkan dalam instalasi client-server, antar komputer. Tren ke arahfungsionalitas layanan menempatkan level user di dalam server yang berarti bahwa semakin banyakpemanggilan yang akan menjadi proses lokal. Hal ini dilakukan terutama agar caching dipacu secaraagresif, ketika data yang dibutuhkan oleh klien cenderung diproses di server lokal. Biaya dari suatuDukungan Sistem Operasi 17


RPC dalam komputer menjadi semakin penting sebagai parameter kinerja sistem. Pertimbangan inimenunjukkan bahwa kasus proses lokal harus dioptimalkan.Gambar 6.11 menunjukkan bahwa pemanggilan cross-address-space yang diimplementasikandalam komputer sama persis seperti yang dilakukan antar komputer, kecuali bahwa pesan yang masukternyata menjadi lokal. Memang, ini menjadi model yang sering diterapkan. Bershad et al. [1990]mengembangkan mekanisme pemanggilan lebih efisien untuk kasus proses pemanggilan pada mesinyang sama, yang disebut lightweight RPC (LRPC). Desain LRPC didasarkan pada mengenai optimasipenyalinan data dan penjadwalan thread.Pertama, mereka mencatat bahwa hal tersebut akan lebih efisien untuk menggunakan memoriregion bersama untuk komunikasi client-server, dengan region yang berbeda (pribadi) antara server danmasing-masing klien lokal. Seperti sebuah region mengandung satu atau lebih A (untuk argumentasi)tumpukan (lihat Gambar 6.13). Memang, parameter RPC tidak dapat disalin di antara kernel danpengguna ruang alamat yang terlibat, klien dan server dapat melewati argumen dan mengembalikannilai-nilai secara langsung melalui A stack. Stack yang sama digunakan oleh klien dan server stub.Dalam LRPC, argumen yang dapat disalin sekali: ketika dilakukan penyusunan ke A Stack. Dalamkeadaan yang RPC yang sama, RPC akan disalin empat kali: dari attack client stub ke pesan; dari pesanke sebuah kernel buffer; dari kernel buffer ke server pesan; dari pesan ke server stub's stack. Mungkinada beberapa tumpukan di shared region, karena beberapa thread di klien yang sama dapatmenghubungi server pada waktu yang sama.Bershad et al. juga mempertimbangkan biaya penjadwalan thread. Bandingkan model system calldan prosedur panggilan remote pada Gambar 6.1. Ketika system call terjadi, sebagian besar kerneltidak menjadwalkan thread baru untuk menangani panggilan tetapi melakukan context switch padapemanggilan thread sehingga sistem menangani panggilan. Dalam sebuah RPC, remote prosedurmungkin ada di komputer yang berbeda dari thread klien, jadi thread yang berbeda harus dijadwalkanuntuk melaksanakannya. Dalam kasus dalam area lokal, bagaimanapun juga, mungkin lebih efisienDukungan Sistem Operasi 18


untuk thread klien - yang dapat diblok - untuk memanggil prosedur yang dipanggil di ruang alamatserver.Sebuah server harus diprogram secara berbeda, dalam hal ini dengan cara sesuai denganpenjelasan server yang dijelaskan sebelumnya. Alih-alih mendirikan satu atau lebih thread, yangkemudian mendengarkan permintaan request pada port, server mengirim satu set prosedur yang siapuntuk dipanggil. Threads dalam proses lokal dapat masuk ke lingkungan eksekusi server seperti selamaproses tersebut dimulai dengan menghubungi salah satu prosedur pengiriman server. Sebuah klien yangmembutuhkan untuk dilakukan pemanggilan sebuah operasi server harus terlebih dahulu membelakangiantarmuka server (tidak ditampilkan dalam gambar). Ini dilakukan melalui kernel, yang akanmemberitahu server; ketika server telah menanggapi kernel dengan daftar alamat prosedur yangdiperbolehkan, kernel membalas kepada klien dengan kemampuan untuk melakukan pemanggilanoperasi server.Sebuah pemanggilan ditunjukkan pada Gambar 6. I3. Seorang thread klien memasuki lingkunganeksekusi server dengan terlebih dahulu menjebak ke dalam kernel dan menyajikannya dengan sebuahkemampuan. Kernel memeriksa dan ini hanya mengijinkan sebuah context switch ke prosedur serveryang valid, jika valid, kernel memilih thread-context untuk memanggil prosedur di lingkungan eksekusiserver. Ketika prosedur di server kembali, thread kembali ke kernel, dimana memilih thread kembali kelingkungan eksekusi klien. Perhatikan bahwa klien dan selokan mempekerjakan prosedur stub untukmenyembunyikan rincian aplikasi yang baru saja dijelaskan dari penulis aplikasi.5.1.6 Diskusi LRPCAda sedikit keraguan bahwa LRPC lebih efisien daripada RPC untuk kasus lokal, sepanjangpemanggilan berlangsung cukup untuk mengimbangi biaya manajemen memori. Bershad et al. LRPCmencatat penundaan dengan faktor tiga lebih kecil daripada RPC dieksekusi secara lokal.Transparansi lokasi tidak dikorbankan dalam pelaksanaan Bershad. Seorang klien stub memeriksasedikit bit pada waktu tersebut yang mencatat apakah server lokal atau remote, dan berlanjut untukmenggunakan LRPC atau RPC. Aplikasi ini tidak menyadari yang mana yang digunakan. Namun,transparansi migrasi mungkin sulit untuk dicapai ketika sumber daya ditransfer dari server lokal keremote server, atau sebaliknya, karena kebutuhan untuk mengubah mekanisme pemanggilan.Pada kesempatan lain, Bershad et al. [1991] menjelaskan beberapa perbaikan kinerja, yangditujukan terutama untuk operasi multiprosesor. Kekhawatiran sebagian besar untuk menghindariperangkap ke kernel dan menjadwalkan prosesor sedemikian rupa untuk menghindari transisi domainyang tidak diperlukan. Sebagai contoh, jika suatu prosesor idle dalam konteks manajemen memoriserver pada waktu sebuah thread klien berupaya untuk melakukan pemanggilan sebuah prosedur server,maka seharusnya thread tersebut dipindahkan ke prosesor. Hal ini menghindari transisi domain; padawaktu yang sama, prosesor cIient dapat digunakan kembali oleh thread lain pada sisi klien. Perangkattambahan ini melibatkan pelaksanaan dua - leveI (user dan kernel) penjadwalan thread.5.2 Operasi Tak SinkronKita telah membahas bagaimana sistem operasi dapat membantu lapisan middleware untukmenyediakan mekanisme pemanggilan remote yang efisien. Tapi disini juga mengamati bahwa dalamlingkungan internet berdampak latency tinggi, bandwidth rendah dan load server yang tinggi mungkinmemberikan manfaat lebih besar daripada yang dapat disediakan OS. Kita dapat menambahkanDukungan Sistem Operasi 19


fenomena hal ini dengan pemutusan jaringan dan rekoneksi, yang dapat dianggap sebagai penyebablatencykomunikasi yang sangat tinggi.<strong>Teknik</strong> umum untuk mengalahkan latency yang tinggi adalah operasi tak sinkron, yang munculdalam dua model pemrograman; pemanggilan concuurent dan pemanggilan tak sinkron. Model inibanyak digunakan dalam domain middleware daripada desain kernel sistem operasi, tetapi bergunauntuk mempertimbangkan hal tersebut, sementara di sini dilakukan pemeriksaan topik kinerjapemanggilan.5.2.1 Pembuatan Pemanggilan SinkronPada model pertama, middleware hanya menyediakan penghalangan terhadap invokai, tetapibeberapa aplikasi memunculkan halangan terhadap thread untuk melakukan blok pemanggilan secarabersamaan.Sebuah contoh yang baik seperti aplikasi web browser. Sebuah halaman web biasanya berisibeberapa gambar. Browser harus mengambil gambar masing-masing dalam request HTTP GET yangterpisah (karena standar HTTP 1.0 web server hanya mendukung satu sumber request ). Browser tidakperlu untuk mendapatkan foto dalam urutan tertentu, sehingga membuat request secara bersamaan -biasanya sampai dengan sekitar empat kali dalam satu waktu. Dengan cara itu, waktu yang dibutuhkanuntuk menyelesaikan semua request gambar biasanya lebih rendah daripada keterlambatan yang ketikamenggunakan serial request. Tidak hanya penundaan komunikasi total yang berkurang, pada umumnya,tetapi dapat saling tumpang tindih terhadap komputasi browser seperti komunikasi dengan imagerender.Gambar 6.14 menunjukkan keuntungan potensial pemanggilan interleaving (seperti HTTPrequests) antara klien dan server tunggal pada mesin prosesor tunggal. Dalam kasus serial, klienmenyusun argumen, memanggil operasi Send dan kemudian menunggu sampai jawaban dari serverditerima – sedangkan Receives, pembongkaran dan kemudian memproses hasilnya. Setelah ini dapatdilanjutkan dengan membuat pemanggilan kedua.Dalam kasus concurrent, klien pertama thread menyusun argumen dan memanggil operasi Send.Thread kedua kemudian segera membuat pemanggilan kedua. Setiap thread menunggu untuk menerimahasil-hasilnya. Total waktu yang diambil adalah cenderung lebih rendah dari kasus serial, sepertiditunjukkan gambar. Keuntungan yang sama berlaku jika thread klien konkuren membuat permintaanuntuk beberapa server, dan jika klien mengeksekusi pada multiprosesor lalu bahkan akan menghasilkanthroughput yang secara potensial mungkin lebih besar, karena pengolahan kedua thread juga dapatsaling tumpang tindih.Kembali ke kasus HTTP tertentu, studi oleh Nielson et al. [1991] yang disebut di atas jugamengukur dampak dari interleaved bersamaan dengan pemanggilan HTTP 1.1 (yang disebut pipelining)atas koneksi persistent. Mereka menemukan bahwa pipelining mengurangi lalu lintas jaringan dan dapatmembawa manfaat kinerja bagi klien, selama sistem operasi menyediakan antarmuka yang cocok untukflushing buffer, untuk menimpa perilaku TCP standar.5.2.2 Pemanggilan Tak SinkronSebuah pemanggilan asynchronous adalah salah satu yang dilakukan sehubungan dengankebebasan pemanggil. Artinya, itu dibuat dengan panggilan non-blocking, yang segera kembali setelahpemanggilan pesan request yang telah diciptakan dan siap untuk dilakukan dispatch.Dukungan Sistem Operasi 20


Kadang-kadang klien tidak memerlukan respon (kecuali mungkin merupakan indikasi kegagalanjika target host tidak bisa dihubungi). Sebagai contoh, pemanggilan oneway CORBA mungkin memilikisemantik. Jika tidak, klien menggunakan panggilan terpisah untuk mengumpulkan hasil daripemanggilan. Sebagai contoh, sistem komunikasi Mercury [Liskov dan Shrira 1988] mendukungpemanggilan asynchronous. Sebuah operasi asynchronous mengembalikan sebuah objek yang disebutpromise. Akhirnya, ketika pemanggilan berhasil atau dianggap telah gagal, status sistem Mercury danmengembalikan nilainya ke dalam promise. Pemanggil menggunakan operasi claim untuk mendapatkanhasil dari promise. Operasi claim memblok sampai promise benar-benar siap, dimana itumengembalikan hasil atau pengecualian dari panggilan, operasi yang siap tersedia untuk pengujiansuatu promise tanpa menghalangi - itu mengembalikan nilai true atau false menurut promise apakahsiap atau diblokir.5.2.3 Pemanggilan Tak Sinkron PersistenMekanisme pemanggilan asynchronous tradisional seperti pemanggilan Mercury danpemanggilan oneway CORBA dilaksanakan pada stream TCP dan gagal jika stream terpotong - yangadalah, jika link jaringan sedang down, atau host target crash.Namun bentuk yang lebih maju dari asynchronous model pemanggilan, yang kita sebutasynchronous pemanggilan yang terus-menerus (persisten), menjadi semakin relevan karena operasipemutusan. Model ini mirip dengan Mercury dalam bentuk operasi pemrograman yang disediakan,tetapi perbedaannya adalah dalam kegagalan semantik. Mekanisme pemanggilan konvensional (sinkronatau asinkron] dirancang untuk gagal setelah sejumlah timeout telah terjadi. Tapi jangka pendek timeoutini sering tidak sesuai di mana pemutusan atau latency yang sangat terjadi.Suatu system untuk pemanggilan tak sinkron persisten terdefinisi untuk menunjukkanpemanggilan, sampai diketahui telah berhasil atau gagal, atau sampai aplikasi membatalkanDukungan Sistem Operasi 21


pemanggilan. Contoh adalah QRPC (Queued RPC) di toolkit Rover untuk mobile akses informasi[Yusuf et al. 1997].Seperti namanya, pemanggilan outgoing antrian QRPC meminta ke penyimpanan, sementaratidak ada koneksi jaringan dan jadwal pengiriman melalui jaringan ke server dapat terjadi ketika adasambungan. Demikian pula, hasil dari pemanggilan antrian server dalam apa yang dapat kita anggapsebagai pemanggilan client 'mailbox' sampai klien menghubungkan kembali dan mengumpulkannyakembali. Permintaan dan hasil dapat dikompres ketika sedang melakukan queue, sebelum pengirimandilakukan melalui sebuah jaringan dengan bandwidth rendah.QRPC dapat mengambil keuntungan dari komunikasi yang berbeda untuk mengirim permintaanpemanggilan dan menerima jawabannya. Misalnya, permintaan dapat dikirim melalui jaringan GSMsewaktu pengguna berada di jalan, dan kemudian respons yang disampaikan melalui link Ethernet bilapengguna menghubungkan perangkatnya ke intranet perusahaan. Pada prinsipnya, sistem panggilandapat menyimpan hasil pemanggilan terdekat ke user terdekat selanjutnya dalam titik sambunganselanjutnya.6. Arsitektur Sistem OperasiPada bagian ini, kita kaji arsitektur kernel yang cocok untuk sistem terdistribusi. Kami mengadopsipendekatan prinsip pertama memulai dengan kebutuhan keterbukaan dan memeriksa kernel utamaarsitektur-arsitektur yang telah diajukan, dengan ini dalam pikiran.Sistem terdistribusi terbuka harus memungkinkan untuk:‣ Jalankan hanya perangkat lunak sistem pada setiap komputer yang diperlukan untuk itu untukmelaksanakan peran khusus dalam sistem arsitektur perangkat lunak sistem persyaratan dapat bervariasiantara, misalnya, asisten pribadi digital dan komputer server. Loading modul berlebihan sumber dayamemori limbah.‣ Biarkan perangkat lunak (dan komputer) melaksanakan layanan tertentu harus diubah secara terpisahdari fasilitas lainnya.‣ Memungkinkan untuk alternatif layanan yang sama harus diberikan, saat ini diperlukan agar sesuaidengan pengguna atau aplikasi yang berbeda.‣ Memperkenalkan layanan baru tanpa merugikan integritas yang sudah ada.Pemisahan mekanisme pengelolaan sumber daya tetap dari kebijakan pengelolaan sumber daya, yangbervariasi dari aplikasi ke aplikasi dan layanan untuk melayani, telah menjadi prinsip dalam desain sistemDukungan Sistem Operasi 22


operasi untuk waktu yang lama [Wulf et al. 1974). Sebagai contoh, kita mengatakan bahwa sistempenjadwalan yang ideal akan menyediakan mekanisme yang memungkinkan aplikasi multimedia sepertikonferensi video untuk memenuhi tuntutan real-time saat hidup berdampingan dengan non-real-timeaplikasi seperti browsing web.Idealnya, kernel hanya akan menyediakan mekanisme yang paling dasar di atas mana tugaspengelolaan sumber daya umum pada satu simpul dilakukan. Modul server akan dimuat secara dinamissesuai kebutuhan, untuk menerapkan kebijakan manajemen sumber daya yang dibutuhkan untukmenjalankan aplikasi saat ini.6.1 Kernel Monolitik dan MicrokernelsAda dua kunci contoh desain kernel: yang disebut pendekatan monolitik dan mikrokernel.Berbeda di mana desain ini terutama adalah dalam pengambilan keputusan tentang apa yang menjadimilik fungsi di kernel dan apa yang akan diserahkan kepada proses server secara dinamis yang dapatdiambil untuk berjalan di atasnya. Meskipun belum microkernels disebarkan secara luas, sangatbermanfaat untuk memahami kelebihan dan kekurangan mereka dibandingkan dengan kernel yang khasditemukan hari ini.Sistem operasi UNIX disebut kernel monolitik (lihat definisi di kotak di bawah). Istilah inidimaksudkan untuk menunjukkan fakta bahwa besar: ia melakukan semua fungsi sistem operasi dasardan mengambil di urutan megabyte kode dan data, dan bahwa hal itu tidak dibedakan dikodekan dalamcara yang non-modular. Hasilnya adalah bahwa untuk sebagian besar adalah degil: mengubah setiapindividu untuk mahir komponen perangkat lunak untuk mengubah persyaratan sangat sulit. Contoh lainpada kernel monolitik bahwa dari sistem operasi jaringan Sprite [Ousterhout et al. 1988]. Sebuah kernelmonolitik dapat berisi beberapa server yang menjalankan proses-proses di dalam ruang alamat,termasuk file server dan beberapa jaringan. Kode yang mengeksekusi proses ini adalah bagian darikonfigurasi kernel standar (lihat Gambar 6.15).Sebaliknya, dalam kasus desain sebuah mikrokernel kernel hanya menyediakan abstraksi palingdasar, terutama ruang alamat, benang dan komunikasi interprocess lokal; semua layanan sistem lainyang disediakan oleh server yang dimuat secara dinamis pada komputer yang tepat dalam sistemterdistribusi yang menuntut mereka (Gambar 6.15). Klien mengakses layanan sistem ini menggunakanpesan kernel berbasis mekanisme pemanggilan.Kami katakan di atas bahwa pengguna cenderung untuk menolak sistem operasi yang tidakmenjalankan aplikasi mereka. Tapi di samping diperpanjang, mikrokernel desainer memiliki tujuan lain:emulasi biner standar sistem operasi seperti UNIX [Armand et al. 1989. Golub et af. 1990, Hiirtig et al.1997].Tempat yang mikrokernel - dalam bentuk yang paling umum - dalam keseluruhan desain sistemterdistribusi ditunjukkan pada Gambar 6.16. The mikrokernel muncul sebagai lapisan antara lapisanhardware dan lapisan yang terdiri dari komponen-komponen sistem utama yang disebut subsistem. JikaDukungan Sistem Operasi 23


kinerja adalah tujuan utama, ketimbang portabilitas, dari middleware dapat menggunakan fasilitas darimikrokernel langsung. Jika tidak, ia menggunakan bahasa realtime dukungan subsistem, atau yang lebihtinggi-sistem operasi leve1 antarmuka yang disediakan oleh subsistem emulasi sistem operasi Masingmasing,pada gilirannya, dilaksanakan oleh kombinasi prosedur link-library ke dalam aplikasi, ketikaserver berjalan di atas mikrokernel.Terdapat lebih dari satu system call interface - lebih dari satu 'sistem operasi `- disajikan kepadapara programmer yang mendasari saya sama platform. Situasi ini mengingatkan kita pada arsitekturIBM 370, VM sistem operasi yang dapat menyajikan beberapa mesin virtual yang lengkap untukmenjalankan program yang berbeda pada saat yang sama (Uniprocessor) komputer. Contoh dalam kasussistem terdistribusi adalah pelaksanaan UNIX dan OS/2 di atas kernel sistem operasi terdistribusi Mach.6.2 PerbandinganKeuntungan utama dari sebuah mikrokernel berbasis sistem operasi yang diperpanjang dankemampuannya untuk menegakkan modularitas di belakang batas-batas perlindungan memori. Selainitu, kernel yang relatif kecil lebih mungkin untuk bebas dari bug dari satu yang lebih besar dan lebihkompleks.Keuntungan dari pada desain monolithic adalah efisiensi relatif dengan operasi yang dapatdiajukan. Sistem panggilan masih dapat lebih mahal daripada prosedur konvensional tapi. bahkanmenggunakan teknik yang kita bahas di bagian sebelumnya, sebuah pemanggilan untuk penggunaterpisah tingkat ruang alamat pada node yang sama masih lebih mahal.REFERENCES[1] G. Coulouris, J.Dollimore, and T. Kindberg.2001. “Distributed Systems 3 rd Edition : Concepts andDesign”. New York : Addison Wesley.Dukungan Sistem Operasi 24

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!