Cache, Buffer, Spool

Cache

Cache adalah sebuah daerah memori cepat yang berisi salinan data. Akses ke sebuah salinan yang di- cache lebih efisien daripada akses ke data yang asli. Sebagai contoh, instruksi-instruksi yang baru saja menjalankan proses-proses yang disimpan dalam disk,proses tersebut di- cache ke memori fisikal, dan disalin lagi ke cache primer dan sekunder dari CPU. Perbedaan sebuah buffer dan cache adalah sebuah buffer berisi salinan informasi data yang sudah ada, sedangkan sebuah cache berisi sebuah salinan data pada ruang penyimpanan yang dapat diakses dengan cepat informasi data ada di ruang lainnya.

Caching dan buffering adalah dua fungsi yang berbeda, tetapi kadang-kadang sebuah daerah memori dapat menggunakan kedua fungsi tersebut. Sebagai contoh, untuk menghemat copy semantic dan untuk membuat penjadwalan M/K menjadi efisien, sistem operasi menggunakan memori utama untuk menyimpan data yang ada di dalam disk. Buffer-buffer ini juga digunakan sebagai sebuah cache untuk meningkatkan efisiensi M/K pada berkas yang digunakan secara bersama-sama oleh beberapa aplikasi, atau sedang ditulis atau dibaca berulang-ulang. Ketika kernel menerima permintaan sebuah berkas, pertama-tama kernel mengakses buffer cache untuk melihat apakah daerah berkas tersebut sudah tersedia dalam memori utama. Jika daerah itu ada, disk fisikal M/K dapat dihindari atau tidak dipakai. Penulisan disk juga diakumulasikan ke buffer cache dalam beberapa detik sehingga transfer data yang besar dikumpulkan untuk mengefisienkan penjadwalan penulisan. Strategi penundaan penulisan ini untuk meningkatkan efisiensi M/K akan dibahas pada bagian remote file access.

Buffer

Buffer adalah sebuah daerah memori yang menyimpan data ketika data tersebut ditransfer antara dua perangkat atau antara sebuah perangkat dan sebuah aplikasi. Buffering digunakan karena tiga alasan, antara lain:

Gambar 11.1. Ukuran Transfer Data berbagai Perangkat

Ukuran Transfer Data berbagai Perangkat

Spool

Spool adalah sebuah buffer yang berisi keluaran untuk sebuah perangkat, seperti sebuah printer dimana aliran data tidak dapat mengalir bersamaan. Walaupun printer hanya dapat melayani satu pekerjaan pada satu waktu, beberapa aplikasi mungkin ingin mencetak keluaran masing-masing secara bersamaan tanpa harus tercampur. Sistem operasi menyelesaikan masalah ini dengan cara meng-intercept semua keluaran tersebut ke printer. Masing-masing keluaran aplikasi tadi di-spool ke disk berkas yang terpisah. Ketika sebuah aplikasi selesai mencetak keluarannya, sistem spooling akan melanjutkan ke antrian berikutnya. Pada beberapa sistem operasi, spooling ditangani oleh sebuah sistem proses daemon yaitu suatu sistem yang terus mengawasi apakah aliran data berjalan lancar. Pada sistem operasi lainnya, spooling ditangani oleh sebuah thread in- kernel. Pada kedua macam penanganan spooling tersebut, sistem operasi menyediakan kontrol antarmuka yang membolehkan user dan sistem administrator untuk membentuk antrian, untuk membuang job yang tidak diinginkan sebelum job tersebut dicetak, untuk menunda pencetakan ketika printer diperbaiki, dan sebagainya.

Gambar 11.2. Spooling

Spooling

Beberapa perangkat, seperti tape drives dan printer tidak dapat mengumpulkan permintaan M/K dari banyak aplikasi secara bersamaan. Cara lain adalah dengan menggunakan akses perangkat secara bersamaan dengan menyediakan fasilitas langsung dengan cara koordinasi. Beberapa sistem operasi (termasuk Virtual Machine System) menyediakan dukungan akses perangkat secara ekslusif dengan mengalokasikan sebuah proses ke perangkat yang menganggur atau idle dan membuang perangkat tersebut jika sudah tidak diperlukan lagi. Sistem operasi lainnya memaksakan sebuah batasan dari penanganan sebuah berkas yang dibuka ke perangkat tersebut. Kebanyakan sistem operasi menyediakan fungsi yang membuat proses-proses untuk menangani koordinat akses eksklusif diantara mereka sendiri. Sebagai contoh, Windows NT menyediakan system call untuk menunggu objek perangkat sampai statusnya tersedia. Dia juga mempunyai sebuah parameter untuk system call open yang mendeklarasikan tipe-tipe akses yang diperbolehkan untuk thread\ lainnya secara bersamaan. Pada sistem ini, penghindaran deadlock diserahkan kepada aplikasi.