Loading...

Thursday 22 December 2011

BUFFERING


A.    Buffering
Buffering  merupakan  teknik  untuk  melembutkan  lonjakan-lonjakan kebutuhan pengaksesan I/O secara langsung.  Buffering adalah cara untuk meningkatkan efisiensi  sistem operasi  dan kinerja proses-proses.  Terdapat beragam cara Buffering, antara lain:
1.  Single Buffering
Teknik  ini  merupakan  Buffering  paling  sederhana.  Ketika  proses pemakai  memberikan  perintah  I/O,  sistem  operasi  menyediakan  buffer bagian memori utama sistem untuk operasi. Untuk peralatan berorientasi blok, transfer masukan dibuat ke buffer sistem. Ketika transfer  selesai,  proses  memeindahkan blok ke ruang pemakai  dan segera  meminta  blok  lain.  Teknik  ini  disebut  reading  ahead atau anticipated input.
Teknik  ini  dilakukan  dengan  harapan  bahwa  blok  tersebut  akan  segera diperlukan. Untuk banyak tipe komputasi, asumsi  ini  berlaku. Hanya akhir barisan pemrosesan maka blok yang dibaca tidak diperlukan. Pendekatan  ini  umumnya  meningkatkan  kecepatan  dibanding  tanpa Buffering.
2. Double Buffering
Peningkatan  atas  Single  Buffering  dapat  dibuat  dengan  mempunyai  dua buffer sistem untuk operasi. Proses dapat transfer ke (atau dari) satu buffer sementara sistem operasi mengosongkan (atau mengisi) buffer lain. Double  Buffering  menjamin  proses  tidak  akan  menunggu  operasi  I/O. Peningkatan atas  Single Buffering diperoleh,  namun harus  dibayar  dengan kompleksitas yang meningkat.
Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan  antara dua device atau antara device dan aplikasi. Contoh gambar Ukuran Transfer Data berbagai Perangkat
  














Buffering dilakukan untuk tiga buah alasan:
1.      Untuk mengatasi perbedaan kecepataan antara produsen dan konsumen dari sebuah aliran 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 dari pada hard disk. 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.
2.      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.
3.      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 system 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 efisien dengan memanfaatkan virtual-memori mapping dan proteksi copy-on-wire dengan pintar.

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 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 atau lainnya secara bersamaan. Pada sistem ini, penghindaran  deadlock diserahkan kepada aplikasi.
Buffering juga dapat mengurangi frekuensi pengaksesan dari/ke perangkat masukan/keluaran dan penyimpan sekunder sehingga meningkatkan kinerja sistem. Buffer dapat diimplementasikan dalam perangkat keras atau perangkat lunak, namun sebagian besar buffer diimplementasikan dalam perangkat lunak . Buffer biasanya digunakan ketika ada perbedaan antara tingkat di mana data yang diterima dan tingkat di mana bisa diproses buffer sering menyesuaikan waktu dengan menerapkan antrian atau FIFO (masuk pertama, keluar pertama)  algoritma dalam memori, secara simultan menulis data ke dalam antrian pada satu tingkat dan membacanya dengan tarif lain.
Buffer digunakan untuk berbagai tujuan, seperti :
  1. interkoneksi dua digital sirkuit beroperasi pada tingkat yang berbeda
  2. memegang data untuk penggunaan di lain waktu
  3. koreksi waktu memungkinkan untuk dibuat pada aliran data
  4. pengumpulan biner bit data ke dalam kelompok-kelompok yang kemudian dapat dioperasikan pada sebagai satu unit
  5. menunda waktu transit dari suatu sinyal untuk memungkinkan operasi lain untuk terjadi

 

0 comments: