《級《實用操作系統(tǒng)》》由會員分享,可在線閱讀,更多相關(guān)《級《實用操作系統(tǒng)》(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、北京信息科技大學(xué)
信息管理學(xué)院
2013-2014 (2)期末考試試卷(A卷)
課程名稱:
《實用操作系統(tǒng)》
考試日期:
2014年7月2日
考試時間:
考試地點:
考試形式:
(閉卷)
班級:
學(xué)號:
姓名:
成績:
題號
-一-
-二二
三
四
五
六
總分
得分
教師簽字
」、判斷題(本題滿分10分,每題1分,共含10道小題。)
(填答案處,答案不填在此處不給分。正確 ,錯誤)
[1]
[2]
[3]
[4]
[5]
⑹
[7]
[8]
[
2、9]
[10]
1. 創(chuàng)建進程時,需要在內(nèi)存中建立程序副本。
2. 操作系統(tǒng)通過PCB記錄文件在磁盤上的存儲位置。
3. 操作系統(tǒng)的內(nèi)核通常運行在核心態(tài),用戶程序在用戶態(tài)下運行。
4. 現(xiàn)代操作系統(tǒng),阻塞、掛起、排隊,都是針對線程的的,而不是針對整個進程的。
5. 在解決互斥問題時,V操作用于請求一個資源,P操作用于釋放一個資源。
6. 在頁式存儲管理機制下,操作系統(tǒng)為一個進程分配的內(nèi)存通常是連續(xù)的。
7. 在虛擬存儲器技術(shù)下,操作系統(tǒng)會將一部分程序頁面調(diào)入內(nèi)存(稱為主存) ,而在硬盤
上開辟一個空間(稱為輔存)存放剩余的頁面。
3、8. 在虛擬存儲管理中,可變分配、局部置換的置換策略是:當(dāng)某進程待訪問的頁面不在 主存,如果需要將主存中的某頁置換到輔存時,可以在主存中選擇任意進程的頁換出。
9. 操作系統(tǒng)安排文件向磁盤上存儲時,連續(xù)的文件塊可能被存儲在磁盤上不連續(xù)的磁盤 物理塊中。
10. 信號量初值可以為負值。
二、填空題(本題滿分10分,每空1分,共含10道小題)
(填答案處,答案不填在此處不給分)
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
P
V
阻塞態(tài)
IP
DMA
裝入內(nèi) 存
被執(zhí)行
10
2
頁表
1. 為了實
4、現(xiàn)互斥,程序中的臨界區(qū)需要使用 [1]函數(shù)和 [2]函數(shù)在兩端進行控制。
2. 如果操作系統(tǒng)在運行某個進程時發(fā)現(xiàn)該進程申請訪問一個已被占用的外設(shè)資源時,會
阻塞該進程,把該進程的狀態(tài)由運行態(tài)改為 [3]。
3. CPU中負責(zé)指明下一跳待執(zhí)行指令的寄存器是 [4]。
4. 不經(jīng)過CPU而直接在外部設(shè)備與內(nèi)存之間進行數(shù)據(jù)傳輸?shù)哪J?,被稱為 [5]訪問模
式。
5. 靜態(tài)地址重定向是在程序 [6] 的時候進行的,動態(tài)地址重定向是在程序指令 [7]
的時候進行的。
6. UNIX System V系統(tǒng)采用混合分配方式記錄文件在磁盤上的位置。其文件目錄表中的索
引節(jié)點能直接索引 [8]
5、個磁盤塊。
7. 在一級頁式存儲管理方案中,為了獲得一條指令或數(shù)據(jù),需要訪問內(nèi)存 [9]次。第
一次訪問 [10],第二次訪問指令或數(shù)據(jù)所在的內(nèi)存。
三、單項選擇題(本題滿分10分,每題1分,共含10道小題)
(填答案處,答案不填在此處不給分)
1
2
3
4
5
6
7
8
9
10
C
A
C
D
A
A
C
B
B
D
1.
O
2.
3.
4.
5.
在內(nèi)存管理中,邏輯頁號與物理頁號的映射關(guān)系存儲在
A.鏈表中 B.內(nèi)存分配表中
C.頁表中 D.索引表中
原語最為完成一定功能的程序,它與一般程序的區(qū)別在于
6、
A.程序中的所有操作必須一次執(zhí)行完成
C.原語在執(zhí)行中可以被中斷 在內(nèi)存管理的方案中,內(nèi)存塊的大小
A.不能大于程序頁的大小
C.需要等于程序頁的大小 時間片輪轉(zhuǎn)算法(RR),是
A. 一種磁盤尋道算法
C. 一種阻塞隊列排隊算法 在計算機主板中,網(wǎng)絡(luò)、
A.設(shè)計在南橋芯片中
B.
D.
B.
D.
B.
O
程序中的所有操作應(yīng)該可以被回朔 核心態(tài)的程序都必須用原語實現(xiàn)
需要大于程序頁的大小 不能等于程序頁的大小
一種內(nèi)存剩余空間計算方法
一種進程調(diào)度算法
USB硬盤等接口控制器通常 。
B.設(shè)計在北橋芯片中
D.
C.設(shè)計為獨立電路芯片組中 D
7、.設(shè)計在中斷控制器中
6.
在虛擬存儲管理中,可變分配、局部置換的置換策略是:當(dāng)某進程待訪問的頁面不在 主存,如果需要將主存中的某頁置換到輔存時, 。
A.需要在該進程占用的主存中選擇置換頁 B.該進程占用的主存大小不可變
7.
8.
9.
C.可以在主存中選擇任意進程的頁換出 下面哪個函數(shù)完成 V ()函數(shù)的功能
A. CreateSemaphore ()
C. ReleaseSemaphore()
對于記錄型信號量,在執(zhí)行一次
A.不變
C.減1
將一個程序創(chuàng)建為進程,需要
A.為該進程分配磁盤空間
C.擴大可用的內(nèi)存容量
D.該進程占用的輔存大小不可變
8、B. WaitForSingleObject ()
D. CloseHandle()
V操作時,信號量的值應(yīng)當(dāng)
B.加1
D.加指定數(shù)值
B.
D.
10.
為了對4G內(nèi)存空間的計算機尋址,需要設(shè)計
B. 20位的地址總線。
D. 32位的地址總線。
A. 16位的地址總線。
C. 24位的地址總線。
四、計算題(本題滿分24分,每題8分,共含3小題)
1. (本題8分)設(shè)頁式存儲管理系統(tǒng)在 2GB大小的內(nèi)存管理中,內(nèi)存塊大小設(shè)定為 8K。
(1) 試寫出地址結(jié)構(gòu)格式(頁號尋址位數(shù)、頁內(nèi)尋址位數(shù)) 。(2分)
(2) 若某進程大小為40K,該進程應(yīng)被分為多少
9、頁(2分)
(3) 若該進程被分配到第 3115塊開始的連續(xù)內(nèi)存塊中,試畫出頁表( 4分)
解:
(1) 31 = 18 + 13
(2) 5
(3) 0 - 3115、1-3116、2-3117、3-4118、4-3119
2. (本題8分)假設(shè)操作系統(tǒng)當(dāng)前對 25個并行運行的進程進行調(diào)度。每個進程分配的時間 片為20ms,操作系統(tǒng)每次進行進程切換時需要耗費。
(1) 試計算操作系統(tǒng)在此場景下為調(diào)度 CPU完成多進程并行切換所花費的時間占系 統(tǒng)整個時間的比例。(4分)
(2) 試根據(jù)計算結(jié)果描述多進程并行運行的代價是什么。 (4分)
解:
(1) / ( 20 + = %
10、
(2) 有%的CPU時間消耗在進程切換調(diào)度控制上。
3. (本題8分)在UNIX操作系統(tǒng)采用的索引節(jié)點方式記錄文件在磁盤的存儲位置方法中, 每個索引節(jié)點有13個地址項。其中前10個地址項用于直接尋址, 后3個為間接尋址的索
引塊指針。假如盤塊的大小為 4K,試計算:
(1) 直接索引尋址最大支持的多大的文件( 2分)
(2) 一級間接索引尋址最大支持的多大的文件( 3分)
(3) 二級間接索引尋址最大支持的多大的文件( 3分)
解:
(1) 4KB
(2) 4K x 4K + 4K = 16MB + 4K
(3) 4K x 4K x 4K + 4K x 4K + 4K =
11、 64Gb + 16MB + 4K
五、應(yīng)用題(本題滿分46分,共含6小題)
1.
(本題6分)進程控制塊PCB是操作系統(tǒng)進行進程管理和內(nèi)存管理中的重要數(shù)據(jù)結(jié)構(gòu)。
試
(1)
寫出進程控制塊中記錄的主要內(nèi)容。
(2分)
(2)
描述進程控制塊在進程管理中的作用。
(2分)
(3)
描述進程控制塊在內(nèi)存管理中的作用。
(2分)
解:
(1) 進程名等基本信息、狀態(tài)、頁表基址、斷點和現(xiàn)場 ……指針。
(2) 感知進程的狀態(tài)、暫存斷點和現(xiàn)場、動態(tài)地址重定向、隊列等。
(3) 記錄頁表基址,在銷毀進程時釋放所占用的內(nèi)存。
2. (本題6分
12、)設(shè)有5個進程之間有下圖所示的同步關(guān)系。 試在這5個進程中用P ()、V()
函數(shù)控制它們之間的同步。
解:
設(shè)P1對P2的同步控制信號量為 s1、P2對P3的信號量為s2、P2對P4的信號量為S3、P2
對P5的信號量為s4、P3對P4的信號量為S5
Semaphore s1 = s2 = s3 = s4 = s5 = 0;
P1 {…..code??:.V(s1); }
P2 { P(s1);…..code ….V(s2); V(s3); V(s4) }
P3 { P(s2); - --..code …V(s5); }
P4 { P(s3); P(s5);…..c
13、ode ???..}
P5 { P(s4); - --..code ???..}
3. (本題8分)在多用戶并發(fā)訪問情況下,服務(wù)器為每個用戶連接建立一個進程。為了保證 數(shù)據(jù)庫數(shù)據(jù)的一致性,要求對數(shù)據(jù)庫讀寫操作的限制條件是:
(1) 允許任意多的進程對數(shù)據(jù)庫同時讀訪問;
(2) 一次只允許一個寫進程對數(shù)據(jù)庫進行寫訪問;
(3) 如果有一個進程正在進行寫數(shù)據(jù)庫操作,禁止任何讀進程進行讀操作。
試寫出數(shù)據(jù)庫讀進程和寫進程的示意程序代碼,通過信號量和 P、V函數(shù)實現(xiàn)上述讀寫限
制。
解:
參見教材P83讀者-寫者問題
4. (本題8分)假設(shè)操作系統(tǒng)提供 Create ()、Read
14、 ()、Write ()、Close ()等API函數(shù), 使用戶態(tài)下的用戶程序通過這些 API函數(shù)訪問外部設(shè)備。
(1) 請畫圖并描述操作系統(tǒng)如何進行設(shè)備訪問控制,避免外部設(shè)備訪問沖突的( 4
分)
(2) 請畫圖并描述操作系統(tǒng)如何使用虛擬設(shè)備技術(shù)( SPOOLing提高設(shè)備訪問效率 的。(4分)
解:
(1)
BIOS在創(chuàng)建操作系統(tǒng)進程時將操作系統(tǒng)設(shè)置為核心態(tài),使操作系統(tǒng)可以直接訪問硬件。操 作系統(tǒng)將各個IO驅(qū)動程序設(shè)置為核心態(tài)。在創(chuàng)建應(yīng)用程序進程時,將所有用戶進程設(shè)置為 用戶態(tài)。
由于CPU拒絕執(zhí)行用戶態(tài)進程中訪問 IO的指令和調(diào)用核心態(tài)進程的指令, 用戶進程不能夠
15、
直接訪問外設(shè)或調(diào)用外設(shè)驅(qū)動程序,只能通過調(diào)用操作系統(tǒng)提供的 API函數(shù)訪問外設(shè)。
用戶進程訪問外設(shè)時,需要使用 create () API函數(shù)向操作系統(tǒng)的設(shè)備管理進程申請,獲得
設(shè)備訪問句柄后才能繼續(xù)調(diào)用 write ()或read () API函數(shù)來訪問外設(shè)。
當(dāng)用戶進程申請訪問某個外設(shè),而該外設(shè)正被其它進程占用時,操作系統(tǒng)的設(shè)備管理進程 就會阻塞該進程,直到外設(shè)被其它進程釋放。因此,避免了進程間外部設(shè)備的訪問沖突。
(2)
采用虛擬設(shè)備技術(shù)(SPOOLing的操作系統(tǒng),一旦有用戶進程申請訪問某個外設(shè), 操作系統(tǒng)
設(shè)備管理進程就創(chuàng)建一個 SP線程來虛擬要訪問的外部設(shè)備。用戶
16、進程將把訪問外設(shè)的任務(wù) 交給SP線程來完成。
SP線程將執(zhí)行外設(shè)申請、外設(shè)訪問的操作。如果外設(shè)被其它進程占用,操作系統(tǒng)將阻塞 SP
線程,而不是用戶進程。這種外設(shè)訪問的模式可以大大提高外設(shè)訪問和用戶進程的執(zhí)行效 率。
5. (本題8分)某針對4G內(nèi)存空間的操作系統(tǒng)采用一級頁式存儲管理方案, 設(shè)計內(nèi)存塊(頁)
的大小為8K。
(1) 試畫出該操作系統(tǒng)劃分頁面的地址空間( 2分)
(2) 設(shè)一個需要 32K內(nèi)存規(guī)模的進程,被連續(xù)存放在 34821、34822、34823、34824
內(nèi)存塊中。試畫出內(nèi)存分配后操作系統(tǒng)創(chuàng)建的頁表。 (2分)
(3) 試畫出實現(xiàn)動態(tài)地址重定向的方案示意
17、圖。 (要求在畫出各步地址計算、 傳輸?shù)?
位數(shù),畫出CPU中的基址寄存器)。(2分)
(4) 試說明CPU中的基址寄存器在動態(tài)地址重定向中的作用。 (2分)
(本題可以考試后再學(xué)習(xí)。關(guān)于內(nèi)存管理的復(fù)習(xí)請參考本章的習(xí)題)
6. (本題10分)閱讀下列程序,
(1)請對程序中各條語句的功能進行注釋。 (6分)
HANDLE hHon k1,hHo nk2;
HANDLE hHo nkSemaphore;
DWORD threadID;
//開辟線程1和線程2的句柄變量。
//開辟信號量句柄變量。
//開辟線程編號變量 threadID。
void Hon k1Thread(
18、)
{
WaitForSingleObject(hHonkSemaphore,INFINITE); // 注釋:P 函數(shù),如果有其它線程正在播
放音樂,阻塞本進程。
prin tf("\n Thread1 is work ing \n ”);
mciSendString("play C:\\",NULL,O,NULL); // 注釋:調(diào)用 API 函數(shù)播放一個音樂。 MessageBox(NULL,"Press any key to stop music ","music window",0);
//注釋:彈出提示窗口,等待用戶按任意
鍵繼續(xù)執(zhí)行后面的指令。
mciSendSt
19、ring("close C:\\",NULL,0,NULL); // 注釋: 關(guān)閉音樂播放 ReleaseSemaphore(hHonkSemaphore,1,NULL); // 注釋: V 函數(shù),如果有其它線程被阻塞,
喚醒該線程程。 (如果 hHonkSemaphore 信號量的阻塞隊列中有被阻塞的線程或 進程,喚醒頭一個線程或進程)
}
void Honk2Thread() { WaitForSingleObject(hHonkSemaphore,INFINITE); // 注釋: P 函數(shù),如果有其它線程正在播
放音樂,阻塞本進程。
printf("\n Thread2 is
20、 working \n"); mciSendString("play C:\\",NULL,0,NULL); MessageBox(NULL,"Press any key to stop music ","music window",0); mciSendString("close C:\\",NULL,0,NULL);
ReleaseSemaphore(hHonkSemaphore,1,NULL); // 注釋: V 函數(shù),如果有其它線程被阻塞,
喚醒該線程程。
}
void main(void) { hHonkSemaphore = CreateSemaphore(NULL, 1,
21、 1, "honkSemaphore");
// 注釋: 創(chuàng)建信號量 honkSemaphore ,初 值為 1,用于線程 1 和線程 2 的 互斥。
hHonk1=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Honk1Thread, 0, 0, &threadID); // 注釋: 創(chuàng)建線程 1
hHonk2=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Honk2Thread, 0, 0, &threadID); // 注釋: 創(chuàng)建線程 2
MessageBox(NULL,"Press Enter to stop Main Function","Main window",0); CloseHandle(hHonk1); // 注釋: 關(guān)閉線程 1
CloseHandle(hHonk2); // 注釋: 關(guān)閉線程 2
}
(2)描述下列程序的用途和運行方式。 (4 分) 本程序創(chuàng)建兩個播放音樂的線程,由這兩個線程分別播放音樂。 該程序設(shè)置兩個線程處于互斥的運行方式。