以下是我在期末自己整理的復習資料 —— 操作系統,謝謝觀看!
第一章 操作系統概論
- 操作系統的特性
並發性:計算機系統中存在若干個運行的程序。
共享性:計算機系統的資源可被多個並發執行的程序共同使用。
異步性:程序的執行順序和速度始終是動態變化和隨機的。
虛擬性:1物理實體→N虛擬,N物理實體→1虛擬。
- 操作系統的結構(大標題)
整體式結構
層次式結構
客戶/服務器結構
虛擬機結構


第二章 處理器管理及並發進程
- 並發程序執行的條件(Bernstein條件)
並發進程如果是無關的,則這些進程可以並發執行。
約定程序Pi在執行期間所需引用的變量的集合,記作R(Pi)={a1,a2,……,an},
實際上,R(Pi)就是Pi的讀集。
約定程序Pi在執行期間所需修改的變量的集合,記作W(Pi)={a1,a2,……,an},
實際上,W(Pi)就是Pi的寫集。
Bernstein條件可描述為:若P1、P2滿足R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={},它們就能夠並發執行,否則不能並發執行,會發生與時間有關的錯誤。
例題:對於下列四條語句,將它們的讀集和寫集都寫出來
答:語句 讀集 寫集
S1:a=x*y R(s1)={x,y} W(s1)={a}
S2:b=z-1 R(s2)={z} W(s2)={b}
S3:c=b+a+8 R(s3)={a,b} W(s1)={c}
S4:w=c+5 R(s1)={c} W(s1)={w}
R(s1)∩W(s2)∪R(s2)∩W(s1)∪W(s1)∩W(s2)={},s1和s2可以並發執行;
R(s1)∩W(s3)∪R(s3)∩W(s1)∪W(s1)∩W(s3)={a}≠{},s1和s3不可以並發執行……
不能並發的可以通過信號量和PV操作或者管程機制等來解決。
- 基本狀態


