Dalam sistem komputer manajemen I/O adalah bagian yang sangat diperlukan karena i/o adalah sarana user untuk bisa berkomunikasi dengan komputer. Seperti keyboard, mouse, monitor, speaker, disk drives, networking ports, dll.

Manajemen I/O harus memiliki subsistem yang dapat bersaing dengan dua kecenderungan. yaitu: gravitasi terhadap antarmuka standar untuk berbagai perangkat, sehingga lebih mudah untuk menambahkan perangkat baru yang dikembangkan untuk sistem yang ada, dan pengembangan jenis perangkat yang baru, dimana interface standar yang ada tidak selalu mudah untuk diterapkan. Device driver adalah modul yang dapat dipasang ke OS untuk menangani perangkat tertentu atau kategori perangkat sejenis.

 

I/O Hardware

  I/O secara kasar dapat dikategorikan sebagai penyimpanan, komunikasi, user-interface dan device yang lainnya. Device tersebut dikendalikan oleh instruksi I/O. Alamat-alamat yang dimiliki device akan digunakan oleh direct I/O instruction dan memory-mapped I/O. Beberapa konsep yang umum digunakan ialah port, bus , dan controller. Port adalah koneksi yang digunakan oleh device untuk berkomunikasi dengan mesin. Sedangkan Bus adalah koneksi yang menghubungkan beberapa device menggunakan kabel-kabel. Dan Controller adalah alat-alat elektronik yang berfungsi untuk mengoperasikan port, bus, dan device.

13_01_TypicalBus.jpg

 

Application I/O Interface

Merupakan suatu mekanisme untuk mempermudah pengaksesan, sehingga sistem operasi melakukan standarisasi cara pengaksesan peralatan I/O.

Akses pengguna aplikasi untuk berbagai perangkat yang berbeda dilakukan melalui layering, dan melalui enkapsulasi semua kode perangkat yang spesifik ke driver perangkat, sementara lapisan aplikasi disajikan dengan interface umum untuk semua perangkat .

Beberapa hal yang berhubungan dengan Application I/O Interface:

  1. Block and Character Devices

  • Perangkat blok mengakses blok pada satu waktu, dan ditandai oleh “b” sebagai karakter pertama dalam long listings pada sistem UNIX. Operasi yang didukung termasuk read (), write (), dan seek ().

  • File peta memory  I / O dapat berlapis-lapis di atas driver block-device.

  • Perangkat karakter yang diakses satu byte pada suatu waktu, dan ditandai oleh “c” di UNIX long listings. Operasi yang didukung termasuk get () dan put (), dengan fungsi yang lebih canggih seperti membaca seluruh lini yang didukung oleh rutinitas higher-level library.

  1. Network Devices

Karena akses jaringan secara inheren berbeda dari akses disk lokal, kebanyakan sistem menyediakan antarmuka terpisah untuk perangkat jaringan. Salah satu yang banyak digunakan pada sistem operasi adalah interface socket. Socket bertindak seperti kabel atau pipa yang menghubungkan dua entitas jaringan. Data dapat dimasukkan ke dalam soket di salah satu ujung, dan dibacakan secara berurutan di ujung lain. Soket biasanya full-duplex, yang memungkinkan untuk transfer data.

  1. Clocks and Timers

Clock dan timer pada hardware komputer, memiliki tiga fungsi :

  • memberi informasi waktu saat ini

  • memberi informasi lamanya waktu sebuah proses

  • sebagai trigger untuk suatu operasi pada suatu waktu.

Fungsi ini sering digunakan oleh sistem operasi. Akan tetapi, sayangnya operasi waktu ini tidak di-standarisasi pada semua sistem. Programmable interrupt timer dapat digunakan untuk memicu operasi dan mengukur waktu yang berlalu. Hal ini dapat diatur untuk memicu interupsi pada rentang waktu tertentu di masa mendatang, atau untuk memicu interupsi berkala secara teratur. Sayangnya, ini terbatas dalam resolusi dengan frekuensi interupsi dari PIT, dan dapat dikenakan beberapa penyimpangan dari waktu ke waktu. Pendekatan alternatifnya adalah untuk menyediakan akses langsung ke frekuensi tinggi hardware counter, yang menyediakan resolusi dan akurasi yang lebih tinggi, tetapi yang tidak mendukung interupsi.

  1. Blocking and Non-blocking I/O

