Pendahuluan
Pada dasarnya, tugas utama komputer adalah processing dan M/K. Bahkan, sebagian besar waktunya digunakan untuk mengolah M/K sedangkan processing hanya bersifat insidental. Jadi, pada konteks M/K, peranan sistem operasi adalah mengatur dan mengontrol perangkat M/K dan operasi M/K.
Perangkat M/K sangat bervariasi. Oleh karena itu, bagaimana cara mengontrol perangkat-perangkat tersebut mendapat perhatian besar dalam organisasi komputer. Bayangkan, perangkat M/K yang sangat banyak jumlahnya dan setiap perangkat memiliki fungsi dan kecepatan sendiri-sendiri, tentunya memerlukan metode yang berbeda pula. Oleh karena itu, dikenal klasifikasi perangkat M/K menjadi perangkat blok dan perangkat karakter, walaupun ada perangkat yang tidak termasuk ke dalam satupun dari kedua golongan ini.
Perangkat terhubung ke komputer melalui port, diatur oleh device controller dan berkomunikasi dengan prosesor dan perangkat lain melalui bus. Perangkat berkomunikasi dengan prosesor melalui dua pendekatan yaitu memory mapped dan instruksi M/K langsung.
Bila prosesor ingin mengakses suatu perangkat, dia akan terus mengecek perangkat untuk mengetahui statusnya, apakah mengizinkan untuk diakses. Cara ini dilakukan berulang-ulang yang disebut dengan polling. Sedangkan bila perangkat ingin memberitahu prosesor ketika siap diakses, maka perangkat akan menggunakan interupsi. Kedua cara ini mempunyai kelebihan dan kelemahan masing-masing. Adanya Direct Memory Access (DMA) dapat mengurangi beban CPU karena terjadinya transfer data antara perangkat dan memori tanpa melalui CPU.
Perbedaan detil untuk setiap alat akan dienkapsulasi pada modul kernel yang disebut device driver. Sedangkan untuk mengetahui waktu dan lama suatu proses digunakan clock dan timer.
Perangkat Keras M/K
Kategori Perangkat M/K
Pada saat sekarang ini, terdapat berbagai macam perangkat M/K seperti perangkat penyimpanan (disk, tape), perangkat transmisi (network card, modem), dan perangkat antar muka dengan pengguna (layar, keyboard, mouse). Secara umum, perangkat M/K dapat dibagi menjadi dua kategori yaitu:
1. Perangkat blok.
Perangkat yang menyimpan informasi dalam blok-blok berukuran tertentu (umumnya 512 sampai 32.768 byte) dan setiap blok memiliki alamat masing-masing. Setiap blok pada perangkat ini bisa diakses dan ditulis secara independen. Contoh perangkat blok adalah disk.
2. Perangkat karakter.
Perangkat yang mengirim dan menerima sebarisan karakter tanpa menghiraukan struktur blok. Contoh perangkat karakter adalah printer , network interface dan perangkat yang bukan disk.
Namun, pembagian ini tidak sepenuhnya benar karena ada perangkat yang tidak memenuhi kedua kriteria tersebut yaitu clock. Clock merupakan perangkat yang tidak memiliki blok beralamat, tidak mengirim dan menerima barisan karakter melainkan hanya menginterupsi dalam jangka waktu tertentu.
Komponen M/K
Unit M/K terdiri dari dua komponen yaitu:
1. Komponen Mekanis. Komponen Mekanis adalah perangkat M/K itu sendiri seperti mouse, monitor, dll.
2. Komponen Elektronis. Komponen Elektronis disebut juga dengan controller perangkat. Perangkat tidak berhubungan langsung dengan prosesor, controller -lah yang berhubungan dengan prosesor.
Cara Perangkat Terhubung Ke Komputer
Perangkat M/K berkomunikasi dengan sistem komputer melalui sinyal yang dikirimkan melalui kabel maupun udara (wireless). Perangkat M/K berhubungan dengan mesin melalui suatu titik yang bernama port. Port M/K terdiri dari 4 register, yaitu:
1. Data-in register . Register ini yang akan dibaca CPU untuk mendapatkan input.
2. Data-out register . CPU menulis bit disini sebagai output data.
3. Status. CPU akan membaca register ini untuk mengetahui status perangkat. Status perangkat bisa menandakan apakah tersedia input di data-in register, perangkat selesai melaksanakan tugasnya dengan baik atau terjadi error di perangkat.
4. Control. Register ini ditulis oleh CPU untuk memulai perintah atau untuk mengganti modus perangkat. Salah satu contoh penggantian modus perangkat adalah terdapat bit di register control di serial port yang berfungsi untuk memilih kecepatan transfer yang didukung oleh serial port tersebut.
Bus adalah kumpulan kabel dan protokol yang menetapkan sekumpulan pesan yang bisa dikirim melalui kabel. Beberapa perangkat bisa terhubung ke bus yang sama. Bila perangkat A terhubung ke perangkat B, perangkat B terhubung ke perangkat C dan seterusnya sampai perangkat yang terakhir terhubung ke komputer, rangkaian perangkat ini disebut daisy chain. Daisy chain juga berfungsi sebagai bus.
Gambar 10.1. Struktur bus pada PC
|
|
PCI (Peripheral Component Interconnect) bus adalah bus berkecepatan tinggi yang menghubungkan subsistem memori-prosesor ke perangkat berkecepatan tinggi dan ke Expansion bus yang berhubungan dengan perangkat yang lebih lambat seperti keyboard, serial port dan paralell port. SCSI atau Small Computer System Interface (baca: skazi) adalah bus yang menghubungkan beberapa disk ke SCSI controller. Dengan SCSI, kita bisa mendapatkan hingga tujuh perangkat terhubung ke komputer tetapi ini akan memperlambat komputer pada saat start-up.
Kita semua tentu sudah mengenal perangkat penyimpanan seperti floopy drive, hard drive dan CD-ROM drive. Biasanya perangkat-perangkat ini terhubung ke komputer melalui IDE (
Bus, port dan perangkat bisa dioperasikan oleh controller yang merupakan sekumpulan perangkat elektronik. Serial-port controller adalah salah satu controller perangkat yang sederhana karena hanya sebuah chip yang mengontrol sinyal dari kabel di port. Di sisi lain, juga ada controller perangkat yang kompleks yaitu SCSI controller yang sedemikian rumitnya sehingga harus diimplementasikan secara khusus sebagai papan sirkuit tersendiri di dalam komputer. Ini disebut dengan host adapter. SCSI controller berisi prosesor, microcode, dan beberapa memori sendiri.
Komunikasi Perangkat Dengan Prosesor
Kita sudah membahas tentang perangkat dan bagaimana mereka tersambung ke komputer, sekarang fokus selanjutnya adalah bagaimana prosesor berkomunikasi dengan perangkat.
1. Instruksi M/K langsung.
Setiap perangkat diberi nomor port M/K sepanjang 8/16 bit yang unik. Pada transfer data antara register perangkat dan register CPU digunakan instruksi M/K khusus. Instruksi M/K ini berbeda dari sekedar instruksi memori biasa karena alamat port M/K tidak menggunakan lokasi yang sama dengan alamat memori. Oleh sebab itu, 2 instruksi berikut: –in R3, 0x200, 4,– dan –mov R3, 0x200--- memiliki dua arti yang berbeda. Instruksi pertama merupakan instruksi M/K khusus yang meminta CPU untuk membaca nilai dari register nomor 4 dari alat M/K pada nomor port 0x200 kemudian meletakkannya pada register nomor 3 di CPU. Instruksi kedua merupakan instruksi memori biasa yang hanya menyalin isi alamat memori 0x200 ke register tiga di CPU.
2. Memory mapped .
Pendekatan ini menggunakan pemetaan alamat M/K ke memori. Register data dan buffer data dipetakan ke ruang alamat yang digunakan CPU.
Keunggulan memory mapped adalah:
- Prosesor akan memiliki jumlah instruksi yang lebih sedikit karena prosesor tidak perlu menyediakan instruksi M/K khusus.
- Akses ke memori dilakukan dengan instruksi memori biasa, sehingga driver untuk peralatan dapat ditulis dalam bahasa C / C++ (untuk instruksi memori biasa) daripada bahasa assembly (untuk instruksi M/K khusus).
- Sistem operasi dapat mengontrol akses ke perangkat M/K, yaitu dengan tidak meletakkan ruang alamat perangkat pada ruang alamat virtual proses.
Namun, ada masalah yang cukup signifikan pada pendekatan memory mapped yaitu masalah caching. Pada caching, proses menyimpan isi dari lokasi memori yang baru direferensikan sehingga bila ada instruksi yang mereferensikan ke alamat yang sama tidak perlu mengambil ke memori lagi, dengan demikian caching dapat meningkatkan kinerja sistem. Polling
Bila prosesor ingin mengakses perangkat, salah satu pendekatannya adalah dengan membiarkan prosesor melakukan semua pekerjaan. Prosesor berinteraksi dengan controller melalui protokol yang rumit tetapi dasar handshaking-nya cukup sederhana yaitu:
1. CPU terus menerus membaca bit status sampai bit tersebut menandakan perangkat siap menerima perintah CPU.
2. CPU mengaktifkan bit-write di register perintah sebagai awal pertanda CPU memberikan perintah dan menulis sebuah byte di data-out.
3. CPU mengaktifkan command-ready bit, artinya perintah tersedia untuk dijalankan controller.
4. Controller melihat command ready bit di-set sehingga bit kerja di-set.
5. Controller membaca register perintah dan melihat perintah write maka data-out dibaca dan menyuruh perangkat M/K melakukan apa yang diperintah CPU.
6. Controller menghapus command ready bit, bit error di status dan bit kerja.
Langkah 1 disebut polling atau busy waiting. Prosesor terus-menerus membaca bit status, berharap suatu saat bit tersebut menandakan perangkat siap menerima perintahnya. Pada dasarnya polling dapat dikatakan efisien bila kinerja perangkat dan controller-nya cepat. Kelemahan dari cara ini adalah bila waktu tunggu lama, maka lebih baik prosesor mengerjakan tugas yang lain. Sedangkan untuk mengetahui apakah perangkatnya sudah siap menerima perintah lagi atau belum, digunakanlah interupsi.
Terjadi masalah pada suatu sistem yang berulang-ulang membaca register status pada perangkat untuk melihat apakah perangkat tersebut siap diakses. Pembacaan yang pertama, isi dari register status akan disimpan di cache. Namun, perulangan selanjutnya akan mengambil nilai dari cache bukan pada register status pada peralatan. Akibatnya, tidak akan diketahui kapan perangkat siap digunakan karena nilai yang terus dibaca adalah nilai yang disimpan pertama kali di cache, bukan status ter-update dari perangkat itu sendiri. Untuk mengatasi masalah ini, proses caching tetap dilakukan kecuali untuk lokasi memori dimana register alat M/K dipetakan.
Beberapa sistem menggunakan kedua teknik ini. Contohnya pada penggunaan graphics controller. Graphics controller mempunyai alamat port M/K (untuk pendekatan instruksi M/K langsung), namun dia juga mempunyai wilayah memory-mapped yang besar untuk menampung tampilan layar. Proses mengubah tampilan dengan menulisi wilayah memory-mapped ini dan controller akan menyesuaikan tampilan layar berdasarkan informasi dari memory mapped tersebut. Jauh lebih cepat menulis jutaan Bytes ke memory grafik daripada memuat jutaan instruksi. Namun, kelemahannya, adalah saat pointer menunjuk ke wilayah memori yang salah dan menulisinya.
Interupsi
Interupsi terjadi bila suatu perangkat M/K ingin memberitahu prosesor bahwa ia siap menerima perintah, output sudah dihasilkan, atau terjadi error.
Penanganan Interupsi
1. Controller mengirimkan sinyal interupsi melalui interrupt-request-line
2. Sinyal dideteksi oleh prosesor
3. Prosesor akan terlebih dahulu menyimpan informasi tentang keadaan state-nya (informasi tentang proses yang sedang dikerjakan)
4. Prosesor mengidentifikasi penyebab interupsi dan mengakses tabel vektor interupsi untuk menentukan interrupt handler
5. Transfer kontrol ke interrupt handler
6. Setelah interupsi berhasil diatasi, prosesor akan kembali ke keadaan seperti sebelum terjadinya interupsi dan melanjutkan pekerjaan yang tadi sempat tertunda.
Gambar 10.2. Siklus penanganan interupsi
|
|
Interrupt Request Line
Pada kebanyakan CPU, ada dua interrupt request line. Pertama, interupsi nonmaskable, interupsi ini biasanya berasal dari perangkat keras dan harus segera dilaksanakan, seperti terjadinya error pada memori.
Kedua, interupsi maskable, jenis interupsi ini bisa dilayani oleh prosesor atau bisa tidak dilayani. Kalaupun dilayani, harus dilihat keadaan prosesor saat itu.
Vektor Interupsi dan Vector Chaining
Bila ada sebuah sinyal interupsi pada interrupt request line, bagaimana sebuah interrupt handler mengetahui sumber dari interupsi itu? Apakah harus menelusuri semua sumber interupsi satu-persatu? Tidak perlu, karena setiap interrupt handler mempunyai alamat memori masing-masing. Alamat ini adalah offset pada sebuah tabel yang disebut dengan vektor interupsi.
Tabel 10.1. Tabel Vector-Even pada Intel Pentium
| Vector number | Description |
| 0 | Divide error |
| 1 | Debug Exception |
| 2 | Null Interrupt |
| 3 | Breakpoint |
| 4 | INTO-detected overflow |
| 5 | Bound range exception |
| 6 | Invalid opcode |
| 7 | Device not available |
| 8 | Double fault |
| 9 | Compressor segment overrun (reserved) |
| 10 | Invalid task state segment |
| 11 | Segment not present |
| 12 | Stack fault |
| 13 | General protection |
| 14 | Page fault |
| 15 | (Intel reserved, do not use) |
| 16 | Floating point error |
| 17 | Alignment check |
| 18 | Machine check |
| 19-31 | (Intel reserved, do not use) |
| 32-255 | Maskable interrupt |
Sesuai dengan perkembangan zaman, komputer mempunyai lebih banyak perangkat (dan lebih banyak interrupt handlers) daripada elemen alamat di vektor. Hal ini bisa diatasi dengan teknik vector chaining. Setiap elemen di vektor interupsi menunjuk ke kepala dari sebuah daftar interrupt handlers, sehingga bila ada interupsi, handler yang terdapat pada daftar yang ditunjuk akan dipanggil satu persatu sampai didapatkan handler yang bisa menangani interupsi yang bersangkutan.
Prioritas Interupsi
Mekanisme interupsi juga menerapkan sistem level prioritas interupsi. Sistem ini memungkinkan interupsi berprioritas tinggi menyela eksekusi interupsi berprioritas rendah. Sistem ini juga memungkinkan perangkat M/K yang membutuhkan pelayanan secepatnya didahulukan daripada perangkat lainnya yang prioritasnya lebih rendah. Pengaturan prioritas dan penanganan perangkat berdasarkan prioritasnya diatur oleh prosesor dan controller interupsi.
Penyebab Interupsi
Mekanisme interupsi tidak hanya digunakan untuk menangani operasi yang berhubungan dengan perangkat M/K. Sistem operasi menggunakan mekanisme interupsi untuk beberapa hal, di antaranya:
1. Menangani exception
Exception adalah suatu kondisi dimana terjadi sesuatu, atau dari sebuah operasi didapatkan hasil tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih, contohnya, pembagian dengan nol, pengaksesan alamat memori yang restricted atau tidak valid, dll.
2. Mengatur virtual memory paging.
3. Menangani perangkat lunak interupsi.
4. Menangani alur kontrol kernel.
Jika interupsi yang terjadi merupakan permintaan untuk transfer data yang besar, maka penggunaan interupsi menjadi tidak efisien, untuk mengatasinya digunakanlah DMA.
| | | |
DMA
Seperti yang telah dijelaskan sebelumnya bahwa mekanisme interupsi tidak efisien untuk melakukan transfer data yang besar. Transfer data dilakukan per word. Pada mekanisme interupsi, untuk tiap word data yang ditransfer, prosesor tidak akan menunggu data tersedia pada perangkat yang mengirim data maupun data selesai ditulis oleh perangkat yang menerima data. Dalam situasi tersebut prosesor akan mengganti proses yang sedang dieksekusinya (yang melakukan transfer data) dengan proses lain (context switch). Jika ukuran data yang ditransfer cukup besar, prosesor akan berulang kali melakukan context switch, padahal context switch akan menimbulkan overhead. Oleh karena itu kelemahan mekanisme interupsi untuk menangani transfer data yang besar disebabkan oleh context switch. Untuk menangani kelemahan tersebut, digunakan suatu unit kontrol khusus yang disediakan untuk mentrasfer data langsung antar perangkat eksternal dan memori utama tanpa intervensi terus menerus dari prosesor. Unit kontrol khusus tersebut adalah DMA.
Sistem modern dapat mengurangi beban CPU untuk melakukan operasi M/K, yaitu dengan menggunakan pengendali DMA. Dengan demikian CPU dapat melakukan tugas lain sementara operasi M/K dilakukan. Setiap pengendali peralatan dapat saja memiliki perangkat keras DMA tersendiri. Alternatif lain adalah dengan memiliki sebuah pengendali DMA pada motherboard yang mengatur transfer ke berbagai peralatan.
Untuk memulai transfer data secara DMA, driver peralatan akan menulis blok perintah DMA memori yang menunjuk sumber data, tujuan, dan jumlah byte yang akan ditransfer. CPU kemudian akan mengirimkan alamat blok perintah ini pada pengendali DMA. pengendali DMA akan memproses informasi ini untuk kemudian mengoperasikan bus memori.
Transfer sebanyak 1 byte/word per satuan waktu oleh pengendali DMA disebut sebagai cycle stealing karena pengendali menggunakan bus cycle milik CPU. Dengan cycle stealing penggunaan bus oleh CPU akan tertunda beberapa waktu karena bus digunakan untuk proses DMA.
Tiga langkah dalam transfer DMA:
1. prosesor menyiapkan DMA transfer dengan menyediakan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang ditransfer.
2. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat,menulis dan membaca data) samapai seluruh blok sudah ditransfer.
3. Pengendali DMA menginterupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.
Gambar 10.3. DMA
|
|
Aplikasi Antarmuka M/K
Perbedaan dari alat-alat M/K dapat dipisahkan dengan mengelompokkan alat-alat yang serupa ke beberapa kelas generik. Untuk setiap kelas generik terdapat beberapa fungsi yang diberikan melalui antar muka standar yang diberikan. Perbedaan detil untuk setiap alat akan dienkapsulasi pada modul kernel yang disebut device driver. Driver ini dibuat oleh pembuat perangkat untuk memenuhi kebutuhan setiap peralatan dengan menggunakan salah satu antarmuka standar. Penggunaan layer untuk driver peralatan ini menyembunyikan perbedaan setiap pengendali peralatan dari subsistem M/K pada kernel, sama seperti bagaimana system call M/K menyembunyikan perbedaan perangkat keras dari aplikasi melalui abstraksi yang berisi kelas-kelas peralatan generik.
Peralatan dapat berupa:
1. Character stream .
atau block Sebuah peralatan character stream (contoh: terminal) untuk mentransfer byte satu persatu sedangkan block device akan mentransfer sekumpulan byte sebagai unit contohnya adalah disk.
2. Sequensial atau random-access .
Sebuah perangkat yang sekuensial memindahkan data yang sudah pasti seperti yang ditentukan oleh perangkat, contohnya modem, sedangkan pengguna akses random dapat meminta perangkat untuk mencari keseluruh lokasi penyimpanan data yang tersedia, contohnya CD-ROM.
3. Synchronous atau asyinchronous .
Perangkat synchronous menampilkan data-data transfer dengan reaksi yang dapat diduga, contohnya tape, sedangkan perangkat asyinchronous menampilkan waktu reaksi yang tidak dapat diduga, contohnya keyboard.
4. Sharable atau dedicated .
Perangkat yang dapat dibagi digunakan secara bersamaan oleh beberapa prosesor atau sharable, contohnya keyboard, sedangkan perangkat yang dedicated tidak dapat digunakan secara bersamaan oleh beberapa prosesor, contohnya tape.
5. Speed of operation .
Rentangan kecepatan perangkat dari beberapa bytes per detik sampai beberapa gigabytes per detik.
6. Read-write,read only, write only.
Beberapa perangkat memungkinkan baik input-output dua arah, contohnya CD-ROM, tapi beberapa lainnya hanya menunjang data satu arah saja, contohnya disk.
Clock dan Timer
Adanya clock dan timer pada perangkat keras komputer, setidaknya memiliki tiga fungsi yang sering digunakan oleh sistem operasi yaitu:
1. Memberi informasi waktu saat ini.
2. Memberi informasi waktu lamanya sebuah proses.
3. Sebagai trigger untuk suatu operasi pada suatu waktu.
Perangkat keras yang mengukur waktu dan melakukan operasi trigger dinamakan programmable interval timer. Perangkat keras ini dapat diatur untuk menunggu waktu tertentu dan kemudian melakukan interupsi. Contoh penerapan adalah pada scheduler dimana dia melakukan interupsi yang akan memberhentikan suatu proses pada akhir dari bagian waktunya.
Blocking/Nonblocking
Ketika suatu aplikasi menggunakan sebuah blocking system call, eksekusi aplikasi itu akan dihentikan sementara, lalu dipindahkan ke wait queue. Setelah system call tersebut selesai, aplikasi tersebut dikembalikan ke run queue, sehingga pengeksekusian dilanjutkan. Banyak sistem operasi yang bersifat blocking karena lebih mudah dimengerti daripada nonblocking. Sedangkan nonblocking M/K saat aplikasi tersebut meminta data dari M/K maka pada saat menunggu diterimanya data dari M/K akan dikerjakan proses lain.
Rangkuman
Port adalah titik koneksi antara perangkat M/K dengan komputer. Data mengalir keluar masuk peralatan melalui bus. Komputer berkomunikasi dengan peralatan melalui device controller. Dua pendekatan dasar komunikasi perangkat dengan komputer: instruksi M/K langsung dan memory-mapped. Status suatu perangkat terlihat dari bit memory-mapped-nya, 1 berarti sibuk, 0 berarti siap. CPU akan memeriksa keadaan bit ini berulang kali untuk melihat apakah perangkat siap, hal ini dinamakan polling. Interupsi bisa terjadi karena input di perangkat telah siap, output komplit atau terjadi error. Sinyal Interupsi akan disampaikan melalui interrupt request line (IRQ) yang akan diterima CPU dan mengalihkannya ke interrupt handler. Dua jenis interupsi yaitu maskable (bisa ditunda/diabaikan) dan nonmaskable interrupt. Interrupt vector berisi alamat awal dari interrupt handler.
DMA adalah suatu unit kontrol khusus yang disediakan untuk mentransfer data langsung antar perangkat eksternal dan memori utama, tanpa intervensi terus menerus dari prosesor. Perbedaan detil untuk setiap alat akan dienkapsulasi pada modul kernel yang disebut device driver. Driver ini dibuat oleh pembuat perangkat untuk memenuhi kebutuhan setiap peralatan dengan menggunakan salah satu antarmuka standar (aplikasi M/K).
Adanya clock dan timer pada perangkat keras komputer, setidaknya memiliki tiga fungsi, yaitu: memberi informasi waktu saat ini, memberi informasi waktu lamanya sebuah proses, sebagai trigger untuk suatu operasi pada suatu waktu. Suatu aplikasi dapat menggunakan blocking dan nonblocking I/O.



