四、簡答題 (本大題共5小題,每題4分,共20分)
56、簡述操作系統(tǒng)在什么時候創(chuàng)建進程?操作系統(tǒng)如何創(chuàng)建一個進程?
答:操作系統(tǒng)通常在下列情況創(chuàng)建新進程:用戶登錄、作業(yè)調(diào)度、提供服務(wù)和應(yīng)用請求。
操作系統(tǒng)正常工作后,系統(tǒng)中的已有進程在執(zhí)行過程中可以通過系統(tǒng)調(diào)用創(chuàng)建新進程。
57、簡述進程有哪些基本狀態(tài)?并畫出進程狀態(tài)轉(zhuǎn)換圖。
答:進程有三種基本的狀態(tài),分別是:
、倬途w態(tài)。進程獲得CPU就可以運行的狀態(tài)。
、趫(zhí)行態(tài)。進程獲得CPU后正在運行的狀態(tài)。
③阻塞態(tài)。進程由于等待資源或某個事件的發(fā)生而暫停執(zhí)行的狀態(tài)。
進程狀態(tài)轉(zhuǎn)換圖如下圖所示:
58、簡述多道批處理系統(tǒng)的特點。
答:多道批處理系統(tǒng)的特點如下:
(1)多道性。在內(nèi)存中可同時駐留多道程序。
(2)無序性。多個作業(yè)完成的先后的順序與它們進入內(nèi)存的順序之間沒有嚴(yán)格的對應(yīng)關(guān)系,先進入內(nèi)存的作業(yè)不一定先被調(diào)度。
(3)調(diào)度性。多道程序系統(tǒng)必須具有作業(yè)調(diào)度和進程調(diào)度功能。作業(yè)調(diào)度用來從后備作業(yè)隊列中選擇一個或多個要被裝入內(nèi)存的作業(yè)。進程調(diào)度程序用來從內(nèi)存中選擇一個或多個進程,使其在CPU上運行。
(4)復(fù)雜性。多道程序系統(tǒng)中的作業(yè)并發(fā)執(zhí)行。
59、簡述內(nèi)存管理的主要功能。
答:內(nèi)存管理具有內(nèi)存分配、內(nèi)存保護、地址映射和內(nèi)存擴充功能。內(nèi)存分配主要任務(wù)是為每道程序分配內(nèi)存空間。內(nèi)存保護一是使操作系統(tǒng)內(nèi)核的空間不會被用戶隨意訪問,以保證系統(tǒng)的安全和穩(wěn)定;二是確保每道用戶程序都在自己的內(nèi)存空間中運行,互不干擾。CPU執(zhí)行程序過程中訪問內(nèi)存時,需要把程序的邏輯地址轉(zhuǎn)變?yōu)槲锢淼刂罚@個轉(zhuǎn)換的過程稱為地址映射。內(nèi)存擴充是借助于虛擬存儲技術(shù),從邏輯上擴充內(nèi)存容量,使系統(tǒng)能夠向用戶提供比物理內(nèi)存大的存儲容量。
60、簡述調(diào)用創(chuàng)建新進程的系統(tǒng)調(diào)用來創(chuàng)建進程的一般步驟。
答:調(diào)用創(chuàng)建新進程的系統(tǒng)調(diào)用來創(chuàng)建進程的一般步驟:
(1)申請空白PCB。
(2)為新進程分配資源。
(3)初始化進程控制塊。
(4)將新進程插入就緒隊列。
五、綜合題(本大題共1小題,每題10分,共10分)
61、有兩個進程P1、P2,其中P1負(fù)責(zé)將文件記錄從磁盤讀入主存的緩沖區(qū),P1每執(zhí)行一次讀一個記錄;P2負(fù)責(zé)將緩沖區(qū)的內(nèi)容打印出來,P2每執(zhí)行一次打印一個記錄。緩沖區(qū)的大小與一個記錄的大小相等。使用記錄型信號量機制Wait(s)和Signal(s)操作來實現(xiàn)文件的正確打印,請寫出同步代碼。
答:為緩沖區(qū)設(shè)置互斥信號量mutex,設(shè)置資源信號量empty和full。設(shè)3個信號量的初始值分別為1,1,0。同步代碼如下:
P1
{
從文件中讀一條記錄;
Wait(empty);
Wait(mutex);
將數(shù)據(jù)寫入緩沖區(qū);
Signal(mutex);
Signal(full);
}
P2
{
Wait(full);
Wait(mutex);
從緩沖區(qū)中讀一條記錄;
Signal(mutex);
Signal(empty);
打印數(shù)據(jù);