Sistem Operasi yang modern mendapatkan fleksibilitas yang signifikan dari tahapan-tahapan tabel lookup di jalur diantara permintaan dan physical device controller. Kita dapat mengenalkan device dan driverbaru ke komputer tanpa harus meng-compile ulang kernelnya. Sebagai fakta, ada beberapa sistem operasi yang mampu untuk me-load device drivers yang diinginkan. Pada waktu boot, sistem mula-mula meminta bus piranti keras untuk menentukan device apa yang ada, kemudian sistem me-load ke dalam driver yang sesuai; baik sesegera mungkin, mau pun ketika diperlukan oleh sebuah permintaan I/O. UNIX Sistem V mempunyai mekanisme yang menarik, yang disebutstreams, yang membolehkan aplikasi untuk men-assemble pipeline dari kode driver secara dinamis. Sebuah stream adalah sebuah koneksi full duplex antara sebuah device driver dan sebuah prosesuser-level. Stream terdiri atas sebuah stream head yang merupakan antarmuka dengan user process, sebuah driver end yang mengontrol device, dan nol atau lebih stream modules diantara mereka. Modules dapat didorong ke stream untuk menambah fungsionalitas di sebuah layered fashion. Sebagai gambaran sederhana, sebuah proses dapat membuka sebuah alat port serial melalui sebuah stream, dan dapat mendorong ke sebuah modul untuk memegang edit input.Stream dapat digunakan untuk interproses dan komunikasi jaringan. Faktanya, di Sistem V, mekanisme soket diimplementasikan dengan stream. Berikut dideskripsikan sebuah lifecycle yang tipikal dari sebuah permintaan pembacaan blok.
- Sebuah proses mengeluarkan sebuahblocking read system callke sebuah file deskriptor dari berkas yang telah dibuka sebelumnya.
- Kodesystem-calldi kernel mengecek parameter untuk kebenaran. Dalam kasus input, jika data telah siap di buffer cache, data akan dikembalikan ke proses dan permintaan I/O diselesaikan.
- Jika data tidak berada dalam buffer cache, sebuah physical I/Oakan bekerja, sehingga proses akan dikeluarkan dari antrian jalan (run queue) dan diletakkan di antrian tunggu (wait queue) untuk alat, dan permintaan I/O pun dijadwalkan. Pada akhirnya, subsistem I/O mengirimkan permintaan ke device driver. Bergantung pada sistem operasi, permintaan dikirimkan melalui callsubrutin atau melalui pesanin-kernel.
- Device drivermengalokasikan ruangbufferpada kernel untuk menerima data, dan menjadwalkan I/O. Pada akhirnya, driver mengirim perintah kedevice controller dengan menulis ke register device control.
- Device controller mengoperasikan piranti keras device untuk melakukan transfer data.
- Driver dapat menerima status dan data, atau dapat menyiapkan transfer DMA ke memori kernel. Kita mengasumsikan bahwa transfer diatur oleh sebuah DMA controller, yang meggunakan interupsi ketika transfer selesai.
- Interrupt handler yang sesuai menerima interupsi melalui tabel vektor-interupsi, menyimpan sejumlah data yang dibutuhkan, menandaidevice driver, dan kembali dari interupsi.
- Device driver menerima tanda, menganalisa permintaanI/Omana yang telah diselesaikan, menganalisa status permintaan, dan menandai subsistem I/O kernel yang permintaannya telah terselesaikan.
- Kernel mentransfer data atau mengembalikan kode ke ruang alamat dari proses permintaan, dan memindahkan proses dari antrian tunggu kembali ke antrian siap.
- Proses tidak diblok ketika dipindahkan ke antrian siap. Ketika penjadwal (scheduler) mengembalikan proses ke CPU, proses meneruskan eksekusi pada penyelesaian darisystem call.
Tidak ada komentar:
Posting Komentar
Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.