Dengan blocking I / O, proses akan dipindahkan ke antrian ketika menunggu permintaan I / O dibuat, dan pindah kembali ke antrian ready ketika permintaan selesai, sehingga memperbolehkan proses lain berjalan untuk sementara. Dengan non-blocking I / O, I / O mengirimkan permintaan untuk kembali dengan segera, tidak melihat apakah I / O operasi yang diminta telah berjalan atau tidak. Hal ini memungkinkan proses untuk memeriksa data yang tersedia tanpa mendapatkan gangguan sepenuhnya jika data tidak ada disana.

Kernel I/O subsystems

  1. I/O Scheduling

Dengan scheduling, kita dapatmeningkatkan kemampuan sistem secara menyeluruh, kita dapat membagi device dengan rata di antara proses-proses, dan dapat mengurangi waktu tunggu rata-rata untuk menyelesaikan I/O. Prioritas juga dapat berperan dalam  scheduling.

  1. Buffering

Buffer merupakan area memori yang menyimpan data ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi. Buffering dilakukan untuk tiga buah alasan. Pertama adalah perbedaan kecepatan antara dua perangkat. Yang kedua adalah perbedaan ukuran transfer data. Dan yang terakhir untuk mendukung copy semantik.

  1. Caching

Caching melputi penjagaan salinan data di lokasi lebih cepat daripada akses dimana data tersebut biasanya disimpan. Buffering dan caching sangat mirip, kecuali buffer dapat memegang satu-satunya salinan item data yang diberikan, sedangkan cache hanya salinan duplikat beberapa data yang disimpan di tempat lain. Buffering dan caching berjalan hand-in-hand, dan seringkali ruang penyimpanan yang sama dapat digunakan untuk kedua tujuan.

  1. Spooling dan Device  Reservation

Spool adalah sebuah buffer yang menyimpan output untuk sebuah device, seperti printer, yang tidak dapat menerima interleaved data streams. Jika beberapa proses ingin mencetak pada saat yang sama, mereka masing-masing mengirimkan data cetak mereka ke file yang tersimpan di direktori spool. Ketika setiap file ditutup, maka aplikasi dapat melihat bahwa pekerjaan cetak sudah lengkap, dan scheduler cetak mengirimkan setiap file ke printer yang sesuai satu per satu. Dukungan diberikan untuk melihat antrian spool, menghapus pekerjaan dari antrian, bergerak dari satu pekerjaan antrian ke antrian yang lain, dan dalam beberapa kasus mengubah prioritas pekerjaan di antrian. Antrian Spool dapat bersifat umum atau khusus. OS juga dapat memberikan dukungan untuk proses untuk meminta / mendapatkan akses eksklusif untuk perangkat tertentu, dan / atau menunggu sampai perangkat menjadi tersedia.

  1. Error Handling

Permintaan I / O bisa gagal karena berbagai alasan, baik sementara karena buffer overflow atau permanen dikarenakan disk yang crash. Permintaan I / O biasanya mengembalikan kesalahan bit (atau lebih) yang menunjukkan masalah. Sistem UNIX juga mengatur variabel global errno untuk salah satu dari seratus atau lebih nilai yang didefinisikan dengan baik untuk menunjukkan kesalahan tertentu yang telah terjadi. Beberapa perangkat, seperti perangkat SCSI, mampu memberikan banyak informasi lebih rinci tentang kesalahan, dan bahkan menjaga error log on-board yang dapat diminta oleh host.

  1. I/O Protection

I / O sistem harus melindungi baik disengaja ataupun tidak disengaja. Aplikasi pengguna tidak diizinkan untuk menjalankan I / O dalam mode user. Semua I / O permintaan yang ditangani melalui panggilan sistem yang harus dilakukan dalam mode kernel. Daerah memori dipetakan dan I / O port harus dilindungi oleh sistem manajemen memori, tetapi untuk akses ke daerah-daerah tidak dapat sepenuhnya ditolak untuk program user. Sebaliknya sistem perlindungan memori membatasi akses sehingga hanya satu proses pada suatu waktu dapat mengakses bagian-bagian tertentu dari memori, seperti bagian dari  layar memori sesuai dengan jendela tertentu.

  1. Kernel Data Structure

Kernel mempertahankan sejumlah struktur data penting yang berkaitan dengan sistem I / O, seperti  open file table. Struktur ini adalah object-oriented, dan fleksibel untuk memungkinkan akses ke berbagai perangkat I / O melalui interface umum. Windows NT membawa objek-orientasi satu langkah lebih jauh, melaksanakan I / O sebagai pesan melalui sistem dari sumber melalui berbagai perantara ke perangkat.

 

I/O Requests to Hardware Operations

