1. 程式人生 > >作業系統——第六章筆記(二)

作業系統——第六章筆記(二)

3.中斷機構和中斷處理程式
中斷在作業系統中有特殊而重要的地位,沒有它就不可能實現多道程式。
中斷是I/O系統最低的一層,也是裝置管理的基礎。
3.1中斷簡介
3.1.1中斷和陷入
1)中斷:CPU對I/O裝置發來的中斷訊號的一種響應,中斷是由外部裝置引起的,又稱外中斷。
2)陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱為內中斷或陷入(trap)。
3)中斷和陷入的主要區別:是訊號的來源。
3.1.2中斷向量表
 中斷向量表:為每種裝置配以相應的中斷處理程式,並把該程式的入口地址,放在中斷向量表的一個表項中,併為每一個裝置的中斷請求,規定一箇中斷號,它直接對應於中斷向量表的一個表項中。
3.1.3對多中斷源的處理方式
1)遮蔽(禁止)中斷:
 所有中斷都將按順序依次處理。
 當處理機正在處理一箇中斷時,將遮蔽掉所有新到的中斷,讓它們等待,直到處理機已完成本次中斷的處理後,處理機再去檢查並處理。
 優點是簡單,但不能用於對實時性要求較高的中斷請求。
2)巢狀中斷:
 中斷優先順序:系統根據不同中斷訊號源,對服務要求的緊急程度的不同,它們分別規定不同的優先順序。
 當同時有多個不同優先順序的中斷請求時,CPU優先響應最高優先順序的中斷請求;
 高優先順序的中斷請求,可以搶佔正在執行低優先順序中斷的處理機,該方式類似於基於優先順序的搶佔式程序排程。
3.2中斷處理程式
3.2.1主要工作
1)進行程序上下文的切換
2)對處理中斷訊號源進行測試
3)讀取裝置狀態
4)修改程序狀態
3.3.2中斷處理流程
1)測定是否有未響應的中斷訊號
2)保護被中斷程序的CPU環境
3)轉入相應的裝置處理程式
4)中斷處理
5)恢復CPU的現場
4.裝置驅動程式——最瞭解裝置控制器的人
裝置驅動程式是I/O系統的高層與裝置控制器之間的通訊程式,其主要任務:
 接收上層軟體發來的抽象I/O要求,如read、write等命令;
 再把它轉化為具體要求,傳送給裝置控制器,啟動裝置去執行。
 反方向,它也將由裝置控制器發來的訊號,傳送給上層軟體。
4.1驅動程式的功能
1)接收由與裝置無關的軟體發來的命令和引數,並將命令中的抽象要求,轉換為與裝置相關的低層操作序列;
2)檢查使用者I/O請求的合法性,瞭解I/O裝置的工作狀態,傳遞與I/O裝置操作有關的引數,設定裝置的工作方式;
3)發出I/O命令,如果裝置空閒,便立即啟動I/O裝置,完成指定的I/O操作;如果裝置忙碌,則將請求者掛在裝置佇列上等待;
4)及時響應由裝置控制器發來的中斷請求,並根據其中斷型別,呼叫相應的中斷處理程式進行處理。
4.2裝置驅動程式的特點
1)驅動程式是與裝置無關的軟體和裝置控制器之間通訊和轉換的程式。
2)驅動程式,與裝置控制器和I/O裝置的硬體特性,緊密相關。
3)驅動程式與I/O裝置所採用的I/O控制方式緊密相關。
4)由於驅動程式與硬體緊密相關,因而其中的一部分必須用匯編語言編寫。
5)驅動程式應允許可重入,一個正在執行的驅動程式常會在一次呼叫完成前被再次呼叫。
4.3裝置處理方式
4.3.1具體分類
1)為每一類裝置設定一個程序,專門用於執行這類裝置的I/O操作。這種方式比較適合於較大的系統;
2)在整個系統中設定一個I/O程序,專門用於執行系統中所有各類裝置的I/O操作。也可以設定一個輸入程序和一個輸出程序,分別處理系統中的輸入或輸出操作;
3)不設定專門的裝置處理程序,而只為各類裝置設定相應的裝置驅動程式,供使用者或系統程序呼叫。這種方式目前用得較多。
4.4驅動程式處理過程
1)I/O裝置與控制器間的通訊轉換程式
 瞭解抽象命令,瞭解控制器內部的暫存器結構
2)與硬體密切相關,每類裝置配備一種驅動程式
 功能:接受解釋指令(有通道的系統,自動通道程式)、相關判斷、傳送裝置命令、響應中斷
 特點,控制方式不同程式不同,部分固化進硬體,程式碼可重入。
