Pengenalan Interrupt pada Sistem Operasi

Mahir Koding –¬†Salah satu karakteristik komputer (PC) yang sering kali ditunjukkan adalah ia selalu mengerjakan perintah berurut, langkah demi langkah. Yup, begitulah cara kerja prosesor (CPU) di komputer! Akan tetapi tidak selamanya alur eksekusi selalu berurutan. Prosesor dapat saja menerima sebuah sinyal penting dimana ia harus segera menanganinya dan menunda terlebih dahulu apa yang sedang dikerjakannya saat ini. Sinyal penting tersebut disebut sebagai interrupt.

Prosesor dapat menerima dua jenis interrupt, yaitu hardware interrupt dan software interrupt. Sesuai namanya, hardware interrupt adalah interrupt yang dikirim oleh hardware melalui jalur khusus. Contoh hardware interrupt adalah sinyal yang dikirim ke prosesor saat tombol keyboard ditekan. Interrupt ini bersifat asynchronous karena sinyal tersebut dapat dikirim kapan saja saat prosesor sedang mengerjakan program. Kebalikannya, software interrupt adalah interrupt yang dikirim oleh software (dengan kata lain sinyal yang dikirim dari dalam processor itu sendiri).

Mengapa memakai interrupt? Untuk menunjukkan alasan penggunaan interrupt, saya akan menggunakan contoh proses untuk membaca apa yang diketik dari keyboard. Tanpa interrupt, program harus memerintahkan prosesor untuk secara periodik memeriksa apakah ada tombol yang di tekan di keyboard. Teknik ini disebut sebagai polling. Semakin banyak hardware yang terlibat dalam proses polling, maka beban prosesor akan semakin berat. Ingat bahwa polling harus memeriksa secara periodik walaupun tidak ada tombol yang di tekan di keyboard. Interrupt menawarkan solusi yang lebih baik: prosesor akan mendapatkan notifikasi hanya bila tombol keyboard ditekan.

Ibaratnya begini, ketika anda sedang melakukan suatu pekerjaan, katakanlah membaca sebuah buku, belum selesai buku tersebut anda tamatkan, lalu telepon anda berbunyi, sehingga anda melakukan percakapan terlebih dahulu melalui telepon tersebut. Setelah pembicaraan selesai, anda melanjutkan membaca buku tadi. menerima telepon di dalam kejadian tersebut disebut dengan menyela.

Begitu juga dengan proses yang terjadi pada komputer. Apabila sebuah komputer melakukan prosesnya tanda ada gangguan, tentu komputer tersebut dapat menyelesaikan pekerjaannya dengan serius khusus untuk satu pekerjaan yang sedang dikerjakannya. Dalam kondisi demikian, komputer anda melakukan tugasnya yang disebut dengan primitive batch processing. Pekerjaan seperti ini digunakan oleh komputer pada komputer zaman awal-awal ditemukannya. Dimana komputer tidak bisa mengerjakan beberapa program sekaligus dalam waktu bersamaan, sampai satu pekerjaan selesai dikerjakan, maka baru dia bisa berpindah ke pekerjaan lainnya.

Anda tentu juga tidak jarang mengalami hal dengan interrupt ini, katakanlah, ketika mengetikkan SMS ternyata ada telpon yang masuk, anda terima dulu telpon tersebut, lalu setelahnya anda lanjutkan pengetikan SMS tadi. Untuk memungkinkan terjadinya interrupt ini pada sistem komputer, CPU memiliki suatu jalur khusus terhadap suatu chip pengatur interrupt eksternal (bagian dari chipset), yang berisi database sederhana yang dikenal dengan interrupt vectors.

Ketika sebuah interrupt terjadi pada chip, maka CPU menyimpan informasi terakhir yang dia kerjakan, berulah dia mengerjakan sesuai dengan informasi yang ada pada interrupt vector tesebut. Interrupt vector ini sebenarnya hanya sebuah nama pemanis yang berisi informasi tentang selaan yang terjadi, kalau dibelah lebih dalam lagi, isinya adalah berupa tabel yang berisi angka-angka). Pada interrupt vector inilah ditemukan kemana dan apa proses berikutnya yang harus dilaksanakan oleh komputer. Ketika pekerjaan interrupt tadi selesai dilaksanakan, maka komputer melakukan pelacakan kembali apa pekerjaan sebelumnya yang sedang dilaksanakannya.