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