操作系统笔记2
?
l? 進程
l? 并發:多個程序在一段時間內同時發生
l? 進程是什么?與程序區別
進程就是用于描述、控制程序在內存中并發運行的一個東東
程序的一次執行
是一個程序與其數據一道通過處理機的執行所發生的活動
進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位。
? 動與靜:
l? 進程是動態的,程序是靜態的:程序是有序代碼的集合;進程是程序的執行。
? 永久與暫時:
l? 進程是暫時的,程序是永久的:進程是一個狀態變化的過程,程序可長久保存。
? 結構:
l? 進程的組成包括程序、數據和進程控制塊(進程各種控制信息)。
? 進程與程序的對應關系:
l? 都可1對n。通過多次執行,一個程序可對應多個進程;通過調用關系,一個進程可包括多個程序。
?
l? 進程的基本狀態
(1)就緒狀態(Ready)
????? 進程獲得除CPU之外的所有必需資源,一旦得到CPU控制權,可立即運行。
(2)運行狀態(Running)
????? 進程已獲得所有運行必需的資源,正在處理機上執行。
(3)阻塞狀態(Blocked)
????? 正在執行的進程由于發生某事件(請求I/O、申請緩沖、時間片到)而暫時無法執行時,便放棄CPU后暫停
?
?
l? 進程控制塊PCB.
進程實體:代碼段+數據段+PCB
Pcb存放進程的管理和控制信息的數據結構
?
進程控制塊中的信息(pcb內):
進程標識符信息
處理機狀態信息
進程調度信息
進程控制信息
l? 進程的創建、阻塞、終止過程
創建過程:
(1) 申請空白PCB
(2) 為新進程分配資源
??????????? 主要是內存資源的處理
(3) 初始化進程控制塊
??????????? 標識符(包括父進程的)、程序計數器指向程序入口地址,就緒態、優先級等信息的填寫。
(4) 將新進程插入就緒隊列
阻塞過程:
(1)將PCB中的狀態改為阻塞
(2)該PCB加入到阻塞隊列中
(3)轉進程調度,將處理機分配給另一進程
(4)進行進程切換,即根據兩切換進程的PCB,保護與重新設置處理機狀態
(阻塞原因了解:)
請求系統服務的滿足情況
啟動某種需等待(I/O)操作
合作需要的新數據尚未到達
執行某功能的進程暫時無新工作可做(如發送數據進程)
?
終止過程:
?
(1) 根據進程標示符,檢索出該進程PCB,讀其狀態。
????? *IF 執行態,立即終止該進程,置調度標志為真,指示重新進行調度。
????? *IF 有子孫進程,亦應予以終止,以防成為不可控進程。
(2) 歸還全部資源至其父進程或系統。
(3) 將該進程PCB從所在隊列或鏈表中移出。
?
?
l? 進程同步問題:源于進程的相互制約關系:資源共享,有序合作
l? 同步的概念:并發執行的諸進程之間能有效地共享資源和相互合作,從而使程序的執行具有可再現性。
l? 控制同步的四大原則
空閑讓進:資源使用最基本原則
忙則等待:保證互斥
有限等待:合適時被喚醒防止死等
讓權等待:能主動釋放CPU防止忙等
?
l? 臨界資源、臨界區
一次僅允許一個進程使用的資源
每個進程中訪問臨界資源的那段代碼叫臨界區。
為了正確同步,對臨界區的代碼要增加控制
l? 信號量機制
最初的信號量機制,兩個原子操作對一個共享整型量進行操作。
信號量定義為一個整型量;
根據初始情況賦相應的值;
僅能通過兩個原子操作來訪問。
?
l? 信號量操作原語wait、signal
P操作? wait(S):
????????????? While S<=0 do no-op;
????????????? S:=S-1;
V操作? signal(S):??? ?
????????????? S:=S+1;
?
?
互斥:在操作系統中,當一個進程進入臨界區使用臨界資源時,另一個進程必須等待,直到占用臨界資源的進程退出臨界區,我們稱進程之間的這種相互制約關系為“互斥”。
同步:多個相互合作的進程,在一些關鍵點上可能需要互相等待或互相交換信息,這種相互制約關系稱為進程同步關系。可理解為“有序”。
l? 典型同步題目:
l? 生產者-消費者 互斥-同步
一群生產者進程生產產品供給消費者進程消費,在兩者之間設置具有n個緩沖區的緩沖池,生產者進程所生產的產品放入一個緩沖區中,消費者進程可從一個緩沖區中取走產品去消費。
生產者和消費者都以異步方式運行,但它們之間必須保持同步:沒有產品不能取,沒有空間不能放。也不能同時對一個空間進行取和放
type? item=……;表示一個產品
Var? n, integer;緩沖區大小
counter:0, 1, …, n; 緩沖區內產品計數的變量
var? buffer: array[0, 1, …, n-1] of? item;該數組代表具有n個緩沖區的緩沖池
in, out: 0, 1, …, n-1指示生產者和消費者放或取的下一個緩沖區位置指針,初值均為0。
in加1表示為in:=(in+1)mod n
out加1表示為out:=(out+1)mod n
當(in+1)mod n=out時表示緩沖池滿
in=out表示緩沖池空
Producer:?
? repeat
???? …
???? 生產 an item in nextp;?
???? …
???? while counter= n
???????? do no-op;
???? buffer[in]:=nextp;
???? in:=in+1 mod n;
???? counter:=counter+1;
? until false;
Consumer:
? repeat
???? while counter= 0
???????? do no-op;
???? nextc:=buffer[out];
???? out:=out+1 mod n;
???? counter:=counter-1;
???? …
???? 消費產品item in nextc;
? until false;
?
取、用類,計數控制+互斥
l? 哲學家進餐 互斥
?
計數類、死鎖相關
?
l? 讀者-寫者
?
l? 有條件的互斥 類似典型題目:單行路,同方向的不互斥;異向互斥
Writer :
repeat
?? wait(wmutex);
?? 寫入文件;
?? signal(wmutex);
until? false;
?
?
?
l? 信號量規律:
l? 分析同步關系、設置信號量初值、PV操作順序
1.?? P、V操作成對出現
2.?? 多個進程對互斥同步,PV操作成對出現的同進程中,初值為1
3.?? 多個進程的有序同步,PV操作成對出現在不同進程中,有V操作的進程可通過控制先于有P操作的進程執行。初值根據應用情況設置。
?
l? 一閱覽室最多容納100人,讀者進入和離開都要在登記表上登記,每次只允許一個人登記。如何編寫進程間的同步關系。
l? 資源:空數N,登記表S
l? 信號量n=N,mutex=1
l? 進程:讀者進程
u wait(n)
u wait(mutex)
l? 進入
u signal(mutex)
l? 閱讀后離開
u signal(n)
?
l? 有一只鐵籠子,每次只能放入一只動物,獵手向籠中放入老虎,農民向籠中放入豬,動物園等待取籠中的老虎,飯店等待取籠中的豬,試用信號量機制實現獵手、農民、動物園、飯店之間同步執行的程序。(解釋其中的信號量含義,并給出合適的初值。)
?
l? 設有一自助餐廳,可容納10名顧客就餐,餐廳滿時顧客需在門外排隊等候;顧客若能進入則自取食物后到款臺付款;收款員負責在收款臺等待顧客付款,付款完畢顧客自行就餐后離開。分析該問題中的同步關系,試寫出顧客進程和收款員進程信號量機制下的同步算法,注意寫明信號量的初值和作用。
?
l? 【分析】顧客存在爭搶進店的競爭關系,設置一個資源信號量r,初值為10;
收款員與顧客間存在雙向有序合作關系,收款員需等待顧客付款,顧客需等待收款員確認付款完畢,需設置兩個同步信號量money,ok,初值均為0.
【算法偽代碼如下】
semaphore r=10,money=0,ok=0;
l? 顧客:
l? void custom(){
u while(true){
l? wait(r);
u //資源信號量操作成對正確
l? enter;
l? take something;
l? signal(money);
l? pay money;
l? wait(ok);??
l? signal(r);
l? leave;
u }}?
l? 售貨員:
l? void seller(){
u while(true){
n? wait(money);
u //同步信號操作配對正確
n? accept money,give changes
n? signal(ok);
u //同步信號操作配對正確
u }}?
l? CPU調度
l? 三級調度
高級調度:主要在早期批處理階段,處理在外存上的作業
低級調度: 決定內存就緒隊列中的哪個進程獲得處理機,進行分配工作。是最基本的一種調度
中級調度:提高內存利用率和系統吞吐量。根據條件將一些進程調出或再調入內存
l? 調度時機\搶占\算法計算
?
?
l? 調度程序的運行時機:
程序正常完成
IO\PV阻塞
時間片到
新任務產生
調度算法
基本調度算法:
a)?? 先來先服務調度算法FCFS,不利于短作業
b)?? 短作業(進程)優先調度算法SJF/SPF,降低作業的平均等待時間,提高系統吞吐量。
c)?? 高優先權優先調度算法HPF,
d)?? 高響應比優先調度算法HRRN,
e)?? 基于時間片的輪轉調度算法RR,
f)?? 多級反饋隊列算法FB
* 實時調度
?
?
?
?
l? 某系統的進程請求如右圖,畫出RR調度下的調度過程圖。并計算平均周轉時間。設時間片為2。
| 進程名 | 開始時刻 | 執行時間 |
| A | 0 | 3 |
| B | 2 | 3 |
| C | 3 | 4 |
| D | 4 | 7 |
?
?
?
?
?
?
?
?
?
l? 死鎖的相關概念與認識
1.?? 四個必要條件
u 互斥條件:進程對所分配到的資源進行排他性使用
u 請求和保持條件:進程已經保持了至少一個資源,又提出新的資源請求,而新請求資源被其他進程占有只能造成自身進程阻塞,但對自己已獲得的其他資源保持不放,必然影響其他進程。
u 不剝奪條件:進程已獲得的資源未使用完之前不能被剝奪,只能在使用完時由自己釋放。
u 環路等待條件
?
2.?? 處理死鎖的各種方法
①?? 預防死鎖
v 設置限制條件,破壞四個必要條件的一個或幾個,預防發生死鎖。
v 較易實現。限制條件的嚴格也會導致系統資源利用率和系統吞吐量降低。
②?? 避免死鎖
v 不須事先限制,破壞四個必要條件,而是在資源的動態分配過程中,用某種方法去防止系統進入不安全狀態,從而避免發生死鎖。
v 這種事先加以較弱限制的方法,實現上有一定難度,但可獲較高的資源利用率及系統吞吐量,目前在較完善的系統中,常用此方法來避免發生死鎖。
③?? 檢測死鎖。
v 允許系統運行過程中發生死鎖,但通過系統檢測機構可及時的檢測出,能精確確定與死鎖有關的進程和資源;然后采取適當的措施,從系統中將已發生的死鎖清除掉。
④?? 解除死鎖。
v 與死鎖檢測配套的一種措施。
v 常用的實施方法:撤銷或掛起一些進程,以便回收一些資源并將他們分配給已阻塞進程,使之轉為就緒以繼續運行。
v? 死鎖的檢測與解除措施,有可能使系統獲得較好的資源利用率和吞吐量(死鎖幾率不一定很高),但在實現上難度也最大。
?
l? 避免死鎖的銀行家算法(相對預防死鎖,是一種軟限制。)
?
?
?
下面出現P1請求資源的操作,具體請求向量為Request1(1,0,2),利用銀行家算法進行檢查該操作是否是安全可行的:
1)兩個基本判斷
??????????? Request1(1,0,2)<=Need1(1,2,2)
??????????? Request1(1,0,2)<=Available1(3,3,2)
2)先假設為P1分配資源,并修改Available,Allocation1和Need1向量。
?
?
?
向量Available
最大需求、已獲得的、還需要的
最大需求矩陣Max
已分配矩陣Allocation
還需求的矩陣Need
1.?? 安全狀態
2.?? 算法、計算
a)?? 系統中有m個進程,出現死鎖時死鎖進程的個數k:?? 2≤k≤m
b)?? 某類資源m個,n個進程都需要此種資源a個,如何不死鎖:n*(a-1)+1≤m
?
l? 存儲器管理
l? 連續分配
1.?? 單一連續、固定分區
2.?? 動態分區分配
3.?? 可重定位動態分區(有緊湊功能)
l? 離散分配
1.?? 分頁,地址轉換過程,計算
?
內存劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱為頁面。
①??? ?物理劃分塊的大小 = 邏輯劃分的頁的大小
②???
內存位數=頁面大小(位數)+頁表項(塊號位數)
大小:內存=頁面大小x頁面個數
?
2.?? 分段
虛擬
概念:虛擬、局部性
先進先出置換算法(FIFO)Belady現象(出現分配的頁面數增多,缺頁率反而提高的異常現象)的原因:FIFO算法的置換特征與進程訪問內存的動態特征矛盾,即被置換的頁面并不是進程不會訪問的
1.?? 置換調度算法:最近最久未使用(LRU)置換算法, 最近未使用算法CLOCK:
2.?? 缺頁次數(掉入次數)
u 缺頁率=缺頁次數/總的頁面數
l? 例
l? 分頁系統,主存容量64K,頁面大小1K。
l? 一個4K大的作業,0-3頁分別分配到物理塊2、4、6、7中。
1.?? 該作業的邏輯地址格式如何?
2.?? 十進制的邏輯地址1023(B)轉換為物理地址
3.?? 畫出地址變換過程。
答:
即頁號與頁內地址位數大小
該作業的4個頁面編號需要2位;每頁1K大小,即1K條指令編號需10位
?
l? 邏輯地址1023
1023/1K=0 余 1023
0頁對應物理塊2,所以物理地址是
2 * 1K + 1023 = 2048+1023=3071
?
?
?
l? 例
l? 虛擬內存管理中的LRU頁面置換算法
l? 設頁面走向如下,分配給該作業3個內存塊,畫出置換過程圖,并計算缺頁率。
4? 5? 8? 1? 3? 4? 4? 6? 5? 1? 2? 7? 6? 1? 3
文件管理
l? 文件的結構
l? 邏輯結構:
u 有結構文件:順序,鏈接,索引
l? 物理結構: 已分配空間的記錄
u 連續、鏈接、索引、混合索引分配方式
l? FAT表計算,索引文件大小的計算,UNIX下的混合索引
l? 空閑空間管理
l? 表、盤區\盤塊鏈、成組鏈接、位示圖
l? 目錄、共享
l? 例:FAT與索引的計算
l? FAT表的計算
1.?? 物理空間容量/盤塊大小 = FAT表項個數
2.?? 個數決定位數,決定每項大小
3.?? 個數*每項大小
l? 索引結點
1.?? 盤塊大小/盤塊號大小 = 可記錄的盤塊個數
2.?? 單索引下,一個索引結點能記錄N個盤塊,則文件最大長度為:N*盤塊大小
?
l? 例:混合索引分配方式的計算
l? FCB有13個地址項,0-9為直接地址,10為一次間接地址,11為二次間接地址,12為三次間接地址。若盤塊大小為512B,盤塊號需3B記錄,每個盤塊最多存放170個盤塊地址。
l? 該文件系統文件最大允許多長?
u 10+170+170*170+170*170*170 = 4942080塊
u = 4942080*512B = 2471040 KB
l? 將文件字節偏移量15000轉換為物理塊號和塊內偏移。
u 15000/512 = 29 余152。10=<29<=10+170.
u 所以文件使用的第29塊盤塊號,記錄在FCB中的10項,即一次間接地址的索引盤塊中。從10項記錄的地址找到索引表,第19項即是要找的物理塊。
?
l? 若FCB已存在內存,其他信息均在外存,訪問該文件某位置的內容,最少/最多需要幾次訪問磁盤?
最少需訪問磁盤的情況是直接尋址,直接讀FCB中記錄的地址,訪問磁盤1次即可
最多需訪問磁盤的情況是三次間接尋址的過程,需讀三次間接索引塊中的內容,然后讀它里面記錄的二次接索引塊中的內容,再一次的,最后才能獲得文件信息的實際地址。姑,最多情況需4次訪問磁盤。
?
l? 外存空間的管理
空閑空間的三種分配方式:連續、鏈接、索引
空閑空間的管理
1.?? 空閑表/鏈、位示土圖、成組鏈接
2.?? 成組鏈接
?
?
l? 例:某系統采用成組鏈接法管理磁盤空閑空間,目前狀態如下圖,問:
l? 還有多少空閑盤塊?
l? 若從當前狀態下,系統分配3個盤塊給某文件后,又刪除另一文件,回收了第700,711,703,788,701這5個盤塊。則磁盤空間的狀態圖中的鏈接情況又如何?
l? 空閑盤塊成組鏈接示意圖
?
?
l? 設備管理
l? I\0 系統的組成
CPU\通道\控制器\設備
l? 磁盤緩沖管理的作用、方式
l? 虛擬:spooling
l? I\O軟件層次
中斷處理程序\設備驅動程序\設備獨立性程序\用戶應用程序
l? 磁盤調度
電梯調度算法等p233
?
轉載于:https://www.cnblogs.com/-dabai/p/10085468.html
總結
- 上一篇: vue脚手架中使用axios
- 下一篇: JAVA获取系统相关的信息