Sampukan

Dalam sains komputer, **sampukan** ("dari perkataan menyampuk / mencelah) adalah isyarat tak-sinkroni daripada perkakasan atau perisian yang menandakan suatu tindakan perlu diambil. **Sampukan perkakasan** menyebabkan pemproses menyimpan keadaan perlaksanaannya menerusi suis konteks dan memulakan perlaksanaan bagi pengelolaan sampukan. **Sampukan perisian** biasanya dilaksanakan sebagai suruhan dalam set suruhan yang menyebabkan suis konteks    ''(context switch)'' melaksanakannya. Pengendalian sampukan sama seperti sampukan perkakasan. Sampukan secara umumnya merupakan satu teknik untuk berbilang-tugas komputer terutamanya dalam pengkomputeran masa nyata. Sistem seperti ini dikatakan pacuan sampukan.

Tindakan menyampuk dirujuk sebagai permintaan sampukan.

## Gambaran keseluruhan

Pada asalnya sampukan merupakan satu cara untuk menghalang pembaziran masa berharga pemproses dalam gelung tinjauan untuk menanti peristiwa luaran. Sebaliknya, apabila berlaku suatu peristiwa, sampukan mengisyaratkan pemproses untuk membenarkan pemproses memproses kerja lain sementara menunggu peristiwa tersebut. 

Sampukan boleh dilaksanakan dalam perkakasan sebagai suatu sistem dengan talian kawalan atau ia boleh disepadukan ke dalam subsistem ingatan. Jika dilaksanakan dalam perkakasan, pengawal sampukan boleh atur cara (PIC) atau pengawal sampukan boleh atur cara termaju(APIC) akan disambungkan kepada peranti sampukan dan ke pin sampukan pemproses. Jika dilaksanakan sebagai sebahagian daripada pengawal ingatan, sampukan akan dipetakan ke dalam sistem ruang alamat ingatan. 

Sampukan boleh dikategorikan kepada beberapa jenis iaitu:
* sampukan perisian - sampukan yang terhasil di dalam pemproses apabila melaksanakan arahan. Contoh sampukan perisian adalah sistem panggilan.
* sampukan bertopeng - secara asasnya merupakan sampukan perkakasan yang boleh diabaikan dengan menetapkan bit di dalam bit-topeng *pendaftar topeng sampukan* *(Interrupt Mask Register, IMR)*.
* sampukan tanpa-bertopeng ''(Non-Maskable Interrupt, NMI)'' - merupakan sampukan perkakasan yang biasanya tidak mempunyai bit-topeng dan boleh diabaikan.
* sampukan antara pemproses *(Interprocessor Interrupt, IPI)* - sejenis sampukan istimewa yang terhasil dari satu pemproses untuk menyampuk pemproses lain dalam sistem berbilang-pemproses. 
* sampukan lainan - sampukan perkakasan yang terhasil oleh ralat sistem seperti hingar elektrik pada salah satu talian sampukan PIC.   

Pemproses biasanya mempunyai topeng (pelindung) sampukan dalaman yang membenarkan perisian untuk mengabaikan kesemua sampukan perkakasan luaran semasa ia disetkan. Topeng ini menawarkan capaian yang lebih laju berbanding capaian IMR dalam sebuah PIC, atau ia boleh melumpuhkan sampukan dalam peranti itu sendiri. Dalam sesetengah kes seperti senibina x86, perlakuan melumpuh dan membolehkan sampukan pada pemproses itu sendiri bertindak seperti penghalang ingatan (*memory barrier*) yang mana sebenarnya ia mungkin lebih perlahan.

Fenomena di mana keseluruhan prestasi sistem disekat dengan ketat oleh jumlah masa memproses yang digunakan untuk mengendalikan sampukan yang berlebihan dikenali sebagai ribut sampukan ''(interrupt storm)'' atau kunci hidup *(live lock)*.

## Kegunaan biasa

Kegunaan sampukan yang biasa adalah seperti: pemasa sistem, cakera IO, isyarat mematikan kuasa dan perangkap. Sampukan yang lain wujud untuk menghantar bait data menggunakan UART atau Ethernet; mengesan kunci tekan, mengawal motor atau apa sahaja yang mesti dilakukan oleh peralatan tersebut.

Sampukan pemasa sistem klasik meyampuk secara berkala dari satu pembilang atau dari talian kuasa. Pengendali sampukan membilang sampukan untuk menyimpan masa. Sampukan pemasa juga mungkin boleh digunakan oleh penjadual tugas OS untuk menjadual semula keutamaan proses yang sedang berjalan. Pembilang sering digunakan, tetapi sebilangan komputer yang lama sebaliknya menggunakan frekuensi talian kuasa disebabkan kebanyakan syarikat kuasa di negara Barat mengawal frekuensi talian kuasa menggunakan jam atomik.

Sampukan cakera mengisyaratkan pelengkapan penghantaran data dari atau kepada persisian cakera *(disk peripheral)*. Kemudian, satu proses menulis atau membaca fail dimulakan sekali lagi.

Sampukan mematikan-kuasa menjangkakan atau memohon suatu kehilangan kuasa. Ia membenarkan peralatan komputer untuk melaksanakan penutupan *(shutdown)* secara bertertib.

Sampukan juga digunakan dalam sifat contoh-contoh ke hadapan ''(typeahead)'' untuk menimbal acara seperti pukulan kunci *(keystrokes)*.