Senin, 03 Januari 2011

Input / Output System

Terdapat dua bagian penting yang membangun suatu I/O system, yaitu I/O bus dan I/O device. I/O device adlah alat-alat I/O yang digunakan pada suatu komputer sedangkan I/O bua adalah tipe kanal atau interface yang digunakan oleh I/O device tersebut, seperti ISA, PCI, PCI express dan sebagainya.
Untuk menentukan kinerja I/O system dapat digunakan dua acuan”
-       Nilai Latency, yaitu waktu yang dibutuhkan untuk melakukan transfer data dengan ukuran terkecil. Satuan latency adalah detik.
-       Bandwidth, yaitu banyaknya data maksimal yang dapat ditransfer dalam satuan waktu. Satuan dari bandwidth adalah Byte/s.
Dari dua acuan diatas, waktu untuk melakukan transfer data dapat dihitung dengan pendekatan sebagai berikut:
Waktu = latency + ukuran data yang akan ditransfer / bandwidth

Agar CPU dapat berkomunikasi dengan perangkat I/O, dibutuhkan suatu mekanisme yang disepakati antara CPU dan I/O Interface/controller. Mekanisme ini dibutuhkan karena bus yang ada digunakan oleh semua I/O device yang ada.
Busy waiting/pooling adalah mekanisme CPU membaca status device secara terus-menerus untuk menentukan device yang bebas. 
Pada pooling terdapat dua bit yang berperan, busy bit yang mengindikasikan suatu device sedang bekerja atau bebas dan command ready bit yang mengindikasikan apakah suatu perintah dapat dieksekusi oleh device atau tidak. Berikut cara kerja pooling:
1.     Command ready bit akan diset aktif oleh host (CPU/microprocessor pada gambar)
2.     Host akan mencari device yang bebas
3.     Ketika menemukan device yang bebas, busy bit akan diset oleh device controller
4.     Host akan melakukan pertukaran data dengan device
5.     Setelah selesai, device controller akan menonaktifkan command ready bit dan busy bit
Konsep dasar interrupt adalah device dapat mengalihkan sementara CPU untuk melayani device tersebut. Cara kerjanya adalah sebagai berikut:
1.     CPU mendeteksi interrupt request line yang dikirimkan oleh device via controller
2.     CPU menyimpan status kerja sekarang dan memanggil interrupt handler untuk agar dapat melayani interrupt diatas.
DMA adalah sebuah prosesor tambahan yang digunakan untuk menghindari pembebanan CPU. Berikut cara kerja DMA:
1.     CPU akan menuliskan sebuah DMA command block yang berisi pointer asal dan tujuan transfer data serta jumlah byte yang akan ditransfer ke memory.
2.     Command block kemudian dieksekusi oleh DMA controller sehingga controller dapat langsung mengoperasikan bus memory secara langsung.
3.     Processor menyiapkan DMA transfer dengan menyedia kan data-data dari device, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang di transfer.
4.     DMA controller memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai seluruh data selesai ditransfer.
5.     Processor akan diinterrupt oleh DMA controller, dimana selanjutnya akan ditentukan tindakan berikutnya.

Selain mekanisme diatas, terdapat juga service yang disediakan oleh kernel I/O subsystem, yang digunakan dalam membuat device driver (aplikasi antarmuka/interface antara aplikasi dan device). Fungsi I/O subsystem antara lain:
-       Melakukan manajemen nama untuk file dan device
-       Melakukan control akses untuk file dan device
-       Melakukan alokasi untuk file dan device
-       Melakukan I/O scheduling, buffering, caching, spooling
-       Mengawasi status device, error handling dan recovery
-       Konfigurasi dan utilisasi device driver
-        
1.  I/O Scheduling
Service ini menentukan urutan ketika beberapa proses berjalan dalam suatu waktu. Permintaan terhadap I/O akan ditampung dalam antrian dan diproses oleh I/O scheduler untuk meningkatkan efisiensi sisten dan mengurangi waktu tunggu yang dihasilkan.

Buffering adalah teknik untuk menyimpan data sementara pada memory ketika dipindahkan dari suatu device/aplikasi ke device /aplikasi lainnya. Teknik buffering dapat meningkatkan kinerja sistem karena memory yang digunakan untuk proses ini lebih cepat dibandingkan akses ke disk.

Hampir sma dengan teknik buffering, caching akan mengduplikasi data dari device/disk ke memory sementara sehingga akses yang dibutuhkan menjadi lebih cepat. Pada buffering, data pada buffer adalah data satu-satunya sedangkan pada teknik caching, data pada cache merupakan data duplikat dari tempat lain

Spooling adalah suatu buffer yang digunakan untuk menyimpan data sementara sebelum dieksekusi oleh suatu device. Teknik spooling banyak dugunakan oleh device printer, karena printer hanya dapat melayani satu pekerjaan (mencetak) dalam suatu waktu, maka permintaan pekerjaan yang lain harusmenunggu di buffer spooler.

Device dan data yang ditransfer melalui I/O dapat mengalami kegagalan dalam banyak cara, misalnya pada saat pengiriman data atau kegagalan permanen seperti kerusakan pada hardware (controller).
Sistem operasi dapat mengkompensasikan sebagian besar kesalahan yang terjadi melalui proses recovery, misalnya ketika terjadi read error pada suatu disk, sistem operasi akan melakukan pembacaan ulang. Untuk kesalahan yang bersifat permanen, biasanya sistem perasi tidak dapat mengembalikan data seperti semula.Service ini menentukan urutan ketika beberapa proses berjalan dalam suatu waktu. Permintaan terhadap I/O akan ditampung dalam antrian dan diproses oleh I/O scheduler untuk meningkatkan efisiensi sisten dan mengurangi waktu tunggu yang dihasilkan.

Tidak ada komentar:

Posting Komentar