日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统:第五章 磁盘管理 - I/O控制,缓冲区管理

發布時間:2024/2/28 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统:第五章 磁盘管理 - I/O控制,缓冲区管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文已收錄至 Github(MD-Notes),若博客中有圖片打不開,可以來我的 Github 倉庫:https://github.com/HanquanHq/MD-Notes,涵蓋了互聯網大廠面試必問的知識點,講解透徹,長期更新中,歡迎一起學習探討。
面試必會系列專欄:https://blog.csdn.net/sinat_42483341/category_10300357.html
操作系統系列專欄:https://blog.csdn.net/sinat_42483341/category_10519484.html


第五章 磁盤管理 - I/O控制,緩沖區管理

目錄

  • 第五章 磁盤管理 - I/O控制,緩沖區管理
      • I/O 設備
          • 按使用特性分類
          • 按傳輸速率分類
          • 按信息交換的單位分類
      • I/O 控制器
        • 為什么有 I/O 控制器?
        • I/O 控制器在哪里?
          • 主要功能
          • 組成
          • 兩種寄存器編址方式
      • I/O 控制方式
        • 程序解控制方式
        • 中斷驅動方式
        • DMA 方式
          • DMA 控制器
        • 通道控制方式
        • I/O 控制方式總結
      • I/O 軟件層次結構
      • I/O 核心子系統
          • SPOOLing 技術(假脫機技術)
          • 設備的分配與回收
          • 設備分配管理中的數據結構
          • 優化后的設備分配步驟
      • 緩沖區管理
          • 單緩沖策略
          • 雙緩沖策略
          • 循環緩沖區
          • 緩沖池


I/O 設備

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

按使用特性分類

人機交互類外部設備、存儲設備、網絡通信設備

按傳輸速率分類

低速設備、中速設備、高速設備

按信息交換的單位分類

塊設備(傳輸快,可尋址)、字符設備(傳輸慢,不可尋址,常采用中斷驅動方式)

I/O 控制器

為什么有 I/O 控制器?

