軟考系統架構師 — 3 操作系統

目錄

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)所示的無循環的前趨圖中,存在著如下前趨關系:

P1P2, P1P3, P1P4, P2P5, P3P5, P4P6, P4P7, P5P8,P6P8,P7P9

P8Pg9

進程資源圖:用于描述進程和資源之間關系,可以幫助我們直觀地分析進程對資源的請求、分配和使用情況,進而判斷系統是否處于死鎖狀態等。

如下圖所示,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個字。

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

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

相關文章

PE,ELF,COFF

本文來自 (1)騰訊元寶 (2)程序員的自我修養 PE&#xff08;Portable Executable&#xff09;是一種文件格式&#xff0c;主要用于Windows操作系統中的可執行文件&#xff08;如.exe、.dll、.sys等&#xff09;。PE格式是Windows操作系統中標準的可執行文件格式&#xff0c;由…

MySQL 在 CentOS 7 上安裝的步驟指南

目錄 1. 卸載不需要的環境 2. 獲取 MySQL YUM 倉庫 3. 安裝 MySQL 4. 啟動 MySQL 服務 5. 獲取臨時 Root 密碼 6. 登錄 MySQL 7. 更改 Root 密碼 8. 設置 MySQL 開機自啟動 9. 配置 MySQL 編碼 10. 重啟 MySQL 配置生效 11. 常見問題解決 1. 卸載不需要的環境 如果…

C++初階——類和對象(三) 構造函數、析構函數

C初階——類和對象&#xff08;三&#xff09; 上期內容&#xff0c;我們圍繞類對象模型的大小計算&#xff0c;成員存儲方式&#xff0c;this指針&#xff0c;以及C實現棧和C語言的比較&#xff0c;進一步認識了C的封裝特性。本期內容&#xff0c;我們開始介紹類的默認成員函…

【NLP】 5. Word Analogy Task(詞類比任務)與 Intrinsic Metric(內在度量)

Word Analogy Task&#xff08;詞類比任務&#xff09; 定義&#xff1a;Word Analogy Task 是用于評估詞向量質量的內在指標&#xff08;Intrinsic Metric&#xff09;。該任務基于這樣的假設&#xff1a;如果詞向量能夠捕捉單詞之間的語義關系&#xff0c;那么這些關系應該能…

矩陣冪(矩陣k次冪)

矩陣冪 #include<stdio.h> //矩陣乘法 void cf(int a[20][20],int b[20][20],int result[20][20],int n){for(int i0;i<n;i){for(int j0;j<n;j){result[i][j]0;for(int k0;k<n;k){result[i][j]a[i][k]*b[k][j];}}} }void print(int a[20][20],int n){for(int…

信火一體作戰模式運用特點分析及對一體化防空反導能力建設的啟示

文章目錄 內容摘要1. 引言2. 信火一體作戰模式在現代戰爭中的新內涵和特征2.1 充當火力和信息要素的作戰單元種類更加豐富2.2 信息利用更加凸顯異構平臺間的數據共享和情報融合2.3 作戰環節上更加強調指揮決策的敏捷性和智能化3. 增強防空反導能力的舉措建議3.1 強化各類作戰單…

樣本是怎么估計總體的

樣本是怎么估計總體的 flyfish 1. 什么是樣本估計總體&#xff1f; 樣本估計總體是指通過樣本數據&#xff08;例如100人的身高&#xff09;推斷總體參數&#xff08;例如全國人口的平均身高&#xff09;。核心方法包括&#xff1a; 點估計&#xff1a;用樣本統計量直接估計…

自己動手打造AI Agent:基于DeepSeek-R1+websearch從零構建自己的Manus深度探索智能體AI-Research

第一章&#xff1a;AI Agent基礎與DeepSeek-R1架構解析&#xff08;1/10&#xff09; 1.1 AI Agent技術演進與核心價值 人工智能代理&#xff08;AI Agent&#xff09;經歷了從規則驅動到數據驅動的范式轉移。早期基于專家系統的符號主義方法&#xff08;如MYCIN醫療診斷系統…

DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)之添加列寬調整功能,示例Table14_13可展開行的固定表頭表格

前言:哈嘍,大家好,今天給大家分享一篇文章!并提供具體代碼幫助大家深入理解,徹底掌握!創作不易,如果能幫助到大家或者給大家一些靈感和啟發,歡迎收藏+關注哦 ?? 目錄 DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)之添加列寬調整功能,示例Table14_13可展開行的固…

Gemini Robotics:將人工智能帶入物理世界

25年3月來自谷歌的技術報告“Gemini Robotics: Bringing AI into the Physical World”。 大型多模態模型的最新進展&#xff0c;已使數字領域出現卓越的通才能力&#xff0c;但將其轉化為機器人等物理智體仍然是一項重大挑戰。一般有用的機器人需要能夠理解周圍的物理世界&am…

關于離子濾波小記

粒子濾波&#xff08;Particle Filter, PF&#xff09; 粒子濾波是一種基于蒙特卡洛方法的貝葉斯濾波算法&#xff0c;主要用于解決非線性、非高斯的狀態估計問題。它廣泛應用于機器人定位、目標跟蹤、金融建模等領域。 1. 粒子濾波的基本概念 粒子濾波的核心思想是用一組加權…

機器語言基礎

機器語言是計算機能夠直接識別和執行的二進制代碼語言&#xff0c;由0和1組成。以下是關于機器語言的基本介紹&#xff1a; 特點 - 執行效率高&#xff1a;是計算機硬件直接支持的語言&#xff0c;無需翻譯&#xff0c;執行速度快&#xff0c;能充分發揮計算機的性能。 - 硬…

生活中的可靠性小案例11:窗戶把手斷裂

窗戶把手又斷了&#xff0c;之前也斷過一次&#xff0c;使用次數并沒有特別多。上方的圖是正常的把手狀態&#xff0c;斷的形狀如下方圖所示。 這種懸臂梁結構&#xff0c;沒有一個良好的圓角過渡&#xff0c;導致應力集中。窗戶的開關&#xff0c;對應的是把手的推拉&#xff…

多元時間序列預測的范式革命:從數據異質性到基準重構

本推文介紹了一篇來自中國科學院計算技術研究所等機構的論文《Exploring Progress in Multivariate Time Series Forecasting: Comprehensive Benchmarking and Heterogeneity Analysis》&#xff0c;發表在《IEEE Transactions on Intelligent Transportation Systems》。論文…

印章/公章識別:PaddleX下的“Seal-Recognition”模型

最近做項目需要對印章進行識別&#xff0c;并提取其中的印章文字&#xff0c;又不希望這個模型太大&#xff0c;還要方便部署&#xff0c;于是乎這個模型是個不錯的選擇。 一、模型簡介 “Seal-Recognition”模型是PaddleX旗下的一款模型&#xff08;PaddleX 是基于飛槳框架構…

An effective algorithm for peptide de novo sequencing from MS/MS spectra

1. 研究背景 數據庫搜索方法 需要已知的蛋白數據庫&#xff0c;但對于未知蛋白質&#xff0c;無法適用。de novo 測序方法 直接從 MS/MS 數據推斷氨基酸序列&#xff0c;非常重要。 2. 現有方法的問題 暴力搜索方法&#xff1a;枚舉所有可能的肽序列并與 MS/MS 數據比對&…

算法專題一:雙指針

1.移動零 題目鏈接&#xff1a;283. 移動零 - 力扣&#xff08;LeetCode&#xff09; 我們可以定義一個dest&#xff0c;一個cur&#xff0c;dest表示數組中不為零的數的最后一位&#xff0c;cur用來遍歷數組 class Solution {public void moveZeroes(int[] nums) {for(int cur…

【大模型實戰】利用ms-swift微調框架對QwQ-32B推理模型進行微調

1. 背景介紹 之前我們在《大模型訓練/微調的一些經驗分享》、《利用DeepSeek-R1數據微調蒸餾ChatGLM32B讓大模型具備思考能力》中做了相關模型微調的介紹。目前在基座大模型能力還沒有達到足夠牛的情況下&#xff0c;大模型微調在商業化、垂直領域應用依然是不可或缺&#xff0…

【Unity3D】Addressables使用流程

Package Manager - 搜索 Addressables 安裝 Window -> Asset Management -> Addressables 打開窗口 New -> 新建Packed Assets 資源組 默認資源組Default xxx (Default) 將資源&#xff0c;如預制體直接拖拽進資源組 Build -> New Build -> Default Buil…

k8s serviceaccount在集群內指定apiserver時驗證錯誤的問題

在主機上&#xff0c;找到TOKEN&#xff0c;可以直接指定apiserver使用 rootubuntu-server:/home# kubectl auth can-i --list --server https://192.168.85.198:6443 --token"eyJhbGciOiJSUzI1NiIsImtpZCI6IlFlMHQ3TzhpcGw1SnRqbkYtOC1NUWlWNUpWdGo5SGRXeTBvZU9ib25iZD…