BUFFERING
Buffer adalah area memori yang menyimpan data
ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi.
Buffering
dilakukan untuk tiga buah alasan…
v A. Alasan pertama adalah untuk men-cope dengan
kesalahan yang terjadi karena perbedaan kecepatan antara produsen dengan
konsumen dari sebuah stream data. Sebagai contoh,sebuah file sedang diterima
melalui modem dan ditujukan ke media penyimpanan di hard disk. Kecepatan modem
tersebut kira-kira hanyalah 1/1000 daripada hardisk. Jadi buffer dibuat di
dalam memori utama untuk mengumpulkan jumlah byte yang diterima dari modem.
Ketika keseluruhan data di buffer sudah sampai, buffer tersebut dapat ditulis
ke disk dengan operasi tunggal. Karena penulisan disk tidak terjadi dengan instan
dan modem masih memerlukan tempat untuk menyimpan data yang berdatangan, maka
dipakai 2 buah buffer. Setelah modem memenuhi buffer pertama, akan terjadi
request untuk menulis di disk. Modem kemudian mulai memenuhi buffer kedua
sementara buffer pertama dipakai untuk penulisan ke disk. Pada saat modem sudah
memenuhi buffer kedua, penulisan ke disk dari buffer pertama seharusnya sudah
selesai, jadi modem akan berganti kembali memenuhi buffer pertama dan buffer
kedua dipakai untuk menulis. Metode double buffering ini membuat pasangan ganda
antara produsen dan konsumen sekaligus mengurangi kebutuhan waktu di antara
mereka.
v B. Alasan
kedua dari buffering adalah untuk menyesuaikan device-device yang mempunyai
perbedaan dalam ukuran transfer data. Hal ini sangat umum terjadi pada jaringan
komputer, dimana buffer dipakai secara luas untuk fragmentasi dan pengaturan
kembali pesan-pesan yang diterima. Pada bagian pengirim, sebuah pesan yang
besar akan dipecah ke paket-paket kecil. Paket-paket tersebut dikirim melalui
jaringan, dan penerima akan meletakkan mereka di dalam buffer untuk disusun
kembali.
v C. Alasan ketiga untuk buffering adalah untuk
mendukung copy semantics untuk aplikasi I/O. Sebuah contoh akan menjelaskan apa
arti dari copy semantics. Jika ada sebuah aplikasi yang mempunyai buffer data
yang ingin dituliskan ke disk. Aplikasi tersebut akan memanggil sistem
penulisan, menyediakan pointer ke buffer, dan sebuah integer untuk menunjukkan
ukuran bytes yang ingin ditulis. Setelah pemanggilan tersebut, apakah yang akan
terjadi jika aplikasi tersebut merubah isi dari buffer, dengan copy semantics,
keutuhan data yang ingin ditulis sama dengan data waktu aplikasi ini memanggil
sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi pada
buffer. Sebuah cara sederhana untuk sistem operasi untuk menjamin copy
semantics adalah membiarkan sistem penulisan untuk mengkopi data aplikasi ke
dalam buffer kernel sebelum mengembalikan kontrol kepada aplikasi. Jadi
penulisan ke disk dilakukan pada buffer kernel, sehingga perubahan yang terjadi
pada buffer aplikasi tidak akan membawa dampak apa-apa. Mengcopy data antara
buffer kernel data aplikasi merupakan sesuatu yang umum pada sistem operasi,
kecuali overhead yang terjadi karena operasi ini karena clean semantics. Kita
dapat memperoleh efek yang sama yang lebih fisien dengan memanfaatkan
virtual-memori mapping dan proteksi copy-on-wire dengan pintar.
0 comments:
Post a Comment