想要把 printf("hello, world”) 這樣的用戶I/O請求,轉換為對設備的控制命令,并完成設備I/O任務,需要I/O軟件與I/O硬件之間的協調工作。

為達到模塊化、通用性的設計目標,通常將I/O設備(又稱外圍設備、控制設備)中的 機械部件電子部件 分開處理。CPU無法直接控制 I/O設備機械部件,因此 I/O 設備還要有一個 電子部件 作為 CPU 和 I/O 設備機械部件之間的“中介”,用于實現CPU對設備的控制。這個 電子部件 就是 I/O控制器,又稱設備控制器。CPU可控制I/O控制器,又由I/O控制器來控制設備的機械部件。

操作系統與控制器交互,而非與設備交互,外設通過電纜與設備控制器(I/O接口)進行數據、狀態和控制信息的傳送。

I/O 控制器在哪里?

I/O控制器(I/O接口)在 擴展卡 或者 南橋芯片 內,通過I/O總線、北橋芯片連接CPU

I/O硬件建立了外設與主機之間的“通路”:主機 — 北橋 — I/O總線 — 南橋(設備控制器) — 電纜 — 外設

主要功能
  • 接收和識別 CPU 發出的命令(要有控制寄存器)
  • 向 CPU 報告設備的狀態(要有狀態寄存器)
  • 數據交換(要有數據寄存器,暫存輸入 / 輸出的數據)
  • 地址識別(由 I/O 邏輯實現)
組成
  • CPU 與控制器之間的接口(實現控制器與 CPU 之間的通信)
  • I/O 邏輯(負責識別 CPU 發出的命令,并向設備發出命令)
  • 控制器與設備之間的接口(實現控制器與設備之間的通信)
兩種寄存器編址方式
  • 內存映射 I/O
    • 控制器中的寄存器與內存統一編址
    • 可以采用對內存進行操作的指令來對控制器進行操作
  • 寄存器獨立編址
    • 控制器中的寄存器獨立編址
    • 需要設置專門的指令來操作控制器

I/O 控制方式

程序解控制方式

優點:實現簡單。在讀/寫指令之后,加上實現循環檢查的一系列指令即可(因此才稱為“程序直接控制方式”)

? 缺點:CPU和I/O設備只能串行工作,CPU需要一直輪詢檢查,長期處于“忙等”狀態,CPU利用率低。

中斷驅動方式

優點:與“程序直接控制方式”相比,在“中斷驅動方式”中,I/O控制器會通過中斷信號主動報告I/O已完成,CPU不再需要不停地輪詢。CPU和I/O設備可并行工作,CPU利用率得到明顯提升。

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

DMA 方式

DMA 控制器

DR(Data Register,數據寄存器):暫存從設備到內存,或從內存到設備的數據。
MAR(Memory Address Register,內存地址寄存器):在輸入時,MAR表示數據應放到內存中的什么位置;輸出時MAR表示要輸出的數據放在內存中的什么位置。
DC(Data Counter,數據計數器):表示剩余要讀/寫的字節數。
CR(Command Register,命令/狀態寄存器):用于存放CPU發來的I/O命令,或設備的狀態信息。

優點:數據傳輸以“塊”為單位,CPU介入頻率進一步降低。數據的傳輸不再需要先經過CPU再寫入內存,數據傳輸效率進一步增加。CPU和I/O設備的并行性得到提升。

缺點:CPU每發出一條I/O指令,只能讀/寫一個或多個連續的數據塊。如果要讀/寫多個離散存儲的數據塊,或者要將數據分別寫到不同的內存區域時,CPU要分別發出多條I/O指令,進行多次中斷處理才能完成。

通道控制方式

通道:一種 硬件,可以理解為是“弱雞版的CPU”。通道可以識別并執行一系列 通道指令

缺點:實現復雜,需要專門的通道硬件支持

優點:CPU、通道、I/O設備可并行工作,資源利用率很高。

I/O 控制方式總結

I/O 軟件層次結構

  • 用戶通過調用 用戶層軟件 提供的 庫函數 發出的I/O請求

  • 用戶層軟件通過 系統調用 請求 設備獨立性軟件層 的服務

  • 設備獨立性軟件層根據LUT調用設備對應的 驅動程序

  • 驅動程序向 I/O控制器 發出具體命令

  • 等待I/O完成的進程應該被阻塞,因此需要進程切換,而進程切換必然需要 中斷處理

I/O 核心子系統

I/O核心子系統要實現的功能,其實就是上述中間三層要實現的功能,包括:I/O調度、設備保護、假脫機技術(SPOOLing技術)、設備分配與回收、緩沖區管理(即緩沖與高速緩存)

SPOOLing 技術(假脫機技術)

在早期的手工操作計算機中,所謂脫機,即脫離主機的控制,由外圍控制機(磁帶機)進行輸入 / 輸出操作

現在的假脫機技術,是用軟件的方式模擬脫機技術。SPOOLing系統的組成如下:

打印機是種“獨占式設備”,SPOOLing技術可以把一臺物理設備虛擬成邏輯上的多臺設備,可將獨占式設備改造成共享設備。

設備的分配與回收

設備分配時應考慮的因素:設備的固有屬性、設備的分配算法、設備分配中的安全性

設備的固有屬性可分為三種:獨占設備、共享設備、虛擬設備。

  • 獨占設備——一個時段只能分配給一個進程(如打印機)
  • 共享設備——可同時分配給多個進程使用(如磁盤),進程往往宏觀上共享使用設備,微觀上交替使用。
  • 虛擬設備——采用SPOOLing技術將獨占設備改造成虛擬的共享設備,可同時分配給多個進程使用(如采用SPOOLing技術實現的共享打印機)

設備的分配算法:

  • 先來先服務
  • 優先級高者優先
  • 短任務優先

設備分配中的安全性:

  • 安全分配方式:為進程分配一個設備后就將進程阻塞,本次I/O完成后才將進程喚醒。破壞了死鎖發生的“請求和保持”條件,不會導致死鎖。
  • 不安全分配方式:進程發出I/O請求后,系統為其分配I/O設備,進程可繼續執行,之后還可以發出新的I/O請求。直到只有某個I/O請求得不到滿足時,才將進程阻塞。有可能發生死鎖,可以使用銀行家算法避免。
設備分配管理中的數據結構

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

  • 設備類型:如,打印機/掃描儀/鍵盤
  • 設備標識符:即物理設備名,系統中的每個設備的物理設備名唯一
  • 設備狀態:忙碌/空閑/故障…
  • 指向控制器表的指針:每個設備由一個控制器控制,該指針可找到相應控制器的信息
  • 重復執行次數或時間:當重復執行多次I/O操作后仍不成功,才認為此次I/O失敗
  • 設備隊列的隊首指針:指向正在等待該設備的進程隊列(由進程PCB組成隊列)

控制器控制表(COCT):每個設備控制器都會對應一張COCT。操作系統根據COCT的信息對控制器進行操作和管理。

  • 控制器標識符:各個控制器的唯一ID
  • 控制器狀態:忙碌/空閑/故障…
  • 指向通道表的指針:每個控制器由一個通道控制,該指針可找到相應通道的信息
  • 控制器隊列的隊首指針:指向正在等待該控制器的進程隊列(由進程PCB組成隊列)
  • 控制器隊列的隊尾指針:同上

通道控制表(CHCT):每個通道都會對應一張CHCT。操作系統根據CHCT的信息對通道進行操作和管理。

  • 通道標識符:各個通道的唯一ID
  • 通道狀態:忙碌/空閑/故障…
  • 與通道連接的控制器表首址:可通過該指針找到該通道管理的所有控制器相關信息(COCT)
  • 通道隊列的隊首指針:指向正在等待該通道的進程隊列(由進程PCB組成隊列)
  • 通道隊列的隊尾指針:同上

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

優化后的設備分配步驟
  • 根據進程請求的邏輯設備名查找SDT(注:用戶編程時提供的邏輯設備名其實就是“設備類型”,例如打印機)

  • 查找SDT,找到用戶進程指定類型的、并且空閑的設備,將其分配給該進程。操作系統在邏輯設備表(LUT)中新增一個表項。

  • 根據DCT找到COCT,若控制器忙碌則將進程PCB掛到控制器等待隊列中,不忙碌則將控制器分配給進程。

  • 根據COCT找到CHCT,若通道忙碌則將進程PCB掛到通道等待隊列中,不忙碌則將通道分配給進程。

  • 緩沖區管理

    使用 硬件作為緩沖區 的成本較高,容量也較小,一般僅用在對速度要求非常高的場合(如存儲器管理中用的聯想寄存器,即 快表,由于對頁表的訪問頻率極高,因此使用速度很快的聯想寄存器來存放頁表項的副本)

    一般情況下,更多的是利用內存作為緩沖區,“設備獨立性軟件”的緩沖區管理就是要組織管理好這些緩沖區

    單緩沖策略

    當緩沖區數據非空時,不能往緩沖區沖入數據,只能從緩沖區把數據傳出;當緩沖區為空時,可以往緩沖區沖入數據,但必須把緩沖區充滿以后,才能從緩沖區把數據傳出。

    雙緩沖策略

    假設某用戶進程請求某種塊設備讀入若干塊的數據。若采用雙緩沖的策略,操作系統會在主存中為其分配兩個緩沖區(若題目中沒有特別說明,一個緩沖區的大小就是一個塊)

    結論:采用雙緩沖策略,處理一個數據塊的平均耗時為Max (T, C+M)

    兩臺機器之間通信時,可以配置緩沖區用于數據的發送和接受。

    注:管道通信中的“管道”其實就是緩沖區。要實現數據的雙向傳輸,必須設置兩個管道

    循環緩沖區

    將多個大小相等的緩沖區鏈接成一個循環隊列。

    注:以下圖示中,橙色表示已充滿數據的緩沖區,綠色表示空緩沖區。

    緩沖池

    緩沖池由系統中共用的緩沖區組成。這些緩沖區按使用狀況可以分為:空緩沖隊列、裝滿輸入數據的緩沖隊列(輸入隊列)、裝滿輸出數據的緩沖隊列(輸出隊列)。

    另外,根據一個緩沖區在實際運算中扮演的功能不同,又設置了四種工作緩沖區:

    • 用于收容輸入數據的工作緩沖區(hin)

    • 用于提取輸入數據的工作緩沖區(sin)

    • 用于收容輸出數據的工作緩沖區(hout)

    • 用于提取輸出數據的工作緩沖區(sout)

    總結

    以上是生活随笔為你收集整理的操作系统:第五章 磁盘管理 - I/O控制,缓冲区管理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。