Common Internet File System: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
k Baru. Kata-kata asing belum dimiringin. Belum dikasih wiki. |
|||
Baris 86:
===''Opportunistic Lock'' (''Oplock'')===
<!--sumber: Windows NT 4.0 Server Resource Kit-->
Ketika klien sedang menulis ke dalam sebuah berkas dalam sebuah ''CIFS server'', maka akan lebih efisien bagi klien untuk menyangga (''buffer'') data yang hendak ditulisi dan mengirimkannya sebagai sebuah ''request'' bertumpuk. Akan tetapi, hal ini dapat meningkatkan kemungkinan bahwa berkas yang sama juga dibaca oleh klien yang lain dan data juga mungkin ditulisi oleh klien tersebut. Untuk membantu klien meningkatkan efisiensi penyanggaan datanya, CIFS menawarkan fitur ''opportunistic lock'' terhadap berkas secara keseluruhan, atau sebagian dari berkas sehingga ia tidak dapat ditulisi secara simultan oleh klien lainnya.
CIFS memiliki tiga jenis oplock yang digunakan, yakni sebagai berikut:
*
*
*
====''Exclusive Oplock''====
Dalam ''exclusive oplock'', sebuah klien (ambil contoh Klien A) meminta kepada ''server'' untuk mendapatkan akses secara eksklusif terhadap sebuah berkas, sehingga Klien A merupakan klien satu-satunya yang diizinkan untuk menulisi data ke dalam berkas tersebut. Ketika Klien A membuka berkas, ia akan meminta ''exclusive oplock'' dari server. Jika ada klien lainnya (ambil contoh Klien B) yang sedang membuka berkas yang bersangkutan, server akan menolak permintaan ''exclusive oplock'' dari Klien A. Ketika hal ini terjadi, Klien A tidak menyangga data dan tidak melakukan operasi ''read-ahead''. Ketika tidak ada lagi klien yang membuka berkas tersebut, barulah server memberikan ''exclusive oplock'' kepada Klien A, dan selanjutnya Klien A pun dapat melakukan operasi ''read-ahead'' dan melakukan penyanggaan terhadap data yang hendak ditulisi ke dalam berkas. Jika ada klien lagi yang mencoba untuk membuka berkas ketika Klien A sedang memiliki ''exclusive oplock'' terhadap berkas (ambil contoh Klien C), server akan menginstruksikan kepada Klien A untuk membuka
====''Level II Oplock''====
''Level II Oplock'' mengizinkan beberapa klien untuk membuka berkas yang sama, sehingga tidak ada klien yang dapat menulisi berkas yang bersangkutan secara bersamaan, melainkan secara bergantian.<br> Dalam sebuah ''Level II Oplock'', Klien A dapat membuka sebuah berkas dan meminta ''exclusive oplock'' terhadapnya. Jika memang hanya terdapat Klien A yang mengakses berkas tersebut, maka server akan memberikan ''exclusive oplock'' kepadanya. Ketika Klien B mencoba untuk mengakses berkas yang sama, maka ''server'' akan mengontak Klien A untuk membuka kuncinya ke ''level II oplock'', jika memang Klien A tidak sedang menulisi berkas. Setelah server melakukan sinkronisasi dengan Klien A untuk meyakinkan bahwa Klien A tidak lagi memiliki data yang disangganya (belum ditulisi ke dalam berkas), maka akses pun diberikan kepada Klien B dengan status ''level II oplock''. Hal ini memberitahu kepada Klien B bahwa Klien B tidak dapat menyangga setiap lock terhadap berkas meski ia diberikan akses. Klien A dan Klien B pun kemudian dapat menulisi berkas tersebut, dan jika hal ini terjadi server akan memerintahkan kepada klien untuk membuka kunci yang mereka buat, sehingga hanya satu klien saja yang dapat menulisi data ke dalam sebuah berkas. Hal ini juga menjadikan server tidak harus melakukan sinkronisasi terhadap semua klien yang terkoneksi untuk melakukan hal ini.
====''Batch Oplock''====
''Batch oplock'' seringnya digunakan oleh aplikasi-aplikasi yang menjalankan perintah-perintah yang ditumpuk (''batch'') yang terdiri atas beberapa operasi untuk membuka dan menutup berkas secara berulang-ulang yang akan dieksekusi secara berurutan.<br>Ketika Klien A ingin memperoleh akses kepada berkas-berkas di dalam sebuah ''CIFS server'' dengan menggunakan ''batch oplock'', ia akan meminta request terhadapnya secara langsung kepada ''server''. Jika klien-klien tidak sedang memiliki berkas yang terbuka, maka batch oplock akan diberikan oleh server kepada Klien A, sehingga Klien A pun dapat membuka berkas, meninggalkannya dalam kondisi terbuka ketika mengeksekusi perintah-perintah dalam urutan perintahnya, dan tentu saja menyangga data yang dibutuhkannya.<br> Jika muncul Klien B yang mencoba untuk mendapatkan akses terhadap berkas yang sedang dibuka oleh Klien A dengan menggunakan ''batch oplock'', ''server'' akan memberikan notifikasi kepada Klien A untuk membersihkan penyangga data yang ia buat dan menyimpannya kembali ke server (melakukan sinkronisasi dengan ''server''). Dalam beberapa kasus, hal ini menyebabkan Klien A akan menyelesaikan semua operasi yang ia lakukan terhadap berkas yang diminta dan kemudian menutup berkas tersebut sehingga mengizinkan Klien B untuk mengakses berkas tersebut.
{{network-stub}}
|