BAB VI MANAJEMEN DEVICE

Sistem operasi (OS) memegang peranan sentral dalam mengelola dan mengendalikan operasi perangkat input/output (I/O) atau peranti dalam sebuah sistem komputer. Fungsi ini sangat penting karena hampir setiap aplikasi yang berjalan membutuhkan interaksi dengan peranti I/O. Misalnya, sebuah aplikasi memerlukan masukan dari pengguna melalui keyboard atau menampilkan hasil pemrosesan ke monitor. Tanpa manajemen peranti yang efektif, aplikasi tidak akan dapat berinteraksi dengan dunia luar, menjadikan sistem komputer kurang fungsional.

Tugas utama sistem operasi dalam konteks ini meliputi pengambilan data masukan dari peranti input dan meneruskannya untuk diproses oleh prosesor. Lebih dari itu, sistem operasi juga bertanggung jawab untuk mengontrol operasi peranti I/O dengan mengirimkan instruksi dan secara berkala memeriksa status kesiapan peranti tersebut. Sebagai ilustrasi, ketika data akan dikirim ke printer, sistem operasi harus terlebih dahulu memastikan bahwa printer dalam kondisi siap untuk mencetak sebelum mengirimkan data dan instruksi pencetakan.


A. ORGANISASI SISTEM I/O

Sistem I/O dalam sebuah sistem komputer dapat dipahami dari dua perspektif utama: organisasi fisik atau perangkat kerasnya, dan organisasi perangkat lunaknya. Kedua aspek ini bekerja secara sinergis untuk memungkinkan interaksi komputer dengan dunia luar.

Secara fisik, organisasi sistem I/O pada sistem komputer dapat dibedakan menjadi tiga komponen utama yang saling berinteraksi :

  1. Peranti I/O (Device): adalah perangkat fisik yang terhubung ke komputer, yang masing-masing memiliki karakteristik unik sesuai dengan fungsi dan teknologi yang digunakannya. 
  2. Device Controller (Adapter): Agar peranti I/O dapat dikontrol dan berkomunikasi secara efektif dengan sistem komputer, diperlukan adanya device controller. Komponen ini berfungsi sebagai antarmuka antara peranti I/O dan sistem internal komputer. 
  3. Bus I/O: Bus I/O adalah jalur komunikasi yang terdiri dari bus data, alamat, dan kontrol. Fungsinya adalah menghubungkan device controller dengan elemen internal komputer seperti prosesor dan memori. 

Sstem perangkat lunak I/O dirancang dalam struktur berlapis. Struktur ini umumnya terdiri dari beberapa lapisan :

  1. Lapisan Interrupt Handler: Lapisan perangkat lunak ini bertanggung jawab menangani terjadinya interupsi dan mengalihkan eksekusi ke rutin penanganan interupsi (interrupt handler) yang sesuai.
  2. Lapisan Device Driver: Lapisan ini mengimplementasikan secara khusus rincian operasi dari masing-masing jenis pengendali peranti I/O atau device controller. Device driver merupakan abstraksi terhadap operasi peranti I/O yang sangat beragam dan menyediakan antarmuka yang seragam untuk peranti I/O yang sejenis.
  3. Lapisan Subsistem I/O atau Kernel I/O: Lapisan ini menyediakan antarmuka atau fungsi I/O yang generik bagi komponen lain sistem operasi maupun aplikasi.
  4. Lapisan Pustaka I/O Aplikasi: Lapisan ini mengimplementasikan pustaka pengaksesan I/O atau API (Application Programming Interface) bagi aplikasi untuk melakukan operasi I/O.


PERANGKAT KERAS I/O

1. Peranti I/O