Pengguna meminta data menggunakan nama file, yang akhirnya harus dipetakan ke blok data tertentu dari perangkat tertentu yang dikelola oleh driver perangkat tertentu. DOS menggunakan pemisah khusus untuk menentukan perangkat tertentu. UNIX menggunakan mount table untuk memetakan prefiks nama file untuk dipasangkan ke perangkat yang lebih spesifik. Dimana beberapa entri dalam mount table sesuai prefiks yang berbeda dari nama file dipilih salah satu yang cocok dengan awalan terpanjang. UNIX menggunakan file perangkat khusus, biasanya terletak di /dev, untuk mewakili dan mengakses perangkat fisik secara langsung. Serangkaian tabel lookup dan maping membuat akses perangkat yang berbeda menjadi fleksibel, dan agak transparan kepada pengguna.

Manajemen I/O Pada Windows

Dalam windows sistem i/o menyediakan model driver berlapis yang dinamakan stack. Biasanya IRP akan berpindah dari satu driver ke driver lain dalam satu stack yang sama ke fasilitas komunikasi. Misalkan mouse ketika digunakan harus berkomunikasi dengan USB hub, kemudian USB hub harus berkomunikasi dengan USB Host Controller, selanjutnya USB Host Controller harus berkomunikasi melalui PCI bus ke seluruh hardware computer. Maka stack akan berisi mouse driver, USB hub, USB Host Controller, dan PCI bus. Pada windows semua kelas perangkat berbagi driver umum yang disebut “port driver”. Port driver mengimplementasikan operasi standard untuk suatu kelas dan “calls device-spesific routine” yang kemudian mengimplementasikan fungsi “device-spesific”.

i/o manager pada windows mempunyai 2 sub component yaitu: Plug and Play manager and power manager. PnP manager adalah teknologi PnP milik Microsoft yang berfungsi untuk mengenali dan mengadaptasi perubahan pada konfigurasi hardware. Agar Pnp bekerja maka perangkat dan drivernya harus memenuhi standar PnP. Pnp manager secara otomatis mengenali perangkat yang dipasang dan mendeteksi perubahan pada perangkat seiring sistem beroperasi. Pnp manager pun tetap mengawasi sumber daya yang digunakan oleh perangkat, dan juga potensi jika sumber daya tersebut digunakan serta menangani “loading” driver tersebut. Dilain sisi, power manager ikut berperan dalam mengurangi komsumsi tenaga pada perangkat. Sehingga suatu perangkat dapat diset dalam mode “low-power”(sleep mode) ketika tidak digunakan, dan dapat langsung dipakai ketika diperlukan.

Manajemen I/O Pada Linux

Dalam Linux system i/o kurang lebih mirip dengan yang terdapat pada Unix. User dapat membuka saluran akses ke perangkat sama seperti membuka file-perangkat lain yang tampak sebagai objek dalam file sistem. Linux membagi semua perangkat i/o menjadi 3 kelas: “block devices”, “character devices”, dan “network devices”.

“Block devices” yaitu menyimpan, menerima, dan mengirim informasi sebagai blok-blok berukuran tetap yang berukuran 128 sampai 1024 byte dan memiliki alamat tersendiri, sehingga memungkinkan membaca atau menulis blok-blok secara independen, yaitu dapat membaca atau menulis sembarang blok tanpa harus melewati blok-blok lain. Contoh : disk, tape, CD ROM, optical disk. Fungsi “block devices” sendiri didukung oleh 2 sistem component, block buffer cache dan request manager. Block buffer cache bertugas sebagai pool dari buffer i/o aktif dan cache dari “completed i/o”. “Request manager” adalah lapisan software yang mengelola konten read dan write buffer dari dan menuju block-device driver.

“Character devices” yaitu perangkat yang menerima, dan mengirimkan aliran karakter tanpa membentuk suatu struktur blok. Contoh : terminal, line printer, pita kertas, kartu-kartu berlubang, mouse. Perangkat ini tidak memerlukan random access untuk sebuah block data. Akan tetapi, tiap perangkat telah memiliki berbagai fungsi yang telah terdaftar pada kernel yang diimplementasikan pada file operasi i/o.

Sedangkan “network devices” berbeda dengan block atau character devices, user harus berkomunikasi secara tidak langsung dengan cara harus membuka sambungan dengan subsistem jaringan kernel.

 

References:

  1. Abraham Silberschatz, Greg Gagne, and Peter Baer Galvin, “Operating System Concepts, Eighth Edition “, Chapter 13

  2. http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/13_IOSystems.html