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:
Buffering digunakan karena tiga alasan, antara lain:
1.
Untuk mengatasi perbedaan kecepataan antara produsen dan konsumen dari
sebuah aliran data . Sebagai contoh, sebuah berkas diterima melalui sebuah modem dan disimpan
ke harddisk. Kita tahu bahwa modem itu ribuan kali lebih lambat daripada
harddisk. Sehingga sebuah buffer dibuat pada memori utama untuk
menampung jumlah byte yang diterima dari modem. Ketika semua data sudah sampai
di buffer, buffer dapat ditulis ke disk dengan operasi tunggal.
Karena penulisan ke disk tidak terjadi seketika dan modem masih membutuhkan
ruang untuk menyimpan data tambahan yang masuk maka digunakanlah dua buffer.
Setelah modem mengisi buffer pertama, penulisan ke disk dilakukan. Modem
kemudian mulai mengisi buffer kedua sementara buffer pertama
ditulis ke disk. Pada saat modem sudah mengisi buffer kedua, penulisan
disk dari buffer pertama seharusnya sudah selesai sehingga modem dapat
menggunakan kembali buffer pertama ketika buffer kedua melakukan
penulisan ke disk. Metode ini disebut double buffering.
2.
Untuk menyesuaikan antara perangkat-perangkat yang mempunyai perbedaan
ukuran transfer data . Perbedaan ukuran transfer data ini sangat umum terjadi pada jaringan
komputer dimana buffer digunakan secara luas untuk fragmentasi dan
pengaturan kembali pesan-pesan. Pada bagian pengiriman, pesan yang ukurannya
besar akan dipecah-pecah menjadi paket-paket kecil (fragmentasi). Paket-paket
ini dikirim melalui jaringan, di ruang penerimaan, paket-paket kecil tadi
diletakkan dalam buffer untuk disatukan kembali.
3.
Untuk mendukung copy semantic pada aplikasi M/K . Sebuah contoh akan menjelaskan arti dari copy
semantic. Misalkan sebuah aplikasi mempunyai buffer data yang ingin
dituliskan ke disk. Aplikasi tersebut akan memanggil system call write,
lalu menyediakan sebuah pointer ke buffer dan sebuah bilangan bulat
(integer) yang menspesifikasikan jumlah byte yang ditulis. Setelah system
call tersebut selesai, apa yang terjadi jika aplikasi mengubah isi buffer?
Dengan copy semantic, versi data yang ditulis ke disk sama dengan versi
data pada saat aplikasi memanggil system call write , tidak tergantung
dengan perubahan apapun yang ada pada buffer. Cara sederhana sistem
operasi dapat menjamin copy semantic adalah untuk system call write
dengan menyalin data aplikasi ke buffer kernel sebelum mengembalikan
kontrol ke aplikasi. Penulisan ke disk dilakukan dari buffer kernel
sehingga perubahan yang terjadi pada buffer aplikasi tidak mempunyai
efek apapun. Menyalin data antara buffer kernel dan buffer aplikasi
adalah hal yang umum dalam sistem operasi, kecuali overhead yang ada
pada clean semantic. Efek yang sama dapat diperoleh dengan hasil yang
lebih efisien dengan penggunaan yang cermat pada pemetaan memori virtual dan
perlindungan halaman copy-on-write.
create : http://destyriyani.blogspot.com