Peranti I/O atau device dalam sistem komputer sangat beragam, dan masing-masing memiliki karakteristik yang khas. Perbedaan karakteristik ini memengaruhi cara sistem operasi berinteraksi dan mengelolanya. Karakteristik utama yang membedakan peranti I/O meliputi:

  1. Modus Transfer Data: Peranti I/O dapat dibedakan berdasarkan unit terkecil transfer datanya. 
  2. Metode Akses: Berdasarkan metode aksesnya, peranti I/O dapat bersifat sekuensial atau acak. 
  3. Jadwal Transfer: Peranti I/O dapat bersifat sinkron atau asinkron. 
  4. Sharing: Peranti I/O dapat bersifat terdedikasi atau dapat digunakan bersama.
  5. Kecepatan Akses: Kecepatan akses peranti I/O sangat bervariasi dan bergantung pada beberapa faktor, termasuk latency, seek time, transfer rate, dan waktu tunda antara operasi.
  6. Modus Operasi I/O: Peranti I/O dapat dikelompokkan sebagai read-only, write-only , atau read-write.

2. Device Controller

Device controller adalah komponen vital dalam organisasi fisik sistem I/O. Fungsinya sebagai pengendali digital terhadap peranti I/O dan bertanggung jawab atas komunikasi data antara peranti I/O dengan sistem internal komputer. Device controller bekerja berpasangan dengan device driver di sisi perangkat lunak, membentuk sebuah "tandem" yang secara kolektif mengabstraksi sepenuhnya pengaksesan ke peranti fisik I/O.

3. Bus I/O

Bus I/O terdiri dari bus data, alamat, dan kontrol. Fungsinya adalah menghubungkan device controller dengan elemen internal komputer, seperti prosesor dan memori. Contoh yang umum adalah bus PCI, yang menghubungkandevice controller ke memori dan prosesor.

4. Pengalamatan Peranti I/O

Untuk memungkinkan akses ke peranti I/O, baik untuk membaca maupun menulis data, setiap peranti I/O harus diberi alamat khusus. Ada dua metode utama untuk memberikan alamat pada peranti I/O:

  1. Direct-mapped I/O Addressing: Pada skema pengalamatan ini, peranti I/O memiliki ruang alamat yang terpisah dan independen dari ruang alamat memori. Dengan demikian, sistem komputer akan memiliki dua ruang alamat yang berbeda: satu untuk memori dan satu lagi khusus untuk peranti I/O.
  2. Memory-mapped I/O Addressing: Dalam skema ini, peranti I/O dialamatkan sebagai bagian dari ruang alamat memori global. Artinya, sebagian dari ruang alamat memori dialokasikan secara khusus untuk berfungsi sebagai alamat bagi peranti-peranti I/O.

5. Metode Transfer Data

Mekanisme transfer data dari peranti I/O ke bagian internal sistem komputer adalah faktor yang sangat penting dalam menentukan kinerja keseluruhan sistem I/O.1 Terdapat tiga metode utama yang umum digunakan:

  1. Programmed I/O atau Pooling: Pada model transfer data ini, prosesor memegang tanggung jawab penuh untuk memeriksa selesainya operasi transfer data yang dilakukan oleh device controller, serta memindahkan data dari atau ke memori utama. 
  2. Interrupt-Driven I/O: Model transfer data ini mengurangi beban prosesor secara signifikan. Prosesor hanya bertanggung jawab atas pemindahan data ke atau dari memori utama.
  3. DMA (Direct Memory Access): Metode transfer ini membebaskan prosesor sepenuhnya dari pengontrolan transfer data I/O. Untuk mencapai hal ini, diperlukan tambahan perangkat keras berupa DMA controller. 


C. PERANGKAT LUNAK I/O

1. Tujuan Perancangan Perangkat Lunak I/O

