Secara teknis, kondisi diatas dapat disebabkan aksi dari proses itu sendiri ataupun dari luar. Contoh aksi dari luar adalah terjadinya interupsi. Sementara aksi dari dalam seperti pemanggilan layanan sistem operasi (supervisor call atau system call) ataupun terjadinya trap, yaitu eksekusi proses yang menghasilkan kondisi kesalahan. Masing-masing penyebab di atas akan dijelaskan dibawah ini:

  1. Interupsi disebabkan oleh aksi eksternal, misalnya oleh peranti I/O, pewaktu (timer), ataupun kesalahan akses memori utama. Munculnya interupsi tidak bergantung pada proses yang pada saat itu sedang running. Pada saat muncul, kendali lebih dahulu diserahkan ke interrupt handler atau rutin penanganan interupsi. Secara umum rutin tersebut akan terlebih dahulu melakukan penyimpanan konteks prosesor (processor context), yaitu isi seluruh register prosesor pada saat tersebut , ke PCB proses. Beberapa contoh interupsi dijelaskan berikut :
    • Interupsi waktu (Clock Interrupt), interupsi ini digunakan untuk memeriksa pemakaian jatah waktu penggunaan prosesor. Jika jatah waktu telah habis (time-out) maka prosesor akan dialokasikan ke proses lain.
    • Interupsi I/O (I/O Interrupt), interupsi ini dilakukan oleh peranti I/O ataupun adanya data baru dari peranti I/O.
    • Interupsi Kesalahan Memori (Memory Fault Interrupt), interupsi ini umumnya terjadi jika prosesor mencoba mengakses alamat logika yang datanya belum disalin ke memori utama. Ketika interupsi ini terjadi, rutin penanganannya akan menyalin page/statement yang hendak diakses tersebut ke memori utama. Dengan kata lain, sistem operasi menggunakan interupsi seperti ini untuk mengelola penyalinan page / segment proses dari memori maya pada media sekunder ke memori utama.
  2. Trap, adalah interupsi yang dipicu oleh terjadinya kesalahan eksekusi ataupun kondisi-kondisi khusus (exception condition) dari proses yang sedang running. Jika kesalahannya fatal maka dilakukan pengalihan eksekusi ke proses lain atau yang disebut dengan process switching. Jika tidak fatal, sistem operasi dapat memberi peringatan ke pemakai atau menjalankan prosedur pemulihan dan kemudian melanjutkan eksekusi proses tersebut.
  3. Supervisor Call atau System Call, merupakan pemanggilan layanan sistem operasi oleh proses yang sedang running. Penggunaan system call menyebabkan aliran eksekusi berpindah ke kode instruksi kernel sistem operasi. Eksekusi kode instruksi kernel ini dapat menyebabkan terjadinya pengalihan proses.

Bersambung ke judul, Tahapan Pengalihan Eksekusi (Process Switching)