Interupsi adalah peristiwa "tidak biasa" yang terjadi yang perlu segera diproses , terlepas dari apa pun yang terjadi. Saya mengatakan "tidak biasa" dalam tanda kutip, karena mereka tidak selalu tidak terduga atau buruk, tetapi "tidak biasa" dari sudut pandang CPU karena mereka "terjadi begitu saja" sementara sibuk mengeksekusi kode yang mungkin tidak berhubungan.
CPU memiliki beberapa mekanisme untuk mendengarkan interupsi, dan beberapa cara untuk mengkonfigurasi "apa yang harus dilakukan" ketika berbagai macam interupsi terjadi. Ini memungkinkan sistem operasi untuk mengatur bahwa ia akan diberitahukan ketika perangkat keras melakukan hal-hal (termasuk jam perangkat keras yang sangat penting, yang hanya menghasilkan interupsi secara berkala). Melalui konfigurasi penanganan interupsi CPU, kode yang ditunjuk dalam OS akan mendapatkan kontrol setiap kali interupsi terjadi.
Komputer berada dalam kondisi yang sangat tidak menyenangkan (ke pemrogram aplikasi) ketika pengendali interupsi mulai berjalan; mesin sibuk melakukan sesuatu yang lain (yang bisa berupa apa saja ) dan sekarang OS telah diberitahu bahwa "sesuatu telah terjadi". Itu harus mengumpulkan informasi lain yang diperlukan untuk benar-benar menangani interupsi dari mana pun di mesin itu harus berbaring dan melakukan pemrosesan apa pun yang diperlukan tanpa mengganggu bahwa "bisa apa saja" yang sedang berjalan pada CPU. Jika OS ingin mengganti proses aplikasi mana yang sedang berjalan, ia harus menyimpan cukup konteks untuk dapat mengembalikannya nanti (lagi, tanpa mengganggu konteks itu), kemudian memuat beberapa konteks lain, dan kemudian biarkan CPU melanjutkan normal eksekusi dalam konteks itu.
Seperti disebutkan, interupsi digunakan untuk mendapatkan notifikasi dari perangkat keras (satu-satunya alternatif adalah dengan memeriksanya secara berkala), melacak waktu dan mendapatkan kesempatan yang dijamin untuk mendapatkan kembali kendali dari proses aplikasi (untuk mengganti aplikasi mana yang sedang berjalan) , memulihkan dari proses aplikasi yang menjalankan instruksi yang tidak valid, dan juga memungkinkan aplikasi membuat permintaan OS. Yang terakhir ini dikenal sebagai panggilan sistem. Untuk mencegah aplikasi dari mengacaukan mesin dan satu sama lain, mereka biasanya berjalan dengan mesin dalam "mode pengguna", yang mencegah aplikasi dari melakukan apa pun selain membaca dan menulis (virtual) memori yang sudah dialokasikan untuk itu. Ini berarti melakukan apa sajalain (membaca / menulis file, meminta lebih banyak memori, mengakses perangkat, dll) aplikasi harus membuat panggilan sistem; ia melakukannya pada dasarnya dengan meninggalkan beberapa informasi tentang apa yang ingin dilakukan di suatu tempat ia tahu OS akan mencarinya, kemudian menjalankan instruksi CPU yang menyebabkan interupsi dari jenis yang tepat. OS kemudian dapat melihat apa yang coba dilakukan aplikasi dan menentukan apakah harus melakukan permintaan itu. Ini menjamin bahwa OS akan terlibat dalam upaya proses apa pun untuk melakukan apa pun yang memengaruhi apa pun di luar proses adalah satu-satunya cara kebijakan akses dapat diberlakukan.
Jadi intinya, ya, OS didorong oleh interupsi. OS "abstrak" mem-bootstrap mesin ke keadaan "operasi normal" dan pada titik tertentu melepaskan kendali ke proses "normal". Dalam keadaan normal, OS kemudian hanya akan mendapatkan kembali kendali dengan menangani interupsi; tetapi karena hampir tidak ada yang menarik terjadi tanpa gangguan, OS pada dasarnya memiliki kendali atas segala hal sepanjang waktu.