❶ 匯編語言的中斷服務的中斷服務程序是什麼
嗯,我猜你問的是PC的,不是單片機
一、匯編語言的中斷分以下幾種:
1.BIOS中斷,這是固化到BIOS程序中的,每次開機BIOS會自動載入到指定內存
2.186下的DOS中斷,在DOS系統被載入後,系統會延用BIOS的中斷向量,並向裡面添加一些新的向量,這些功能便是DOS系統自帶的中斷服務程序
3.286及以上的系統中斷,PC會進入保護模式,在OS被載入後,中斷由IDT控制,這一機制類似於中斷向量表,只不過中斷向量換成了選擇子。這樣的中斷機制對不同型號的CPU有略微的差別,這里不細說了,我自己也沒全弄明白。
二、中斷實現的方式(8086下的普通中斷)
聽說過「優先順序編碼器」沒?——如果同時有兩個信號被接收,會指定某一個信號的優先順序高,先執行它。中斷就是類似的處理方法。
當CPU獲取到某一高操作優先順序的信號時(比如時鍾,每固定時間就會觸發一次;比如鍵盤響應,用戶希望通過Ctrl+C來退出任何正在執行的DOS程序),CPU會將當前正在執行的程序掛起來,轉而去處理該信號(類似於Call,但略有不同,你看的書應該會講到)。
處理中斷時,系統會將其解釋為一個標號,比如int 9h、int 21h等等。這個標號是一個序號,在內存某處存放著連續的一個表格,這個標號便是表格中的「行號」,只不過,每一行是兩列,包括了該中斷的處理程序的段基址和偏移量。中斷向量表是從0000:0000開始的,每4位元組為一個表項。中斷標號x4就是對應的中斷向量表項所存的地址,高地址是基地址,低地址是偏移。
這么說不知道你懂不懂。。。
反正總結一下你的問題吧,中斷服務程序是載入到內存中的,它在載入前可能是存在BIOS晶元上,也可能是存在硬碟里的;中斷向量表裡只能寫上中斷處理程序的入口地址,要知道每個表項只有4位元組;具體的中斷服務程序,我不信你學匯編的書上不講,我大概講一下:CPU的INTR引腳獲得了中斷信號,得到了標號,比方說是5號,中斷向量表項為0000:000A,讀取這個內存,得到中斷程序入口地址比方說是AAAA:BBBB,那麼它會將當前的CS/IP、Flags寄存器入棧,然後轉到AAAA:BBBB處去執行一直到iret指令返回原任務(或許該中斷結束了這個任務,就不會返回了)。
至於保護模式的中斷,相信你暫時還沒遇到。到後面還有操控8259A晶元來實現高級中斷的,這個就不是一般需要學的了。
❷ 8086中斷系統可以管理幾種中斷啊。。求大神幫忙解答。
這個問題我知道!8086CPU的中斷系統具有256個中斷,每個中斷用一個唯一的中斷向量號標識。向量號也稱為矢量號或類型號,它用一個位元組表示:0~255,對應256個中斷。8086的中斷可以分成外部中斷和內部中斷兩類。
(1)外部中斷
外部中斷是來自8086CPU之外的原因引起的程序中斷。它又分成兩種情況:
·可屏蔽中斷——外部的這個中斷請求可以在CPU的內部被屏蔽掉,即CPU可以控制它是否引起程序中斷。標志寄存器中的中斷允許標志IF就是用於控制可屏蔽中斷的。
·非屏蔽中斷——外部的這個中斷請求不能在CPU的內部被屏蔽,CPU必須執行它的處理程序。8086為非屏蔽中斷分配了中斷向量號02。
(2)內部中斷
內部中斷是由於8086CPU內部執行程序引起的程序中斷。它又分成多種情況:
·除法錯中斷——在執行除法指令時,若除數為0或商超過了寄存器所能表達的范圍,則產生除法錯中斷。8086為它分配的向量號為0。
·指令中斷——執行中斷調用指令INTn就產生指令中斷,也稱為軟體中斷,它的向量號就是n。
INTn指令為2位元組指令(機器碼為11001101—n—,第2個位元組就是中斷向量號n),但向量號為3的指令中斷(INT3)是1位元組指令(11001100),較特殊,常用做程序調試的斷點中斷。
調試程序DEBUG中的G命令就是利用斷點中斷(3號中斷)中止被調試程序的。使用DEBUG調試程序時,如果在程序段最後加上一條INT3指令,就可以停止程序運行,而不必設置斷點了。
·溢出中斷——在執行溢出中斷指令INTO時,若溢出標志OF為1,則產生溢出中斷。它的向量號為4。
·單步中斷——若單步標志TF為1,則在每條指令執行結束後都產生單步中斷。它的向量號為1。
調試程序DEBUG中的T命令就利用了單步中斷。
❸ 中斷過程,系統共需幾次開中斷幾次關中斷它們中哪些是有硬體實現
1.關中斷:由硬體自動實現,讓CPU進入不可再次相應中斷的過程;2.保存斷點:將當前的程序計數器PC中的內容保存起來;3.識別終端源,轉向中斷服務程序:在多個中斷源同時請求中斷的情況下,實際響應的只能是優先權最高的那個;4.保存現場,交換屏蔽字:現場信息一般是指程序狀態字、中斷屏蔽寄存器和CPU中某些寄存器的內容;5.開中斷:開中斷將允許更高級的中斷請求得到響應,實現中斷嵌套;6.執行中斷服務程序主體:7.關中斷:為了在回復現場和屏蔽字時不要被中斷打斷;8.恢復現場和屏蔽字:9.開中斷:10.中斷返回:有一條IRET指令實現。
❹ 電腦系統中斷cpu過高
何為「系統中斷」
雖然「系統中斷」與其它 Windows 進程一樣出現在任務管理器中,但它卻不是一個真正意義上的進程,它僅代表 Windows 中較低系統級別的所有「中斷」的 CPU 使用率。
中斷可來自軟體、硬體,甚至處理器本身,Wikipedia 對系統中斷的專業解釋如下:
在計算機科學中,中斷是指處理器接收到來自硬體或軟體的信號,提示發生了某個事件,應該被注意,這種情況就稱為中斷。
通常,在接收到來自外圍硬體(相對於中央處理器和內存)的非同步信號,或來自軟體的同步信號之後,處理器將會進行相應的硬體/軟體處理。發出這樣的信號稱為進行中斷請求(interrupt request,IRQ)。硬體中斷導致處理器通過一個運行信息切換(context switch)來保存執行狀態(以程序計數器和程序狀態字等寄存器信息為主);軟體中斷則通常作為CPU指令集中的一個指令,以可編程的方式直接指示這種運行信息切換,並將處理導向一段中斷處理代碼。中斷在計算機多任務處理,尤其是即時系統中尤為有用。這樣的系統,包括運行於其上的操作系統,也被稱為「中斷驅動的」(interrupt-driven)。
簡單地來理解,中斷是軟體、硬體和 CPU 之間進行通信的一種形式,例如:當你在鍵盤上執行輸入操作時,相應的硬體和軟體便會向 CPU 發送中斷以通報任務並觸發必要的處理。在中斷處理程序任務完成後,處理器便會恢復到它被中斷時的狀態。
打開 Windows 任務管理器,盯著「系統中斷」的 CPU 使用率,狂敲一通鍵盤,觀察 CPU 佔用率的變化即可驗證上述說法,你的理解也會加深。
當硬體或驅動程序出現錯誤時,可導致向 CPU 發送錯誤的中斷信號,就會造成在任務管理器里看到「系統中斷」的 CPU 使用率過高的問題。通常一個健康、運行良好的 Windows 系統,系統中斷的 CPU 使用率大約會在 0.1% 至 2% 之間浮動,峰值不超過 7% 也被認為在可接受的正常范圍,當然這也取決於你所使用的 CPU 頻率、運行的軟體和所連接的相關硬體。
解決「系統中斷」CPU使用率高
如果系統中斷對 CPU 的佔用長期超過 5% – 10%,就可以懷疑當前系統涉及驅動程序或硬體問題。如果該問題不是長時間出現的普遍現象,可以先嘗試重啟操作系統進行解決。
1. 檢查硬體驅動
要想快速確認是否由驅動程序造成的問題,可以使用 DPC Latency Checker 這個小工具進行檢查。延遲過程調用(DPC)與系統中斷的處理相關, 當中斷處理程序需要延遲一個低優先順序的任務時,便會調用 DPC。
DPC Latency Checker 可以通過實時音、視頻流來分析當前系統是否能妥善處理內核態設備驅動的延遲,它是快速找出驅動問題的好幫手,而且無需安裝,如果你看到出現紅條則表示有高延遲。
fix-high-cpu-usage-system-interrupts-3
要找到驅動程序中斷問題的根源,你得逐個回滾或更新驅動程序到最新版本,並不斷通過 DPC Latency Checker 進行測試。此外,大家也可以安裝 LatencyMon 這款延時監控軟體,以幫助快速發現高 DPC 計數的驅動程序文件。
fix-high-cpu-usage-system-interrupts-4
具有高 DPC 計數的驅動可能導致大量中斷。
2. 禁用硬體設備
在不更新驅動的情況下,我們也可以通過逐個禁用硬體設備的「排除法」來快速定位問題硬體或驅動。
使用 Windows + R 打開「運行」— 執行 devmgmt.msc 打開設備管理器,對硬體進行逐個禁用並在 DPC Latency Checker 或任務管理器中觀察「系統中斷」的情況,進行逐一排除。
可能出問題的硬體主要有:
網卡
內置數據機
內置音效卡設備
其它外置設備,如電視調諧卡、ISDN 或 DSL 適配器等
千萬不要在設備管理器里禁用或卸載系統必要的設備和驅動程序哦,如果連處理器、顯示適配器、IDE 控制器或顯示器等必需品都禁掉,麻煩可就大了。
3. 拔下或禁用外設
如果 DPC Latency Checker 什麼都沒發現,那問題很可能是由 USB 硬體造成的。此時,大家可以嘗試拔除所有外設的連接或在設備管理器中嘗試禁用「通用串列匯流排控制器」中的所有「USB Root Hub」
❺ 系統處理中斷源的最大數量
8086中斷包含一個0到255之間的編號,所以 是D. 256,在現代計算機系統中,中斷源的數目很多,一般有幾十個至幾百個。為了在響應中斷後處理機能夠盡快找到中斷入口,以便為中斷源提供服務,因此必須對這些中斷源進行分類。