並發進程的最少資源類
某系統有4個並發進程,需要同類資源2個,系統中這類資源最少是多少個時,系統不會發生死鎖
答案:5個,4*(2-1)+ 1=5,(資源數-1)*進程數 + 1
銀行家算法
已分配的總數 7 6 5,總資源數 9 8 5,相減得到可用資源數 2 2 0,然后各組最大需求量減去已分配資源數得到各組需要的資源數量
P1 5 3 1 P2 0 1 0 P3 6 0 1 P4 0 0 1 P5 2 3 1
可以滿足P2接下來的運行
P2結束后釋放資源還剩 4 3 1,P4或者P5可以接着運行,只能選C選項
可變分區分配,首次適應算法,最佳適應算法,最壞適應算法,循環首次適應算法
- 首次適應算法,找到第一個能滿足分配大小的空閑區為止
- 最佳適應算法,空閑區按大小順序排序后,找到第一個滿足要求的空閑區
- 最壞適應算法,作業放置到主存中與它所需大小差距最大的空閑區中
虛擬存儲管理系統的基礎是程序的 局部性 理論,根據這個理論,Denning提出了 工作集 理論
程序運行過程中,局部集(駐留集)大小是動態變化的
頁表級數
某計算機有32位虛地址空間,且頁大小為1024字節,每個頁表項長4個字節,每個頁表都包含在一頁中,所以使用多級頁表,需要幾級頁表?每一級都有多少頁表項?
32位地址空間,需要划分頁號和頁內偏移,頁內偏移占10位,頁號占有12位,一頁2^10,可以容納 1024/4=256個,即8位,地址空間剩下22位,用3級頁表,前兩個頁表256個,最后這個頁表64個
什么叫進程?為什么要引入進程?
進程:正在運行的程序的實例
引入進程的原因:為了使程序在多道程序環境下能並發執行,並對並發執行的程序加以控制和描述,引入進程的概念
為什么引入線程
減少並發程度的開銷,提高並發程度
分頁式與分段式內存管理有什么區別?他們如何實現共享和保護?
- 頁是信息的物理單位,段是信息的邏輯單位
- 頁的尺寸是系統決定,段的尺寸因段而異
- 頁式地址空間是一維的,段式的地址空間是二維的
- 分頁式和分段式內容管理實現共享和保護方法分別是,代碼可重入,在有關作業的段表中增加一個表項,其基址指向共享段在內存中的起始地址
現代操作系統掛起狀態是何意義?引入的目的是什么?
掛起進程在操作系統,可以定義為暫時被淘汰出內存的進程,機器的資源是有限的,在資源不足的情況下,操作系統對在內存中的程序進行合理的安排,其中有的進程暫時調離出內存,當條件允許的時候,會被操作系統再次調回內存,重新進入等待被執行的狀態,即就緒態,系統在超過一定的時間沒有任何動作
引入掛起的目的
- 提高處理器的效率,就緒進程表為空,有空閑內存空間用於交易,可提高處理器效率
- 可為運行進程提供足夠內存,資源緊張時,把某些進程對換至外存
- 有利於調試,調試時,掛起被調試進程,方便對地址空間進行讀寫
銀行家算法
死鎖避免的一種算法,在每次實施資源分配之前,先進行試探分配,並對這種試探分配進行安全性計算,查找這種試探分配中是否存在某種順序,按此順序進行資源分配和回收使全部進程都能夠正常運行結束,若存在這種順序,正式實施這次資源分配,否則拒絕此次資源分配
等長時間片輪轉處理機,調度算法的分時操作系統,各終端用戶所占有時間片必定是相同的,這種說法對嗎?
處理機是分配給進程的,不同終端用戶可能有不同數量的進程,一個擁有較多數量進程的終端顯然比擁有較少數量進程的終端獲得CPU的時間要多
支持虛擬存儲器的技術是 請求分頁技術
在UNIX操作系統中,為塊設備提供了兩種讀方式,分別是一般讀和提前讀
在頁式虛存管理中,每個作業有一個頁表
虛擬存儲器對用戶是透明的,對程序員是不透明的
解除死鎖的方法,撤銷進程,剝奪資源
作業控制說明書是由作業控制語言編寫的
創建一個進程,建立一個PCB,為進程分配內存資源,將PCB插入進程就緒隊列
平均周轉時間最小的作業調度算法是短作業優先算法
段邏輯地址13位,段內地址23位,內存1M,輔存100G,虛擬存儲器最大實際容量可能是
min(計算機地址空間,內存+輔存) = min(2^36,100G+1M),即64GB
邏輯地址轉物理地址
頁號與物理塊號對應關系:0->2,1->3,2->1,3->6
頁面大小1024,邏輯地址2148對應的物理地址?2148/1024=2,2148%1024=100,所以1*1024+100=1124
邏輯地址4000對應的物理地址,4000/1024=3,4000%1024=928,所以6*1024+928=7072
什么叫文件目錄
用來標識文件和記錄文件情況的信息集合稱為文件目錄,文件目錄中的每個目錄項與一個文件對應,有如下內容
- 文件的控制信息,文件的結構信息,文件的管理信息
實現分頁虛擬存儲,頁表至少包含哪些內容
頁號,標志,主存塊號,磁盤上的位置
等待狀態和阻塞狀態
等待狀態:等待協作進程的一個消息暫時不能運行的狀態
阻塞狀態:等待一次打印輸出結束、等待從磁盤上讀入數據
進程與進程之間的地址空間相互獨立,同一進程的各線程間共享進程的地址空間,線程間共享堆,棧是獨享的
七狀態模型
掛起就緒即靜止就緒,掛起阻塞即靜止阻塞
- 運行態不可到掛起阻塞
- 掛起阻塞態單向到掛起就緒態
進程間同步源於合作,互斥源於競爭
響應比的定義:周轉時間/等待時間
設備分配程序分配設備的過程通常是
- 先分配設備
- 再分配設備控制器
- 最后分配通道
物理內存表,描述物理內存空間的分配使用狀況
原語
若干條指令構成的"原子操作",作為一個整體不可分割
邏輯文件
用戶角度看到的文件組織結構,用戶可以直接處理的數據結構
中級調度
由於存儲空間緊張,系統效率降低,中級調度程序將暫時不運行的進程全部交換至外存掛起,一旦內存空間允許,就將外存掛起進程換入內存
順序性
- 內部順序性,對一個進程來說,它的所有指令是按序執行的
- 外部順序性,對多個進程來說,所有進程依次執行
並發性
外部並發性,對於多個進程來說,所有進程是交叉進行的
申請設備時,指定物理設備號不能提高設備使用率
申請設備時,指定邏輯設備號可以使靈活性變強
虛擬存儲器技術,要求進程不必全部裝入內存,運行過程中不必常駐內存
可重入代碼
純代碼,執行過程中沒有任何改變的代碼段,不發生與時間有關的錯誤
文件屬性,文件存儲和管理信息,如文件名、文件內部標識、文件存儲地址、訪問權限、訪問時間等
進程同步與互斥
保證並發過程共享資源時,不發生與時間有關的錯誤
進程通信
實現進程間交換信息,達到協作完成共同任務的目的
死鎖
防止進程因競爭資源引起的無限等待
進程采用時間片輪轉算法,是為了多個用戶都能得到系統及時響應
若系統中有五個並發進程都要訪問同一個變量A,與變量A相關的臨界資源是 1 個,臨界區是5個
可尋址是塊設備的基本特征
共享設備,一段時間內可以允許多個進程同時訪問,同一時刻共享設備仍只允許一個進程訪問
共享設備,必須可尋址可隨機訪問
批處理系統主要特征,提高計算機利用率
采用動態重定位,目標程序可以不經任何改動裝入物理內存
頁式存儲管理中,每個進程的頁表都存放在內存中,頁表的物理地址存放在頁表基址寄存器(PTBR)
為了發揮系統並行性,提高IO設備使用效率,采用
- 中斷技術
- 緩沖技術
- 設備共享
- 假脫機技術
同一程序可由多個進程構成
ACL,文件訪問控制列表,基於身份的文件訪問控制
實時操作系統追求的主要目標是,滿足任務的截止時間
絕對裝入技術,系統是在編譯時完成的地址重定位
進程間通信方式,共享存儲器,消息傳遞,管道通信
操作系統設備管理的主要對象,IO設備,設備控制器,IO通道
臨界資源可以采用互斥訪問方式來實現共享
共享設備是可以被多個進程並發占用的設備
ACL(存取控制表)在系統中只有一個
可重定位分區分配可以為每個進程分配連續的內存空間
連續分配是指為一個用戶進程分配一個連續的內存空間,可進一步分為
- 單一連續分配
- 固定分區分配(等分和不等分)
- 動態分區分配
- 動態重定位分區分配(緊湊技術)
虛擬存儲技術,實現了有限的物理空間中運行較大的進程,實質是以時間換空間
CLOCK(NRU),時鍾置換算法,淘汰第一個訪問位為0的頁面,遇到訪問位為1的頁面,置為0
改進型CLOCK,在CLOCK的基礎上增加一個修改位
- 第一輪,淘汰第一個(0,0)頁面
- 第二輪,淘汰第一個(0,1),並置訪問位為0
- 第三輪,淘汰第一個(0,0)
- 第四輪,淘汰第一個(0,1)
高響應比優先算法,響應比: (等待時間 + 要求服務時間) / 要求服務時間 或者 寫成 周轉時間/要求服務時間
段頁式管理中,地址轉換表,每個進程的每個段一張段表,一張頁表
結合了FCFS和短作業優先算法的是多級反饋隊列調度算法
考慮短作業和長作業的是高響應比算法
文件的物理結構,順序結構,鏈式結構,索引結構
成組鏈接法
此算法基本上克服了最短尋道時間優先算法的服務集中於中間磁道和響應時間變化比較大的缺點,而具有最短尋道時間優先算法的優點即吞吐量較大,平均響應時間較小,但由於是擺動式的掃描方法,兩側磁道被訪問的頻率仍低於中間磁道
固定分區存儲管理把內存中的用戶區事先划分成若干個連續的分區,它們個數固定,尺寸相同且不變
固定分區管理方法中,每個連續分區的大小,預先固定划分的,可相同,也可不同
對內存采用頁式存儲管理,所划分的頁面大小必須相同
死鎖檢測,有時要搶奪某進程的資源進行再分配
作業平均周轉時間最小的作業調度算法,短作業優先算法
4個緩沖區,讀A0磁盤讀一次,讀A2磁盤讀一次,讀A5磁盤讀一次,寫A0,不用走磁盤,讀B0磁盤讀一次,磁盤讀了4次,緩沖區滿了,讀B1,淘汰第一個緩沖區,A0寫回磁盤,B1讀出磁盤,此時共計讀寫磁盤6次
處理系統調用時,不需要屏蔽外部中斷
系統調用處理過程一般可以被中斷
訪問創建控制塊在用戶態下進行
分時系統中,普通進程優先級可以被改變
凡是可以隨機存取的文件都可以順序存取
進程間通信方式
- 共享存儲器系統,數據結構
- 消息傳遞
- 管道通信
段式存儲管理中,操作系統實質上采用動態分區分配方法為每個邏輯段分配內存
隨機訪問的文件可以通過提前讀提高磁盤IO速度
以下處理死鎖的方法中,哪種方法將使進程並發程度最高(可以在沒有死鎖時,允許最多數目進程無需等待繼續前進)
- 預先靜態分配所有資源
- 資源排序,有序使用資源
- 銀行家算法
- 檢測死鎖並殺死進程,釋放資源
越在后期處理死鎖,越能使進程並發程度高,所以檢測死鎖並殺死進程,釋放資源,進程並發程度最高
磁盤調度算法,是SCAN,不是CSCAN
設備管理,主要包括緩沖區,設備分配,設備處理,虛擬設備,實現設備獨立性
尋找設備驅動程序接口函數的任務由設備無關的操作系統軟件完成
段式存儲管理中,操作系統實質是采用動態分區分配方法為每個邏輯段分配內存
OS為了調整內存負荷,需要掛起若干進程,中級調度優先選擇掛起低優先級阻塞態的
為了保護系統核心代碼,從管態到目態的唯一途徑是 修改程序狀態字
從目態到管態的轉換則是由中斷處理程序完成的
當每類資源只有一個個體時,有環必有死鎖
虛擬內存管理中,地址變換機構將虛擬地址變換為實地址,形成物理地址的階段在運行
記錄型信號量,在執行一次P操作時,信號量的值應當減1,當值為小於0時,進程應阻塞
頁式存儲管理中,假定訪問主頁的時間為200ms,訪問快表的時間為40ms,快表有16個單元,查找快表的命中率為90%,按邏輯地址轉換成絕對地址進行存取的平均時間
0.1*(200 + 200) + 0.9*(40 + 200) = 40+216=256ms
靜態分配資源死鎖防止策略,破壞了"循環等待"和"占有並等待"兩個條件
管道通信,以管道消息為主要單位進行讀寫,可進行大批量數據交換,工作是先進先出
動態重定位技術,目標程序可以不經任何改動裝入物理內存
文件系統中源程序是無結構的字符流式文件
在哲學家進餐問題中,若僅提供5只筷子,則同時要求進餐的人數不超過4個,一定不會發生死鎖
用戶與操作系統的接口有兩類,命令接口和程序接口
N個進程互斥訪問一變量,設置一信號燈S,則S取值范圍是 -(N-1)~1
輸入進程Get負責把輸入記錄放入緩沖區S,用戶進程Copy負責把記錄從緩沖區S復制到緩沖區T,輸出進程Put負責把記錄從緩沖區T中取出輸出。
設緩沖區S可放20個記錄,緩沖區T可放24個記錄。試用PV操作實現以上3個進程之間的同步
Semaphore emptyS = 20, emptyT = 24 Semaphore fullS = 0, fullT = 0 Semaphore mutexS = 1, mutexT = 1; Get(); Copy(); Put(); Process Get(){ while(1){ 輸入一條記錄 P(emptyS) P(mutexS) 記錄放入S V(mutexS) V(fullS) } } Process Copy(){ while(1){ P(fullS) P(emptyT) P(mutexS) P(mutexT) 從S復制一條記錄到T V(mutexT) V(mutexS) V(fullT) } } Process Put(){ P(fullT) P(mutexT) 從T中取出一條數據 V(mutexT) V(emptyT) }
搶占式短作業優先(最短剩余時間優先)
段頁式存儲管理需要為每一個作業提供一個段表,為每一個段表提供一個頁表
頁式存儲管理需要為每一個作業提供一個頁表
某系統中,每個進程在IO阻塞之前的運行時間為T,一次進程切換的系統開銷時間為S,采用時間片長度為Q的時間片輪轉法,且S<Q<T,則CPU的利用率是 Q/(Q+S)
我們把並發進程中與共享變量有關的程序段稱為 臨界區
嵌入式系統采用微內核方法實現結構設計
PCB是進程存在的唯一標志,程序是系統感知進程存在的唯一實體
FCFS(先來先服務) 有利於長作業
虛擬頁式存儲管理中頁表有若干項,當內存中某一頁面被淘汰時,可根據修改標志決定是否將該頁面寫回外存
一磁盤,10個柱面,每柱面20個磁道,每盤面分成16個扇區,采用位示圖對其存儲空間進行管理,字長是16個二進制,位示圖共需 200 字 10*20*16 /16=200
只要是邏輯上具有完整意義的信息集合,對操作系統文件而言,都可以稱為文件
一進程被喚醒,意味着這個進程進入就緒態
采用動態重定位裝入作業的存儲管理方式有,可變分區存儲管理,頁式存儲管理,頁式虛擬存儲管理
在非剝奪調度方式下
- 一個進程從運行態進入等待態
- 運行的進程執行結束
- 一個進程從運行態進入就緒態
邏輯文件包括,流式文件,記錄式文件
多道程序設計系統往往會同時存在許多進程,對每一個進程來說
- 都有順序性
- 可能由於自身或外界原因中斷
- 當前能否占用處理器,由進程調度決定
進程的狀態
- 動態性
- 並發性
- 獨立性
常抖動影響CPU的利用率,從管理員角度來看 ,減少多道程序道數和增加主存來改善CPU利用率
單個分區的存儲管理可采用覆蓋技術增大程序可用的邏輯存儲空間的容量
一個程序在一個數據集上的一次運行稱為 進程
一個鏈接結構文件,存放了1,2,3,4,5五個邏輯記錄塊,刪除4需要訪問5次
某個文件系統,采用混合索引分配方式,FCB中共有13個地址項,每個盤塊大小為512字節
若每個盤塊號只需要用2個字節來描述,則該文件系統需要設置幾級間接索引
- 2個字節,就是2^16,每個盤塊可以放256個塊號,系統最多用到二次間址
- 一個一次間址+一個二次間址,允許的文件最大長度是,11+256+256*256,已經超出了磁盤系統實際的盤塊數
若每個盤塊號用3個字節來描述,共允許每個盤塊中存放170個盤塊地址,而且FCB中采用10個直接地址項,1個一級間索引,1個二級間接索引和1個三級間接索引,對某個長度為18000000字節的文件,共需占有多少個盤塊
- 18000000/512 = 35156,向上取整35157塊,文件內容盤塊有35157塊
- 10個直接地址項,10塊,1個一級間接索引,170塊,1個二級間接索引,170*170 = 28900塊,35157 - 10 - 170 - 28900 = 6077塊,一個三級間接索引不需要完全分配出去,6077 / 170 = 35 6077%170 = 127
- 所以三級索引塊中,只需要1個一級索引,1個二級索引,二級索引塊中,36個三級索引
- 所以共需要 35157 + 1 + 171 + 38 = 35367塊
用戶程序將一個字符送到顯示器上顯示,使用的是操作系統提供的系統調用接口
操作系統的IO子系統由四個層次組成,合理的層次組織排列順序是
- 用戶級IO
- 設備無關軟件
- 設備驅動程序
- 中斷處理程序
在批處理系統控制下實現多道程序並行工作,從系統角度,主要希望進入"輸入井"的作業能夠 平均周轉時間短
並發程序中與共享變量有關的程序段稱為臨界區,並發進程擁有不同的臨界區
假定一個分時系統允許20個終端用戶同時工作,分配給每個終端用戶的時間片為50ms,而對終端用戶的每個請求處理200ms給出應答,終端的最長響應時間為 20*200=4s
頁式存儲管理中,作業運行時,該作業的頁表放在主存用戶區
磁盤,8個記錄,讀記錄花1ms,磁盤旋轉一周16ms,若8個記錄在一條磁道上進行優化分布,全部處理完這8個記錄至少需要 33ms(2*16+1)
分區分配內存管理方式的主要保護措施是 界地址保護
批處理作業系統控制下實現多道程序並行工作,從系統角度看,主要希望進入"輸入井"的作業能夠 平均周轉時間短
獨木橋問題,東西方向汽車過獨木橋,為了保證安全,只要橋上無車,允許一方的汽車過橋,一方的汽車全部通過后,另一方汽車才允許過橋
但,當另一方提出過橋時,阻止對方未上橋的后繼車輛,待橋面上汽車過完橋,另一方汽車開始過橋
Seamphore cross_bridge // 過橋申請 Seamphore mutex // 橋鎖 Process Pdong(){ P(cross_bridge) // 檢查橋上車輛數 count1++ if(count1 == 1){ P(wait) } V(mutex1) V(cross_bridge) 過橋 P(mutex2) Count1-- if(Count1 == 0){ V(wait) } V(mutex2) } Process Pxi(){ P(cross_bridge) count2++ if(count2 == 1){ P(wait) } V(mutex1) V(cross_bridge) 過橋 P(mutex2) Count1-- if(Count2 == 0){ V(wait) } V(mutex2) }
重要!三個時間 尋道+平均旋轉延遲+傳輸時間
位示圖進行磁盤塊空閑狀態管理
100 150 90 60 40
讀取數據的時間 = 磁頭定位時間 + 平均旋轉時間(半轉所需的時間) + 讀取四個扇區所需的時間(一轉有50個扇區,所以一轉的時間除以5)
- 磁頭定位時間 (50+60+30+20)*1ms = 160ms
- 平均旋轉時間(4個扇區,所以4倍) = 4*(2/(6000/60)ms = 20ms
- 讀取4個扇區所需的時間 = 4*(2/50)ms = 0.8ms
共180.8ms
采用FCFS,因為Flash半導體存儲器,不需要考慮尋道時間和旋轉延遲
某文件系統為一級目錄結構,文件的數據一次性寫入磁盤,已寫入的文件不可修改,但可多次創建新文件
在連續、鏈式、索引三種文件的數據塊組織方式中,哪種更合適?為什么?
連續存放,磁盤尋道時間短,文件隨機訪問效率高,FCB中加入的字段為,起始塊號,塊數
為定位文件塊,需在FCB中設計哪些相關描述字段?
將FCB集中存放,隨機查找文件時,只需訪問FCB,減少磁頭移動和磁盤IO
分時系統中,從鍵盤輸入的請求信息在外存隊列上排隊等待的時間不屬於系統響應時間
用戶看到的系統層次是,應用程序,編譯程序,操作系統
當一個進程處於等待協作進程的一個消息,稱為等待消息
作業調度的主要功能是根據作業控制塊中的信息,審查系統能否滿足用戶作業的資源需求
以及按照一定的算法,從外存的后備隊列中選取某些作業調入內存,並為它們創建進程、分配必要的資源
操作系統的作業調度是一種宏觀的高級調度
當系統內存資源不滿足執行緊迫任務時,操作系統可能將正在運行的進程變為靜止就緒
為實現CPU與外部設備並行工作,必須引入的基本硬件是 通道
共有10個柱面,20個記錄面,每個磁道分成16個扇區,每個簇的大小為4個扇區,若字長是16位,那么位示圖共需 50 字 16/4*10*20=800, 800/16=50
程序裝入內存有三種方式,分別是
- 絕對定位
- 可重定位裝入
- 動態運行時重定位
頁式存儲管理中,每個進程有一張頁表,而物理頁面表只有一張,作用是描述所有物理頁框的分配使用狀況
現代操作系統基本特性,並發性、共享性和異步性
按照設備的共享屬性,可以把設備分為獨占設備、共享設備和虛擬設備
IO型作業優先權高於計算型作業的優先權,因為IO操作需及時完成,無法長時間保存IO數據
系統進程優先權高於用戶進程優先權,隨着進程執行時間增加優先權隨之降低,隨着作業等待時間增加其優先權應上升
10個座位,一個廚師,供應兩種面,一次供應一碗,當且僅當顧客吃完才供應下一碗
Semaphore mutex Semaphore s1 Semaphore s2 Semaphore finished Process_chef{ int rr; whiile(1){ rr = random(2) p(finished) if(rr == 1){ 做一碗素三鮮面 v(s1) }else{ 做一碗雞腿面 v(s2) } } } Process_customer_1{ p(mutex) p(s1) 取一碗素三鮮面 v(finished) 吃面 v(mutex) } Process_customer_2{ p(mutex) p(s2) 取一碗雞腿面 v(finished) 吃面 v(mutex) }
用戶在程序一級獲得系統幫助,必須通過系統調用
信息處理的過程:數據輸入,數據處理和數據打印是可並行運行的
系統采用段頁式存儲管理,系統未設置關聯存儲器和Cache情況下,CPU執行指令從主存取操作數,至少需要訪問主存 3 次
操作系統將文件看成有字符序列組成,文件內的信息不再划分結構,這稱為 流式文件
設備的打開、關閉、讀、寫等操作是由設備驅動程序完成的
處於靜止阻塞態的進程,在進程等待的事件結束后,進程狀態變為靜止就緒
進程調度采用時間片輪轉算法是為了多個用戶都能得到系統的及時響應
邏輯文件的組織形式是由用戶決定的
分段存儲管理是將作業地址空間划分成若干個大小不同的段,使之與內存存儲空間分段相適應,同一作業各段在內存中不一定相鄰接
頁式存儲管理中,每個進程的頁表也存放在內存中,頁表的物理地址放在頁表寄存器
操作系統的進程調度分為搶占式和非搶占式兩部分
FIFO算法會產生Belady異常
為了實現設備獨立性,系統必須設置一張 邏輯設備表(LUT),將邏輯設備名映射為物理設備名
文件系統中,為了實現基於身份文件訪問控制,通常為每個文件和目錄增加一個用戶訪問權限
進程的異步性,難以重現進程在某個時刻的狀態
分時系統的響應時間與時間片大小和用戶數目相關
PCB包括 標識信息,說明信息,現場信息,管理信息
在大型機系統中,批處理作業成批存放在輸入井
OS為了調整內存負荷,需要掛起若干進程,中級調度優先選擇掛起 低優先級阻塞態(內存中最不活躍,所以需要優先掛起)
若程序的裝入和鏈接采用動態裝入和動態鏈接技術,CPU執行指令時,產生的訪存地址是 相對地址
使用IO緩沖技術的先決條件是設備帶寬低於CPU帶寬
文件管理的實際上是管理輔助存儲空間
正確的讀文件的次序
- 活動文件表找到文件目錄項
- 按存取控制檢查訪問合法性
- 將該文件的邏輯和物理組織形式,將邏輯記錄號轉換成物理塊號
- 向設備驅動發出IO請求,完成數據交換工作
實現請求分頁管理,應在基本分頁頁表基礎上增加
- 狀態位
- 訪問字段
- 修改位
- 外存地址
設備控制器是CPU和IO設備之間的接口
操作系統,修改部分非核心系統中的寄存器是可以在目態下執行的
讀文件屬於系統調用,進入核心態,讀鍵盤開中斷,進入核心態
臨界資源是多進程共享,通過信號量排斥,實現共享
某文件系統采用直接索引分配方式為文件分配磁盤空間,為每個文件分配一個索引塊用於記錄分配給該文件的所有盤塊號
文件目錄項中記錄該索引塊的盤塊號,硬盤大小為16TB,盤塊大小為4KB,索引塊中塊號最少占用多少字節?
16TB=2^44B,4KB=2^12,一共有 2^44/2^12=2^32 個盤塊,需要用32位來表示,索引塊占4字節
該文件系統中支持的單個文件的最大長度為多少
一個盤塊4KB=2^12B,可以存放 2^12/4 = 2^10 個索引,所以單個文件的最大長度為 2^10*2^12 = 2^22B
若文件索引塊號依次為 23、25、32、20,文件A的字節偏移量 12500 對應的物理塊號和塊內位移量
塊號 ⌊12500/2^12⌋=3,3號塊是20(塊號從0開始編號), 塊內偏移 12500%2^12=212
一個進程不能在同一時刻執行多個程序
線程穩定性比進程穩定性差
資源分配圖,可用來檢測死鎖
檢測死鎖並殺死進程,釋放資源可以使進程並發程度最高
動態重定位,可以在運行過程中進行
假設頁的大小為4KB,頁表的每個表項占用4B,對與一個32位的地址空間系統,采用多級頁表機制,至少需要幾級頁表?
4KB=2^12b,頁內偏移占用12位,32-12=20,頁號占用20位,4KB/4B=2^10,2^20 = 2^10 * 2^10,所以需要2級頁表
檢查用戶是否有權使用設備是在IO軟件的設備獨立性軟件完成
對於只存放只讀文件的磁盤,適合采用的文件物理結構是連續分配
設備獨立性是指應用程序不依賴於物理設備
IO軟件中的設備獨立性軟件負責將邏輯設備名映射為物理設備名,並將信息記錄到FCB
文件的兩種共享方式分別是基於索引結點的硬鏈接和符號鏈接
銀行家算法的第三問,例如:此時P3發出資源請求Request(1,2,2,2),是否可以滿足它的請求
1. 硬盤大小為16GB,盤塊大小為1KB,16GB/1KB = 16*2^20,=2^24,24位需要3個字節來表示
2. 1個盤塊有3個字節保存盤號,剩下1021B保存文件信息,一共2^24個盤塊,所以單個文件的最大長度 2^24*1021B
3. 偏移量2000應該保存在第二個盤塊內,即32中,2000-1021=979,塊內偏移量為979
一個單處理機系統內存中有5個進程,處於目態下運行時,處於等待態的最多有5個(系統死鎖時,全都處於等待狀態)
虛擬內存管理系統中,地址變換機構將虛地址變換為實地址,形成物理地址的階段是在運行時
進程何時占用處理器以及能占用多長時間取決於進程自身的特性及系統調度策略
FCFS有利於CPU繁忙型作業,而不利於IO繁忙型作業
采用運行時動態裝入的過程,在整個聲明周期中允許操作系統有條件地將其在物理內存中移動
在UNIX中,文件名和文件描述信息是分開存放的,所以文件的磁盤索引結點中存放的信息是 文件主標識、文件的物理地址、文件長度
操作系統為用戶提供服務的方式是系統命令和系統調用
操作系統的主要功能包括
- 處理機管理
- 文件管理
- 作業管理
- 存儲管理
- 設備管理
操作系統引入進程的目的,使程序能並發執行,提高系統利用率和系統吞吐量
操作系統引入線程的目的,減少並發執行的開銷,提高程序執行的並發程度
增加分配給該進程的頁框數會降低進程缺頁率(不一定,FIFO存在Belady異常)
考慮短作業和長作業的是高響應比算法#
既考慮了短作業,又考慮了長作業和交互式作業的算法是 多級反饋隊列算法
頁內偏移,10位. (參考上面的CLOCK算法)
256H -> 1A56H,D65H->1D65H,456H->1856
turn這個變量可以保證進程互斥,但不能保證有空讓進,譬如,在某一個進程的剩余區阻塞了,那么另一個進程會一直等待
在頁式虛擬存儲管理中,程序的鏈接方式必然是運行時動態鏈接
首次適應法
從空閑分區表的第一個表目起查找該表,把最先能夠滿足要求的空閑區分配給作業,這種方法目的在於減少查找時間。
為適應這種算法,空閑分區表(空閑區鏈)中的空閑分區要按地址由低到高進行排序。
該算法優先使用低址部分空閑區,在低址空間造成許多小的空閑區,在高 地址空間 保留大的空閑區。
最佳適應算法
從全部空閑區中找出能滿足作業要求的、且大小最小的空閑分區的一種計算方法,這種方法能使碎片盡量小。
最壞適應分配算法
要掃描整個空閑分區或鏈表,總是挑選一個最大的空閑分區分割給作業使用。該算法要求將所有的空閑分區按其容量從大到小的順序形成一空閑分區鏈,查找時只要看第一個分區能否滿足作業要求。
循環首次適應算法
該算法是首次適應算法的變種。在分配內存空間時,不再每次從表頭(鏈首)開始查找,而是從上次找到空閑區的下一個空閑開始查找,直到找到第一個能滿足要求的的空閑區為止,並從中划出一塊與請求大小相等的內存空間分配給作業。該算法能使內存中的空閑區分布得較均勻。
磁盤調度算法中,FCFS和最短尋道時間優先,可能會隨時改變磁臂的運動方向
目標文件是記錄式文件
設計實時系統主要考慮的是系統性能指標的產生結果的時間
請求頁式管理中,頁表中狀態位的作用是指示該頁是否已調入內存
進程控制塊中,包括 進程標識信息,處理機狀態信息,進程調度信息和進程控制信息
操作系統提高IO速度的主要技術是磁盤高速緩存,Spooling技術和緩沖技術(buffer)
當操作系統完成了用戶請求的系統調用功能后,應使系統由管態進入目態
操作系統是軟件資源和硬件資源
處於靜止阻塞態的進程,當它的等待事件發生了,則變為靜止就緒態
一個程序對應多個進程,但不是每個進程對應多個程序
采用動態重定位技術的系統,目標模塊可以不經任何改動直接裝入物理內存
單一連續分區分配存儲管理不適合多道程序設計
多用戶系統,配置了相同的多個終端,此時可以只配置一個供多個終端共享的驅動程序
硬盤直接存取的存儲設備,其上存儲的文件可以采用順序存儲結構
一個頁框10位,2^20頁,邏輯地址占30位
一個頁框10位,4096個塊,2^12頁框,絕對地址占24位
划分一維邏輯地址,虛地址空間一共30位,頁內偏移10位,頁表項4B,8位,2^8=256個頁表索引,4 8 8 10 表目錄項 頁號 索引數 頁內偏移量
盤塊512B,盤塊地址4B,隱式鏈接,一個盤塊存儲的文件內容508B,盤塊地址4B,32位,最多有2^32個盤塊,所以能管理的最大文件是2^32*508B
123456/508 = 243,所以在第244塊,需要讀盤244次
混合索引,512B/4B=128個,4個直接索引,1個一級索引,1個二級索引,1個三級索引,512*4 + 1*128*512 + 1*128*128*512 + 1*128*128*128*512 為可以管理的最大文件
若存儲大小為1234567B,1234567/4 = 308641 1234567%4 = 3,一共308642塊,3個直接地址項,二級索引128*128 = 16384,16384 < 308641 < 2097152(三級索引),所以需要設置三級索引
308641 / 16384 = 18 308641%16384 = 13729,
不會使CPU進入內核態的是
NOT R0;寄存器R0的內容取非
進程進入就緒態不可能是因為該進程執行wait(P)操作
進程P創建的若干個線程不能共享進程P中其他線程的棧指針(線程的棧是獨享的)
系統中有臨界資源R1和R2各1個,4個進程p1,p2,p3,p4,其中p1和p2都申請R1和R2,p3申請R1,p4申請R2,若系統出現死鎖,則處於死鎖狀態的進程數至少是 2 個(2個臨界資源,所以最少有2個處於死鎖進程)
進程調度算法的目標包括
- 提高CPU利用率
- 提高系統吞吐量
- 降低算法自身復雜度
有關時間片的進程調度描述中,錯誤的是,當前進程的時間片用完后,該進程狀態由執行態變為阻塞態
請求分頁系統中,頁面分配策略與頁面置換策略不能組合使用的是 固定分配,全局置換(都固定分配了,全局置換豈不全都替換掉)
屬於多級頁表的優點的是,減少頁表所占的連續內存空間
緩沖技術的緩沖池在內存中
SPOOLING系統中的輸入井和輸入緩沖區分別位於磁盤和內存
SPOOLING技術,由用戶作業控制設備與輸入/輸出井之間的數據傳送
500個盤塊的文件目錄項在內存中(若為索引分配,其索引塊也在內存),刪除倒數第2塊,操作磁盤IO次數最多的是 隱式鏈接分配
隱式鏈接分配方式時,在文件目錄的每個目錄項中,都須含有指向鏈接文件第一個盤塊和最后一個盤塊的指針
顯式鏈接這是指把用於鏈接文件各物理塊的指針,顯式地存放在內存的一張鏈接表中
若某文件系統采用混合式索引分配方式,索引結點中既有直接地址項,又有間接索引項,與單個文件長度無關的因素是 索引結點的個數
段頁式存儲管理,分段式存儲管理,分頁式存儲管理,都屬於非連續分配方式,一個程序分散地裝入不相鄰的內存中
段頁式存儲管理中內碎片和外碎片都有可能產生,錯!是否會出現碎片取決於內存的分配方式
固定分區存在內部碎片,可變式分區分配會存在外部碎片
頁式虛擬存儲系統存在內部碎片;段式虛擬存儲系統,存在外部碎片
文件索引結點是在文件創建時產生的,而不是打開文件后產生的
整型信號量:無法實現讓權等待
記錄型信號量:解決讓權等待的問題
同步四項基本原則
- 空閑讓進
- 當無進程處於臨界區,可允許一個請求進入臨界區的進程立即進入自己的臨界區
- 忙則等待
- 當已有進程進入自己的臨界區,所有企圖進入臨界區的進程必須等待
- 有限等待
- 對要求訪問臨界資源的進程,應保證該進程能在有限時間內進入自己的臨界區
- 讓權等待
- 當進程不能進入自己的臨界區,應釋放處理機
整型信號量不能實現讓全等待,所以不遵循四條同步准則
與單道程序相比,多道程序系統的優點是資源利用率和系統吞吐率
在單CPU系統中有n個進程,處於阻塞態的進程個數最多是n個
若用文件保存一本英漢詞典,每個單詞及其解釋組成一個記錄,為了使用戶能夠快速查找所需單詞,該文件的邏輯結構是 索引順序文件

由題意,位示圖占用91個盤塊,每盤塊大小1KB,因此位示圖一共有91KB
91KB=91K*8bit =728K bit,即位示圖一共728K個位,由於位示圖1位表示1個盤塊,因此位示圖一共表示728K個盤塊,每個盤塊大小為1KB,因此總共可以表示728K*1KB=728MB容量
34567/(1024*8) = 4,所以第4塊,34567%1024=775,34567%(1024*8) = 1799,1799/8=224,1799%8=7,所以第4塊,第224個字節,第7個塊
為了加快文件名的檢索,UNIX中將FCB拆分為兩部分,文件描述信息和索引結點
4TB = 2^42B,1KB = 2^10B,4MB/1KB = 2^32個盤塊,32位,4B
文件大小4MB,4MB = 2^22B,4MB/1KB = 2^12個盤塊,1KB/4B = 2^10/2^2 = 2^8個盤塊號,2^8 < 2^12 < 2^16,所以需要設置二級索引
文件內容盤塊,需要2^12=4K=4096個,然后看下面計算索引塊個數需要17塊,一共需要4113塊
操作系統是緊貼硬件之上,管理和控制其上的所有軟件資源,合理對各類作業進行調度,以及方便用戶使用程序的集合
單道批處理系統中,一個批中多個作業的運行是順序執行的
對換空間管理的主要目標是提高進程換入和換出的速度,然后提高文件存儲空間的利用率,因此對換取空間的管理采取連續分配的方式
流設備接口中,數據的存取和傳輸是以字符為單位的設備,基本特征是傳輸速率較低、不可尋址,常采用中斷驅動方式
文件的索引結點,包括文件主標識符,文件類型,文件存取權限,文件物理地址,文件長度,但不包含文件符號名
微內核的特點
- 足夠小的內核
- 基於客戶/服務器模式
- 應用機制與策略分離原理
- 采用面向對象技術
- 策略放在較高層次
- 機制放在OS的微內核中
按文件組織方式,有結構的文件分為四類
- 順序文件
- 索引文件
- 索引順序文件
- 直接文件或散列文件
中級調度要解決,當內存有空時,從就緒掛起隊列中選擇進程對換到內存
若程序的裝入方式采用動態運行時裝入,則鏈接方式必然是運行時動態鏈接
保存在磁帶上的文件,通常采用順序結構的物理結構
內存單元復位不是特權指令
正在執行的進程創建了一個子進程,可能發生進程調度
滿足短作業優先且不發生飢餓現象的調度算法是高響應比優先
中斷處理會保存而子程序調用不需要保存的內容是程序狀態字寄存器
當系統發生抖動時,可以采取的有效措施是撤銷部分進程,對換區大小與抖動無關
用戶程序發出磁盤IO請求后,系統的正確處理流程
- 用戶程序
- 系統調用處理程序
- 設備驅動程序
- 中斷處理程序
設置定時器初值、軟中斷、關中斷(由硬件執行)都是特權指令,應用程序可以發請求到系統內核,由內核發出軟中斷
若一個用戶進程通過read系統調用讀取磁盤文件
- 若該文件數據不在內存中,該進程進入睡眠等待狀態
- 請求read系統調用會導致CPU從用戶態切換到核心態
- read系統調用會使用內存
open系統調用應該包含文件名稱,read只包含輸入流了
RR調度算法,時間片取最大公約數
RR調度算法,每一輪調度開始,根據就緒隊列進程數目計算一次值
哲學家算法中,如果一個哲學家先拿起來左邊筷子,其他哲學家拿起右邊筷子,則一定不會死鎖
影響分時系統響應時間的因素包括時間片大小、用戶數、信息交換量和信息交換速度
批處理作業必須具有作業控制信息
用戶界面包括命令接口、程序接口和圖形接口
頁式虛擬存儲管理中,缺頁故障是因為要訪問的頁不在內存中
目錄文件中存放的是,該目錄中所有子目錄和數據
CPU輸出數據速度遠遠高於打印機打印速度,為緩解這一矛盾,采用緩沖技術
文件目錄的主要作用是實現從文件名到物理地址的轉換
進程間的互斥是一種特殊的同步關系
只有當該頁面被修改過才需要寫回外存
一個進程被中斷打斷,相應的中斷處理完成后,不一定恢復該進程,使它繼續進行,可能有優先級更高的進程
如果進程需要讀取磁盤上多個連續的數據塊,通道數據傳送方式效率最高
動態重定位在作業執行過程中進行的
文件系統追求的最重要的目標是提高對文件存取速度
導致死鎖的四個必要條件在死鎖時會同時發生
時間片輪轉的周轉時間