Sela (interrupt) ialah isyarat kepada pemproses bahawa sesuatu memerlukan perhatian. Pemproses menjeda program semasa, menjalankan rutin pendek untuk mengendalikan peristiwa itu, kemudian menyambung tepat di tempat ia berhenti. Soalan memberi senario seperti tekanan kekunci, kerosakan pencetak atau kegagalan kuasa, dan meminta anda menerangkan apa yang berlaku.
Pelajaran ini menyusul perbandingan penterjemah dan menggunakan idea pemproses daripada perkakasan dan pemprosesan.
Apakah yang berlaku, langkah demi langkah?
- Sumber menghantar isyarat: perkakasan (papan kekunci, pencetak, pemasa) atau perisian (program yang memerlukan perkhidmatan).
- Pemproses menyemak sela selepas menyiapkan arahan semasa dalam setiap kitaran ambil-nyahkod-laksana.
- Jika sela menunggu dan **keutamaan (priority)**nya cukup tinggi, pemproses menyimpan keadaannya: pembilang program dan kandungan daftar.
- Ia menjalankan rutin perkhidmatan sela (ISR) yang sepadan dengan isyarat.
- Ia memulihkan keadaan yang disimpan dan meneruskan program asal daripada arahan seterusnya.
Jika dua sela tiba serentak, yang berkeutamaan lebih tinggi dilayan dahulu. Isyarat kegagalan kuasa mengatasi tekanan kekunci.
Kitaran dengan semakan sela boleh ditulis dalam pseudokod:
REPEAT
FETCH instruction at program counter
EXECUTE instruction
IF interrupt signal received AND its priority is high enough THEN
SAVE program counter and registers
RUN interrupt service routine
RESTORE program counter and registers
ENDIF
UNTIL program ends
Contoh berlangkah: tekanan kekunci semasa pengiraan
Satu program mempunyai empat arahan:
I1: A ← 2
I2: B ← A * 3
I3: C ← B + 1
I4: D ← C * 2
Pengguna menekan kekunci semasa I2 dilaksanakan. Jejak pemproses.
| Langkah | Tindakan | A | B | C | D |
|---|---|---|---|---|---|
| 1 | Laksana I1 | 2 | |||
| 2 | Laksana I2: B = 2 × 3 | 2 | 6 | ||
| 3 | Semakan sela: tekanan kekunci menunggu, maka simpan keadaan (arahan seterusnya ialah I3, A = 2, B = 6) | 2 | 6 | ||
| 4 | Jalankan ISR: simpan kekunci dalam penimbal papan kekunci | 2 | 6 | ||
| 5 | Pulihkan keadaan, sambung pada I3 | 2 | 6 | ||
| 6 | Laksana I3: C = 6 + 1 | 2 | 6 | 7 | |
| 7 | Laksana I4: D = 7 × 2 | 2 | 6 | 7 | 14 |
Jawapan akhir ialah D = 14, sama seperti tanpa sela.
Itulah tujuan langkah simpan dan pulih: program yang terganggu tidak rosak. Semakan: 2 × 3 = 6, 6 + 1 = 7, 7 × 2 = 14. Anda boleh menjejak gelung yang serupa dalam pelatih jejak pseudokod terhad.
Kesilapan yang perlu diawasi
Jawapan yang salah: “Pemproses berhenti menjalankan program sehingga pengguna berhenti menekan kekunci.”
Ini menganggap sela sebagai henti kekal, dan tidak menyebut keadaan yang disimpan. Versi lain mengatakan pemproses terus bertanya kepada papan kekunci sama ada kekunci telah ditekan. Itu ialah pengundian (polling), dan tujuan sela ialah peranti memberi isyarat kepada pemproses.
Jawapan penuh menamakan isyarat, menyatakan arahan semasa disiapkan, menyatakan keadaan disimpan, menamakan rutin dan menyatakan program disambung semula.
Semak sendiri
1. Pencetak kehabisan kertas semasa mencetak dokumen. Terangkan bagaimana sela digunakan.
Tunjukkan jawapan
Pencetak menghantar isyarat sela kepada pemproses. Pemproses menyiapkan arahan semasa dan menyimpan keadaannya. Ia menjalankan rutin yang memberitahu pengguna pencetak memerlukan kertas. Kemudian ia memulihkan keadaannya dan meneruskan program lain.
2. Tekanan kekunci dan amaran kegagalan kuasa tiba pada masa yang sama. Yang manakah dikendalikan dahulu, dan mengapa?
Tunjukkan jawapan
Amaran kegagalan kuasa, kerana ia mempunyai keutamaan lebih tinggi. Pemproses mungkin perlu menyimpan kerja sebelum kuasa hilang. Tekanan kekunci boleh menunggu.
3. Berikan satu perkara yang mesti disimpan pemproses sebelum menjalankan rutin perkhidmatan sela, dan terangkan sebabnya.
Tunjukkan jawapan
Pembilang program (atau kandungan daftar). Tanpanya, pemproses tidak akan tahu arahan mana yang perlu dijalankan seterusnya, atau nilai apa yang digunakan program yang terganggu, apabila ia kembali.
Ke mana pelajaran ini menuju seterusnya
Kini beralih daripada bertindak balas terhadap peristiwa kepada alat penyelenggaraan pada komputer, dalam kenal pasti fungsi utiliti. Kemudian, set latihan perisian dan sistem mencampurkan sela dengan pelajaran lain.
Menulis urutan langkah yang kemas ialah kemahiran yang boleh dilatih terus oleh guru kami dalam tuisyen Computer Science dalam talian satu dengan satu.