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