1. 程式人生 > >現代作業系統 第五章 輸入/輸出 習題

現代作業系統 第五章 輸入/輸出 習題

Chapter05

第五章 輸入/輸出 習題


知識點小記


  1. I/O裝置可分為:塊裝置字元裝置
  • 塊裝置:把資訊儲存在固定大小的塊種妹妹個快有自己的地址。基本特徵是每個塊都能獨立於其他塊而讀寫。如硬碟、藍光光碟和USB盤。
  • 字元裝置:以字元為單位傳送或接受一個字元流,而不考慮任何塊結構。字元裝置是不可存值得,也沒有任何尋道操作。如印表機、網路介面、滑鼠???,以及大多屬與磁碟不用的裝置都可看做字元裝置。
  1. I/O裝置一般有機械部件電子部件兩部分組成。
  • 電子部件稱作裝置控制器或介面卡。常以主機板上的晶片的形式出現,或者以插入擴充套件槽中的印刷電路板的形式出現。
  • 機械部件是裝置本身。
  1. 控制器的任務是把序列的位流轉換為位元組塊,並進行必要的錯誤矯正工作。
  2. CPU有兩種方法與裝置的控制暫存器和資料緩衝區進行通訊。
  • 第一種方法I/O埠號
    • 每個控制暫存器被分配一個I/O埠號(8位或16位),所有I/O埠形成I/O埠空間,並且受到保護似的普通的使用者程式不能對其進行訪問,只有作業系統可以訪問。
    • 使用特殊的I/O指令IN REG, PORT,CPU可以讀取控制暫存器PORT的內容並將結果存入到CPU暫存器REG中。類似地,使用OUT PORT, REG ,CPU可以將REG的內容寫入到控制暫存器中。
    • 這種方案中,記憶體地址空間和I/O地址空間是不同的。
  • 第二種方法記憶體對映I/O
    • 將所有的控制暫存器對映到記憶體空間中,每個控制暫存器被分配唯一的一個記憶體地址,並且不會有記憶體被分配這一地址。
    • 優點:
      • ①I/O裝置驅動程式可以完全用C語言編寫
      • ②不需要特殊的保護機制來阻止使用者程式執行I/O操作
      • ③可以引用記憶體的每一條指令,也可以引用控制暫存器
    • 缺點:
    • ①硬體必須能夠針對每個頁面有選擇性的禁用快取記憶體
    • ②所有的記憶體模組和所有I/O裝置都必須檢查所有的記憶體引用,以便了解有誰做出相應。
  1. 直接儲存器存取DMA
  • 第一步:
    • CPU通過設定DMA控制器的暫存器對它進行程式設計,使DMA控制器知道講什麼資料送到什麼地方。
    • DMA控制器還要向磁碟控制器發出一個命令,通知它從磁碟讀資料到其內部的緩衝區,並對校驗和進行檢驗。
  • 第二步:
    • DMA控制器通過在總線上發出一個讀請求到磁碟控制器而發起DMA傳送。
  • 第三步:
    • 磁碟控制器從其內部緩衝區中賭俠一個字,寫到記憶體。
  • 第四步:
    • 寫操作完成時,磁碟控制器在總線上發出一個應答訊號到DMA控制器。
    • DMA控制器步增要使用的記憶體地址,並步減位元組計數。
    • (如果位元組計數仍大於0,則重複第二步到第四步)
  1. 重溫中斷:
    • 當一個I/O裝置完成交給它的工作時 ,它就產生一箇中斷,通過在分配給它的一條匯流排訊號線上置起訊號而產生中斷的。
    • 該訊號被主機板上的中斷控制器晶片檢測到,由終端控制器晶片決定做什麼。
    • 為了處理中斷,終端控制器在地址線上放置一個數字表明哪個裝置需要關注,並置起一箇中斷CPU的訊號。
    • 地址線上的數字被用作指向一個稱為中斷向量表格的索引,以便讀取一個新的程式計數器。這個程式計數器指向相應的中斷服務過程的開始。
    • 中斷服務執行後,它立刻將一個確定的值寫到中斷控制器的某個I/O埠來對中斷作出應答。
  2. 精確中斷的特性:
    • PC保留存在一個已知的地方。
    • PC所指向的指令之前的所有指令已經能完全執行。
    • PC所指向的指令之後的所有指令都沒有執行。
    • PC所指向的指令的執行狀態是已知的。
    • note:對於PC所指向的指令之後的那些指令,此處並沒有禁止他們開始執行,而只是要求在中斷髮生之前必須撤銷它們對暫存器或記憶體所作的任何修改。PCPC所指向的指令有可能已經執行了,也可能還沒執行,但必須清楚是哪種情況。
  3. I/O軟體的目標:裝置獨立性、統一命名、錯誤處理、同步和非同步、緩衝。
  4. I/O可以用三種不同的方式實現:程式控制I/O,中斷驅動I/O,使用DMA的I/O。
    • 程式控制I/O:讓CPU做所有的工作。
      • 首先,資料被複制到核心空間。
      • 然後,作業系統進入一個密閉的迴圈,一次輸出一個字元。
      • 輸出一個字元之後,CPU要不斷地查詢裝置以瞭解它是否就緒準備接受另一個字元。這一行為稱為輪詢或者忙等待。
      copy_from_user(buffer,p,counnt);
      for (i = 0;i < count; i++){
      		while(*printer_status_reg != READY);
      		*print_data_register = p[i];
      }
      return_to_user();
      
    • 中斷驅動I/O:允許CPU在等待印表機變為就緒的同時做某些其他事情。
    • 使用DMA的I/O:有DMA控制器而不是主CPU做全部工作。需要特殊的硬體(DMA控制器),但是使CPU獲得自由從而可以在I/O期間做其他工作。
  5. I/O軟體層次通常分成四個層次:
    4 使用者級I/O軟體
    3 與裝置無關的作業系統軟體
    2 裝置驅動程式
    1 中斷處理程式
    0 硬體
  6. 磁碟臂排程演算法:
  • 先來先服務(FCFS):按照請求接收順序完成請求。
  • 最短尋道優先(SSF):下一次總是處理與磁頭距離最近的請求以使尋道時間最小化。
  • 電梯演算法
  1. 時鐘,由三個部件構成:晶體振盪器,計數器和儲存暫存器。

Q1:晶片技術的進展已經使得將整個控制器包括所有匯流排訪問邏輯放在一個便宜的晶片上成為可能。這對於圖1-6的模型具有什麼影響?
[image:F36AE5A3-4C49-446F-822F-D00EC4BC2107-1062-000009F148DB5AEE/E780AEC2-A208-406D-9CD4-D87D2906B007.png]

A:在此圖中,一個控制器有兩個裝置。單個控制器可以有多個裝置就無需每個裝置都有一個控制器。如果控制器變得幾乎是自由的,那麼只需把控制器做入裝置本身就行了。這種設計同樣也可以並行多個傳輸,因而也獲得較好的效能。