Sistem Operasi - Perangkat Lunak I / O

Perangkat lunak I / O sering diatur dalam lapisan berikut -

  • User Level Libraries- Ini menyediakan antarmuka yang sederhana ke program pengguna untuk melakukan input dan output. Sebagai contoh,stdio adalah pustaka yang disediakan oleh bahasa pemrograman C dan C ++.

  • Kernel Level Modules - Ini menyediakan driver perangkat untuk berinteraksi dengan pengontrol perangkat dan modul I / O independen perangkat yang digunakan oleh driver perangkat.

  • Hardware - Lapisan ini mencakup pengontrol perangkat keras dan perangkat keras aktual yang berinteraksi dengan driver perangkat dan menghidupkan perangkat keras.

Konsep utama dalam desain perangkat lunak I / O adalah perangkat ini tidak bergantung pada perangkat yang memungkinkan untuk menulis program yang dapat mengakses perangkat I / O apa pun tanpa harus menentukan perangkat terlebih dahulu. Misalnya, program yang membaca file sebagai input harus dapat membaca file pada floppy disk, hard disk, atau CD-ROM, tanpa harus memodifikasi program untuk setiap perangkat yang berbeda.

Driver Perangkat

Driver perangkat adalah modul perangkat lunak yang dapat dipasang ke OS untuk menangani perangkat tertentu. Sistem Operasi membutuhkan bantuan dari driver perangkat untuk menangani semua perangkat I / O. Driver perangkat merangkum kode yang bergantung pada perangkat dan mengimplementasikan antarmuka standar sedemikian rupa sehingga kode berisi pembacaan / penulisan register khusus perangkat. Driver perangkat, umumnya ditulis oleh produsen perangkat dan dikirimkan bersama perangkat pada CD-ROM.

Seorang driver perangkat melakukan pekerjaan berikut -

  • Untuk menerima permintaan dari perangkat lunak independen di atas untuk itu.
  • Berinteraksi dengan pengontrol perangkat untuk mengambil dan memberikan I / O dan melakukan penanganan error yang diperlukan
  • Memastikan bahwa permintaan berhasil dijalankan

Bagaimana device driver menangani sebuah request adalah sebagai berikut: Misalkan sebuah request datang untuk membaca sebuah blok N. Jika driver idle pada saat sebuah request tiba, ia mulai menjalankan request tersebut dengan segera. Jika tidak, jika driver sudah sibuk dengan beberapa permintaan lain, itu menempatkan permintaan baru dalam antrian permintaan yang tertunda.

Penangan interupsi

Penangan interupsi, juga dikenal sebagai rutin layanan interupsi atau ISR, adalah perangkat lunak atau lebih khusus lagi fungsi panggilan balik dalam sistem operasi atau lebih khusus lagi dalam driver perangkat, yang eksekusinya dipicu oleh penerimaan interupsi.

Ketika interupsi terjadi, prosedur interupsi melakukan apa pun yang harus dilakukan untuk menangani interupsi, memperbarui struktur data dan membangun proses yang menunggu interupsi terjadi.

Mekanisme interupsi menerima sebuah alamat ─ sebuah nomor yang memilih sebuah rutinitas / fungsi penanganan interupsi tertentu dari satu set kecil. Dalam kebanyakan arsitektur, alamat ini adalah offset yang disimpan dalam tabel yang disebut tabel vektor interupsi. Vektor ini berisi alamat memori dari penangan interupsi khusus.

Perangkat Lunak I / O Tanpa Perangkat

Fungsi dasar dari perangkat lunak yang tidak bergantung perangkat adalah untuk menjalankan fungsi I / O yang umum untuk semua perangkat dan untuk menyediakan antarmuka yang seragam ke perangkat lunak tingkat pengguna. Meskipun sulit untuk menulis perangkat lunak independen perangkat sepenuhnya, tetapi kami dapat menulis beberapa modul yang umum di antara semua perangkat. Berikut adalah daftar fungsi Perangkat Lunak I / O yang tidak bergantung perangkat -

  • Antarmuka seragam untuk driver perangkat
  • Penamaan perangkat - Nama mnemonik yang dipetakan ke nomor perangkat Mayor dan Kecil
  • Perlindungan perangkat
  • Menyediakan ukuran blok yang tidak tergantung perangkat
  • Buffering karena data yang berasal dari perangkat tidak dapat disimpan di tujuan akhir.
  • Alokasi penyimpanan pada perangkat blok
  • Alokasi dan merilis perangkat khusus
  • Error Reporting

Perangkat Lunak User-Space I / O

Ini adalah pustaka yang menyediakan antarmuka yang lebih kaya dan sederhana untuk mengakses fungsionalitas kernel atau pada akhirnya interaktif dengan driver perangkat. Sebagian besar perangkat lunak I / O tingkat pengguna terdiri dari prosedur perpustakaan dengan beberapa pengecualian seperti sistem spooling yang merupakan cara menangani perangkat I / O khusus dalam sistem multiprogram.

Pustaka I / O (mis., Stdio) berada di ruang pengguna untuk menyediakan antarmuka ke I / O SW yang tidak tergantung perangkat OS. Misalnya putchar (), getchar (), printf () dan scanf () adalah contoh stdio library I / O tingkat pengguna yang tersedia dalam pemrograman C.

Subsistem I / O Kernel

Kernel I / O Subsystem bertanggung jawab untuk menyediakan banyak layanan yang terkait dengan I / O. Berikut adalah beberapa layanan yang disediakan.

  • Scheduling- Kernel menjadwalkan sekumpulan permintaan I / O untuk menentukan urutan yang baik untuk mengeksekusinya. Ketika aplikasi mengeluarkan panggilan sistem I / O pemblokiran, permintaan ditempatkan di antrian untuk perangkat itu. Penjadwal Kernel I / O mengatur ulang urutan antrian untuk meningkatkan efisiensi sistem secara keseluruhan dan waktu respons rata-rata yang dialami oleh aplikasi.

  • Buffering - Kernel I / O Subsystem memiliki area memori yang disebut bufferyang menyimpan data saat ditransfer antara dua perangkat atau antara perangkat dengan operasi aplikasi. Buffering dilakukan untuk mengatasi ketidaksesuaian kecepatan antara produsen dan konsumen aliran data atau untuk menyesuaikan antara perangkat yang memiliki ukuran transfer data yang berbeda.

  • Caching- Kernel memelihara memori cache yang merupakan wilayah memori cepat yang menyimpan salinan data. Akses ke salinan yang di-cache lebih efisien daripada akses ke aslinya.

  • Spooling and Device Reservation- Spool adalah buffer yang menahan output untuk perangkat, seperti printer, yang tidak dapat menerima aliran data yang disisipkan. Sistem spooling menyalin file spool yang diantrekan ke printer satu per satu. Di beberapa sistem operasi, spooling dikelola oleh proses daemon sistem. Di sistem operasi lain, ini ditangani oleh utas kernel.

  • Error Handling - Sistem operasi yang menggunakan memori terlindungi dapat melindungi dari berbagai jenis perangkat keras dan kesalahan aplikasi.