Organisasi perangkat lunak sistem I/O dirancang secara berlapis untuk mencapai beberapa tujuan utama. Tujuan-tujuan ini saling terkait dan secara kolektif mengatasi tantangan dalam membangun sistem operasi yang tangguh, efisien, dan ramah pengguna dalam lingkungan multi-user dan multi-tasking modern.

  1. Device Independence (Ketidaktergantungan Peranti): Tujuan ini dicapai dengan membangun lapisan bawah perangkat lunak sistem I/O sedemikian rupa sehingga lapisan perangkat lunak I/O di atasnya tidak memerlukan pengetahuan tentang rincian operasi peranti I/O yang sangat beragam. 
  2. Uniform Naming (Penamaan Seragam): Tujuan lain yang ingin dicapai adalah penamaan yang seragam untuk berkas yang disimpan di berbagai jenis media penyimpanan yang berbeda. 
  3. Error Handling (Penanganan Kesalahan): Sistem perangkat lunak I/O dirancang untuk menangani kesalahan, terutama kesalahan baca, yang mungkin ditemui dalam operasi I/O. 
  4. Transfer Sinkron vs. Asinkron: Masalah transfer data asinkron atau sinkron merupakan pertimbangan penting dalam perancangan perangkat lunak sistem I/O. Operasi dikatakan sinkron apabila eksekusinya dapat dilanjutkan hanya setelah permintaannya terpenuhi, yang berarti prosesor akan berhenti sampai data yang diperlukan tersedia di buffer memori. 
  5. Shareable vs. Dedicated Device: Hal terakhir yang perlu dipertimbangkan adalah apakah suatu peranti I/O bersifat shareable atau dedicated. Untuk peranti dedicated, meskipun sejumlah proses memasukkan tugas pencetakan secara bersamaan, tugas-tugas tersebut akan tetap dilakukan satu per satu secara berurutan.

Berikut akan dibahas berbagai komponen perangkat lunak sistem I/O pada sistem komputer:

Lapisan Interrupt Handler

Lapisan interrupt handler memiliki tujuan utama untuk mencapai operasi I/O yang asinkron. Lapisan perangkat lunak ini bertanggung jawab menangani terjadinya interupsi dan mengalihkan eksekusi ke rutin penanganan interupsi yang bersesuaian. Fasilitas interupsi ini memungkinkan transfer data peranti I/O dilakukan secara asinkron, sehingga prosesor tidak harus dalam keadaan idle selama terjadi operasi I/O.

Lapisan Device Driver

Lapisan device driver memainkan peran penting dalam membantu perangkat lunak sistem I/O mencapai ketidaktergantungan terhadap keberagaman peranti I/O. Lapisan ini mengimplementasikan secara khusus rincian operasi dari masing-masing jenis pengendali peranti I/O atau device controller. Ini berarti setiap device controller akan ditangani oleh device driver yang khusus dirancang untuknya.

Lapisan Subsistem I/O atau Kernel I/O

Lapisan kernel I/O mengimplementasikan fungsi-fungsi manajemen sistem I/O yang bersifat umum dan tidak tergantung pada spesifikasi serta arsitektur sistem komputernya. Lapisan ini menyediakan antarmuka atau fungsi I/O yang generik bagi komponen lain sistem operasi maupun aplikasi.

Lapisan Pustaka I/O Aplikasi

Lapisan ini bertanggung jawab mengimplementasikan pustaka pengaksesan I/O atau API (Application Programming Interface) yang digunakan oleh aplikasi untuk melakukan operasi I/O. Tujuan utamanya adalah untuk memudahkan pemrogram aplikasi, karena pengaksesan ke berbagai macam peranti yang berbeda dapat dilakukan dengan menggunakan operasi (primitive) yang sama. 


D. MANAJEMEN DEVICE

Manajemen peranti mencakup serangkaian fungsi penting yang diimplementasikan pada lapisan kernel I/O. Fungsi-fungsi ini memastikan operasi I/O yang efisien, adil, dan andal dalam sistem komputer.

1. Scheduling 

Salah satu fungsi utama manajemen peranti adalah penjadwalan penggunaan suatu peranti I/O. Ketika suatu proses ingin menggunakan peranti I/O, ia akan melakukan system call kepada sistem operasi, yang kemudian akan membuat suatu I/O request. 

2. Buffering

Buffering adalah mekanisme yang digunakan untuk menampung sementara data operasi I/O, baik operasi baca maupun tulis, di memori utama.

3. Caching

