- Perangkat Keras I/O
- Aplikasi Antarmuka I/O
- Kernel I/O Subsystem
- Mengubah I/O Request Menjadi Operasi Perangkat Keras
- Streams
- Performance
- Banyaknya jenis perangkat keras I/O
- Konsep Umum :
- Port
- Bus (Daisy chain atau shared direct access)
- Controller (host adapter)
- Perangkat kontrol instruksi I/O
- Perangkat-perangkat tersebut memiliki alamat, digunakan untuk:
- Instruksi I/O langsung
- Memory-mapped I/O
- Perangkat penyimpan data
- Perangkat penghubung
- Perangkat antarmuka dengan user
- Suatu perangkat berhubungan dengan sistem komputer dengan cara mengirim sinyal melalui suatu kabel atau bahkan melalui udara
- Perangkat tersebut berkomunikasi dengan mesin melalui port
- Struktur komputer yang umum dipakai adalah Daisy Chain
- Register Status
- Register Control
- Register Data-in
- Register Data-out
- Host terus membaca busy-bit secara berulang-ulang sampai bit tersebut clear
- Host set write-bit di command-register dan menulis satu byte di data-out register
- Host set bit command-ready
- Ketika controller mengetahui kalau bit command-ready di-set, dia men-set busy bit
- Controller membaca command-register dan melihat perintah tulis. Dia membaca data-out register untuk mendapatkan bytenya, dan melakukan operasi I/O
- Controller menghapus bit command-ready, membersihkan bit error di status register yang menandakan operasi I/O berhasil, dan menghapus busy-bit yang menandakan kalau operasi sudah selesai.
- Jalur interrupt dihasilkan oleh perangkat I/O
- Interrupt Handler menerima interrupt tersebut
- Mekanisme interrupt juga digunakan untuk penanganan exception
- Generasi komputer yang sangat tua
- Controller membaca dari perangkat
- Sistem Operasi meminta controller membaca data
- Generasi komputer yang tua
- Controller membaca dari perangkat
- Controller meng-interrupt OS
- Sistem Operasi menyalin data ke memori
- Generasi DMA
- Controller membaca dari perangkat
- Controller menyalin data ke memori
- Controller meng-interrupt OS
- Sifat-sifat perangkat komputer diabstraksi oleh I/O system call berbentuk kelas-kelas umum.
- Lapisan driver perangkat menyembunyikan perbedaanperbedaan I/O controller dari kernel.
- Ragam device dari beberapa sisi:
- Character-stream atau block
- Sequential atau random-access
- Synchronous atau asynchronous
- Sharable atau dedicatedàSpeed atau operation
- Read-write, read only, write only
- Perangkat block:
- Meliputi berbagai disk drive
- Perintah baca, tulis, pencarian data
- Dimungkinkan untuk mengakses berkas secara memorymapped
- Perangkat character:
- Contoh: keyboard, mouse
- Perintah menulis, mengambil
- Dapat dibuat library pengakses data per-baris
- Interface berbeda dari baca, tulis disk, disebut interface socket.
- Socket: penghubung komputer dengan jaringan.
- Local socket dihubungkan dengan remote socket.
- Komunikasi antar komputer dilakukan melalui socket.
- Fungsi clock dan timer pada hardware:
- Waktu saat ini
- Lama sebuah proses
- Trigger proses pada suatu waktu
- Programmable interval timer : hardware pengukur waktu dan trigger.
- Sistem operasi mampu menangani time request lebih banyak dari jumlah hardware timer
- Blocking : proses dihentikan sementara
- Lebih mudah dimengerti
- Tidak cukup untuk beberapa hal
- Non-blocking : diimplementasikan lewat multi-threading
- Asynchronous : proses berjalan selama I/O dieksekusi
- Scheduling :
- Permohonan I/O dilakukan berdasarkan antrian perangkat
- Beberapa sistem operasi berusaha untuk seadil mungkin
- Buffering : menyimpan data di memori selama proses transfer antar perangkat
- Solusi perbedaan kecepatan dari perangkat yang ada
- Solusi perbedaan ukuran transfer perangkat
- Cache : area memori yang cepat, yang berisikan kopian-kopian data.
- Beda BUFFER dan CACHE :
- Buffer dapat menyimpan satu-satunya copy dari sebuah item data yang ada.
- Cache hanya menyimpan sebuah salinan dari data di tempat lain pada storage sehingga lebih cepat diakses.
- Peningkatan performa I/O, terutama untuk:
- berkas yang digunakan secara bersama oleh beberapa aplikasi,
- berkas yang sedang di baca/tulis secara berulang-ulang.
- Spool : buffer yang menyimpan output device
- Tidak dapat menerima interleaved data stream.
- device memenuhi 1 permintaan, tapi aplikasi bisa minta bersamaan.
- Sistem operasi meng-intercept semua output ke device. Masing-masing output aplikasi di-spooled ke berkas disk yang berbeda.
- Setiap Sistem Operasi menyediakan control interface yang :
- Membuat users dan administrator sistem menampilkan antrian,
- Menyingkirkan pekerjaan yang tidak diinginkan.
- dll.
- Menyediakan akses eksklusif bagi sebuah device.
- System Call untuk alokasi dan dealokasi device.
- Punya parameter untuk membuka system call yang mendeklarasikan tipe akses yang diijinkan untuk thread-thread konkruen yang lain.
- Perlu waspada terhadap Dead Lock.
- Sistem Operasi dengan pelindung memori dapat bertahan dari berbagai jenis error dari perangkat keras dan aplikasi.
- Sistem Operasi sulit memperbaiki kesalahan permanen bila terjadi pada komponen penting,.
- Umumnya akan me-return sebuah error number atau kode ketika permintaan I/O gagal.
- Log system error menyimpan laporan masalah yang ada.
- Kernel menyimpan informasi penggunaan komponen I/O, termasuk tabel open-file, koneksi networking, informasi karakter device.
- Struktur data yang rumit dapat digunakan untuk memeriksa buffer, alokasi memori, dan menentukan batasan sektor/blok.
- Beberapa sistem operasi menggunakan tehnik object oriented untuk mengkapsulasikan perbedaan-perbedaan semantik yang ada.
Proses:
- Blocking read system call diberikan pada pendeskripsi data dari data yang sudah terbuka sebelumnya.
- Kode di kernel memeriksa parameter. Dalam proses input, jika data sudah ada di buffer, data dikembalikan ke proses dan permintaan I/O selesai
- Menentukan device yang mengandung data,
- Menerjemahkan nama ke perwakilan device
- Secara fisik memindahkan data dari disk ke buffer
- Mempersiapkan data untuk proses permintaan I/O
- Mengembalikan kontrol ke proses
- I/O stream adalah suatu mekanisme pengiriman data secara bertahap dan terus menerus melalui suatu aliran data (dua arah)
- Biasa digunakan dalam network protocol
- Asynchronous
- Menggunakan message passing dalam men-transfer data
- Untuk memasukkan ke dalam stream digunakan ioctl system call
- Untuk menuliskan data ke device digunakan write / putmsg system call
- Untuk membaca data dari device digunakan read / getmsg system call
- User process berhubungan langsung dengan stream head
- Ada beberapa modul dengan write dan read queue
- Device berhubungan langsung dengan driver end
Kinerja I/O
- Pembuat CPU melaksanakan kode device-driver
- Memberitahukan ke-tidak efisien-an pada mekanisme penanganan interrupt dalam kernel
- Me-load memory bus sewaktu menyalin data yang dilakukan di controller dan physical memory
- Memperkecil jumlah context switch
- Memperkecil jumlah penyalinan data yang dilakukan sewaktu pengoperan data antara device dan aplikasi
- Memperkecil jumlah interrupt dengan menggunakan transfer secara besar-besaran, smart controllers dan polling (jika busywaiting bisa diminimalisir)
- Menambah konkurensi dengan menggunakan DMA controllers atau channels yang telah diketahui untuk meng-offload pennyalin sederhana dari CPU
- Memindahkan proses-proses primitif ke perangkat keras, untuk membuat operasinya dalam device controllers konkuren dengan CPU dan operasi Bus
- Menyeimbangkan CPU, memory subsystem, bus, dan I/O performance, karena kelebihan di salah satu area akan membuat keterlambatan pada yang lain
Mengimplementasikan I/O
- I/O seharusnya diimplementasikan dalam pada waktu application level
- Ketika algoritma pada application-level sudah menunjukkan kegunaannya, implementasikan kembali dalam kernel
- Kinerja tertinggi bisa didapatkan dari implementasi spesial ke perangkat keras, baik dalam device atau dalam controller
sumber: http://kambing.ui.ac.id/bebas/v06/Kuliah/SistemOperasi/BUKU/bahan/bahan-bab7.html (13 november 2010)
Tidak ada komentar:
Posting Komentar