4.5 I/O控制方式
4.5.1程式I/O方式
 cpu對I/O裝置的控制採取程式I/O方式,或稱忙—等待方式
 向控制器傳送一條I/O指令;啟動輸入裝置輸入資料;把狀態暫存器busy=1。
 然後不斷測試標誌。為1:表示輸入機尚未輸完一個字,CPU繼續對該標誌測試;直到為0:資料已輸入控制器資料暫存器中。
 CPU取控制器中的資料送入記憶體單元,完成一個字的I/O 。
高速CPU空閒等待低速I/O裝置,致使CPU極大浪費。
注:也稱作程式查詢方式或輪詢方式。
4.5.2中斷驅動I/O方式
1)步驟:
 CPU向相應的裝置控制器發出一條I/O命令
 然後立即返回繼續執行任務。
 裝置控制器按照命令的要求去控制指定I/O裝置。
 這時CPU與I/O裝置並行操作。
 I/O裝置輸入資料中,無需CPU干預,因而可使CPU與I/O裝置並行工作。從而提高了整個系統的資源利用率及吞吐量。
2)中斷方式比程式I/O方式更有效。
3)但仍以字(節)為單位進行I/O,每當完成一個字(節),控制器便要請求一次中斷。
4)CPU雖然可與I/O並行,但效率不高,存在頻繁的中斷干擾。
5)改進:
 CPU下指令通知控制器完成一塊資料的I/O,控制器完成後才發中斷,而不是每個位元組都要向CPU發中斷;
 多位元組傳輸入記憶體過程不需要CPU搬運,由控制器控制完成(所以稱直接儲存器訪問)——DMA(Direct Memory Access)控制方式引入
4.5.3直接儲存器訪問DMA(位元組—塊)
1)該方式的特點是:
 資料傳輸的基本單位是資料塊;
 所傳送的資料是從裝置直接送入記憶體的,或者直接從記憶體進裝置;不需要CPU操作。
 CPU干預進一步減少:僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊資料的傳送是在控制器的控制下完成的。
DMA方式成百倍的減少了CPU對I/O的干預,進一步提高了CPU與I/O裝置的並行操作程度。
2)DMA控制器由三部分組成:
 主機與DMA控制器的介面;
 DMA控制器與塊裝置的介面;
 I/O控制邏輯。
在這裡插入圖片描述


3)DMA工作過程
 CPU先向磁碟控制器傳送一條讀命令。
 該命令被送到命令暫存器CR中。
 同時傳送資料讀入到記憶體的起始地址,該地址被送入MAR中;
 要讀資料的字數則送入資料計數器DC中;
 將磁碟中的資料原地址直接送入DMA控制器的I/O控制邏輯上,按裝置狀態啟動磁頭到相應位置。
 啟動DMA控制器控制邏輯開始進行資料傳送
DMA控制器讀入一個數據到資料暫存器DR中,然後傳到記憶體MAR地址中;接著MAR+1,DC-1,判斷DC是否為0,如否,繼續,反之控制器發中斷請求,傳送完畢。
4.5.4 I/O通道控制方式(組織傳送的獨立)
1)DMA適用於讀一個連續的資料塊;
 如一次讀多個數據塊到記憶體不同區域,須由CPU分別傳送多條I/O指令、進行多次DMA中斷處理。
2)再進一步減少CPU的干預(減少中斷), 引入通道。
 實現對一組資料塊的讀(寫)及有關的控制和管理為單位的干預。
3)此時,CPU只需發一條I/O指令,給出通道程式的首地址及要訪問裝置即可。

  • CPU、通道和I/O裝置三者的並行操作,提高整系統資源利用率。
    4)通道是一種通過執行通道程式管理I/O操作的控制器,它使主機(CPU和記憶體)與I/O操作之間達到更高的並行程度。由於它的任務是管理實現輸入/輸出操作,提供一種傳送通道,所以將這種部件稱作“通道”。
    5)通道程式:
     通道 通過執行通道程式,與裝置控制器共同實現對I/O裝置的控制。
     通道程式由一系列通道指令構成。
    CPU指令àà裝置驅動程式解讀à通道程式àà通道
     通道指令一般包含下列資訊:
    a)操作碼。規定指令所執行的操作。
    b)記憶體地址。
    c)計數。表示本指令所要操作的位元組數。
    d)通道程式結束位。用以表示程式是否結束。
    e)記錄結束標誌。表示該指令是否與下條指令有關。
    4.5.5 宗旨:減少主機對I/O控制的干預,將CPU從繁雜的I/O控制事物中解脫出來。
    4.5.6 注意資料走向:裝置(磁碟)–控制器緩衝—程序的記憶體