Selasa, 28 Juli 2009

Fungsi Perangkat Keras

Operasi Perangkat Keras

Pada bagian sebelumnya, kita menjelaskan handshaking antara sebuah device driver dan sebuah device controller, tapi kita tidak menjelaskan bagaimana sistem operasi menghubungkan permintaan aplikasi ke dalam kumpulan kabel jaringan atau ke dalam sektor disk yang spesifik.

Aplikasi menunjuk data dengan menunjuk sebuah nama berkas. Di dalam sebuah disk, hal ini adalah pekerjaan dari sistem berkas untuk memetakan dari nama berkas melalui direktori sistem berkas untuk memperoleh ruang pengalokasian berkas. Sebagai contoh, dalam MS-DOS, nama dipetakan ke sebuah nomor yang mengindikasikan sebuah entri dalam tabel akses berkas, dan entri tabel tersebut mengatakan blok disk dialokasikan ke berkas. Pada UNIX, nama dipetakan ke sebuah nomor cabang dan nomor cabang yang bersesuaian berisi informasi tempat pengalokasian.

Sekarang kita lihat MS-DOS, sistem operasi yang relatif sederhana.

  1. Bagian pertama dari sebuah berkas MS-DOS diikuti tanda titik dua, adalah sebuah string yang menandakan sebuah perangkat keras yang spesifik. Sebagai contoh, c:\ adalah bagian pertama dari setiap nama berkas pada hard disk utama.

  2. Fakta bahwa c: mewakili hard disk utama yang dibangun ke dalam sistem operasi, c:\ dipetakan ke alamat spesifik melalui device table.

  3. Karena pemisah tanda titik dua tadi, tempat nama perangkat dipisahkan dari ruang nama sistem berkas di dalam masing-masing perangkat. Pemisahan ini memudahkan sistem operasi untuk menghubungkan fungsi tambahan untuk masing-masing perangkat. Sebagai contoh, hal yang mudah untuk melakukan spooling pada banyak berkas yang akan dicetak ke printer.

Jika ruang nama perangkat disertakan dalam ruang nama sistem berkas seperti pada UNIX, layanan nama sistem berkas yang normal disediakan secara otomatis. Jika sistem berkas menyediakan kepemilikan dan kontrol akses untuk semua nama berkas, maka perangkat mempunyai pemilik dan kontrol akses. Karena berkas disimpan dalam perangkat, sebuah antarmuka penguhubung menyediakan sistem M/K pada dua tingkatan. Nama dapat digunakan perangkat untuk mengakses dirinya sendiri atau untuk mengakses berkas yang disimpan pada perangkat tersebut.

UNIX menghadirkan nama perangkat dalam ruang nama sistem berkas reguler. Tidak seperti sebuah nama berkas MS-DOS yang mempunyai tanda titik dua, alur nama pada UNIX tidak mempunyai pemisahan yang jelas dari bagian nama perangkat. Faktanya, tidak ada bagian dari nama alur adalah nama perangkat.

  1. UNIX mempunyai sebuah mount table yang menghubungkan awalan dari nama alur dengan nama perangkat yang sesuai.

  2. Untuk memecahkan masalah alur nama ini, UNIX mencari nama ini di dalam mount table untuk mencari awalan(prefix) yang paling cocok. entry dalam mount table yang bersesuaian adalah nama perangkat.

  3. Nama perangkat ini juga mempunyai bentuk dari sebuah nama dari ruang nama sistem berkas.

  4. Ketika UNIX mencari nama ini di dalam strukutur direktori sistem berkas, daripada mencari nomor cabang, UNIX mencari sebuah nomor perangkat major dan minor.

  5. Nomor perangkat major menandakan sebuah device driver yang harus dipanggil untuk menangani M/K untuk perangkat ini.

  6. Nomor perangkat minor dikirim ke device driver untuk diindekskan ke tabel perangkat.

  7. Entri tabel perangkat yang bersesuaian memberikan alamat atau alamat pemetaan memori dari pengendali perangkat.

Sistem operasi modern mendapatkan fleksibilitas yang sangat penting dari tahapan-tahapan mencari tabel dalam jalur antara permintaan dan pengendali perangkat fisikal. Mekanisme yang melewatkan permintaan antara aplikasi dan driver adalah hal yang umum. Oleh sebab itu, kita dapat menambahkan perangkat dan driver baru ke dalam komputer tanpa mengkompilasi ulang kernel. Faktanya, beberapa sistem operasi mempunyai kemampuan untuk menambahkan device driver yang diinginkan. Pada waktu boot, sistem pertama-tama memeriksa bus perangkat keras untuk menentukan perangkat apa yang tersedia dan kemudian sistem menambahkan atau load driver yang diperlukan secara langsung atau ketika ada permintaan M/K yang membutuhkannya.

Berikut dideskripsikan sebuah stream yang unik dari sebuah permintaan blokir membaca.

Gambar 11.4. Lifecycle of I/O request

Lifecycle of I/O request

Penjelasan gambar di atas sebagai berikut:

  1. Sebuah proses mengeluarkan sebuah blocking untuk system call baca untuk sebuah deskriptor berkas dari berkas itu yang sudah pernah dibuka sebelumnya.

  2. Kode system call dalam kernel memeriksa kebenaran parameter. Pada masukan, jika data tersedia dalam buffer cache, data dikembalikan ke proses dan permintaan M/K selesai.

  3. Jika data tadi tidak tersedia di buffer cache, M/K fisikal perlu dilakukan sehingga proses akan dikeluarkan dari antrian yang sedang berjalan dan ditempatkan pada antrian wait untuk perangkat tersebut, dan permintaan M/K pun dijadwalkan. Secepatnya, subsistem M/K mengirimkan permintaan ke device driver. Bergantung pada sistem operasi, permintaan dikirim melalui pemanggilan subroutine atau melalui pesan in-kernel.

  4. Device driver mengalokasikan ruang kernel buffer untuk menerima data dan menjadwalkan M/K. Secepatnya, driver mengirim perintah untuk pengendali perangkat dengan menulis ke dalam register yang mengontrol perangkat tersebut.

  5. Pengendali perangkat mengoperasikan perangkat keras untuk melaksanakan transfer data

  6. Driver dapat menerima status dan data atau dapat menyiapkan sebuah transfer DMA ke dalam memori kernel. Kita asumsikan bahwa transfer diatur oleh sebuah pengendali DMA yang akan menghasilkan interupsi ketika transfer data selesai.

  7. Interrupt handler yang sesuai menerima interupsi melalui tabel vektor interupsi atau interrupt-vector table, menyimpan data yang diperlukan, memberi sinyal kepada device driver, kembali dari interupsi.

  8. Device driver menerima sinyal, menentukan permintaan M/K yang mana yang telah selesai, menentukan status permintaan, dan memberi sinyal kepada subsistem M/K kernel yang permintaannya sudah selesai.

  9. Kernel mentransfer data atau mengembalikan kode untuk ruang alamat dari proses yang diminta, dan memindahkan proses dari antrian wait ke antrian ready.

  10. Memindahkan proses ke antrian ready tidak memblok proses tersebut. Ketika penjadwal atau scheduler menaruh proses ke CPU, proses itu akan melanjutkan eksekusi pada penyelesaian system call.

Tidak ada komentar:

Posting Komentar