操作系统19———IO系统之与设备无关的I/O软件用户层的I/O软件
操作系統(tǒng)19———IO系統(tǒng)之與設備無關的I/O軟件&用戶層的I/O軟件
一.目錄
二.與設備無關軟件的基本概念
設備獨立性(設備無關性)的含義:應用程序中所用的設備,不局限于使用某個具體的物理設備。
與設備無關的I/O軟件(設備獨立性軟件)含義:在設備驅(qū)動程序之上設置一層軟件,以實現(xiàn)設備獨立性。
1. 以物理設備名使用設備
早期OS中,應用程序在使用I/O設備時,都使用設備的物理名字,但這樣會導致很多的問題,比如:不靈活,給用戶帶來不便。對提高I/O設備的利用率也很不利。
2.引入了邏輯設備名
為了實現(xiàn)與設備的無關性而引入了邏輯設備和物理設備兩個概念。邏輯設備是抽象的設備名,如/dev/printer,并不指定哪一臺打印機。好處:系統(tǒng)設備分配靈活。
可實現(xiàn)I/O重定向。即:用于IO操作的設備可更換,而不必改變應用程序。
如修改邏輯設備表:終端->打印機
3.邏輯設備名到物理設備名的轉(zhuǎn)換
為了實現(xiàn)邏輯設備名到物理設備名的映射,系統(tǒng)必須設置一張邏輯設備表LUT(Logical Unit Table),能夠?qū)贸绦蛑兴褂玫倪壿嬙O備名映射為物理設備名,并提供該設備驅(qū)動程序的入口地址。
三.與設備無關的軟件
與設備無關的軟件是I/O系統(tǒng)的最高層軟件,在它下面是設備的驅(qū)動程序。總的來說,與設備無關的軟件中,包括了執(zhí)行所有設備的公有操作的軟件,具體包括如下幾項:
四.設備分配
系統(tǒng)為實現(xiàn)對獨占設備的分配,必須在系統(tǒng)中配置相應的數(shù)據(jù)結構。
1.設備分配中的數(shù)據(jù)結構
在用于設備分配的數(shù)據(jù)結構中,記錄了對設備或控制器進行控制所需的信息。在進行設備分配時需要如下的數(shù)據(jù)結構。
a.設備控制表DCT
系統(tǒng)為每一個設備都配置了一張設備控制表,用于記錄設備的情況,如下圖
b.控制器控制表(COCT)
系統(tǒng)為每一個控制器都設置了用于記錄控制器情況的控制器控制表,如圖(a)所示。
c.通道控制表(CHCT)
每個通道都有一張通道控制表,如圖(b)所示。
d.系統(tǒng)設備表(SDT)
這是系統(tǒng)范圍的數(shù)據(jù)結構,記錄了系統(tǒng)中全部設備的情況,每個設備占一個表目,其中包括有設備類型、設備標識符、設備控制表及設備驅(qū)動程序的入口等項,如圖?所示。
2.設備分配時應考慮的因素
a.設備的固有屬性
設備獨占屬性可分為三種。對它們應采取不同的分配策略:
- 獨享設備:將一個設備分配給某進程后,便由該進程獨占,直到該進程完成或釋放該設備。
- 共享設備:對于共享設備,可同時分配給多個進程使用,此時必須注意對于這些進程訪問該設備的先后次序進行合理調(diào)度。
- 虛擬設備:虛擬設備屬于可共享設備,可以將它同時分配給多個進程使用。
b.設備分配算法
-
先來先服務:即按照進程的請求的先后次序來進行分配設備
-
優(yōu)先級高者優(yōu)先:該算法將隊列中的優(yōu)先級較高的放在隊首前
c.設備分配中的安全性 -
安全分配方式:進程發(fā)出I/O請求后就進入阻塞態(tài)
-
不安全分配方式:進程發(fā)出I/O請求仍繼續(xù)運行
3.獨占設備的分配程序
a.基本的設備分配程序
分配設備–>分配控制器–>分配通道
b.設備分配程序的改進
- 增加設備的獨立性: 邏輯設備名請求I/O。系統(tǒng)應查找所有該類設備的DCT。
- 考慮多通路情況:對多個控制器和通道的分配,必須查找所有的控制器和通道。
五.邏輯設備名到物理設備名映射的實現(xiàn)
為實現(xiàn)與設備的無關性,當應用程序請求使用I/O設備時,應當用邏輯設備名。但系統(tǒng)只識別物理設備名,因此在系統(tǒng)中需要配置一張邏輯設備表,用于將邏輯設備名映射為物理設備名。
1.邏輯設備表LUT
在邏輯設備表的每個表目中包含了三項:邏輯設備名、物理設備名和設備驅(qū)動程序的入口地址。如下圖。當進程用邏輯表請求分配I/O設備時,系統(tǒng)根據(jù)當時的具體情況,為它分配一個相應的物理設備。同時,在邏輯設備表中建立一個標目,填上應用程序中使用的邏輯設備名和系統(tǒng)分配的物理設備名,以及該設備驅(qū)動程序入口地址。當以后進程在利用該邏輯設備名請求I/O操作時,系統(tǒng)通過查找LUT,便可以找到該邏輯設備所對應的物理設備和該設備的驅(qū)動程序。
2.邏輯設備表的設置問題
在系統(tǒng)中可采取兩種方式設置邏輯設備表:
第一種方式,是在整個系統(tǒng)中只設置一張LUT。
第二種方式,是為每個用戶設置一張LUT。
六.系統(tǒng)調(diào)用和函數(shù)庫
1. 系統(tǒng)調(diào)用
一方面,為使諸進程能有條不紊地使用I/O設備,且能保護設備的安全性,不允許運行在用戶態(tài)的應用進程去直接調(diào)用運行在核心態(tài)(系統(tǒng)態(tài))的OS過程。但另一方面,應用進程在運行時,又必須取得OS所提供的服務,否則,應用程序幾乎無法運行。為了解決此矛盾,OS在用戶層中引入了一個中介過程——系統(tǒng)調(diào)用,應用程序可以通過它間接調(diào)用OS中的I/O過程,對I/O設備進行操作。
2. 庫函數(shù)
在C語言以及UNIX系統(tǒng)中,系統(tǒng)調(diào)用(如read)與各系統(tǒng)調(diào)用所使用的庫函數(shù)(如read)之間幾乎是一一對應的。而微軟定義了一套過程,稱為Win32 API的應用程序接口(Application Program Interface),程序員利用它們?nèi)〉肙S服務,該接口與實際的系統(tǒng)調(diào)用并不一一對應。用戶程序通過調(diào)用對應的庫函數(shù)使用系統(tǒng)調(diào)用,這些庫函數(shù)與調(diào)用程序連接在一起,被嵌入在運行時裝入內(nèi)存的二進制程序中。
七.假脫機系統(tǒng)
1. 什么是SPOOLing技術(假脫機技術)
- 定義:在聯(lián)機的情況下實現(xiàn)的同時外圍操作
- 特點:是對脫機輸入輸出系統(tǒng)的模擬。因此, 必須建立在具有多道程序功能的操作系統(tǒng)上,而且需要高速外存的支持。
- 方式:將數(shù)據(jù)從輸入設備傳送到磁盤或反之。
- 通過它可以將一臺獨占的物理設備虛擬為多臺邏輯設備,從而允許多個用戶(進程)共享。
2.SPOOLing系統(tǒng)的組成
- 輸入井和輸出井:在磁盤上開辟的兩個大存儲空間
- 輸入緩沖區(qū)和輸出緩沖區(qū):在內(nèi)存中開辟的兩個緩沖區(qū)
- 輸入進程Spi和輸出進程Spo:是內(nèi)存中的兩個進程
- 井管理程序:控制作業(yè)與磁盤井之間信息的交換
3.假脫機打印機系統(tǒng)
SPOOLing系統(tǒng)接收到用戶進程的打印輸出請求后:
- 由輸出進程在輸出井中為之申請一個空閑磁盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;
- 輸出進程再為用戶進程申請一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊列上。
當打印機空閑時,輸出進程將從請求打印隊列的隊首取出一張請求打印表,再從輸出井把數(shù)據(jù)送到內(nèi)存緩沖區(qū),啟動打印機打印輸出。打印完后,輸出進程檢查請求打印隊列……
4.SPOOLing系統(tǒng)的特點
- 提高了I/O的速度,緩和了CPU與低速I/O設備速度不匹配的矛盾
- 利用高速共享設備,將獨占設備改造為共享設備
- 實現(xiàn)了虛擬設備功能:用戶都感到獨占了一臺設備
5.守護進程(deamon)
- 守護進程取代假脫機管理進程。執(zhí)行以下功能:
為用戶申請磁盤緩沖區(qū)的空閑盤塊、寫入打印數(shù)據(jù)、返回該盤塊的首址。 - 守護進程是允許使用打印機的唯一進程。打印進程要將要求打印的文件放在假脫機文件隊列中。并喚醒守護進程。
- 守護進程的任務是按照隊列中每個文件的說明執(zhí)行逐個打印任務,直至全部完成,然后休眠。
- 總之,凡是需要將獨占設備改造為共享設備時,都要為該設備配置守護進程和假脫機文件隊列。
八.參考資料
《操作系統(tǒng)第四版》
總結
以上是生活随笔為你收集整理的操作系统19———IO系统之与设备无关的I/O软件用户层的I/O软件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UE4 粒子矢量场绘制(Maya2016
- 下一篇: 谈谈我的高中阶段学习情况以及大学现状,还