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:
- 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.
-
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.
- 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.
0 komentar:
Posting Komentar