- 進程的控制塊PCB
描述和控制進程的運行的一種數表結構,是進程存在的唯一標志,是進程實體的一部分。
- 內核運行狀態
在操作系統內核中運行的狀態,即核心態,也稱管理態;
不在操作系統核心態運行的狀態,即用戶態,也稱目標態。
中斷是操作系統從用戶態轉入核心態的唯一手段。
只能在核心態下運行的指令稱為特權指令,
其他指令為非特權指令。
- 進程調度算法
①先來先服務FCFS(作業+進程)
②短作業優先SJF、短進程優先SPF
③優先級(作業+進程)
周轉時間 = 完成時間 - 提交時間 ; 帶權周轉時間 = 周轉時間/運行時間
④高響應比優先(作業)
響應比 = 1+ 等待時間/要求服務時間
⑤時間片輪轉(進程)
⑥多級反饋輪轉(進程)
2-5:優先級共10級,用1~10表示,數值越大級別越高。不考慮進程調度所花的時間,調度采用不可搶奪式,設系統調度從8時刻開始。
進程名 進入就緒隊列的時刻 計算時間 優先級
P1 0 2 3
P2 2 3 4
P3 3 5 8
P4 5 4 1
P5 6 3 4
P6 8 6 7
解答:
①由於在8時刻開始調度(不看先來后到了)
靜態優先級(從8~1)調度:P3,P6,P2,P5,P1,P4(若優先數相同,按先來先服務調度進行)
先來先服務算法調度:P1,P2,,P3, P4, P5, P6。
②各個進程的等待時間如下:
進程名 進入就緒隊列的時刻 計算時間 靜態優先級法等待時間 FCFS 等待時間
P1 0 2 8+5+6+3+3-0=25 8-0=8
靜態優先級法等待時間:8為開始時刻,經過P3、P6、P2、P5的計算,減去P1的時間。
P2 2 3 8+5+6-2=17 8+2-2=8
P3 3 5 8-3=5 8+2+3-3=10
P4 5 4 8+5+6+3+3+2-5=22 8+2+3+5-5=13
P5 6 3 8+5+6+3-6=16 8+2+3+5+4-6=16
P6 8 6 8+5-8=5 8+2+3+5+4+3-8=17
靜態優先數算法的平均等待時間是:(25+17+22+16+5)/6=15
先來先服務算法的平均等待時間是: (8+8+10+13+16+17)/6=12
習題:設一個單CPU批處理系統中有4個作業,它們提交時間、運行時間見下表,
若分別按先來先服務、短作業優先、響應比高者優先,請完成各表格空白的填寫,計算各作業的平均周轉時間T和平均帶權周轉時間TW。(提示:系統有空就調度) (以下時間均為十進制,以分鍾計)。
| 作業 |
提交時間 |
運行時間 |
| J1 |
8.0 |
2.0 |
| J2 |
8.5 |
0.5 |
| J3 |
9.0 |
0.1 |
| J4 |
9.5 |
0.2 |
- 進程和線程區別(單位)
進程:重量級WP進程,一個進程可以擁有多個線程(⾄少一個,主線程)
線程:輕量級LWP進程。
①並發性:兩者都有;
②資源分配與占有:
進程是資源分配和保護的基本單位;
線程幾乎不擁有資源,但可共享本進程的資源和內存空間,進程下的各個線程可共享通信。
③系統開銷與效率:進程在創建或撤銷時,系統要對進程進行分配和回收資源。
④調度與靈活性:
進程是資源分配和保護的基本單位;
線程是系統調度和分派的基本單位;
- Peterson算法
Peterson算法仍然以兩個進程舉例,但很容易可以推廣到多個進程的並發執行中去。
int InTurn=0; //Inturn 只取值0或1
int InCS[2]= {0, 0} ; //InCs的元素的值為0或1
//進程Pi執行的代碼
while (1){
InCS[i]=1; 准備訪問
InTurn=i; 請求進程是i進程
while (InCS[1-i]==1 && Inturn==i) ;判斷能否進入,為真則等待
臨界區;
InCS[i]=0; 離開臨界區
}
假如一開始P0想進入臨界區,則首先將InCS[0]置為1,InTurm 置為0,如果此時PI不想進入臨界區,則InCS[1 -i]為0,那么進程P0立即進入臨界區;這時,假設P1要求進入臨界區,通過測試循環條件InCS[0] &&InTurn==1為真,從而P1等待,當P0退出后,循環條件為假,P1可以進入臨界區。
再如,P0和P1兩個進程幾乎同時想進入臨界區。都將InCS[i]置為1, InTurn 置為對應的進程下標。最后的InTum的值應該是兩個進程稍慢的那個進程設置的值。設P0稍快了點,P1 稍慢了點,那么最后 InTum的值是1。然后執行判斷,InCS[i]都為 1,關鍵看InTurm==i,由於InTurm是1,P1的循環條件是真的,於是P1循環等待,而P0的循環條件是假的,P0可以立即進入臨界區。
- PV操作
可用資源的個數s:s>0:有s個資源可用;s=0:資源剛好分配完;s<0:還需|s|個資源。
P操作(原語操作):執行時不能夠被中斷。進入前
void P (Semaphore s) {
s-- ;
if(s<0)
wait(s); //進程調用wait判斷有無資源,若無則進行自我封鎖,轉入等待狀態
}
V操作(原語操作):執行時不能夠被中斷。離開后
void V (Semaphore s) {
s++ ;
if(s<=0)
Revoke(s); //該進程擔負起喚醒在信號量s上: 等待的進程(需要s個資源)
}
互斥
假定一個閱覽室可供50個人同時閱讀。讀者進入和離開閱覽室時都必須在閱覽室入口處的一個登記表上登記,閱覽室有50個座位,規定每次只允許一個人登記或注銷登記。請寫出能使實現讀者進程的wait、signal操作和信號量的程序。(10分) 。





同步





- 管程
11.1 基本思路:
將分散在各個進程中的臨界區集中起來進⾏統一管理和控制,並將系統中的共享資源⽤數據結構抽象地描述出來。
11.2 特性
①互斥性:任意時刻,只有一個進程可以管理;
②安全性:管中內部變量只能由管程方法訪問;
③共享性:define方法可被進或管調用。
10.3 官程的一般結構:
struct Monitor{ 管程內部的變量說明:
condition 條件變量列表;
define 函數或方法;
use 函數或方法;
void 函數名(){}
……
void init(){
對管程中的局部變量進行初始化;}};

- 漢森Hansen
Wait():等待,進程由於自身原因不能運行,進入阻塞態,放開管程。
Signal():發信號,喚醒相應條件變量上的等待進程隊列中的一個進程,進入管程。
Check():檢查,若管程可用,進程進入管程,管程關閉;若管程不可用,進程進入等待調用狀態。
Relaease():釋放,若無進程進入管程且不處於阻塞態的進程,喚醒一個等待調用狀態的進程或開放管程(無等待狀態的進程)。


- 進程通信(進程的高級通信)的三種方式
①管道文件通信方式:連接兩個命令地一個打開文件(寫入數據、讀出數據)。
②共享存儲器方式:在內存區域開辟一個共享存儲區。
③消息傳遞方式:以消息為單位在各個進程之間進行信息交換。
- 死鎖
14.1 產生原因
根本:資源匱乏
①資源分配策略不當; ②進程推進順序不當; ③進程對資源的使⽤要求。
14.2 產生的四個必要條件(缺一不可)
①互斥;②占有且申請資源;③不可搶奪式分配;④循環等待。
14.3 防止
①資源的按序分配;②資源的靜態分配;③可搶奪式分配。
進程數m 資源類n 一定不會死鎖的資源數m*(n-1)+1
14.4 死鎖的避免和銀行家算法
①安全狀態:安全狀態一定不是死鎖狀態;
②不安全狀態:不安全狀態不一定是死鎖狀態;
③死鎖狀態:死鎖狀態一定是不安全狀態。
14.5 死鎖的檢測與解除
例題:
2-1: 設有兩道作業,一道單純計算11分鍾,另一道先計算3分鍾,再打印6分鍾。
答:
在單道中,順序運行,執行總時間是11+(3+6)=20 (分鍾),
在多道中,並行工作,執行總時間是3+11=14 (分鍾)。
2-2: 現有兩道作業同時執行,一道以計算為主,一道以I/O操作為主,先調度哪個?
答:處理器可與外部設備並行工作。應先調度I/O型的作業進程,賦予更高的優先級,可提高系統資源的使用效率。
因為先調度運行I/O型的作業進程,利用CPU進行運算,完成后讓出CPU處理器,進行輸入輸出處理,此時可調度運行計算型作業進程,這樣做到CPU與外部設備並行工作,提高了資源利用率。
2-3:有一台計算機,配置有1MB主存,操作系統占用200KB,每個用戶進程各占用200KB,如果用戶進程等待I/O的時間為70%,
若增加1MB主存,則CPU的利用率提高多少?
再增加1MB主存,則CPU的利用率提高多少?
答:
①1MB主存,除了操作系統占用的200KB,則其余的800KB主存可以容納4個用戶進程。只有4個進程都同時等待時, CPU才是空閑的,那么CPU的利用率是1-(0.7)4=0.7599 ≈0.76;
②若再增加1MB主存,則主存中的用戶進程共4+5=9個, CPU的利用率是1-(0.7)9 ≈0.96,那么CPU的利用率提高了(0.96-0.76)/0.76* 100% ≈26%。
③若再增加1MB主存,則CPU的利用率是1-(0.7)14 ≈0.99, CPU的利用率提高了(0.99-0.76)/0.76*100% ≈30%。
2-10:有兩個進程P和Q,共享兩個資源RI (輸入機)和R2 (打印機)采用pV操作實現請求和歸還后,可能會發生死鎖嗎?
答:設計兩個信號量S1、S2,分別代表RI和R2資源。
2-11:假設當前系統有12個資源,3個進程,當前的資源分配如下:
| 進程 |
已占有資源數 |
最大資源需求 |
還需資源數 |
| P1 |
2 |
4 |
2 |
| P2 |
2 |
9 |
7 |
| P3 |
5 |
10 |
5 |
| 剩余資源數 |
3 |
||
系統還剩3個資源,可滿足進程P1,P1運行結束,釋放的5個(2+3)資源能滿足進程P3,P3結束后,系統有10個資源,可滿足進程P2,每個進程都能夠完成,系統處於安全狀態。
2-12:假設這時進程P2申請一個資源, 能否分配?先看假設分配后的資源分配情況如下:
| 進程 |
已占有資源數 |
最大資源需求 |
還需資源數 |
| P1 |
2 |
4 |
2 |
| P2 |
3 |
9 |
6 |
| P3 |
5 |
10 |
5 |
| 剩余資源數 |
2 |
||
系統還剩2個資源,只能滿足P1進程的最大需求,假設分配給進程p1,當進程P1完成歸還資源后,系統有4個可用資源,但這4個可用資源已經不能滿足進程P2和P3任一個進程的最大需求,所以此時系統處於不安全狀態。因此,這時進程P2申請一個資源不能夠分配,進程P2必須等待。

第三章 存儲管理

- 存儲器的層次(分類)
高速緩沖存儲器(緩存)
主存儲器(主存/內存)
外存儲器(外存/輔存)
- 地址重定位(概念、區別)選擇題
靜態重定位:
①程序運⾏前一次性完成;②簡單易實現;③程序運⾏快;
④程序在內存中連續存放;⑤不可移動。
動態重定位:
①程序運⾏前部分完成;②需要硬件⽀持;③程序運⾏慢;
④支持連續存放和離散存放;⑤可移動。
- 存儲管理的功能

- 常用的可變分區管理中的分配方式(了解+做題)
解答題:介紹四種算法的優缺點,例題樣板。
①最先適應FF
按空閑區起始地址大小遞增規則排列。總是從表頭開始順序查找。
優點:總是從低地址開始查找,保留了高地址空閑區,有利於大作業的裝入;
在低地址分配較均衡,釋放分區時可以合並相鄰的空閑分區。
缺點:查找工作耗時,影響了系統效率。
②最佳適應BF
以容量大小遞增的順序排列,尋找到的空閑區是最佳的。
優點:相對於FF降低了工作量;≥工作要求的空閑區總能被找到;保留了較大的空閑區。
缺點:往往不存在≥工作要求的空閑區,非常小的空閑區不被利用,稱為“外部碎片”。
③最壞適應WF (總是找一個空閑區,大小與工作要求相差最大)
空閑區鏈表的表目按照空閑區大小遞減的順序排列。
優點:空閑區分配時分割產生的新的空閑區不至於太小,一般仍可以分配使用。
缺點:總是分配大的空閑區,無空閑區留給大的作業。
④下次適應NF
從空閑區鏈表中上次查找結束處開始順序查找鏈表,找到第一個滿足要求的。
優點:不會導致小的空閑區集中,使主存空間的利用更加均衡。
缺點:查找工作耗時,影響了系統效率。


- 簡單分頁存儲管理(一次性裝入,離散分配)

地址轉換(計算題、解答題5分)
例3-4:在簡單分頁存儲管理中,邏輯地址長度為16位,頁面大小為4096字節,現有一邏輯地址為2A43H,試問該邏輯地址的頁號以及頁內偏移為多少?

2:0010;A:1010;4:0100;3:0011;H
解答:頁面大小為4096=212字節,可以確定在16位邏輯地址位中,低12位表示頁內偏移,高4位表示頁號,所以邏輯地址2A43H在頁號為2的頁面中,且月內偏移為A43H。
例3-5:系統提供24位虛擬地址空間主存為 218B,采用簡單分頁存儲管理,頁面尺寸為1KB。現有邏輯地址為AB6868H,該頁面分得塊號為40H,試說明如何得到相應的物理地址。
物理地址=塊號*塊長+頁內偏移
解答:1KB = 1024字節 = 210,A:1010;B:1011;6:0110;8:1000;H
由頁面尺寸為1KB確定邏輯地址的低10位表示頁內偏移,高14位表示頁號,所以邏輯地址AB6868H中頁內偏移為00 0110 1000(B68的低10位)。有218/210=256個塊,塊號40H= 0100 0000=64沒有超出上存頁號范圍,且頁內偏移00 0110 1000沒有超出頁面尺寸大小,所以物理地址可以由塊號40H代替頁號得來: 01 0000 0000 0110 1000共18位。

例3-6:在簡單分頁存儲管理中,假設頁表全部存放在主存中,
①若一次訪問主存需要120μs,問訪問一個數據的時間是多少?
②如果增加一個快表,快表的開銷是20μs,快表的命中率是80%,訪問一個數據的時間又為多少?
解答:
①240μs;因為采用主存中頁表進行地址轉換,必須訪問兩次主存(頁表和內存)。
②分情況討論:A. 快表中找到,命中率為80%。B. 頁表中找到,命中率20%。
所以,時間為(120+20)*80%+(120+120+20)*20%=174μs。
- 多級分頁的特點
- 簡單分段存儲管理(含義+解題)
分段存儲管理的地址結構示意圖
| 段號 |
段內偏移 |
- 頁面置換算法
①最佳置換算法OPT
理想的,無法實現。作為衡量其他置換算法效率的標准。
調入頁面前先淘汰,淘汰以后不再訪問或距離現在最長時間后再訪問的頁面。
②先進先出置換算法FIFO
淘汰最先進入主存的頁面。運行規律不適應,效率不高。
將頁面先后排成一個隊列,設置替換指針指向最早進入主存的頁面,當發生缺頁中斷時,淘汰指針指向的頁面。
③最近最久未使用算法LRU
淘汰最久未使用(第一次訪問時間距當前時間間隔最長)的頁面。
- 計時法:被訪問的頁面,時間計數器為0;不被訪問的頁面,時間計數器+1;置換出數值最高的。
B. 堆棧法:棧頂為當前訪問,棧底為最久未訪問。
④二次機會置換算法SC(略)
⑤最近未用置換算法NRU(略)
⑥時鍾算法Clock
采用環形鏈表,指針指向最早進入主存的頁面,移動指針來查找滿足條件的頁面。
首先檢測指針指向的頁面,
若它的訪問位為0(在主存時間長且未被訪問),則淘汰,將新調入的頁面插入此位置,並將指針前進一個位置;
若它的訪問位為1(在主存時間長且被訪問過),則清除為0,並將指針前進一個位置,重復,直到找到訪問位為0的頁面為止。
- “抖動”現象(填空題):剛置換出,又裝入內存塊(內存塊數分配太少)
- Belady現象:出現在先進先出算法,即若對一個進程未分配它所要求的全部頁面,有時就會出現分配的頁面數增多但缺頁率反而提高的異常現象。
- 缺頁中斷率分析
①⻚⾯⼤⼩的選擇:頁面尺寸越大,缺頁中斷率越低。(尺寸0.5~4KB)
②分配給作業的主存塊數 :主存塊數越多,缺頁中斷率越低。
③⻚⾯置換算法的選取 :FIFO > CLOCK > LRU > OPT
④程序的局部性:局部性越高,缺頁中斷率越低。
———————————————————————————————————————
例:現有作業的頁面訪問序列為:6,7,6,5,9,6,8,9,7,6,9,6,系統分配3個主存塊,試分別用OPT、FIFO、LRU必考和CLOCK算法計算缺頁中斷次數和缺頁中斷率。
解答:采用表格描述頁面置換過程(缺頁中斷:要訪問的頁面不在主存內,打√)
①OPT最佳:(淘汰最長時間才訪問的)
| 6 |
6 |
6 |
6 |
6 |
6 |
8,6距離遠 |
8 |
8 |
6,8距離遠 |
6 |
6 |
|
|
7 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
|
|
|
6 |
5 |
9,5不再訪問 |
9 |
9 |
9 |
9 |
9 |
9 |
9 |
| √ |
√ |
|
√ |
√ |
|
√ |
|
|
√ |
|
|
中斷次數=6次,缺頁中斷率為6/12=50%
②FIFO先進先出:
| 6 |
6 |
6 |
6 |
7 |
5 |
9 |
9 |
6 |
6 |
8 |
7 |
|
|
7* |
7 |
7 |
5 |
9 |
6 |
6 |
8 |
8 |
7 |
9 |
|
|
|
|
5* |
9 |
6 |
8* |
8* |
7 |
7 |
9* |
6 |
|
|
√ |
|
√ |
√ |
√ |
√ |
|
√ |
|
√ |
√ |
中斷次數=9次,缺頁中斷率為9/12=75%
③LRU最近最久未使用:(剛進的放頂部)
| 6 |
7 |
6 |
5 |
9 |
6 |
8 |
9 |
7 |
6 |
9 |
6 |
|
|
6 |
7 |
6 |
5 |
9 |
6 |
8 |
9 |
7 |
6 |
9 |
|
|
|
|
7 |
6 |
5 |
9 |
6 |
8 |
9 |
7 |
7 |
| √ |
√ |
|
√ |
√ |
|
√ |
|
√ |
√ |
|
|
中斷次數=7次,缺頁中斷率為7/12≈58.3%
④CLOCK:
| 6* |
6* |
6* |
6* |
9* |
9* |
9* |
9* |
7* |
7* |
7* |
7* |
|
|
7* |
7* |
7* |
7 |
6* |
6* |
6* |
6 |
6* |
6 |
6* |
|
|
|
|
5* |
5 |
5 |
8* |
8* |
8 |
8 |
9* |
9* |
| √ |
√ |
|
√ |
√ |
√ |
√ |
|
√ |
|
√ |
|
中斷次數=8次,缺頁中斷率為8/12≈66.7%
OPT最好,FIFO最差,LRU和CLOCK接近。
———————————————————————————————————————
習題15:(必考:判斷是否越界,段內偏移是否超過段長)
某段式存儲管理的系統中為一個作業建立如下段表:計算作業訪問的邏輯地址[0,260]、[1,36]、[2,86]、[3,400]相對應的絕對地址(物理地址)。
| 段號 |
段長 |
段首址 |
| 0 |
300 |
10 |
| 1 |
420 |
400 |
| 2 |
100 |
800 |
| 3 |
560 |
1200 |
| 4 |
980 |
3500 |
習題22:一個進程以下列次序訪問5個頁:A、B、C、D、A、B、E、A、B、C、D、E;假定用FIFO替換算法,在主存器中有3個和4個空閑頁框(塊)的情況下,分別給出頁面替換次數。通過該題的計算,出現了什么現象?(注:本題頁面初始裝入主存也計入缺頁中斷次數)

| 區號 |
起始地址 |
長度 |
占用標志 |
| 1 |
100KB |
100KB |
0 |
| 2 |
200KB |
500KB |
0 |
| 3 |
700KB |
200KB |
0 |
| 4 |
900KB |
300KB |
0 |


第四章 設備管理


- 通道字縮寫
CPU是主設備,通道是從設備。
CCW通道命令字:組成通道程序,每一條CCW規定了外部設備的一個操作。
CAW通道地址字:用來存放通道程序首地址的固定單元。
CSW通道狀態字:用來記錄設備和通道狀態的固定主存單元。
- I/O軟件的分層結構(I/O 中斷請求從上往下,中斷響應從下而上)(順序+名字)
| 用戶級的IO軟件(I/O 系統調用、Spooling 技術) |
| 與設備無關的I/O軟件(接口、設備命名、保護、緩沖、分配、出錯) |
| 設備驅動程序(檢查、轉換、發出、響應、組織) |
| I/O中斷處理程序( 正常結束、異常處理、進程狀態改變) |
| 硬件(執行I/O傳輸) |
- 磁盤驅動調度

訪問一個扇區的時間=尋找時間+延遲時間+傳輸時間

設每個柱面上有n個磁道,每個磁道上有m個扇區:
柱面號=(塊號+1)/ (n*m)+1
磁頭號=(塊號+1)%(n*m)/m
扇區號=(塊號+1)%(n* m)%m
塊號=(柱面號-1)*n*m+(磁頭號1)1m+扇區號-1
- 磁盤移臂調度(尋找時間的最短化)
①先來先服務FCFS
②最短尋找時間優先SSTF
③單向掃描US
④雙向掃描DS
⑤電梯Elevator
例4-4:100個柱面,編號從1開始,移動臂正在處理54,
請求者順序:27,47,36,67,50,70,90,55,81,38。
先來先服務:54→27→47→36→67→50→70→90→55→81→38
移動時間=27+20+11+……
最短尋找時間優先:54→55→50→47→38→36→27→67→70→81→90
移動時間=1+5+3+……
電梯:54→55→67→70→81→90→50→47→38→36→27
移動時間=1+12+……
例4-5:若一個磁盤有100個柱面,請求先后順序:10,22,21,2,40,6,38,67,99,50。
磁頭位於柱面20處,查找移過每個柱面需要5ms。求查找時間以及平均尋道長度。
先來先服務:20,10,22,21,2,40,6,38,67,99,50。
移動時間=10+12+1+……=256;
查找時間:256*5=1280ms;
平均尋道長度:256/10=25.6。
最短尋找時間優先:20,21,22,10,6,2,38,40,50,67,99。
移動時間=1+1+12+……=119
查找時間:119*5=595ms;
平均尋道長度:119/10=11.9。
電梯:20,21,22,38,40,50,67,99,10,6,2。
移動時間=1+1+……=176;
查找時間:176*5=880ms;
平均尋道長度:176/10=17.6。
- 磁盤的旋轉調度(根據延遲時間決定執行順序)
例4-2:設有4個訪問67號柱面的訪問請求者,訪問請求如表
| 訪問次序 |
柱面號 |
磁頭號后 |
扇區號先 |
| A |
67 |
5 |
3 |
| B |
67 |
2 |
6 |
| C |
67 |
5 |
6 |
| D |
67 |
3 |
8 |
解答:經過旋轉調度之后,執行次序變為A、C、D、B,
若約定柱面號定位完成后,
扇區號相同而磁頭號不同時,此項從磁頭號小的優先,則次序為A、B、D、C。
例4-3:設一個移動臂磁盤當前的移動臂正處在第10柱面,有7個請求者等待訪問磁盤,具體請求情況如表,給出最省時間的次序。
| 訪問次序 |
柱面號 |
磁頭號后 |
扇區號先 |
| A |
11 |
8 |
4 |
| B |
9 |
5 |
7 |
| C |
17 |
20 |
7 |
| D |
11 |
4 |
5 |
| E |
22 |
9 |
6 |
| F |
9 |
16 |
3 |
| G |
11 |
12 |
5 |
解答:需要考慮移臂調度和旋轉調度
先進行移臂調度:
若走10→11→9→17→22,則移動距離為1+2+8+5=15;
若走10→9→11→17→22,則移動距離為1+2+6+5=14。(最節省時間)
進行旋轉調度:
柱面9和11需要旋轉調度,(扇區小優先)
第9柱面,先調度請求F,再調度請求B;
第11柱面,先調度請求A,再調度請求D,下一圈再調度G。
最后次序為:F、B、A、D、G、C、E。
- Spooling技術

