操作系統---設備管理


IO設備

I/O : Input / output

I/O設備就是可以將數據輸入到計算機或者可以接收計算機輸出數據的外部設備, 屬於計算機中的硬件部件

UNIX系統將外部設備抽象為一種特殊的文件, 用戶可以使用與文件操作相同的方式對外部設備進行操作

Write : 向外部設備寫出數據

Read : 向外部設備讀入數據

IO設備的分類

1592651417440

IO控制器

CPU無法直接控制I/O設備的機械部件, 因此I/O設備還要有一個電子部件作為CPU和I/O設備機械部分之間的 "中介", 用於實現CPU對設備的控制

這個機械部件就是 I / O控制器, 又稱設備控制器. CPU可控制I/O控制器, 又由I/O控制器來控制IO設備的機械部件

IO控制器的功能

  1. 接受和識別CPU發出的命令
  2. 向CPU報告設備的狀態
  3. 數據交換
  4. 地址識別

IO控制器的組成

  1. CPU與控制器的接口 : 用於實現CPU與控制器之間的通信, CPU通過控制線發出命令, 通過地址線指明要操作的設備, 通過數據線來取出輸入數據, 或放入輸出數據
  2. IO邏輯 : 負責接收和識別CPU的各種命令, 並負責對設備發出命令
  3. 控制器與設備的接口 : 用於實現控制器與設備之間的通信

1592659795663

IO控制方式

1592660152476

程序直接控制方式

通過 輪詢 實現

1592660341983

優點 : 實現簡單.

缺點 : CPU的干預很頻繁, 在IO操作開始之前, 完成之后都需要CPU的介入, 並且等待IO完成的過程中CPU需要不斷地輪詢檢查, CPU長期處於"忙等" 狀態, CPU利用率低

中斷驅動方式

引入中斷機制, 由於IO設備速度很慢, 因此在CPU發出讀/寫命令后, 可將等待IO的進程阻塞, 先切換到別的進程執行

1592661047204

CPU只需要在每次IO開始之前和完成之后介入, 解決了程序直接控制方式中CPU需要不停輪詢的特點, CPU的利用率得到明顯提升.

缺點 : 每個字在I/O設備與內存之間的傳輸都需要經過CPU, 而頻繁的中斷處理會消耗較多的CPU時間.

DMA方式

與 " 中斷驅動方式 " 相比, DMA方式有這樣幾個改進 :

  1. 數據的傳送單位是 " 塊 "
  2. 數據的流向是從設備直接放入內存, 或者從內存直接到設備, 不需要CPU作為中介
  3. 僅在傳送一個或多個數據塊的開始和結束時才需要CPU的干預

DMA控制器 :

1592662527916

DMA的優缺點 :

1592662664963

通道控制方式

通道 : 一種硬件, 通道可以識別並執行一系列通道指令

1592662921901

總結

1592662962459

IO軟件層次結構

1592665817370

設備驅動程序 : 直接涉及到硬件具體細節且與中斷無關的操作

設備獨立性軟件 : 不涉及硬件且對各種設備都需要進行的管理工作

I/O核心子系統

1592723764934

  • I/O調度 : 比如磁盤調度 ( 先來先服務, SCAN, LOOK...)

  • 設備保護 : UNIX中設備被看作文件, 每個設備也會有對應的FCB ( 文件控制塊 ). 當用戶請求訪問某個設備時, 系統根據FCB中記錄的信息來判斷用戶是否有相應的訪問權限, 以此實現 " 設備保護" 的功能.

假脫機技術 ( SPOOLing )

假脫機技術 ( SPOOLing技術 ) 是用軟件的方式模擬脫機技術.

SPOOLing系統的組成如下 :

1592736126286

獨占式設備 : 只允許各個進程串行使用的設備

共享設備 : 允許多個進程 " 同時 " 使用的設備

打印機是一種 " 獨占式設備 " , 但是可以用SPOOLing技術改造成 " 共享設備 "

e.g. 共享打印機原理分析

1592736560272

設備的分配與回收

從進程運行的安全性上考慮, 設備分配有兩種方式 :

  1. 安全分配方式 : 為進程分配一個設備后就將進程阻塞, 本次I/O完成后才將進程喚醒.
  2. 不安全分配方式 : 進程發出I/O請求后, 系統為其分配I/O設備, 進程可繼續執行, 之后還可以發出新的I/O請求. 只有某個I/O請求得不到滿足時才將進程阻塞.

安全分配方式破壞了死鎖的"請求與保持"條件, 不會死鎖, 但是對於一個進程來說, CPU和I/O設備只能串行工作

不安全分配方式下進程的計算任務和I/O任務可以並行處理, 使進程迅速推進, 但是可能發生死鎖

設備分配管理中的數據結構

設備, 控制器, 通道之間的關系 :

1592737373904

設備控制表 ( DCT ) : 系統為每個設備配置一張DCT, 用於記錄設備情況

1592737575682

控制器控制表 ( COCT ) : 系統根據COCT對控制器進行操作和管理

1592737705727

通道控制表 ( CHCT ) : 系統根據CHCT的信息對通道進行操作和管理

1592737836895

**系統設備表 ( SDT ) ** : 記錄了系統中全部設備的情況, 每個設備對應一個表目

1592737908392

設備分配的步驟

  1. 根據進程請求的物理設備名查找SDT
  2. 根據SDT找到DCT, 若設備忙碌則將進程PCB掛到設備等待隊列中, 不忙碌則將設備分配給進程
  3. 根據DCT找到COCT, 若控制器忙碌則將進程PCB掛到控制器等待隊列中, 不忙碌則將控制器分配給進程
  4. 根據COCT找到CHCT, 若通道忙碌則將PCB掛到通道等待隊列中, 不忙碌則將通道分配給進程

只有設備, 控制器, 通道三者都分配成功時, 這次設備分配才算成功, 之后便可啟動I/O設備進行數據傳送

可改進處 : 第一步中,可以通過LUT ( 邏輯設備表 )實現邏輯設備名到物理設備名的映射, 用戶編程時只需要使用邏輯設備名申請設備而不必記憶物理設備名.

緩沖區管理

緩沖區的概念

緩沖區是一個存儲區域, 可以由專門的硬件寄存器組成, 也可以利用內存作為緩沖區.

使用硬件作為緩沖區的成本較高, 容量較小, 一般僅用在對速度要求非常高的場合. 比如聯想寄存器 ( 快表 ) 就是硬件作為緩沖區

一般情況下, 更多的是利用內存作為緩沖區

緩沖區有什么作用 ?

  1. 緩和CPU與IO設備之間速度不匹配的矛盾
  2. 減少對CPU的中斷頻率, 放寬對CPU中斷相應時間的限制
  3. 解決數據粒度不匹配的問題
  4. 提高CPU與IO設備之間的並行性

1592742788028

單緩沖

1592743016842

假設設備把緩沖區充滿的時間為\(T\) , CPU處理工作區數據的時間為\(C\), 緩沖區向工作區傳送的時間為\(M\), 則采用單緩沖策略每處理一塊數據平均耗時為 :

\[Max(C,T) + M \]

1592743583663

雙緩沖

1592743703204

循環緩沖區

1592744137388

緩沖池

1592744222939


ref : https://www.bilibili.com/video/BV1YE411D7nH?p=68
完結撒花~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM