操作系統 IO管理

學什么?

  • I/O? input / output??
  • 輸入:鼠標 鍵盤 手柄 觸摸屏 攝像頭 MTC? 掃描儀
  • 輸出:顯示器 打印機? 耳機? 音響?
  • 既是輸入也是輸出:光驅? 網卡? 磁盤? U盤
  • 硬件:設備如何把數據返回到PC機,但是不同種類的設備,適合不同的控制方式,引出了I/O控制方式(數據怎么輸入輸出)
  • 軟件:輸入輸出時面對的多種問題,CPU與I/O速度不匹配,基本數據單元大小也不匹配 引出了,緩存技術;緩沖技術(內存);假脫機技術;spooling技術? ;因為使用硬件的進程數量很多,但是硬件設備比較少,如何對設備進行分配和回收?
  • I/O系統層次管理 ->? 代碼實現框架? ??各司其職,低耦合性,便于代碼的修改和軟件的更新、高效移植

IO管理硬件知識

IO管理設備分類(硬件分類)

  • 按照數據的傳輸速度進行分類(使用場合決定的 -> 人類設計)
  • 高速設備? ? ?以MB/GB為單位? ? ?磁帶、磁盤、光盤、U盤、網卡等
  • 中速設備? ? ?以KB為單位? ? ? ? ? ? 打印機(串口設備)
  • 低速設備? ? ?以B為單位? ? ? ? ? ? ? 鍵盤、鼠標、手柄等
  • 注意事項:
  • 和人類接觸的設備為低速設備
  • 中速設備: 機械設備,速度介于電子設備(CPU、內存)和人類之間
  • 高速設備:盡可能快
  • 按照信息交換的單位分
  • 塊設備? ? ? ? ?以數據塊為單位傳輸? ? U盤、硬盤、SD卡、網卡等? ? 高速設備
  • 字符設備? ? ?以字符為單位傳輸? ? ?鍵盤、鼠標、手柄、打印機等? ? 低速/中速設備

IO控制方式

控制方式的發展過程

  • 程序直接控制方式:cpu主動詢問? ? ?費時費力,cpu利用率很低
  • 中斷驅動方式:CPU被動通知,cpu利用率稍微提高,cpu取數據? ? 最為常用
  • DMA方式:CPU被動通知,DMA控制器硬件,dma取數據,cpu利用取回的數據;dma需要知道取幾個數據,以及數據取完之后,不同數據的存放地址,取數據操作結束之后,通知CPU進行下一步操作;減少了cpu被通知的次數,減少cpu中斷的次數;缺點:cpu需要對DMA下達很多的指令,進一步優化
  • 通道方式:cpu的被動通知,減少cpu對dma下達的指令數;cpu利用率進一步提高;使用協處理器對DMA施加命令,整體完成之后才通知cpu
  • 從上往下 CPU的利用率提高,設計復雜度提高,成本也提高

程序直接控制方式

  • cpu周期性運行輸入進程(50ms),當輸入進程檢測到鍵盤輸入的數據之后,利用進程間通信的方式將數據傳輸給需要的進程
  • 該方式效率很低,幾乎不再使用
  • mcu dsp 等還在使用
  • 通常用在低速設備中,高速設備容易丟失數據(鍵盤輸入速度趕不上 cpu處理速度)

中斷類控制方式

中斷驅動方式

  • 新增控制總線 (中斷信號在其中傳輸,提高成本)
  • 中斷處理程序不是 進程
  • 鍵盤輸入程序,引發控制總線的中斷,中斷會觸發中斷處理程序,中斷處理程序會從數據總線獲取數據,將數據傳給其他進程
  • 廣泛使用,使用在低速設備,比如鍵盤、手柄、鼠標等
  • 中斷控制總線? 數量有限,如果沒有了,只能使用程序直接控制的方式

DMA方式

  • DMA 一般用于塊設備、高速設備
  • DMA控制器的四個寄存器
  • 內存地址寄存器MAR? 記錄內存開始的地址? ? ? ? ? ? ? ? ? ? ? ? ?地址
  • 數據計數寄存器DC? ?一次需要從外設讀取的數據字節數? ? ?長度
  • 數據寄存器DR? 接收物理外設輸入的數據,將接收的數據再傳給對應需要的進程,起到緩存的占用
  • 命令狀態寄存器CR? 控制讀,讀完執行的指令
  • 步驟
  • 1,磁盤向CPU發出DMA傳輸請求
  • 2,cpu接收請求,執行DMA配置程序,對四個寄存器的地址進行設置
  • 3,DMA控制器讀取磁盤(設備)數據到數據寄存器DR,一個一個字節的讀
  • 4,DMA控制器根據MAR的數值,尋找內存存放的位置,開始搬運數據
  • 5,DMA控制器開始搬運數量為 數據寄存器DC 存儲的數值大小的值
  • 6,一組數據搬運完成之后,則DMA控制器產生中斷信號給cpu
  • 7,cpu執行中斷程序,利用信號量通知其他程序 數據傳輸完一組
  • 8,如果數據全部傳輸完畢,則傳輸自動結束;如果還有需要傳輸的數據,則重新執行 1-8

  • 優勢
  • 減少了CPU被通知的次數? 具體體現在上述流程的? 4-5
  • 只有所有數據讀完才執行一次中斷處理程序 而不會每來一個數據就會產生一個字段?

通道方式

  • 新增通道協處理器
  • 每傳輸一次數據 會進行一次DMA配置
  • 步驟
  • 1,磁盤(設備)向cpu發出通道傳輸請求
  • 2,cpu接收請求,激活通道協處理器,并告知通道協處理器的位置
  • 3,通道協處理器執行通道程序進行DMA配置
  • 4,DMA控制器 開始讀取數據到?數據寄存器DR
  • 5,DMA控制器根據MAR的數值,尋找內存存放的位置,開始搬運數據
  • 6,DMA控制器開始搬運數量為 數據寄存器DC 存儲的數值大小的值
  • 7,如果還有下一組數據 則繼續執行 3-7
  • 8,如果沒有下一組數據,則說明幾組數據傳輸完成,通道協處理器向cpu發出中斷信號
  • 9,中斷程序通知其他進程,幾組數據全部傳輸完成

?

緩存技術

  • 緩存的原因:通過在高速存儲器里面保存低速存儲器的副本,來提高cpu對數據的訪問速度
  • 例如
  • 快表是頁表的緩存
  • 請求分頁中,cache中的頁面是內存中工作集頁面的緩存
  • 內存中工作集頁面是磁盤中程序頁面的緩存
  • 現在 快速 的里面找,如果沒有才會到慢速的設備里面尋找

為什么引入緩存技術

  • 對低速設備產生的數據進行堆積,放在緩存區中,積少成多,然后cpu對其進行集中性處理
  • 目的和好處
  • 緩和cpu和IO設備速度不匹配的矛盾
  • 解決基本數據單元大小不匹配的問題?
  • 減少IO對cpu中斷頻率(緩沖區大小 如DMA傳輸)
  • 提高cpu與IO設備的并行性

單緩沖區

  • 設置緩沖區和工作區,比如播放器是將緩沖區的內容取到工作區之后,對工作區的數據進行操作,然后緩沖區繼續緩沖數據。就可以實現,播放器一邊播放,一邊緩沖數據。播放和緩存同時進行
  • 軟存區為空的時候,才可以輸入數據,直到充滿為止
  • 緩存區滿的時候,才可以取出,直到為空的時候為止
  • 生產時間 > 消費時間 ->? 處理一塊緩存區數據的平均時間 = 取用時間 + 生產時間
  • 生產時間 <?消費時間 ->? 處理一塊緩存區數據的平均時間 = 取用時間 + 消費時間
  • 處理一塊緩存區數據的平均時間 = 取用時間 + MAX(消費時間 , 生產時間)
  • 處理一塊緩存區數據的平均時間 = MAX(生產時間,消費時間 + 取用時間)

雙緩沖區

  • 相較于先前 單緩沖區,利用了 播放器將數據從緩沖區到工作區這段時間? ?(取時間)
  • 生產時間 > 取用時間 + 消費時間 ->? 取用時間 + 生產時間
  • 生產時間 <?取用時間 + 消費時間(產生斷層,數據中斷) -
  • 結論一致??處理一塊緩存區數據的平均時間 = MAX(生產時間,消費時間 + 取用時間)
  • 生產時間 > 取用時間 + 消費時間 IO設備可以連續輸入數據,cpu會等待
  • 生產時間 <?取用時間 + 消費時間?IO設備不可以連續輸入數據,cpu繁忙

循環緩沖區?

  • 使用循環鏈表 的形式首尾相連,每個緩沖區的大小相等
  • 兩個指針 in 和 out,in負責輸入數據,out負責取出數據
  • 會產生追趕問題,in和out指針
  • 生產 > 輸出,不可以連續輸入,cpu忙,處理數據
  • 生產 < 輸出,可以連續輸入,cpu等待

緩沖池

  • 緩沖池中的緩沖區是公用的
  • 分別設置 輸入隊列、輸出隊列和空閑隊列
  • 收容輸入 取空閑隊列的頭部的容器塊,裝載來自服務器的數據;
  • 提取輸入 將裝載數據的容器塊,送到指定的進程工作區,然后將沒有數據的容器塊重新放到排隊隊列等待裝載數據
  • 收容輸出 取空閑隊列的頭部的容器塊,裝載來自進程工作區產生的數據
  • 提取輸出 將裝載數據的容器塊,送到指定的進程服務器,然后將沒有數據的容器塊重新放到排隊隊列等待裝載數據

SpooLing技術

  • 輸入設備 將數據放到內存中的輸入緩沖區,當緩沖區滿的時候,由spi進程將緩沖區的數據保存到磁盤中的輸入井中的脫機輸入文件里。如果其他進程要使用,則讀取脫機輸入文件即可
  • 其他進程輸出數據的時候,先將其保存到輸入井中的脫機輸出文件里,再由SPO進程依次將輸出文件數據輸出到內存的輸出緩沖區,再輸出到輸出設備里面
  • 例子 共享打印機
  • 優勢:掉電不會丟失

設備的分類

  • 從軟件思維對設備分類
  • 獨占式設備 -> 打印機??
  • 虛擬設備 -> spooling虛擬出來的設備
  • 分時共享設備 -> 磁盤網卡?

設備的數據結構

  • OS 內核
  • 硬件系統
  • 設備 = 機械部分 + 電子部分
  • 查詢過程? SDT -> DCT -> COCT -> CHCT
  • SDT 系統設備表? PC機已有設備
  • DCT 設備控制表? 具體設備,比如鍵盤、鼠標
  • COCT 控制器控制表
  • CHCT 通道控制表

IO層級結構

  • 軟件分層思想
  • 用戶層IO軟件? ? ? ->api接口
  • 設備獨立性軟件? ?->將不同的設備進行封裝,統一接口,如linux將所有的設備都視為文件 Dev目錄下,設備的文件
  • 設備驅動軟件? ? ? ->控制設備的程序 不同的設備 需要不同的操作程序
  • 中斷處理程序? ? ? ->中斷處理 IO控制方式
  • 硬件? ? ? ? ? ? ? ? ? ? ->機械部分 + 電子部分 = 設備

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446608.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446608.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446608.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

英語口語小組PPT--袁隆平

文章中文版 大家好,我是第一組的xxx,現在由我來為大家分享在我眼中的袁隆平.在我看來,他值得外界對他的稱贊,因為他對中國,對世界的貢獻是有目共睹的:他研發的雜交水稻解決了人民的溫飽問題,讓無數人享受到吃飽的幸福&#xff0c;看到了生活的希望.這足以讓他青史留名. 并且他…

c++面向對象高級編程 學習九 pointer-like classes

c的class設計出來有兩種形式&#xff0c;一種像指針&#xff0c;一種像函數 智能指針里包含普通指針&#xff0c;要寫 * 和 -> 的函數 sp->method(); //sp-> 經 T* operator*() const 函數&#xff0c;得到px //由于 箭頭符號&#xff08;->&#xff09;作用下去…

const int *a和int*const a 的區別詳解

補充知識 “const int i”與“int const i”之間的區別對變量來說&#xff0c;const 關鍵字可以限定一個變量的值不允許改變&#xff0c;從而保護被修飾的東西&#xff0c;防止意外修改&#xff0c;在一定程度上可以提高程序的安全性和可靠性。 代碼 const int * int i1 10…

codeforces 133A-C語言解題報告

133A題目網址 題目解析 1.輸入字符串,如果里面包含H,Q,9,就輸出YES,否則輸出NO 代碼 #include<stdio.h> #include<stdlib.h> #include<string.h>int main() {char c[100]{0};int flag0;int i;scanf("%s",c);for(i0;i<strlen(c);i){if(c[i]H…

c++面向對象高級編程 學習十 function-like classes

本節是設計一個class&#xff0c;使它的行為像一個函數。 如果一個東西能接受小括號()操作符&#xff0c;那么這個東西就稱之為函數&#xff0c;或像函數的東西。 下圖為三個函數對()的重載&#xff0c;這三個類均為像函數的類&#xff0c;它們可接受()操作符&#xff0c; 標…

數據結構 棧

代碼 #include <stdio.h> #include <stdlib.h>/************************************************************************/ /*棧應用示例--數制轉換要求&#xff1a;輸入任意的正整數N(十進制)&#xff0c;分別輸出該整數的二進制、八進制、十六進制的結果算法…

英語口語 Week14 Monday

英語文章 Thailand, a country in Southeast Asia with an area of about 514,000 square kilometers, has been increasingly prosperous in its tourism industry in the past few decades. Its capital is Bangkok and its major languages are Thai, Chinese and English.…

c++面向對象高級編程 學習十一 類模板、函數模板、成員模板

namespace經驗談&#xff1a; 團隊中函數或類的名字可能會沖突&#xff0c;因此使用namespace進行區分。 類模板&#xff1a; template<typename T> 函數模板&#xff1a; template<class T>&#xff0c;此處class可改成typename 函數模板在使用的時候&#xff0…

操作系統面試 總結

以下文章來源于程序員cxuan &#xff0c;作者cxuan 原文鏈接什么是操作系統 操作系統是管理硬件和軟件的一種應用程序。操作系統是運行在計算機上最重要的一種軟件&#xff0c;它管理計算機的資源和進程以及所有的硬件和軟件。它為計算機硬件和軟件提供了一種中間層&#xff…

英語口語week 14 Thursday

英語文章 A couple decided to go out to celebrate their wedding anniversary, so they called a babysitter. When the babysitter arrived, the two children had already been asleep. The babysitter soon got bored and went to the kitchen where she blended some wh…

c++面向對象高級編程 學習十二 模板

模板特化&#xff1a; 模板是一種泛化的形式&#xff0c;特化是將參數類型進行指定&#xff0c;寫出特化的版本&#xff0c;當在調用下圖cout<<hash()(1000);的時候&#xff0c;由于特化中有struct hash{ }的版本&#xff0c;因此會直接調用特化部分。 模板偏特化&…

英語口語 week14 Friday

英語文章 Shopping is taking place every second. However, the prices of the same goods may differ from store to store. A name-brand dress may cost several hundred pounds at a boutique, but only half the price in a discount store or a big chain store. Moreo…

c++面向對象高級編程 學習十三 數量不定的模板參數,auto,for

文章目錄數量不定的模板參數autoranged-base for數量不定的模板參數 void print() {} //... 表示參數的數量不定 template<typename T, typename...Types> void print(const T&firstArg, const Types&...args) {cout << firstArg << endl;cout<&…

數據結構 樹

定義 樹是節點的優先集合度&#xff1a;孩子的數量&#xff0c;度為0 就是終端節點&#xff0c;不為零就是根節點有序樹&#xff1a;有順序&#xff0c;不可以替換無序樹&#xff1a;無順序&#xff0c;可以替換深度 和 樹的深度相反&#xff0c;第一層深度為1 樹的深度為 3 二…

英語口語 Week15 TuesDay

英語文章 One day, when Bella was doing sports in the school yard, the squirrel fled out of her sleeve. Threading its way through a considerable number of people, the squirrel disappeared in the distance After a sequence of movements, it hopped onto the ar…

c++面向對象高級編程 學習十四 引用

文章目錄referencereference的常見用途reference 變量有三種形式&#xff1a;值&#xff0c;指針&#xff0c;引用 int x0; //值 int* p&x;//指向整型的指針&#xff0c;地址&#xff0c;指針在之后的程序中可以指向其他變量 int& rx;//引用&#xff0c;此處表示 r代…

google瀏覽器 隱藏功能開啟

網址 chrome://flags/ 1&#xff0c;多線程下載 2&#xff0c;暗黑模式3&#xff0c;標簽縮略圖4&#xff0c;PWA 漸進式web應用 網頁即應用5&#xff0c;閱讀模式&#xff0c;排除廣告&#xff0c;點擊閱讀模式去除干擾chrome://net-internals6&#xff0c;解決有問題的代理IP…

英語口語Week 15 Wednesday

英語文章 Accomplishing the task assigned by the teacher; Julia rushed out. Squatting at the gate and playing with the squirrel, Bella waved at the sight of Julia and yelled out here" . Julia ran quickly towards them, pointed at the squirrel and asked…

c++面向對象高級編程 學習十五 組合繼承關系下的構造和析構

文章目錄繼承關系組合關系繼承和組合繼承關系 構造由內而外&#xff0c;析構由外而內&#xff0c;內即是父類 組合關系 A擁有B&#xff0c; 構造由內而外&#xff0c;析構由外而內&#xff0c;內即是B 繼承和組合 構造和析構順序如圖&#xff1a;

英語口語Week16 Wednesday

英語文章 Recently my friend received a gift from her boyfriend - a very expensive bracelet. But the substance of her response left us in astonishment - she didn’t attend to the exquisiteness(of the gift and wanted to return it to him In terms of salary, …