這裡是我想到的最容易分辨中斷和異常的案例。
現在正在開一場**選秀,有主持人和各位要演唱的歌手。
主持人(os)和選手(1程序)想要讓自己的聲音被所有人聽見,就必須要用話筒(cpu),且現場只有乙個話筒(cpu),當選手(1程序)使用話筒(cpu)的時候,話筒是藍色(os處於使用者態),當主持人(os)使用話筒的時候,話筒是紅色(核心態)。
中斷(外中斷):現在每位歌手(1程序)有100秒(時間片)用話筒(使用者態)歌唱時間,一旦到時間,現場的提示響(時鐘中斷)了,主持人(os)會立即強行奪走歌手的話筒(cpu),話筒變成紅色(核心態),並宣布下一位選手登場(中斷程式),將話筒交給這位歌手(2程序),話筒由紅色變為藍色(核心態–>使用者態)。以此往下推。這裡的時鐘中斷是內中斷(狹義中斷)。
異常(內中斷):如果選秀進行中,某位選手(波瀾哥,3號程序)唱的實在太難聽了(出現異常),身為主持人的韓紅(os)聽不下去了,立馬奪回由藍色(使用者態)變成紅色(核心態)的話筒(cpu),一腳將波瀾哥踢出去(異常處理),再將紅色(核心態)話筒(cpu)轉交給下乙個選手(4號程序),話筒變為藍色(使用者態)。這裡難聽的歌聲就是異常,是程序自己出現的問題。
從這裡我們不難發現,異常是程序內部自己出現的問題,中斷是外部發生的,例如時鐘中斷,io中斷等。且只有中斷發生,使用者態才能變為核心態。
當然異常包括陷入,終止,故障。中斷訊號也對應不同的中斷處理程式
最容易理解的排序演算法
排序不難,但是有時候我們容易出錯,容易混淆等等,我們慢慢來分析,從最簡單的開始慢慢深入理解。插入排序 直接插入排序 每一步將乙個待排的記錄根據關鍵字的大小插入已經排好序的那部分裡邊去,直到所有的都插完為止。我們來看例子來分析 初始大小 57 68 59 52 1 第乙個數是57,就乙個數,所以就預設...
js Array操作的最簡短最容易理解方法
array 的方法 1 array.join 把所有元素用符號鏈結成string返回,如果元素不是基本型別,先呼叫tostring.它對應string.split arr 1,2,true,3,4,5 arr.join 1 2 true 3 4 5 2 array.reverse 逆序排列陣列 ar...
中斷和異常
中斷和異常 中斷訊號的處理方式 分緊急部分和不緊急部分 中斷處理 必須能夠重入,以便能夠中斷巢狀 中斷和異常的產生 乙個irq interrupt request 代表中斷控制器上的一根中斷線,和乙個中斷向量 單cpu 可程式設計中斷控制器 pic 多cpu 改進的可程式設計中斷控制器 apic 乙...