操作系統(tǒng)
操作系統(tǒng)知識模塊主要分為:操作系統(tǒng)概述、進程管理、內(nèi)存管理、文件管理、輸入/輸出(I/O)管理。
1.操作系統(tǒng)概述
操作系統(tǒng)(Operating System,OS)是指控制和管理整個計算機系統(tǒng)的硬件和軟件資源,并合理地組織調(diào)度計算機的工作和資源分配,以提供給用戶和其他軟件方便的接口和環(huán)境的程序集合。
操作系統(tǒng)的基本特征包括:并發(fā)、共享、虛擬和異步。
并發(fā)是指兩個或多個事件在同一時間間隔內(nèi)發(fā)生。
虛擬是指把一個物理上的實體變?yōu)槿舾蓚€邏輯上的對應(yīng)物。操作系統(tǒng)的虛擬技術(shù)可歸納為:時分復(fù)用技術(shù),如處理器的分時共享;空分復(fù)用技術(shù),如虛擬存儲器。
異步是指在多道程序環(huán)境下,允許多個程序并發(fā)執(zhí)行,但由于自由有限,進程的執(zhí)行不是一貫到底,而是走走停停,以不可知的速度向前推進,這就是進程的異步性。
2.進程管理
進程:
目的:更好地描述和控制程序并發(fā)執(zhí)行;
定義:進程是進程實體的一次運行,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位;
組成:
- PCB:保存進程運行期間相關(guān)的數(shù)據(jù),是進程存在的唯一標志
- 程序段:能被進程調(diào)度程序調(diào)度到CPU運行的程序代碼段
- 數(shù)據(jù)段:存儲程序運行期間的相關(guān)數(shù)據(jù),可以是原始數(shù)據(jù)也可以是相關(guān)結(jié)果
進程狀態(tài):
-
狀態(tài)種類:
- 運行狀態(tài):進程正在處理機上運行
- 就緒狀態(tài):進程已獲得除處理機之外的一切所需資源
- 阻塞狀態(tài):進程正在等待某一事件而暫停運行
- 創(chuàng)建狀態(tài):進程正在被創(chuàng)建,尚未轉(zhuǎn)到就緒狀態(tài)
- 創(chuàng)建完成后轉(zhuǎn)到就緒狀態(tài)
- 結(jié)束狀態(tài):進程正從系統(tǒng)中消失,分為正常結(jié)束和異常退出
-
狀態(tài)變化:
- 就緒->運行:經(jīng)過處理機調(diào)度,就緒進程得到處理機資源
- 運行->就緒:時間片用完或在可剝奪系統(tǒng)中有更高優(yōu)先級進程進入
- 運行->阻塞:進行需要的某一資源還沒準備好
- 阻塞->就緒:進程需要的資源已準備好
進程控制:
- 創(chuàng)建:終端用戶登錄系統(tǒng)、作業(yè)調(diào)度、系統(tǒng)提供服務(wù)、用戶程序的應(yīng)用請求等;
- 終止:正常結(jié)束、發(fā)生異常、外界干預(yù)
- 阻塞:等待資源
- 喚醒:資源到達
- 切換:時間片用完、主動放棄處理機、被更高優(yōu)先級的進程剝奪處理機
進程通信:
- 共享存儲:
- 低級方式:基于數(shù)據(jù)結(jié)構(gòu)的共享
- 高級方式:基于存儲區(qū)的共享
-
消息傳遞:
- 直接通信方式:直接把消息掛到接收進程的消息隊列
- 間接通信方式:掛到某個中間實體,接收進程找實體接收消息,類似電子郵件
- 管道通信:利用一種特殊的pipe文件連接兩個進程
代價:
- 時間代價:進行進程間的切換、同步及通信等所付出的時間開銷
- 空間代價:進程控制塊及協(xié)調(diào)各運行機構(gòu)所占用的內(nèi)存空間開銷
線程:
- 引入目的:為了更好的使多道程序并發(fā)執(zhí)行,以提高資源利用率和系統(tǒng)吞吐量,增加并發(fā)程序
- 特點:是程序執(zhí)行的最小單元,基本不擁有任何系統(tǒng)資源
- 實現(xiàn)方式:用戶級線程、系統(tǒng)線程
調(diào)度:
調(diào)度層次:
- 作業(yè)調(diào)度(高級調(diào)度):選擇處于后備狀態(tài)的作業(yè)分配資源,發(fā)送頻率低
- 內(nèi)存調(diào)度(中級調(diào)度):選擇暫時不能允許的進程調(diào)出內(nèi)存,發(fā)送頻率中等
- 進程調(diào)度(低級調(diào)度):選擇就緒隊列中合適的進程分配處理機,發(fā)生頻率高
進程調(diào)度原因:合理的處理計算機軟硬件資源
進程調(diào)度方式:
- 剝奪式:有更為重要或緊迫的進程需要使用處理機,立即分配
- 非剝奪式:有更為重要或緊迫的進程需要使用處理機,仍讓當前進程繼續(xù)執(zhí)行
典型調(diào)度算法:
- 先來先服務(wù):選擇最先進入隊列的
- 不可剝奪
- 短作業(yè)優(yōu)先:選擇完成時間最短的
- 優(yōu)先級調(diào)度:選擇優(yōu)先級最高的
- 高響應(yīng)比優(yōu)先:選擇響應(yīng)比最高的
- 響應(yīng)比Rp = (等待時間+要求服務(wù)時間) / 要求服務(wù)時間
- 時間片輪轉(zhuǎn):總數(shù)選擇就緒隊列中的第一個進程,但僅能運行一個時間片
- 絕對可搶占
- 多級反饋隊列:時間片輪轉(zhuǎn)調(diào)度算法和優(yōu)先級調(diào)度算法的綜合和發(fā)展
進程同步:
引入原因:協(xié)調(diào)進程之間的相互制約關(guān)系
制約關(guān)系:
- 同步:需要在某些位置上協(xié)調(diào)進程之間的工作次序而等待、傳遞信息所產(chǎn)生的制約關(guān)系
- 互斥:當一個進程進入臨界區(qū)使用臨界資源時,其他要求進入臨界區(qū)的進程必須等待
臨界資源:多個進程可以共享系統(tǒng)中的資源,一次僅允許一個進程使用的資源叫臨界資源;
臨界區(qū)互斥:訪問臨界資源的那段代碼稱為臨界區(qū)
- 原則:空閑讓進、忙則等待、有限等待、讓權(quán)等待
- 基本方法:
- 軟件實現(xiàn):
- 單標志法:違背”空閑讓進“原則
- 雙標志法先檢查:違背”忙則等待“原則
- 雙標志法后檢查:會導(dǎo)致”饑餓“現(xiàn)象
- 皮特森算法:單標志法和雙標志法后檢查的結(jié)合
- 硬件實現(xiàn):
- 中斷屏蔽法:進區(qū)關(guān)中斷,出區(qū)開中斷
- 硬件指令法:設(shè)立原子操作指令
- 信號量:利用PV操作實現(xiàn)互斥
- P操作即wait(S)
- V操作即signal(S)
- 軟件實現(xiàn):
管程:
- 定義:由一組數(shù)據(jù)以及定義在這組數(shù)據(jù)上的對這組數(shù)據(jù)的操作組成的軟件模塊
- 組成:
- 局部于管程的共享結(jié)構(gòu)數(shù)據(jù)(變量)說明
- 對該數(shù)據(jù)結(jié)構(gòu)進行操作的一組過程
- 對局部于管程的共享數(shù)據(jù)設(shè)置初始值的語句,此外還需要為管程賦予一個名字
- 引入管程的目的:解決臨界區(qū)分散所帶來的管理和控制問題。在沒有管程之前,對臨界區(qū)的訪問分散在各個進程之中,不易發(fā)現(xiàn)和糾正分散在用戶程序中的不正地使用P、V操作等問題。管程將這些分散在各進程中的臨界區(qū)集中起來,并加以控制和管理,管程一次只允許一個進程進入管程,從而便于系統(tǒng)管理共享資源,又能保證互斥。
死鎖:
產(chǎn)生原因:非剝奪資源的競爭和進程的不恰當推進順序
定義:多個進程因競爭資源而造成的一種僵局(互相等待),若無外力作用,這些進程都將無法向前推進
解決方案:
-
預(yù)防死鎖:
- 破壞互斥條件:
- 破壞不可剝奪條件:
- 破壞請求和保持條件:
- 破壞循環(huán)等待條件:
-
避免死鎖:
- 安全狀態(tài):能找到一個分配資源的序列能讓所有進程都順利完成
- 銀行家算法:采用預(yù)分配策略檢查分配完成時系統(tǒng)是否處于安全狀態(tài)
-
檢測死鎖:利用死鎖定理化簡資源分配圖以檢測死鎖的存在
-
資源分配圖:
- 圓圈代表進程;
- 框中的一個點代表一類資源中的一個資源;
- 進程到資源的有向邊叫請求邊;
-
資源到進程的邊叫分配邊;
資源分配圖.png
-
資源分配圖:
-
解除死鎖:
- 資源剝奪法:掛起某些死鎖進程并搶奪它的資源,以便讓其他進程繼續(xù)推進
- 撤銷進程法:強制撤銷部分、甚至全部死鎖進程并剝奪這些進程的資源
- 進程回退法:讓進程回退到足以回避死鎖的地步
算法:
- 銀行家算法為死鎖避免算法;
- 死鎖檢查算法和資源分配圖化簡法為死鎖檢測;
- 資源有序分配算法為死鎖預(yù)防策略;
所謂CPU繁忙型的作業(yè),是指該類作業(yè)需要大量的CPU時間進行計算,而很少請求I/O操作。I/O繁忙型的作業(yè)是指CPU處理時,需頻繁的請求I/O操作。
周轉(zhuǎn)時間 = 作業(yè)完成時間 - 作業(yè)提交時間;
平均周轉(zhuǎn)時間 = (作業(yè)1的周轉(zhuǎn)時間 + ... + 作業(yè)n的周轉(zhuǎn)時間)/ n ;
帶權(quán)周轉(zhuǎn)時間 = 作業(yè)周轉(zhuǎn)時間 / 作業(yè)實際運行時間;
平均帶權(quán)周轉(zhuǎn)時間 = (作業(yè)1的帶權(quán)周轉(zhuǎn)時間 + ... + 作業(yè)n的帶權(quán)周轉(zhuǎn)時間)/ n;
響應(yīng)比Rp = (等待時間 + 要求服務(wù)時間) /要求服務(wù)時間;
3.內(nèi)存管理
內(nèi)存管理:
引入目的:更好的支持多道程序并發(fā)執(zhí)行,提升系統(tǒng)性能
程序的編譯:由編譯程序?qū)⒂脩粼创a編譯成若干個目標模塊;
程序的鏈接:由鏈接程序?qū)⒕幾g后形成的一組目標模塊,以及所需庫函數(shù)鏈接在一起,形成一個完整的裝入模塊;
- 靜態(tài)鏈接:在程序運行之前鏈接
- 裝入時動態(tài)鏈接:在裝入內(nèi)存時,采用邊裝入邊鏈接的鏈接方式
- 運行時動態(tài)鏈接:在程序執(zhí)行中需要該目標模塊時,才對它進行鏈接
程序的裝入:由裝入程序?qū)⒀b入模塊裝入內(nèi)存運行;
絕對裝入:適合單道程序環(huán)境
靜態(tài)重定位:適合裝入之后不再移動的情況
動態(tài)重定位:適合裝入之后還會移動的情況
地址空間:
- 邏輯地址空間:是指一個源程序在編譯或者鏈接裝配后指令和數(shù)據(jù)所用的所有相對地址的空間;
- 物理地址空間:內(nèi)存中物理單元的集合;
地址重定位:通過地址轉(zhuǎn)換將邏輯地址轉(zhuǎn)換為物理地址。
內(nèi)存保護:
- 上、下限寄存器:分別與上、下限寄存器比較
- 基址、限長寄存器:與限長寄存器比較,與基址寄存器相加
管理方式:
- 連續(xù)分配:產(chǎn)生內(nèi)部碎片;用戶進程(或作業(yè))在主存中都是連續(xù)存放的
- 單一連續(xù)分配:分配到內(nèi)存固定區(qū)域,只適合單任務(wù)系統(tǒng);
- 固定分區(qū)分配:分配到內(nèi)存中不同的固定區(qū)域,分區(qū)可以相等也可以不等;
- 產(chǎn)生內(nèi)部碎片
- 動態(tài)分區(qū)分配:
- 產(chǎn)生外部碎片
- 基本概念:按照程序的需要進行動態(tài)的劃分
- 分配算法:
- 首次適應(yīng):空閑區(qū)按地址從小到大為序,分配第一個符合條件的分區(qū);
- 最佳適應(yīng):空閑區(qū)按空間大小從小到大排序,分配第一個符合條件的分區(qū);
- 最壞適應(yīng):空閑區(qū)按空間從大到小排序,分配第一個符合條件的分區(qū);
- 鄰近適應(yīng):空閑區(qū)按地址地址遞增的次序排列,分配內(nèi)存時從上次查找結(jié)束的位置開始繼續(xù)查找;
- 非連續(xù)分配:允許一個程序分散地裝入到不相鄰的內(nèi)存分區(qū)中,需要額外的空間去存儲分散區(qū)域的索引
- 基本分頁:內(nèi)存分為固定的塊,按物理結(jié)構(gòu)劃分,會有內(nèi)部碎片;
- 主存、進程都劃分為大小固定的塊,進程在執(zhí)行時,以塊為單位申請主存中的塊空間;
- 進程中的塊為頁,內(nèi)存中的塊為頁框。系統(tǒng)為每個進程建立一張頁表,頁表記錄頁面在內(nèi)存中對應(yīng)的物理塊號,實現(xiàn)從頁號到物理塊號的地址映射;
- 頁式管理中地址空間是一維的;
- 基本分段:內(nèi)存塊的大小不固定,按邏輯結(jié)構(gòu)劃分,會有外部碎片;
- 段式管理方式按照用戶進程中的自然段劃分邏輯空間。段內(nèi)要求連續(xù),段間不要求連續(xù)。段號和段內(nèi)偏移量必須由用戶顯示提供。
- 方便編程、共享、保護、動態(tài)鏈接和增長。
- 段頁式:基本分段和基本分頁的結(jié)合,會有內(nèi)部碎片;
- 作業(yè)的邏輯地址分為:段號、頁號和頁內(nèi)偏移量;采用分段方法來分配和管理用戶地址空間,采用分頁方法來管理物理存儲空間;開銷大。
- 請求分頁存儲管理:采用虛擬技術(shù),開始運行時不必將作業(yè)全部一次性裝入內(nèi)存;
- 多級頁表:將頁表的10頁空間也進行地址映射,建立上一級頁表,用于存儲頁表的映射關(guān)系;
- 基本分頁:內(nèi)存分為固定的塊,按物理結(jié)構(gòu)劃分,會有內(nèi)部碎片;
多道程序下的內(nèi)存擴充:
- 覆蓋:預(yù)先設(shè)定覆蓋段,覆蓋掉暫時不用的內(nèi)容,通常在同一個程序之中進行;
- 交換:把處于等待的程序暫時移到外存,通常在不同程序之間進行;
- 虛擬內(nèi)存:只能基于非連續(xù)分配技術(shù)。
- 引入原因:在邏輯上擴充內(nèi)存
- 時間局部性:程序中存在著大量的循環(huán)操作;
- 空間局部性:程序在一段時間內(nèi)所訪問的地址,可能集中在一定的范圍內(nèi);
- 組成部分:
- 頁表機制:通過查表獲取相關(guān)信息;
- 中斷機制:要訪問頁不在內(nèi)存時產(chǎn)生缺頁中斷
- 地址變換機構(gòu):把邏輯地址變換成物理地址
- 內(nèi)存和外存:需要一定容量的內(nèi)存和外存支持
- 置換算法:
- 最佳置換算法(OPT):選擇以后不用的頁面
- 先進先出(FIFO):選擇最先裝入的頁面
- 最近最久未使用(LRU):選擇最近最近未使用的頁面
- 時鐘置換算法(最近未用算法):選擇最近未用的頁面
- 改進型CLOCK:考慮頁面修改問題
- 地址翻譯:TLB->頁表(TLB不命中)->Cache->主存->外存
頁面分配策略:
- 固定分配局置換:每個進程分配一定數(shù)目的物理塊,在整個運行期間不變,缺頁時只在該進程在內(nèi)存中的頁面中進行置換;
- 可變分配全局置換:為每個進程分配一定數(shù)目的物理塊,操作系統(tǒng)自身也保持一個空閑物理塊隊列;
- 可變分配局部置換:若進程在運行中頻繁地缺頁,系統(tǒng)再為該進程分配若干物理塊;
抖動(顛簸):
- 剛換出的頁面馬上又要換入內(nèi)存;剛換入的頁面馬上就要換出內(nèi)存;
工作集(駐留級):
- 指在某段時間間隔內(nèi),進程要訪問的頁面集合。
虛擬內(nèi)存空間大?。?/p>
- <=內(nèi)存容量和外存容量之和
- <=計算機的地址位數(shù)能容納的最大容量
虛擬存儲的頁表項:
- 頁號
- 物理塊號
- 狀態(tài)位P:用于指示該頁是否已調(diào)入內(nèi)存,供程序訪問參考;
- 訪問字段A:用于記錄本頁在一段時間內(nèi)被訪問的次數(shù),或記錄本頁最近已有多長時間未被訪問,供置換算法換出頁面時參考;
- 修改位M:標識該頁在調(diào)入內(nèi)存后是否被修改過;
- 外存地址
Belady現(xiàn)象:進程的缺頁次數(shù)隨著分配給進程的頁框個數(shù)的增加而增加,只有FIFO隊列式頁面置換算法才有。

快表(聯(lián)想寄存器TLB):用來存放當前訪問的若干頁表項,以加速地址變換的過程,若所需訪問頁號在快表中則可減少一次內(nèi)存訪問。
4.文件管理:
文件控制塊(FCB),類似進程管理的PCB,存放控制文件需要的各種信息的數(shù)據(jù)結(jié)構(gòu)。
- 基本信息:包括文件物理位置
- 存取控制信息
- 使用信息
- 索引結(jié)點
一個文件對應(yīng)一個FCB,而一個文件目錄項就是一個FCB。
打開文件操作是講該文件的FCB存入內(nèi)存的活躍文件目錄表,而不是將文件內(nèi)容負責到主存,找到指定文件目錄是打開文件之前的操作。
文件系統(tǒng)基礎(chǔ):
邏輯結(jié)構(gòu):
- 無結(jié)構(gòu)文件(流式文件):將數(shù)據(jù)按順序組織成記錄并積累保存,(流式文件)則被看成是一個字符流,以字節(jié)(Byte)為單位;
- 有結(jié)構(gòu)文件:
- 順序文件:
- 串結(jié)構(gòu):記錄之間的順序與關(guān)鍵字無關(guān)
- 順序結(jié)構(gòu):記錄之間的順序與關(guān)鍵字有關(guān)
- 索引文件:為變長文件建立索引表,提高查找速度
- 索引順序文件:順序文件和索引文件的結(jié)合,將順序文件中的所有記錄分為若干組,為順序文件建立一張索引表,在索引中為每組的第一個記錄建立一個索引項,其中含有該記錄的關(guān)鍵字值和指向該記錄的指針
- 直接文件(查找文件)Hash File:通過哈希函數(shù)直接決定記錄地址
- 順序文件:
目錄結(jié)構(gòu):
- 單級:全部文件都放在一個目錄下
- 兩級:在目錄下分出用戶目錄
- 多級:將兩級結(jié)構(gòu)加以推廣,采用樹形結(jié)構(gòu)
- 無環(huán)圖:在樹形結(jié)構(gòu)上加入一些有向邊,便于共享
文件共享:
- 基于索引結(jié)點(硬鏈接):共享文件指向同一個索引節(jié)點;鏈接計數(shù)count;
- 基于符號鏈(軟鏈接):有文件擁有者才擁有指向其索引結(jié)點的指針,共享該文件的其他用戶則只有該文件的路徑;
文件保護:
- 口令保護:通過口令訪問文件
- 加密保護:對文件進行加密處理
- 訪問控制:根據(jù)訪問者的身份進行限制
文件系統(tǒng)實現(xiàn):
目錄實現(xiàn):
- 線性列表:
- 無序:查找文件較慢,新建文件較快
- 有序:查找文件較快,新建文件較慢
- 哈希表:查找、新建文件都較快,要處理沖突
文件實現(xiàn):
連續(xù)分配:在磁盤上連續(xù)存放文件
-
鏈接分配:
- 隱式:采用類似鏈表的結(jié)構(gòu)
- 顯示:把隱式文件中的指針單獨抽離出來
索引分配:每個文件所有的盤塊號都集中存放,建立索引表
存儲空間管理:
- 空閑表:把所有空閑塊組織成表
- 空閑鏈表法:把所有空閑塊組織成鏈表
- 位示圖:利用二進制的每位記錄空閑塊
- 成組鏈接:空閑表和空閑鏈表的結(jié)合,適合大的文件系統(tǒng)
磁盤管理:
磁盤地址結(jié)構(gòu):柱面號、盤面號、扇區(qū)號
讀寫時間:
- 尋道時間:將磁頭移動到指定磁道所需要的時間
- 延遲時間:磁頭定位到某一磁道的扇區(qū)所需要的時間
- 傳輸時間:從磁盤讀出或向磁盤寫入數(shù)據(jù)所經(jīng)歷的時間
- 啟動時間(一般忽略):控制器的啟動時間
調(diào)度算法:
- 先來先服務(wù)(FCFS):根據(jù)進程請求訪問磁盤的先后順序進行調(diào)度
- 最短尋找時間優(yōu)先(SSTF):選擇當前磁頭所在的磁道距離最近的磁道
- 掃描(SCAN)算法(電梯算法):在磁頭當前移動方向上選擇與當前磁頭所在磁道距離最近的請求
- 循環(huán)掃描(C-SCAN):在掃描算法的基礎(chǔ)上規(guī)定磁頭單向移動來提供服務(wù)
磁盤管理:
- 初始化:對磁盤進行低級格式化和邏輯化
- 引導(dǎo)塊:存放自舉程序
- 壞塊:對于損壞扇區(qū)的處理
5.I/O管理:
I/O管理概述:狀態(tài)跟蹤、設(shè)備存取、設(shè)備分配、設(shè)備控制
設(shè)備分類:
- 按傳輸速率分:
- 低速:如磁盤、鼠標
- 中速:如行式打印機、激光打印機
- 高速:如磁帶機、磁盤機、光盤機
- 按信息交換單位分:
- 塊設(shè)備:如磁盤
- 字符設(shè)備:如鍵盤、打印機
控制方式:
- 程序直接控制:程序直接對設(shè)備特環(huán)測試
- 中斷驅(qū)動:引入中斷機制,當設(shè)備準備完成時發(fā)生中斷
- DMA:在I/O設(shè)備與主存之間開辟直接數(shù)據(jù)通路,徹底“解放”CPU。
- 基本數(shù)據(jù)單位是塊;
- 傳送的數(shù)據(jù)從設(shè)備直接送入內(nèi)存(或相反)
- 僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時,才需要CPU干預(yù),整塊數(shù)據(jù)的傳送是在DMA控制器的控制下完成的;
- 包含的四類控制器:
- 命令/狀態(tài)寄存器(CR)
- 內(nèi)存地址寄存器(MAR)
- 數(shù)據(jù)寄存器(DR)
- 數(shù)據(jù)計數(shù)器(DC)
- 通道控制:引入專門的I/O處理機進行管理
I/O子系統(tǒng)層次:
- 用戶層I/O軟件:實現(xiàn)與用戶交互的接口
- 設(shè)備獨立性軟件:實現(xiàn)用戶程序與設(shè)備驅(qū)動器的統(tǒng)一接口、設(shè)備命令、設(shè)備保護以及設(shè)備分配與釋放
- 設(shè)備驅(qū)動程序:與硬件直接相關(guān),負責具體實現(xiàn)系統(tǒng)對設(shè)備發(fā)出的操作指令
- 中斷處理程序:用于處理中斷相關(guān)事項
- 硬件設(shè)備:包括一個機械部件(設(shè)備本身)和一個電子郵件(控制器)
I/O核心子系統(tǒng):
I/O調(diào)度:確定一個好的順序來執(zhí)行這些I/O請求
磁盤高速緩存:指利用內(nèi)存中的存儲空間來暫存從磁盤上讀出的一系列盤塊中的信息;邏輯上屬于磁盤,物理上屬于內(nèi)存;
- 1:在內(nèi)存中開辟一個單獨的存儲空間作為磁盤高速緩存,大小固定
- 2:把未利用的內(nèi)存空間作為一個緩沖池,供請求分頁系統(tǒng)和磁盤時I/O共享
緩沖區(qū):位于內(nèi)存區(qū)域
特點:當緩沖區(qū)的數(shù)據(jù)非空的時候,不能往緩沖區(qū)沖入數(shù)據(jù),只能從緩沖區(qū)把數(shù)據(jù)傳出;為空時,可以沖入數(shù)據(jù),但必須充滿遺憾才能再傳出。
-
引入緩沖區(qū)的目的:
- 緩和CPU與I/O設(shè)備間速度不匹配的矛盾
- 減少對CPU的中斷頻率,放寬對CUP中斷響應(yīng)時間的限制
- 解決基本數(shù)據(jù)單元大小不匹配的問題
- 提高CPU和I/O設(shè)備之間的并行性
單緩沖
雙緩沖
循環(huán)緩沖
緩沖池
| 高度緩存 | 緩沖區(qū) | |
|---|---|---|
| 存放數(shù)據(jù) | 存放的是低速設(shè)備上的某些數(shù)據(jù)的復(fù)制數(shù)據(jù) | 存放的是低速設(shè)備傳遞給高速設(shè)備的數(shù)據(jù)(或相反) |
| 目的 | 高速緩存存放的是高速設(shè)備經(jīng)常要訪問的數(shù)據(jù) | 高速設(shè)備和低速設(shè)備的通信都要經(jīng)過緩沖區(qū),高速設(shè)備永遠不會直接去訪問低速設(shè)備 |
| 相同點 | 都是介于高速設(shè)備和低速設(shè)備之間 |
設(shè)備的分配與回收:
-
分類:
- 獨點式使用設(shè)備:設(shè)備被使用時不再允許其他進程使用設(shè)備
- 分時共享式使用設(shè)備:設(shè)備沒有獨占使用的要求時,可以通過分時共享使用
- SPOOLing技術(shù):將獨占設(shè)備改造成共享設(shè)備,實現(xiàn)了虛擬設(shè)備的功能;以空間換時間,必須先有獨占設(shè)備
-
設(shè)備分配的數(shù)據(jù)結(jié)構(gòu):
- 設(shè)備控制表(DCT):每個設(shè)備配置一張DCT,以記錄本設(shè)備的情況;
- 控制器控制表(COCT):每個控制器有一張COCT;
- 通道控制表(CHCT):每個通道配置一張CHCT;
- 系統(tǒng)設(shè)備表(SDT)整個系統(tǒng)只有一張SDT,記錄已連接到系統(tǒng)中的所有物理設(shè)備的情況;
- SDT中有一個DCT指針,DCT中有一個COCT指針,COCT中有一個CHCT指針,CHCT中有一個COCT指針。
-
分配原則:
- 即要求充分發(fā)揮設(shè)備的使用效率,又要避免造成進程死鎖,還要將用戶程序和具體設(shè)備隔離開
-
分配方式:
- 靜態(tài)分配:在用戶作業(yè)開始執(zhí)行前,由系統(tǒng)一次性分配該作業(yè)所要求的全部設(shè)備
- 動態(tài)分配:在進程執(zhí)行過程中根據(jù)執(zhí)行需要進行分配
-
設(shè)備分配的安全性:
- 安全分配方式:每當進程發(fā)出I/O請求后便進入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。
- 不安全分配方式:進程發(fā)出多個I/O請求并繼續(xù)運行,僅當進程所請求的設(shè)備已被另一進程占用時,才進入阻塞狀態(tài)。
設(shè)備獨立性是指應(yīng)用程序獨立于具體使用的物理設(shè)備
SPOOLing技術(shù):主要包括輸入井、輸出井、輸入緩沖區(qū)和輸出緩沖區(qū)以及輸入進程和輸出進程。
- 輸入井和輸出井是在磁盤上開辟的兩大存儲空間;
- 輸入井是模擬脫機輸入時的磁盤設(shè)備,用于暫存I/O設(shè)備輸入的數(shù)據(jù)
- 輸出井是模擬脫機輸出時的磁盤,用于暫存用戶程序的輸出數(shù)據(jù)