Pengaksesan peranti I/O secara umum jauh lebih lambat dibandingkan pengaksesan memori utama. Pengaksesan yang terlalu sering terhadap peranti I/O akan memperlambat eksekusi proses secara keseluruhan. Untuk mengatasi masalah ini, kernel I/O mengimplementasikan mekanisme caching. Konsep caching adalah menggunakan memori kecepatan tinggi (disebut cache memory) untuk menampung salinan data dari suatu peranti I/O. Caching merupakan salah satu kunci dalam meningkatkan kecepatan pengaksesan peranti I/O.

4. Spooling

Mayoritas penggunaan peranti I/O pada komputer bersifat eksklusif, artinya peranti I/O hanya dapat melayani satu tugas pada suatu waktu. Dalam system multiprogramming, jika suatu peranti I/O sedang sibuk melayani suatu tugas, semua proses lain yang juga meminta layanan dari peranti I/O yang sama akan beralih status menjadi blocked. Untuk mengatasi masalah ini, diperkenalkan mekanisme spooling, yang ditangani oleh kernel I/O.

5. Device Reservation 

Karena kebanyakan pemakaian peranti I/O bersifat eksklusif, kernel I/O juga harus memastikan bahwa selama pengaksesan peranti I/O oleh suatu proses, tidak ada intervensi dari proses lainnya. Kernel I/O bertanggung jawab untuk memelihara dan mengaudit status serta pemakaian suatu peranti I/O sehingga tidak terjadi pemakaian yang tumpang tindih. Selain itu, kernel I/O memastikan bahwa pemakaian dan reservasi suatu peranti I/O tidak menyebabkan kondisi deadlock terhadap sistem komputer.

6. Error Handling 

Pada operasi I/O, data dapat rusak baik di peranti I/O itu sendiri maupun selama proses pengiriman. Kernel memiliki tugas untuk menangani kerusakan-kerusakan data yang masih dapat diperbaiki. Pengiriman data I/O sangat rentan terhadap kesalahan. Oleh karena itu, kernel I/O bertugas untuk memulihkan keadaan yang bermasalah dan mencatat atau melaporkan kesalahan kepada pengguna.


KESIMPULAN

Manajemen peranti merupakan salah satu fungsi inti dan paling kompleks dari sebuah sistem operasi modern. Bab ini telah menguraikan bagaimana sistem operasi secara fundamental mengendalikan operasi I/O, menyediakan abstraksi yang esensial untuk menyembunyikan keragaman perangkat keras dari aplikasi dan pengguna. 

Setiap lapisan perangkat lunak I/O, mulai dari interrupt handler yang memungkinkan operasi asinkron dan multitasking, hingga device driver yang menjembatani perangkat keras spesifik dengan antarmuka generik, dan kernel I/O subsystem yang menyediakan fungsi manajemen sistem-lebar, hingga API tingkat aplikasi yang memudahkan pengembang, semuanya bekerja secara harmonis. Desain berlapis ini secara progresif meningkatkan abstraksi, memungkinkan device independence dan uniform naming, yang pada gilirannya meningkatkan produktivitas pengembang dan portabilitas aplikasi.

Fungsi-fungsi manajemen peranti yang diimplementasikan pada lapisan kernel I/O, seperti penjadwalan, buffering, caching, spooling, reservasi peranti, dan penanganan kesalahan, sangat krusial untuk kinerja, keandalan, dan efisiensi sistem secara keseluruhan. Penjadwalan memastikan akses yang adil dan optimal ke sumber daya I/O. Buffering mengatasi perbedaan kecepatan dan bandwidth antar perangkat sambil secara signifikan mengurangi kompleksitas kernel. Caching secara proaktif mengatasi latensi I/O yang melekat, membuat perangkat penyimpanan lambat terasa lebih cepat. Spooling memungkinkan konkurensi untuk perangkat terdedikasi yang lambat, meningkatkan responsivitas pengguna. Reservasi peranti menjaga integritas sistem dan mencegah deadlock. Terakhir, penanganan kesalahan yang komprehensif memastikan ketahanan data dan kemampuan diagnostik sistem.



Komentar