Membahas tentang Proses penanganan interupsi, konsep interupsi dan jebakan, serta aktivitas CPU dalam mode interupsi dan polling serta status CPU.
Perangkat keras interupsi diciptakan untuk menghilangkan kebutuhan akan panggilan eksplisit ke prosedur polling dari dalam kode aplikasi. Pada dasarnya semua komputer yang ada di pasaran saat ini, dari mikrokontroler terkecil hingga superkomputer berperforma tertinggi menyertakan perangkat keras semacam itu. Akibatnya, apa yang dilakukan mekanisme interupsi dasar adalah memeriksa semua bit status perangkat yang relevan tepat setelah mengeksekusi setiap instruksi mesin, memasukkan panggilan ke penangan interupsi, serupa dengan rutinitas polling kita setiap kali beberapa perangkat siap. Selama tidak ada perangkat yang memerlukan layanan, ini memungkinkan komputer menjalankan instruksi dengan kecepatan penuh.
Secara umum, interupsi dapat dilihat sebagai panggilan yang dimulai oleh perangkat keras ke suatu prosedur, interrupt handler atau interrupt service routine. Akibatnya, loop eksekusi instruksi dari prosesor pusat telah dibuat untuk berfungsi sebagai loop polling utama dari aplikasi kita! Meskipun deskripsi abstrak dari interupsi sebagai panggilan prosedur yang dimulai oleh perangkat keras berlaku untuk sebagian besar perangkat keras interupsi, detailnya sangat bervariasi dari satu mesin ke mesin lainnya. Alamat rutin layanan interupsi sering disimpan dalam register khusus atau lokasi memori khusus, yang disebut vektor interupsi. Pada beberapa mesin, pemanggilan untuk menginterupsi rutinitas layanan pemanggilan prosedur paralel sejauh pengembalian prosedur normal dapat digunakan untuk kembali ke kode yang sedang berjalan pada saat interupsi, sementara pada mesin lain, instruksi khusus kembali dari interupsi harus digunakan.
Stub bahasa rakitan adalah sedikit kode yang menutupi ketidakcocokan antara satu model transfer kontrol dan lainnya; dalam hal ini, mengizinkan penggunaan interupsi untuk memanggil fungsi normal yang dikompilasi oleh kompiler yang tidak tahu apa-apa tentang rutinitas layanan interupsi.
Setelah rutinitas layanan interupsi dipanggil, permintaan perangkat keras untuk layanan tersebut harus dinonaktifkan atau ditarik. Jika tidak, loop tak terbatas (dan mungkin rekursif) akan menghasilkan, setelah mengeksekusi instruksi pertama dari rutin layanan interupsi, perangkat keras akan memaksa transfer kontrol ke awal rutinitas layanan interupsi yang sama. Pada beberapa sistem, interupsi secara otomatis dinonaktifkan oleh tindakan perangkat keras prosesor pusat ketika merespons interupsi, sementara pada yang lain, instruksi pertama dari setiap rutin layanan interupsi harus menonaktifkan interupsi.
Dalam contoh yang disajikan di sini, diasumsikan bahwa perangkat keras secara otomatis menonaktifkan interupsi saat memanggil rutin layanan interupsi.
Sekalipun perangkat keras dapat menonaktifkan interupsi, perangkat lunak juga harus dapat mengaktifkan atau menonaktifkannya. Misalnya, saat kembali dari rutinitas layanan interupsi, setelah perangkat lunak melakukan apa pun yang diminta interupsi, perangkat lunak harus mengaktifkan kembali interupsi saat kembali ke kode yang diinterupsi. Selain itu, jika antrian keluaran kosong, tidak ada gunanya menanggapi interupsi dari perangkat keluaran ketika sudah siap untuk mentransfer lebih banyak data; argumen serupa dapat dibuat ketika antrian input penuh. Pada kebanyakan mesin, ada instruksi khusus untuk mengaktifkan dan menonaktifkan interupsi; pada beberapa, instruksi ini berlaku untuk semua interupsi pada saat yang sama, sementara mesin lain mengizinkan grup perangkat untuk diaktifkan atau dinonaktifkan sebagai grup.
Selain itu, biasanya untuk menyertakan, dalam register kontrol setiap perangkat, satu atau lebih bit pengaktif interupsi yang sesuai dengan setiap kondisi yang dapat dideteksi perangkat yang mungkin menjadi penyebab permintaan interupsi. Jika bit pengaktifan interupsi untuk suatu kondisi disetel, maka saat kondisi tersebut terdeteksi, akan ada permintaan interupsi.
Perlu dicatat bahwa penonaktifan kemampuan perangkat output untuk meminta interupsi saat antrian output kosong dan mengaktifkan perangkat tersebut saat data dimasukkan ke dalam antrian adalah solusi tujuan khusus untuk masalah umum, masalah produsen-konsumen. Perangkat adalah konsumen, dan aplikasi adalah produsen, dan masalah umumnya adalah mencegah konsumen mencoba menggunakan data yang belum diproduksi. Dalam sistem produsen-konsumen mana pun, apakah sistem itu semua dalam perangkat keras, semua dalam perangkat lunak, atau campuran di antara keduanya, harus ada mekanisme sinkronisasi untuk membuat konsumen menunggu hingga data tersedia!
Penangan interupsi dan penjadwal
Karena penangan interupsi memblokir tugas dengan prioritas tertinggi agar tidak berjalan, dan karena sistem operasi waktu nyata dirancang untuk menjaga latensi utas seminimal mungkin, penangan interupsi biasanya disimpan sesingkat mungkin. Penangan interupsi menunda semua interaksi dengan perangkat keras selama mungkin; biasanya yang diperlukan hanyalah mengakui atau menonaktifkan interupsi (sehingga interupsi tidak akan terjadi lagi saat penangan interupsi kembali). Penangan interupsi kemudian mengantri pekerjaan yang harus dilakukan pada tingkat prioritas yang lebih rendah, seringkali dengan membuka blokir tugas driver (melalui pelepasan semaphore atau pengiriman pesan). Penjadwal sering menyediakan kemampuan untuk membuka blokir tugas dari konteks penangan interupsi.
Real-time operating systems (RTOS) LynxOS, Embedded Linux, Prex, Tron, WindowsCE, RTLinux, THEOS, OSEā¦