目錄
3.1 考點分析
3.1 操作系統概述
3.1.1 操作系統的功能
3.1.2 操作系統的分類
3.1.3 嵌入式操作系統主要特點
3.2 進程
3.2.1 進程的組成和狀態
3.2.2 前趨圖與進程資源圖(重點)
3.2.3 進程同步與互斥
3.2.4 進程調度
3.2.5 死鎖
3.3 線程
3.4存儲管理
3.4.1 分區存儲管理
3.4.2 分頁存儲管理
3.4.3 分段式存儲管理
3.4.4 段頁式存儲管理
3.5 設備管理
3.5.1 設備管理概述
3.5.2 I/O軟件
3.5.3 設備管理技術
3.6?文件管理
3.6.1文件管理概述
3.6.2 索引文件結構(重點)
3.6.3 文件目錄
3.6.4 文件存儲空間的管理
3.1 考點分析
考試分值:本章節每年都考3-5分左右。
考點內容:
- 進程管理:操作系統概述、進程組成和狀態、前趨圖、進程同步與互斥、進程調度、死鎖、線程。
- 存儲管理:分區存儲管理、分頁存儲管理、分段存儲管理、段頁式存儲管理。
- 設備管理:設備管理概述、I/O 軟件、設備管理技術。
- 文件管理:文件管理概述、索引文件結構、文件目錄、文件存儲空間管理 。
參考資料:王道計算機考研 操作系統_嗶哩嗶哩_bilibili
3.1 操作系統概述
3.1.1 操作系統的功能
進程管理。實質上是對處理機的執行“時間”進行管理,采用多道程序等技術將CPU的時間合理地分配給每個任務,主要包括進程控制、進程同步、進程通信和進程調度。
文件管理。主要包括文件存儲空間管理、目錄管理、文件的讀/寫管理和存取控制。
存儲管理。存儲管理是對主存儲器“空間”進行管理,主要包括存儲分配與回收、存儲保護、地址映射(變換)和主存擴充。
設備管理。實質是對硬件設備的管理,包括對輸入/輸出設備的分配、啟動、完成和回收。
作業管理。包括任務、界面管理、人機交互、圖形界面、語音控制和虛擬現實等。
3.1.2 操作系統的分類
批處理操作系統:單道批處理和多道批處理(主機與外設可并行)。
分時操作系統:一個計算機系統與多個終端設備連接。將CPU的工作時間劃分為許多很短的時間片,輪流為各個終端的用戶服務。
實時操作系統:實時是指計算機對于外來信息能夠以足夠快的速度進行處理,并在被控對象允許的時間范圍內做出快速反應。實時系統對交互能力要求不高,但要求可靠性有保障。
網絡操作系統:是使聯網計算機能方便而有效地共享網絡資源,為網絡用戶提供各種服務的軟件和有關協議的集合。三種模式:集中模式、客戶端/服務器模式、對等模式。
分布式操作系統:分布式計算機系統是由多個分散的計算機經連接而成的計算機系統,系統中的計算機無主、次之分,任意兩臺計算機可以通過通信交換信息。
微型計算機操作系統:簡稱微機操作系統,常用的有Windows、Mac OS、Linux。
3.1.3 嵌入式操作系統主要特點
嵌入式系統(embedded system)是為了完成某個特定功能而設計的系統,或是具有附加機制的系統,或是其他部分的計算機硬件與軟件的結合體。在許多情況下,嵌入式系統都是一個大系統或產品中的一部分,如汽車中的防抱死系統。
微型化。從性能和成本角度考慮,希望占用的資源和系統代碼量少,如內存少、字長短、運行速度有限、能源少(用微小型電池)。
可定制。從減少成本和縮短研發周期考慮,要求嵌入式操作系統能運行在不同的微處理器平臺上,能針對硬件變化進行結構與功能上的配置,以滿足不同應用需要。
實時性。嵌入式操作系統主要應用于過程控制、數據采集、傳輸通信、多媒體信息及關鍵要害領域需要迅速響應的場合,所以對實時性要求較高。
可靠性。系統構件、模塊和體系結構必須達到應有的可靠性,對關鍵要害應用還要提供容錯和防故障措施。
易移植性。為了提高系統的易移植性,通常采用硬件抽象層和板級支撐包的底層設計技術。
嵌入式系統初始化過程按照自底向上、從硬件到軟件的次序依次為:片級初始化→板級初始化→系統初始化。
3.2 進程
3.2.1 進程的組成和狀態
進程是指計算機中正在運行的程序的一個實例,是系統進行資源分配和調度的基本單位。進程由進程控制塊PCB(唯一標志)、程序(描述進程要做什么)、數據(存放進程執行時所需數據)組成。
進程基礎的狀態是下左圖中的五態圖,需要熟練掌握左下圖中的進程五態之間的轉換。
創建:這是進程的起始階段,系統會為新進程分配必要的資源,如內存空間、進程控制塊(PCB)等,并進行一些初始化操作,之后在獲得許可后進入就緒狀態。
就緒:此時進程已經具備運行條件,只等待操作系統的調度來獲取 CPU 資源。一旦被調度選中,就可以進入執行狀態。
執行(運行):進程正在 CPU 上運行,執行程序中的指令。在此期間,如果時間片用完,進程會回到就緒狀態等待下一次調度;若進程發出 I/O 請求,會進入阻塞狀態 ;當進程執行完畢或出現異常結束時,會進入終止狀態。
阻塞:當進程需要等待某個事件發生(如 I/O 操作完成、等待其他資源等)而無法繼續執行時,會進入阻塞狀態。在該狀態下,進程不占用 CPU 資源,直到所等待的事件完成,才會回到就緒狀態。
終止:進程執行結束,或者因為出現錯誤等原因被系統終止,此時系統會回收進程所占用的資源,如內存、打開的文件等。
【真題】在單處理機系統中,采用先來先服務調度算法。系統中有4個進程P1、P2、P3、P4(假設進程按此順序到達),其中P1為運行狀態,P2為就緒狀態,P3和P4為等待狀態,且P3等待打印機,P4等待掃描儀。若P1(A),則P1、P2、P3和P4的狀態應分別為(C)。
A. 時間片到
B. 釋放了掃描儀
C. 釋放了打印機
D. 已完成 A. 等待、就緒、等待和等待
B. .運行、就緒、運行和等待
C. 就緒、運行、等待和等待
D. 就緒、就緒、等待和運行
解析:P1處于運行狀態,那么對應于它的操作就是時間片到,P1進入就緒狀態。而此時,P3和P4都處于等待狀態,都在等待除了CPU之外的其他事物,它們等待的事物并沒有到,所以還是處于等待狀態,或阻塞狀態。P2此時是就緒狀態,獲得了P1釋放的CPU,進入運行狀態。
3.2.2 前趨圖與進程資源圖(重點)
前趨圖:是指一個有向無環圖,它用于描述進程之間執行的先后順序。前趨圖中的每個節點均可用于表示一個進程或一段程序,甚至是一條語句,節點間的有向邊則表示兩個節點之間所存在的偏序或前趨關系。
程序之間的前趨關系可用“→”來表示。如果Pi和Pj間存在著前趨關系,則可將它們寫成(Pi, Pj)∈→,也可寫成Pi→Pj,表示在P開始執行之前P必須執行完成。此時稱Pi是Pj的直接前趨,而稱Pj是Pi的直接后繼。在前趨圖中,把沒有前趨的節點稱為初始節點,把沒有后繼的節點稱為終止節點。此外,每個節點還具有一個權重,用于表示該節點所含有的程序量或程序的執行時間。
在圖 (a)所示的無循環的前趨圖中,存在著如下前趨關系:
P1→P2, P1→P3, P1→P4, P2→P5, P3→P5, P4→P6, P4→P7, P5→P8,P6→P8,P7→P9 P8→Pg9 |
進程資源圖:用于描述進程和資源之間關系,可以幫助我們直觀地分析進程對資源的請求、分配和使用情況,進而判斷系統是否處于死鎖狀態等。
如下圖所示,P代表進程,R代表資源,R方框中有幾個圓球就表示有幾個這種資源,在上圖中,R1指向P1,表示R1有一個資源已經分配給了P1,P1指向R2,表示P1還需要請求一個R2資源才能執行。
阻塞節點:某進程所請求的資源已經全部分配完畢,無法獲取所需資源,該進程被阻塞了無法繼續。如上圖中P2。
非阻塞節點:某進程所請求的資源還有剩余,可以分配給該進程繼續運行。如上圖中P1、P3。
死鎖狀態:當一個進程資源圖中所有進程都是阻塞節點時,即陷入死鎖狀態。
【真題】在如下所示的進程資源圖中,(C);該進程資源圖是(B)
A. P1、P2、P3都是阻塞節點。
B. P1是阻塞節點、P2、P3是非阻塞節點。
C. P1、P2是阻塞節點、P3是非阻塞節點。
D. P1、P2是非阻塞節點、P3是阻塞節點。
A.可以化簡的,其化簡順序為P1→P2→P3
B.可以化簡的,其化簡順序為P3→P1→P2
C.可以化簡的,其化簡順序為P2→P1→P3
D.不可以化簡的,因為P1、P2、P3申請的資源都不能得到滿足
解析:進程資源圖化簡的方法是:先看系統還剩下多少資源沒分配,再看有哪些進程是不阻塞的,接著把不阻塞的進程的所有邊都去掉,形成一個孤立的點,再把系統分配給這個進程的資源回收回來,這樣,系統剩余的空閑資源便多了起來,接著又去看看剩下的進程有哪些是不阻塞的,然后又把它們逐個變成孤立的點。最后,所有的資源和進程都變成孤立的點。圖中P3是不阻塞的,故P3為化簡圖的開始,把P3孤立,再回收分配給他的資源,可以看到P1也變為不阻塞節點了,故P3、P1、P2是可以的。
3.2.3 進程同步與互斥
臨界資源:各進程間需要以互斥方式對其進行訪問的資源。
臨界區:指進程中對臨界資源實施操作的那段程序。本質是一段程序代碼。
互斥:某資源(即臨界資源)在同一時間內只能由一個任務單獨使用,使用時需要加鎖,使用完后解鎖才能被其他任務使用;如打印機。
同步:多個任務可以并發執行,只不過有速度上的差異,在一定情況下停下等待,不存在資源是否單獨或共享的問題;如自行車和汽車。
互斥信號量:對臨界資源采用互斥訪問,使用互斥信號量后其他進程無法訪問,初值為1。
同步信號量:對共享資源的訪問控制,初值一般是共享資源的數量。
P操作:申請資源,S=S-1,若S>=0,則執行P操作的進程繼續執行;若S<0,則置該進程為阻塞狀態(因為無可用資源),并將其插入阻塞隊列。
V操作:釋放資源,S=S+1,若S>0,則執行V操作的進程繼續執行;若S<=0,則從阻塞狀態喚醒一個進程,并將其插入就緒隊列(此時因為缺少資源被P操作阻塞的進程可以繼續執行),然后執行V操作的進程繼續。
經典問題(生產者和消費者的問題):三個信號量:互斥信號量S0(倉庫獨立使用權),同步信號量S1(倉庫空閑個數),同步信號量S2(倉庫商品個數)。
生產者流程:生產一個商品S—>P(S0)—>P(S1)—>將商品放入倉庫中—>V(s2) —>V(s0)。
消費者流程:P(SO)—>P(S2)—>取出一個商品—>V(s1) —>V(s0)。
?【真題】進程P1、P2、P3、P4和P5的前趨圖如下圖所示:
若用PV操作控制進程P1、P2、P3、P4和P5并發執行的過程,則需要設置5個信號S1、S2、S3、S4和S5,且信號量S1~S5的初值都等于零。下圖中a和b處應分別填(C);c和d處應分別填寫(B);e和f處應分別填寫(B)。
A. V(S1)P(S2)和V(S3)
B. P(S1)V(S2)和V(S3)
C. V(S1)V(S2)和V(3)
D. P(S1)P(S2)和V(S3)
A. P(S2)和P(S4)
B. P(S2)和V(S4)
C. V(S2)和P(S4)
D. V(S2)和V(S4)
A. P(S4)和V(S4)V(S5)
B. V(S5)和P(S4)P(s5)
C. V(S3)和V(S4)V(S5)
D. P(S3)和P
解析:這種題型常考,并且也很簡單。五個信號量對應前趨圖上五根連線,如下圖:
?【真題】進程P1、P2、P3、P4、P5和P6的前趨圖如下所示,若用PV操作控制這6個進程的同步與互斥的程序如下,那么程序中的空①和空②處應分別為(C);空③和空④處應分別為(B):空⑤和空⑥處應分別為(D)。
A. V(S1)V(S2)和P(S2)
B. P(S1)P(S2)和V(S2)
C. V(S1)V(S2)和P(s1)
D. P(S1)P(S2)和V(S1)
A. V(S3)和V(S5)V(S6)
B. P(s3)和V(s5)V(S6)
C. V(S3)和P(S5)P(S6)
D. P(S3)和P(S5)P(S6)
A. P(S6)和P(S7)V(S8)
B. V(S6)和V(S7)V(S8)
C. P(S6)和P(S7)P(S8)
D. V(S7)和P(S7)P(S8)
3.2.4 進程調度
進程調度方式是指當有更高優先級的進程到來時如何分配CPU。分為可剝奪和不可剝奪兩種,可剝奪指當有更高優先級進程到來時,強行將正在運行進程的CPU分配給高優先級進程;不可剝奪是指高優先級進程必須等待當前進程自動釋放CPU。
在某些操作系統中,一個作業從提交到完成需要經歷高、中、低三級調度。
(1)高級調度。高級調度又稱“長調度”“作業調度”或“接納調度”,它決定處于輸入池中的哪個后備作業可以調入主系統做好運行的準備,成為一個或一組就緒進程。在系統中一個作業只需經過一次高級調度。
(2)中級調度。中級調度又稱“中程調度”或“對換調度”,它決定處于交換區中的哪個就緒進程可以調入內存,以便直接參與對CPU的競爭。
(3)低級調度。低級調度又稱“短程調度”或“進程調度”,它決定處于內存中的哪個就緒進程可以占用CPU。低級調度是操作系統中最活躍、最重要的調度程序,對系統的影響很大。
調度算法:
- 先來先服務FCFS:先到達的進程優先分配CPU。用于宏觀調度。
- 時間片輪轉:分配給每個進程CPU時間片,輪流使用CPU,每個進程時間片大小相同,很公平,用于微觀調度。
- 優先級調度:每個進程都擁有一個優先級,優先級大的先分配CPU.
- 多級反饋調度:時間片輪轉和優先級調度結合而成,設置多個就緒隊列1,2,3…n,每個隊列分別賦予不同的優先級,分配不同的時間片長度;新進程先進入隊列1的末尾,按FCFS原則,執行隊列1的時間片;若未能執行完進程,則轉入隊列2的末尾,如此重復。
3.2.5 死鎖
當一個進程在等待永遠不可能發生的事件時,就會產生死鎖,若系統中有多個進程處于死鎖狀態,就會造成系統死鎖。
死鎖產生的四個必要條件:資源互斥、每個進程占有資源并等待其他資源、系統不能剝奪進程資源、進程資源圖是一個環路。
死鎖產生后,解決措施是打破四大條件,有下列方法:
- 死鎖預防:采用某種策略限制并發進程對于資源的請求,破壞死鎖產生的四個條件之一,使系統任何時刻都不滿足死鎖的條件。
- 死鎖避免:一般采用銀行家算法來避免,銀行家算法,就是提前計算出一條不會死鎖的資源分配方法,才分配資源,否則不分配資源,相當于借貸,考慮對方還得起才借錢,提前考慮好以后,就可以避免死鎖。
- 死鎖檢測:允許死鎖產生,但系統定時運行一個檢測死鎖的程序,若檢測到系統中發生死鎖,則設法加以解除。
- 死鎖解除:即死鎖發生后的解除方法,如強制剝奪資源,撤銷進程等。
- 死鎖資源計算:系統內有個進程,每個進程都需要R個資源,那么其發生死鎖的最大資源數為n*(R-1)。其不發生死鎖的最小資源數為n*(R-1)+1。
【真題】某系統中有3個并發進程競爭資源R,每個進程都需要5個R,那么至少有(B)個R,才能保證系統不會發生死鎖。
A. 12
B. 13
C. 14
D. 15
解析:每個進程需要5個R才能執行,則當每個進程都只有4個R時是死鎖最壞的情況,即3*4=12個資源是死鎖發生的最大資源數,再加1就能保證不發生死鎖,因此是13。
【真題】假設系統中有個進程共享3臺打印機,任一進程在任一時刻最多只能使用1臺打印機。若用PV操作控制n個進程使用打印機,則相應信號量S的取值范圍為(B);若信號量S的值為-3,則系統中有(D)個進程等待使用打印機。
A. 0,-1,…,-(n-1)
B. 3,2,1,0,-1,,-(n-3)
C. 1,0,-1,,-(n-1)
D. 2,1,0,-1,,-(n-2)
【真題】假設系統中有三類互斥資源R1、R2和R3,可用資源數分別為10、5和3。在T0時刻系統中有P1、P2、P3、P4和P5五個進程,這些進程對資源的最大需求和已分配資源數如下表所示,此時系統剩余的可用資源數分別為(D)。如果進程按(B)序列執行,那么系統狀態是安全的。
A. 1、1和0
B. 1、1和1
C. 2、1和0
D. 2、0和1
A. P1-P2-P4-P5-P3
B. P5-P2-P4-P3-P1
C. P4-P2-P1-P5-P3
D. P5-P1-P4-P2-P3
3.3 線程
傳統的進程有兩個屬性:可擁有資源的獨立單位;可獨立調度和分配的基本單位。
引入線程的原因是進程在創建、撤銷和切換中,系統必須為之付出較大的時空開銷,故在系統中設置的進程數目不宜過多,進程切換的頻率不宜太高,這就限制了并發程度的提高。引入線程后,將傳統進程的兩個基本屬性分開,線程作為調度和分配的基本單位,進程作為獨立分配資源的單位。用戶可以通過創建線程來完成任務,以減少程序并發執行時付出的時空開銷。
線程是進程中的一個實體,是被系統獨立分配和調度的基本單位。線程基本上不擁有資源,只擁有一點運行中必不可少的資源(如程序計數器、一組寄存器和棧),它可與同屬一個進程的其他線程共享進程所擁有的全部資源,例如進程的公共數據、全局變量、代碼、文件等資源,但不能共享線程獨有的資源,如線程的棧指針等標識數據。
3.4存儲管理
3.4.1 分區存儲管理
所謂分區存儲組織,就是整存,將某進程運行所需的內存整體一起分配給它,然后再執行。有三種分區方式:
固定分區:靜態分區方法,將主存分為若干個固定的分區,將要運行的作業裝配進去,由于分區固定,大小和作業需要的大小不同,會產生內部碎片。
可變分區:動態分區方法,主存空間的分區是在作業轉入時劃分,正好劃分為作業需要的大小,這樣就不存在內部碎片,但容易將整片主存空間切割成許多塊,會產生外部碎片。可變分區的算法如下:
- 首次適應法:按內存地址順序從頭查找,找到第一個>=9K空間的空閑塊,即切割9K空間分配給進程。
- 最佳適應法:將內存中所有空閑內存塊按從小到大排序,找到第一個>=9K空間的空閑塊,切割分配,這個將會找到與9K空間大小最相近的空閑塊。
- 最差適應法:和最佳適應法相反,將內存中空閑塊空間最大的,切割9K空間分配給進程,這是為了預防系統中產生過多的細小空閑塊。
- 循環首次適應法:按內存地址順序查找,找到第一個>=9K空間的空閑塊,而后若還需分配,則找下一個,不用每次都從頭查找,這是與首次適應法不同的地方。
可重定位分區:可以解決碎片問題,移動所有已經分配好的區域,使其成為一個連續的區域,這樣其他外部細小的分區碎片可以合并為大的分區,滿足作業要求。只在外部作業請求空間得不到滿足時進行。
3.4.2 分頁存儲管理
分頁存儲管理是將用戶程序的地址空間和內存空間按照固定大小的頁和頁框進行劃分,以實現離散分配和地址轉換的一種存儲管理方式。
(1)頁面:把用戶程序的邏輯地址空間劃分成若干個大小相等的片,稱為 “頁” 或 “頁面”,每頁有一個編號,稱為頁號,從 0 開始依次遞增。例如,一個程序的地址空間為 32KB,頁面大小為 4KB,則該程序的地址空間可劃分為 8 個頁面,頁號為 0 - 7。
(2)內存空間劃分:將內存的物理地址空間也劃分成與頁面大小相同的若干個存儲塊,稱為 “頁框” 或 “物理塊”,同樣從 0 開始編號。假設內存大小為 128KB,頁面大小為 4KB,那么內存就被劃分成 32 個頁框。
(3)頁表:為了實現從邏輯地址到物理地址的轉換,系統為每個進程建立了一張頁表,用于記錄進程的頁面與內存頁框之間的映射關系。在進程地址空間內的所有頁(0~n),依次在頁表中有一頁表項,其中記錄了相應頁在內存中對應的物理塊號,當進程在執行時,通過查找該表即可找到每頁在內存中的物理塊號。
(4)地址轉換:進程執行時,CPU 給出的是邏輯地址,由頁號和頁內偏移量兩部分組成。首先,根據邏輯地址中的頁號查找頁表,找到對應的物理塊號,從而實現了從邏輯地址到物理地址的轉換。
邏輯頁分為頁號和頁內地址,頁內地址就是物理偏移地址,而頁號與物理塊號并非按序對應的,需要查詢頁表,才能得知頁號對應的物理塊號,再用物理塊號加上偏移地址才得出了真正運行時的物理地址。
- 優點:利用率高,碎片小,分配及管理簡單。
- 缺點:增加了系統開銷,可能產生抖動現象。
頁面置換算法:當內存中的頁面數達到系統規定的上限,而又需要加載新的頁面時,就需要使用頁面置換算法來決定將內存中的哪個頁面置換出去,以騰出空間來加載新的頁面。
- 最優算法:OPT,理論上的算法,無法實現,是在進程執行完后進行的最佳效率計算,用來讓其他算法比較差距。原理是選擇未來最長時間內不被訪問的頁面置換,這樣可以保證未來執行的都是馬上要訪問的。
- 先進先出算法:FIFO,先調入內存的頁先被置換淘汰,會產生抖動現象,即分配的頁數越多,缺頁率可能越多(即效率越低)。
- 最近最少使用:LU,在最近的過去,進程執行過程中,過去最少使用的頁面被置換淘汰,根據局部性原理,這種方式效率高,且不會產生抖動現象,使用大量計數器,但是沒有LFU多。
- 淘汰原則:優先淘汰最近未訪問的,而后淘汰最近未被修改的頁面。
快表:在地址轉換過程中,操作系統需要將虛擬地址轉換為物理地址。如果每次都要在頁表中查找,會消耗大量的時間。快表就是用來緩存最近經常訪問的頁表項,當進行地址轉換時,首先在快表中查找,如果找到對應的頁表項,就可以直接獲取物理地址,而無需訪問內存中的頁表,從而大大提高了地址轉換的速度。
是一塊小容量的相聯存儲器,由快速存儲器組成,按內容訪問,速度快,并且可以從硬件上保證按內容并行查找,一般用來存放當前訪問最頻繁的少數活動頁面的頁號。
快表是將頁表存于Cache中;慢表是將頁表存于內存上。慢表需要訪問兩次內存才能取出頁,而快表是訪問一次Cache和一次內存,因此更快。
?【真題】某計算機系統頁面大小為4K,若進程的頁面變換表如下所示,邏輯地址為十六進制1D16H。該地址經過變換后,其物理地址應為十六進制(B)。
A. 1024H
B. 3D16H
C. 4Dl6H
D. 6D16H
解析:頁面大小為4K,則頁內偏移地址為12位,才能表示4K大小空間;由此,可知邏輯地址1D16H的低12位D16H為偏移地址,高4位1為邏輯頁號,在頁表中對應物理塊號3,因此物理地址為3D16H。
【真題】某進程有4個頁面,頁號為0~3,頁面變換表及狀態位、訪問位和修改位的含義如下圖所示,若系統給該進程分配了3個存儲塊,當訪問前頁面1不在內存時,淘汰表中頁號為(D)的頁面代價最小。
A. 0
B. 1
C. 2
D. 3
解析:根據局部性原理,應該優先淘汰最近未被訪問過的,而后淘汰最近未被修改過的,由頁表可知,023最近都被訪問過,而只有3最近未被修改過,應該淘汰3.然而其實這種題目,就算不知道上述原理,也能做出,答案只有一個,肯定是與其他不同的,具有唯一性的一個,在023中,02的訪問位和修改位一樣,只有3不同,答案就是3。
3.4.3 分段式存儲管理
(1)分段:作業的地址空間被劃分為若干段,每個段定義了一組邏輯信息,如主程序段、子程序段、數據段及棧段等。每個段都有自己的名字,通常可用段號代替。段從 0 開始編址,采用連續地址空間,段的長度由相應邏輯信息組的長度決定,各段長度不相等,作業地址空間呈現二維特性,邏輯地址由段號(段名)和段內地址組成。
(2)段表:系統為每個進程建立一張段映射表,即段表。每個段在表中占有一個表項,記錄該段在內存中的起始地址和段的長度。段表可存放在寄存器中以提高地址變換速度,更常見的是存放在內存中,用于實現從邏輯段到物理內存區的映射。
(3)地址變換機構:系統設置段表寄存器,存放段表起始地址和段表長度。進行地址變換時,將邏輯地址中的段號與段表長度比較,若段號大于段表長度則產生越界中斷信號;若未越界,根據段表起始地址和段號計算段表項位置,讀出段在內存中的起始地址,再檢查段內地址是否超過段長,若超過則產生越界中斷信號,若未越界則將段起始地址與段內地址相加得到物理地址。若段表在內存中,可增設聯想存儲器保存常用段表項,以減少存取數據的時間。
分段式存儲管理優缺點如下:
- 優點:空間浪費小、存儲共享容易、存儲保護容易、能動態鏈接。
- 缺點:由于管理軟件的增加,復雜性和開銷也隨之增加,需要的硬件以及占用的內容也有所增加,使得執行速度大大下降。
【真題】設某進程的段表如下所示,邏輯地址( B )可以轉換為對應的物理地址。
A. (0,1597)、(1,30)和(3,1390)
B. (0,128)、(1,30)和(3,1390)
C. (0,1597)、(2,98)和(3,1390)
D. (0,128)、(2,98)和(4,1066)
解析:因為0段的段長只有600,而邏地址(0,1597)中的1597已經越界,不能轉換成邏輯地址,而選項A和選項C中都包含邏輯地址(0,597)所以是錯誤的。又因為4段的段長只有960,而邏輯地址(4,1066)中的1066已經越界,也不能轉換成邏輯地址,而選項D中包含邏輯地址(4,1066)所以是錯誤的。
3.4.4 段頁式存儲管理
(1)分段分頁:先將用戶程序的地址空間分成若干個邏輯段,再把每個段分成若干個大小固定的頁。這樣,作業的地址空間就呈現出三維特性,即段號、頁號和頁內地址。
(2)段表與頁表:系統為每個進程建立一張段表,段表中的每個表項記錄了該段的頁表起始地址和段的長度等信息。段表用于實現從邏輯段到頁表的映射,通過段表可以找到對應段的頁表位置。每個段都有自己的頁表,頁表記錄了該段中各個頁在內存中的物理塊號。頁表用于實現從頁號到物理塊號的映射,通過頁表可以確定每個頁在內存中的具體存儲位置。
(3)地址變換機構:在進行地址變換時,首先根據段表寄存器中的段表起始地址和邏輯地址中的段號,找到該段對應的段表項,從中取出頁表起始地址。然后,根據頁表起始地址和邏輯地址中的頁號,查找頁表,得到該頁對應的物理塊號。最后,將物理塊號與邏輯地址中的頁內地址相結合,就得到了要訪問的內存物理地址。
3.5 設備管理
3.5.1 設備管理概述
設備是計算機系統與外界交互的工具,具體負責計算機與外部的輸入/輸出工作所以常稱為外部設備(簡稱外設)。在計算機系統中,將負責管理設備和輸入/輸出的機構稱為/O系統。因此,/O系統由設備、控制器、通道(具有通道的計算機系統)、總線和/O軟件組成。設備的分類如下:
- 按數據組織分類:塊設備、字符設備。
- 按照設備功能分類:輸入設備、輸出設備、存儲設備、網絡聯網設備、供電設備。
- 資源分配角度分類:獨占設備、共享設備和虛擬設備。
- 數據傳輸速率分類:低速設備、中速設備、高速設備。
設備管理的任務是保證在多道程序環境下,當多個進程競爭使用設備時,按一定的策略分配和管理各種設備,控制設備的各種操作,完成/O設備與主存之間的數據交換。
設備管理的主要功能是動態地掌握并記錄設備的狀態、設備分配和釋放、緩沖區管理、實現物理/O設備的操作、提供設備使用的用戶接口及設備的訪問和控制。
3.5.2 I/O軟件
I/O設備管理軟件的所有層次及每一層功能如下圖:
實當用戶程序試圖讀一個硬盤文件時,需要通過操作系統實現這一操作。與設備無關軟件檢查高速緩存中有無要讀的數據塊,若沒有,則調用設備驅動程序,向I/O硬件發出一個請求。然后,用戶進程阻塞并等待磁盤操作的完成。當磁盤操作完成時,硬件產生一個中斷,轉入中斷處理程序。中斷處理程序檢查中斷的原因,認識到這時磁盤讀取操作已經完成,于是喚醒用戶進程取回從磁盤讀取的信息,從而結束此次I/O請求。用戶進程在得到了所需的硬盤文件內容之,后繼續運行。
3.5.3 設備管理技術
一臺獨占設備,在同一時間只能由一個進程使用,其他進程只能等待,且不知道什么時候打印機空閑,此時,極大的浪費了外設的工作效率。
引入SPOOLING(外圍設備聯機操作)技術,就是在外設上建立兩個數據緩沖區,分別稱為輸入井和輸出井,這樣,無論多少進程,都可以共用這一臺打印機,只需要將打印命令發出,數據就會排隊存儲在緩沖區中,打印機會自動按順序打印,實現了物理外設的共享,使得每個進程都感覺在使用一個打印機,這就是物理設備的虛擬化。如下圖所示:
【真題】以下關于I/O軟件的敘述中,正確的是(C)
A. I/O軟件開放了I/O操作實現的細節,方便用戶使用I/O設備
B. I/O軟件隱藏了I/O操作實現的細節,向用戶提供物理接口
C. I/O軟件隱藏了I/O操作實現的細節,方便用戶使用I/O設備
D. I/O軟件開放了I/O操作實現的細節,用戶可以使用邏輯地址訪問I/O設備
3.6?文件管理
3.6.1文件管理概述
文件:是具有符號名的、在邏輯上具有完整意義的一組相關信息項的集合。
信息項:是構成文件內容的基本單位,可以是一個字符,也可以是一個記錄,記錄可以等長,也可以不等長。一個文件包括文件體和文件說明。文件體是文件真實的內容。
文件說明:是操作系統為了管理文件所用到的信息,包括文件名、文件內部標識、文件的類型、文件存儲地址、文件的長度、訪問權限、建立時間和訪問時間等。
文件管理系統:操作系統中實現文件統一管理的一組軟件和相關數據的集合,專門負責管理和存取文件信息的軟件機構,簡稱文件系統。文件系統的功能包括按名存取;統一的用戶接口;并發訪問和控制;安全性控制;優化性能;差錯恢復。
文件的類型:
1) 按文件性質和用途可將文件分為系統文件、庫文件和用戶文件。
2) 按信息保存期限分類可將文件分為臨時文件、檔案文件和永久文件。
3) 按文件的保護方式分類可將文件分為只讀文件、讀/寫文件、可執行文件和不保護文件。
4) UNIX系統將文件分為普通文件、目錄文件和設備文件(特殊文件)。
文件的邏輯結構:可分為有結構的記錄式文件和無結構的流式文件。
文件的物理結構:指文件在物理存儲設備上的存放方法,包括:
1)連續結構。連續結構也稱順序結構,它將邏輯上連續的文件信息(如記錄)依次存放在連續編號的物理塊上。
2)鏈接結構。鏈接結構也稱串聯結構,它是將邏輯上連續的文件信息(如記錄)存放在不連續的物理塊上,每個物理塊設有一個指針指向下一個物理塊。
3)索引結構。將邏輯上連續的文件信息(如記錄)存放在不連續的物理塊中,系統為每個文件建立一張索引表。索引表記錄了文件信息所在的邏輯塊號對應的物理塊號,并將索引表的起始地址放在與文件對應的文件目錄項中。
4)多個物理塊的索引表。索引表是在文件創建時由系統自動建立的,并與文件一起存放在同一文件卷上。根據一個文件大小的不同,其索引表占用物理塊的個數不等,一般占一個或幾個物理塊。
3.6.2 索引文件結構(重點)
如圖所示,系統中有13個索引節點,0-9為直接索引,即每個索引節點存放的是內容,假設每個物理盤大小為4KB,共可存4KB*10=40KB數據;
10號索引節點為一級間接索引節點,大小為4KB,存放的并非直接數據,而是鏈接到直接物理盤塊的地址,假設每個地址占4B,則共有1024個地址,對應1024個物理盤,可存1024*4KB=4096KB數據。
二級索引節點類似,直接盤存放一級地址,一級地址再存放物理盤快地址,而后鏈接到存放數據的物理盤塊,容量又擴大了一個數量級,為1024*1024*4KB數據。
【真題】設文件索引節點中有8個地址項,每個地址項大小為4字節,其中5個地址項為直接地址索引,2個地址項是一級間接地址索引,1個地址項是二級間接地址索引,磁盤索引塊和磁盤數據塊大小均為1KB,若要訪問文件的邏輯塊號分別為5和518,則系統應分別采用(C),而且可表示的單個文件最大長度是(D)KB。
A. 直接地址索引和一級間接地址索引
B. 直接地址索引和二級間接地址索引
C. 一級間接地址索引和二級間接地址索引
D. 一級間接地址索引和一級間接地址索引
A. 517
B. 1029
C. 16513
D. 66053
解析:依題意,有5個地址項為直接地址索引,所以直接地址索引涉及到的邏輯塊為:0-4。2個地址項為一級間接索引,每個一級間接索引結點對應的邏輯塊個數為:1KB/4B=256個。所以一級間接索引涉及到的邏輯塊號為:5-516。二級間接索引所對應的邏輯塊號即為:517以上。可表示的單個文件長度,首先計算直接地址索引,就是5個數據塊,為5KB,而后一級間接地址索引,可表示256個數據塊,即256KB,二級間接地址索引可存儲1KB/4B=256個一級間接地址索引,每個一級間接地址索引又可存儲256KB,因此是256*256KB,全部加起來共5+256*2+256*256=66053。
3.6.3 文件目錄
文件控制塊中包含以下三類信息:基本信息類、存取控制信息類和使用信息類。
- 基本信息類。例如文件名、文件的物理地址、文件長度和文件塊數等。
- 存取控制信息類。文件的存取權限,像UNIX用戶分成文件主、同組用戶和一般用戶三類,這三類用戶的讀/寫執行RWX權限。
- 使用信息類。文件建立日期、最后一次修改日期、最后一次訪問的日期、當前使用的信息(如打開文件的進程數、在文件上的等待隊列)等。
文件控制塊的有序集合稱為文件目錄。
全文件名=絕對路徑+文件名。要注意,絕對路徑和相對路徑是不加最后的文件名的,只是單純的路徑序列。
- 相對路徑:是從當前路徑開始的路徑。
- 絕對路徑:是從根目錄開始的路徑
?
【真題】若某文件系統的目錄結構如下圖所示,假設用戶要訪問文件Fault.swf,且當前工作目錄為swshare,則該文件的全文件名為(D),相對路徑和絕對路徑分別為(B)。
A. fault.swf
B. flash\fault.swf
C. swshare\flash\fault.swf
D. \swshare\flash\fault.swf
A. swshare\flash\和\flash\
B. flash\swshare\和flash\
C. \swshare\flash\和flash\
D. \flash\和\swshare\flash\
3.6.4 文件存儲空間的管理
文件的存取方法是指讀/寫文件存儲器上的一個物理塊的方法。通常有順序存取和隨機存取兩種方法。順序存取方法是指對文件中的信息按順序依次進行讀/寫;隨機存取方法是指對文件中的信息可以按任意的次序隨機地讀/寫。
1)空閑區表。將外存空間上的一個連續的未分配區域稱為“空閑區”。操作系統為磁盤外存上的所有空閑區建立一張空閑表,每個表項對應一個空閑區,適用于連續文件結構。
2)位示圖。這種方法是在外存上建立一張位示圖(Bitmap),記錄文件存儲器的使用情況。每一位對應文件存儲器上的一個物理塊,取值0和1分別表示空閑和占用。
3)空閑塊鏈。每個空閑物理塊中有指向下一個空閑物理塊的指針,所有空閑物理塊構成一個鏈表,鏈表的頭指針放在文件存儲器的特定位置上(如管理塊中),不需要磁盤分配表,節省空間。
4)成組鏈接法。例如,在實現時系統將空閑塊分成若干組,每100個空閑塊為一組,每組的第一個空閑塊登記了下一組空閑塊的物理盤塊號和空閑塊總數。假如某個組的第一個空閑塊號等于0,意味著該組是最后一組,無下一組空閑塊。
【真題】某文件管理系統采用位示圖(bitmap)記錄磁盤的使用情況。如果系統的字長為32位,磁盤物理塊的大小為4MB,物理塊依次編號為:0、1、2、…,位示圖字依次編號為:0、1、2、…,那么16385號物理塊的使用情況在位示圖中的第()個字中描述:如果磁盤的容量為1000GB,那么位示圖需要()個字來表示。
A. -128
B. 256
C. 512
D. 1024
A. 1200
B. 3200
C. 6400
D. 8000
解析:在位示圖中,一個物理塊占1個字中的1位,第16385占到16386位(從0編號)
16386/32=512余數2,可知,其在513個字中描述,但因為從0開始編號,是第512個字;磁盤容量1000GB,共1000GB/4MB=250*1024個物理塊,需要250Kb表示,即250*1024bit/32bit=8000個字。