第五章 文件管理
文件:文件體、文件說明
文件系統:操作系統中負責管理和存取文件信息的軟件機構。
優點:①使用的方便性;②數據的安全性;③接口的統一性。
分類:
①按性質和用途:系統文件、庫文件、用戶文件、臨時文件、檔案文件、永久文件。
②按保護方式:只讀文件、讀寫文件、不保護文件。
③按數據形式:源文件、目標文件、可執行文件。
④按信息流向:輸入文件、輸出文件、輸入輸出文件。
⑤按組織形式:一般文件、目錄文件、特殊文件。

- 單級目錄結構:
整個系統只建立一張目錄表,為每個文件分配一個目錄項(文件名,文件的起始塊號)
設置一個狀態位,表明目錄項是否為空閑。
缺點:①查找速度慢;②不允許重名;③不便於實現文件共享。
二級目錄結構:
為每個用戶建立一個單獨的用戶文件目錄。
再建立一個主文件目錄,每個用戶文件目錄都占有一個目錄項,包括用戶名和指向用戶目錄文件的指針。
優點:①解決了重名問題;②速度提高了;③不同用戶可以使用不同的文件名。
多級目錄結構:
- 物理結構
①順序結構文件

②鏈接結構文件

③索引結構文件

例5-1:設文件為鏈接文件, 由5個邏輯記錄組成,每個邏輯記錄的大小與物理磁盤塊的大小相同,均為512B,並依次存放在60、120、 70、88、56號物理塊中。現若要訪問文件中第1057字節的信息,請問要訪問哪個物理磁盤塊?
解答:1057=512*2+33,要訪問的邏輯字節在第3個邏輯記錄中,則要訪問磁盤塊號70。
例5-2:某文件系統采用索引文件結構,設文件索引表的每個表目占4個字節,存放一個盤塊的塊號,磁盤塊大小為512B。問該文件系統采用直接、二級和三級索引所能管理的最大磁盤空間為多少字節?
解答:首先計算索引表項目的大小:512/4=128 (個)。
直接索引:因為每項對應一個 物理塊,所以能管理的最大磁盤空間=128*512B=64KB。
二級索引:因為是索引的索引,所以能管理的最大磁盤空間=128*128*512B=8192KB。
三級索引:因為是索引的索引的索引,所以能管理的最大磁盤空間=128*128*128*512B
= 1048576KB。
例5-3:有一磁盤組共有10個盤面,每個盤面有100個磁道,每個磁道有16個扇區。
①假定以扇區作為分配單位,若使用位示圖管理磁盤空間,問位示圖要占用多少空間?
②若采用空白文件目錄管理法,現有空閑扇區400個,要使空白文件目錄所占空間與前面位示圖所占空間一致,問空白文件目錄中的表目占用多少空間?
解答:
①磁盤組扇區總數為:10* 100* 16= 16000。
②設每個表目占用的空間為X位,則: 400*X= 16000, X=40 位,即為5字節。
例:5-7:為保證文件系統的安全性,可以采用哪些措施?
答:對文件的保護和保密等措施。
文件保護:
①防止系統故障造成的破壞:采用復制文件副本和定時轉儲的方式。
②防止用戶共享文件時可能造成的破壞:采用屬性文件目錄、存取控制表、規定文件使用權限等。
文件保密:隱藏文件目錄、設置口令和對文件進行加密等方法。
第六章 windows和Linux操作系統
- 管道線和過濾器(命令含義)
可通過寫“管道”操怍符“I”把一個命令的標准輸出連接到另一個命令標准輸入上,如在
ls-1 | wc
中以這種方式連接的兩個命令組成個管道線與下面的表述:
ls -1 > file; wc < file
除了未使用file 之外整體效果上等同。但這兩個進程是用管道連接的而且是並行運行。
管道是單向的,並通過當管道中沒有東西可讀的時候暫停we和當管道滿的時候暫停Is來實
現同步。
過濾器是讀它的標准輸入,以某種方式轉換它,並輸出結果作為輸出的命令。這樣的一一個過
濾器如grep,從它的輸入中選擇出包含指定字符串的那些行。例如,命令)
ls | grep old
打印來自ls 的輸出中包含字符串old的那些行,如果有的話。另一個有用的過濾器是sort。例如,
命令
who| sort
將打印登錄的用戶的按字符排序的一一個列表。
-一個管道線可以由多於兩個的命令組成。例如,命令
ls | grep old|wc-1
打印在當前目錄中的文件名字中包含字符串old的數目。
