‣ 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