Selasa, 27 Mei 2008

i/o port

I/O adalah faktor penting dalam kinerja sistem. I/O sering meminta CPU untuk mengeksekusi device-driver code dan menjadwal proses secara efisien sewaktu memblock dan unblock. Hasil context switch men- stress ke CPU dan hardware cache-nya. I/O juga memberitahukan ketidakefisienan mekanisme penanganan interupsi dalam kernel, dan I/O me- load down memory bus saat data copy antara pengendali dan memori fisik, dan juga saat copy antara kernel buffers dan application data space. Mengkopi dengan semua permintaan ini adalah salah satu kekhawatiran dalam arsitektur komputer.

Walaupun komputer modern dapat menangani beribu-ribu interupsi per detik, namun penanganan interupsi adalah pekerjaan yang sulit. Setiap interupsi mengakibatkan sistem melakukan perubahan status, mengeksekusi interrupt handler lalu mengembalikan statusnya kembali. I/O yang terprogram bisa lebih efisien dibanding interrupt-driven I/O, jika waktu cycle yang dibutuhkan untuk busy-waiting tidak berlebihan. I/O yang sudah selesai biasanya meng- unblock sebuah proses lalu membawanya ke full overhead of context switch.

Network traffic juga bisa menyebabkan high context-switch rate. Coba diperhatikan, misalnya sebuah remote login dari sebuah mesin ke mesin lainnya. Setiap karakter yang diketikkan pada local machine harus dikirim ke remote machine. Pada local machine karakter akan diketikkan, lalu keyboard interrupt dibuat, dan karakter melewati interrupt handler menuju device-driver lalu ke kernel, setelah itu ke proses. Proses memanggil network I/O system call untuk mengirim karakter ke remote machine. Karakter lalu melewati local kernel, menuju ke lapisan-lapisan network yang membuat paket network, lalu ke network device driver. Network device driver mengirim paket itu ke network controller, yang mengirim karakter dan membuat interupsi. Interupsi kemudian dikembalikan ke kernel supaya I/O system call bisa selesai.

Sekarang remote system's network hardware sudah menerima paket, dan interupsi dibuat. Karakter di- unpack dari network protocol dan dikirim ke network daemon yang sesuai. Network daemon mengidentifikasi remote login session mana yang terlibat, dan mengirim paket ke subdaemon yang sesuai untuk session itu. Melalui alur ini, ada context switch dan state switch (lihat gambar). Biasanya, penerima mengirim kembali karakter ke pengirim.

Tidak ada komentar: