操作系統(tǒng)知識點整理

操作系統(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)

管程:

  • 定義:由一組數(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)存擴充

  • 覆蓋:預(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隊列式頁面置換算法才有。

頁式地址變換.png

快表(聯(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ù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容