Back to IF2130 Sistem Operasi

Topic

Questions/Cues

  • Komponen Keras I/O?
  • Bagaimana CPU berkomunikasi dengan perangkat?
  • Apa itu Polling?
  • Apa itu Interrupt?
  • Fungsi DMA?
  • Bagaimana OS menyederhanakan I/O?
  • Apa itu Device Driver?
  • Layanan I/O di Kernel?
  • Beda Buffer dan Cache?
  • Apa itu Spooling?
  • Alur lengkap permintaan I/O?
  • Faktor Kinerja I/O?

Komponen Keras I/O

Fondasi dari semua operasi I/O adalah perangkat kerasnya, yang umumnya terdiri dari:

  • Port: Titik koneksi fisik, seperti port USB atau port serial.
  • Bus: Jalur data bersama yang menghubungkan beberapa perangkat. Ini adalah sekumpulan kabel dan protokol (aturan komunikasi). Contoh: bus PCIe, bus SATA.
  • Controller: Sirkuit elektronik cerdas yang mengoperasikan port, bus, atau perangkat. Ia bertindak sebagai perantara antara CPU dan perangkat I/O fisik.

Komunikasi

Komunikasi CPU dengan Perangkat: CPU tidak berbicara langsung ke disk atau keyboard. Ia berkomunikasi dengan kontroler perangkat dengan membaca dan menulis nilai ke lokasi memori khusus di dalam kontroler yang disebut register. Ada register untuk mengirim perintah (kontrol), membaca status (status), dan mentransfer data (data).

Metode Komunikasi I/O:

  • Polling (Busy-Waiting): CPU secara terus-menerus bertanya kepada kontroler, “Apakah kamu sudah selesai? Apakah kamu sudah selesai?“. Ini sangat tidak efisien karena membuang waktu CPU yang berharga hanya untuk menunggu.
  • Interrupt (Interupsi): Metode yang jauh lebih efisien. CPU memberikan perintah ke kontroler, lalu melanjutkan pekerjaan lain. Ketika kontroler selesai, ia akan mengirim sinyal interupsi (seperti mengetuk pintu) ke CPU. CPU kemudian berhenti sejenak dari tugasnya untuk menangani hasil I/O tersebut.
  • DMA (Direct Memory Access): Untuk transfer data besar, menggunakan CPU bahkan dengan interupsi masih tidak efisien. DMA adalah solusi di mana CPU mendelegasikan tugas transfer data massal ke sebuah kontroler DMA khusus. CPU hanya perlu memberi tahu kontroler DMA: “Pindahkan X byte data dari perangkat Y ke memori Z”. Kontroler DMA akan menangani seluruh proses transfer, dan hanya akan menginterupsi CPU satu kali setelah semuanya selesai.
  • Abstraksi oleh Sistem Operasi: Perangkat keras I/O sangat beragam. Untuk menyembunyikan kerumitan ini dari aplikasi, sistem operasi menyediakan abstraksi. OS mengelompokkan perangkat ke dalam beberapa tipe umum (misalnya, perangkat blok seperti disk, perangkat karakter seperti keyboard) dan menyediakan antarmuka standar untuk berinteraksi dengan mereka.
    • Device Driver (Pengandar Perangkat): Ini adalah komponen kunci untuk abstraksi. Device driver adalah modul perangkat lunak yang bertindak sebagai penerjemah. Setiap driver dibuat khusus untuk satu jenis perangkat keras, tetapi ia menyajikan antarmuka yang seragam ke seluruh bagian sistem operasi. Inilah yang memungkinkan OS Anda bekerja dengan ribuan jenis mouse, keyboard, dan printer yang berbeda.

Layanan Subsistem I/O Kernel:

Kernel OS menyediakan berbagai layanan untuk mengelola I/O, termasuk:

  • Penjadwalan I/O: Mengatur urutan permintaan I/O untuk efisiensi (seperti yang dibahas di Bagian 2).
  • Buffering: Menggunakan area memori untuk menyimpan data sementara saat ditransfer, untuk mengatasi perbedaan kecepatan atau ukuran data.
  • Caching: Menyimpan salinan data yang sering diakses di memori (cache) untuk mempercepat akses berikutnya, menghindari keharusan membaca dari perangkat yang lambat.
  • Spooling: Mengantrikan permintaan untuk perangkat yang hanya bisa melayani satu tugas pada satu waktu (contoh paling umum adalah antrian cetak / print spool untuk printer).
  • Proteksi I/O: Memastikan program pengguna tidak dapat mengeluarkan perintah I/O ilegal yang dapat mengganggu sistem.

Perbedaan Buffer dan Cache:

  • Buffer: Area penyimpanan sementara untuk data yang sedang dalam perjalanan. Fokusnya adalah sinkronisasi transfer.
  • Cache: Tempat menyimpan salinan data untuk akses di masa depan yang lebih cepat. Fokusnya adalah kinerja.
  • Dalam praktiknya, satu area memori seperti buffer cache disk dapat berfungsi sebagai keduanya.

Alur Lengkap Permintaan I/O (Contoh: Membaca File):

  1. Aplikasi memanggil system call read().
  2. Kernel I/O Subsystem menerima permintaan. Ia memeriksa cache terlebih dahulu. Jika data ada, data langsung dikembalikan.
  3. Jika tidak ada di cache, permintaan ditempatkan di antrian untuk perangkat tersebut.
  4. Scheduler I/O menentukan kapan permintaan ini akan dijalankan.
  5. Device driver menerjemahkan permintaan logis menjadi perintah spesifik untuk kontroler perangkat keras.
  6. Kontroler mengeksekusi perintah dan mentransfer data (seringkali menggunakan DMA).
  7. Setelah selesai, kontroler mengirim interrupt ke CPU.
  8. Interrupt handler berjalan, memproses data (misalnya, menaruhnya di cache), dan memberi tahu kernel bahwa I/O telah selesai.
  9. Proses aplikasi yang tadinya menunggu (diblokir) kini dibangunkan dan dapat melanjutkan eksekusinya dengan data yang diminta.

I/O seringkali menjadi bottleneck (penghambat) utama dalam kinerja sistem. Peningkatan kinerja melibatkan penyeimbangan kecepatan CPU, memori, bus, dan perangkat I/O itu sendiri, serta memindahkan fungsionalitas I/O ke lapisan yang paling efisien (dari aplikasi ke driver hingga ke perangkat keras itu sendiri)

Summary

Sistem I/O adalah arsitektur berlapis canggih yang menjembatani aplikasi perangkat lunak dengan perangkat keras yang beragam. Melalui abstraksi yang disediakan oleh device driver, OS menyajikan antarmuka yang konsisten. Komunikasi yang efisien dicapai dengan beralih dari Polling ke mekanisme Interrupt dan DMA yang jauh lebih unggul. Kernel menyediakan layanan vital seperti caching, buffering, dan scheduling untuk mengoptimalkan aliran data. Seluruh alur kerja ini, dari permintaan aplikasi hingga sinyal interrupt dari perangkat keras, dirancang untuk memastikan I/O berjalan secara teratur, aman, dan seefisien mungkin.