操作系統(tǒng)自考復(fù)習(xí)重點(diǎn)_第1頁
操作系統(tǒng)自考復(fù)習(xí)重點(diǎn)_第2頁
操作系統(tǒng)自考復(fù)習(xí)重點(diǎn)_第3頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、一、操作系統(tǒng)概述習(xí)題及解答 :1. 硬件將處理機(jī)劃分為兩種狀態(tài),即管態(tài)和目態(tài),這樣做給操作系統(tǒng)設(shè)計(jì)帶來什么好處?答:便于設(shè)計(jì)安全可靠的操作系統(tǒng)。管態(tài)和目態(tài)是計(jì)算機(jī)硬件為保護(hù)操作系統(tǒng)免受用戶程序的干擾和破壞而引入的兩種狀態(tài)。通常操作系統(tǒng)在管態(tài)下運(yùn)行,可以執(zhí)行所有機(jī)器指令;而用戶程序在目態(tài)下運(yùn)行,只能執(zhí)行非特權(quán)指令。如果用戶程序企圖在目態(tài)下執(zhí)行特權(quán)指令, 將會引起保護(hù)性中斷,由操作系統(tǒng)終止該程序的執(zhí)行,從而保護(hù)了操作系統(tǒng)。2. 何謂特權(quán)指令?舉例說明之。如果允許用戶進(jìn)程執(zhí)行特權(quán)指令會帶來什么后果?答:在現(xiàn)代計(jì)算機(jī)中,一般都提供一些專門供操作系統(tǒng)使用的特殊指令,這些指令只能在管態(tài)執(zhí)行,稱為特權(quán)指令。

2、這些指令包括:停機(jī)指令、置PSW旨令、中斷操作指令(開中斷、關(guān)中斷、屏蔽中斷)、輸入輸出指令等。用戶程序不能執(zhí)行這些特權(quán)指令。如果允許用戶程 序執(zhí)行特權(quán)指令,有可能干擾操作系統(tǒng)的正常運(yùn)行,甚至有可能使整個系統(tǒng)崩潰。3 中斷向量在機(jī)器中的存儲位置是由硬件確定的,還是由軟件確定的?答:中斷向量在機(jī)器中的存放位置是由硬件確定的。例如,在INTEL 80x86 CPU中,內(nèi)存空間0x00000 0x003ff為中斷向量空間。4 中斷向量的內(nèi)容是由操作系統(tǒng)程序確定的,還是由用戶程序確定的?答:由操作系統(tǒng)程序確定的。向量的內(nèi)容包括中斷處理程序的入口地址和程序狀態(tài)字(中斷處理程序運(yùn)行環(huán)境),中斷處理程序是由

3、操作系統(tǒng)裝入內(nèi)存的,操作系統(tǒng)將根據(jù)裝入的實(shí)際地址和該中斷處理程序的運(yùn)行環(huán)境來填寫中斷向量。5 .中斷向量內(nèi)的處理機(jī)狀態(tài)位應(yīng)當(dāng)標(biāo)明是管態(tài)還是目態(tài)?為什么?答:應(yīng)當(dāng)標(biāo)明是管態(tài)。這樣才能保證中斷發(fā)生后進(jìn)入操作系統(tǒng)規(guī)定的中斷處理程序。6 .中斷與程序并發(fā)之間的關(guān)系是什么?答:中斷是程序并發(fā)的前提條件。如果沒有中斷,操作系統(tǒng)不能獲得系統(tǒng)控制權(quán),無法按調(diào)度算法對處機(jī)進(jìn)行重新分配,一個程序?qū)⒁恢边\(yùn)行到結(jié)束而不會被打斷。7 .說明“?!焙汀岸选钡牟顒e.答:棧是一塊按后進(jìn)先出規(guī)則訪問的存儲區(qū)域,用來實(shí)現(xiàn)中斷嵌套和子程序調(diào)用的參數(shù)和返回?cái)帱c(diǎn)。堆雖然是一塊存儲區(qū)域,但是對堆的訪問是任意的,沒有后進(jìn)先出的要求,堆主要

4、用來為動態(tài)變量分配存儲空間。&何謂系統(tǒng)棧?何謂用戶棧?系統(tǒng)棧有何用途?用戶棧有何用途?答:系統(tǒng)棧是內(nèi)存中屬于操作系統(tǒng)空間的一塊固定區(qū)域,其主要用途為:(1)保存中斷現(xiàn)場,對于嵌套中斷,被中斷程序的現(xiàn)場信息依次壓入系統(tǒng)棧,中斷返回時逆序彈出;(2)保存操作系統(tǒng)子程序間相互調(diào)用的參數(shù)、返回值、返回點(diǎn)、以及子程序的局部變量。 用戶棧是用戶進(jìn)程空間中的一塊區(qū)域,用于保存用戶進(jìn)程的子程序間相互調(diào)用的參數(shù)、返回值、返回點(diǎn)、 以及子程序的局部變量。9 用戶堆棧段的長度為何無法確定?答:用戶堆棧段的長度主要取決于兩個因素:(1)用戶進(jìn)程(線程)中子程序(函數(shù))之間的嵌套調(diào)用深度;(2)子程序參數(shù)和局部

5、變量的數(shù)量及類型。這些在進(jìn)程(線程)運(yùn)行 前無法確定,由此導(dǎo)致用戶堆棧段的長度無法確定。10 堆棧段的動態(tài)擴(kuò)充為何可能導(dǎo)致進(jìn)程空間的搬遷?答:堆棧段的擴(kuò)充需要在原來進(jìn)程空間大小的基礎(chǔ)上增添新的存儲區(qū)域,而且通常要求與原來存儲區(qū)域連續(xù)。由于原存放位置處可擴(kuò)展的區(qū)域可能已經(jīng)被其它進(jìn)程占用,故可能需要將整個進(jìn)程空間搬遷到另外一個區(qū)域,以實(shí)現(xiàn)地址空間擴(kuò)展要求。11 何謂并行?何謂并發(fā)?在單處理機(jī)系統(tǒng)中, 下述并行和并發(fā)現(xiàn)象哪些可能發(fā)生,哪些不會發(fā)生?(1) 進(jìn)程與進(jìn)程之間的并行;(2) 進(jìn)程與進(jìn)程之間的并發(fā);(3) 處理機(jī)與設(shè)備之間的并行;(4) 處理機(jī)與通道之間的并行;(5) 通道與通道之間的并行;

6、(6) 設(shè)備與設(shè)備之間的并行。答:所謂并行是指同一時刻同時進(jìn)行,進(jìn)程并行需要多處理器的支持;所謂并發(fā),是指在一段時間內(nèi),多個進(jìn)程都在向前推進(jìn),而在同一時刻,可能只有一個進(jìn)程在執(zhí)行,多個進(jìn)程輪流使用處理器。在單處理器系統(tǒng)中,可能發(fā)生的并行和并發(fā)現(xiàn)象如下:(2) 進(jìn)程與進(jìn)程之間的并發(fā)。例如,在Windows操作系統(tǒng)中,mp3播放進(jìn)程和 Word字處理進(jìn)程可以并發(fā)執(zhí)行,這樣用戶就可以邊聽音樂邊寫文章了。(3) 處理機(jī)與設(shè)備之間的并行。例如,當(dāng)處理機(jī)進(jìn)行科學(xué)運(yùn)算時,打印機(jī)可以打印文檔。(4) 處理機(jī)與通道之間的并行。通道程序的執(zhí)行可與處理機(jī)的操作并行。(5) 通道與通道之間的并行。通常一個系統(tǒng)中有多個

7、通道,這些通道可以并行地執(zhí)行相應(yīng)的 通道程序。(6) 設(shè)備與設(shè)備之間的并行。例如打印機(jī)打印文檔時,磁帶機(jī)在輸入數(shù)據(jù)。12 .何謂作業(yè)?它包括哪幾個部分?各部分用途是什么?答:所謂作業(yè)是指用戶要求計(jì)算機(jī)系統(tǒng)為其完成的計(jì)算任務(wù)的集合,一個作業(yè)通常包括程序、程序所處理的數(shù)據(jù)以及作業(yè)說明書。程序用來完成特定的功能,數(shù)據(jù)是程序處理的對象, 作業(yè)說明書用來說明作業(yè)處理的步驟。13 從透明性和資源共享兩方面,說明網(wǎng)絡(luò)操作系統(tǒng)與分布式操作系統(tǒng)之間的差別。答:從透明性上看,分布式操作系統(tǒng)優(yōu)于網(wǎng)絡(luò)操作系統(tǒng)。網(wǎng)絡(luò)用戶能夠感覺到所訪問的資源是在本地還是在遠(yuǎn)地; 而在分布式系統(tǒng)中,用戶感覺不到所訪問的資源是否在本地。分

8、布式操作系統(tǒng)掩蓋了資源在地理位置上的差異。從資源共享上看,分布式操作系統(tǒng)比網(wǎng)絡(luò)操作系統(tǒng)能共享更多的資源。在網(wǎng)絡(luò)操作系統(tǒng)中,一個計(jì)算任務(wù)不能由一臺主機(jī)任意遷移到另外一 臺主機(jī)上運(yùn)行;而在分布式操作系統(tǒng)中, 所有作業(yè)可以由一臺主機(jī)任意遷移到另外一臺主機(jī) 上處理,即可實(shí)現(xiàn)處理機(jī)和存儲資源的共享,從而達(dá)到整個系統(tǒng)的負(fù)載平衡。14 為什么構(gòu)成分布式系統(tǒng)的主機(jī)一般都是相同的或兼容的?答:這樣更有利于進(jìn)程的動態(tài)遷移。 如果主機(jī)不兼容,則在一臺主機(jī)上能運(yùn)行的進(jìn)程,因所用指令系統(tǒng)不同,在另一臺主機(jī)上可能無法運(yùn)行, 導(dǎo)致進(jìn)程難于在不同主機(jī)間遷移, 使得分 布式系統(tǒng)難于實(shí)現(xiàn)負(fù)載平衡。15 為什么嵌入式操作系統(tǒng)通常采

9、用微內(nèi)核結(jié)構(gòu)?答:嵌入式操作系統(tǒng)與一般操作系統(tǒng)相比具有比較明顯的差別:(1)嵌入式操作系統(tǒng)規(guī)模一般較小,因?yàn)橐话阌布渲幂^低,而且對操作系統(tǒng)提供的功能要求也不高。(2)應(yīng)用領(lǐng)域差別大,對于不同的應(yīng)用領(lǐng)域其硬件環(huán)境和設(shè)備配置情況有明顯差別。所以,嵌入式操作系統(tǒng)一般采用微內(nèi)核(micro kernel)結(jié)構(gòu)。微內(nèi)核包括如下基本成分:(1)處理機(jī)調(diào)度;(2)基本內(nèi)存管理;(3)通訊機(jī)制;(4)電源管理。二、進(jìn)程管理習(xí)題及解答:1. 為何引入多道程序設(shè)計(jì) ?在多道程序系統(tǒng)中,內(nèi)存中作業(yè)的道數(shù)是否越多越好?請說明原因。答:引入多道程序設(shè)計(jì)技術(shù)是為了提高計(jì)算機(jī)系統(tǒng)資源的利用率。在多道程序系統(tǒng)中,內(nèi)存中作業(yè)

10、的道數(shù)并非越多越好。一個計(jì)算機(jī)系統(tǒng)中的內(nèi)存、外設(shè)等資源是有限的,只能容納適 當(dāng)數(shù)量的作業(yè),當(dāng)作業(yè)道數(shù)增加時, 將導(dǎo)致對資源的競爭激烈,系統(tǒng)開銷增大,從而導(dǎo)致作 業(yè)的執(zhí)行緩慢,系統(tǒng)效率下降。2. 什么是進(jìn)程?進(jìn)程具有哪些主要特性 ?比較進(jìn)程與程序之間相同點(diǎn)與不同點(diǎn).答:進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于一個數(shù)據(jù)集合的一次運(yùn)行活動。進(jìn)程具有以下主要特性:(1)并發(fā)性:可以與其它進(jìn)程一道在宏觀上同時向前推進(jìn)。(2)動態(tài)性:進(jìn)程是執(zhí)行中的程序。此外進(jìn)程的動態(tài)性還體現(xiàn)在如下兩個方面:首先,進(jìn)程是動態(tài)產(chǎn)生、 動態(tài)消亡的;其次,在進(jìn)程的生存期內(nèi),其狀態(tài)處于經(jīng)常性的動態(tài)變化之中。(3)獨(dú)立性:進(jìn)程是調(diào)度的基本單

11、位,它可以獲得處理機(jī)并參與并發(fā)執(zhí)行。(4 )交往性:進(jìn)程在運(yùn)行過程中可能會與其它進(jìn)程發(fā)生直接或間接的相互作用。(5)異步性:每個進(jìn)程都以其相對獨(dú)立、不可預(yù)知的速度向前推進(jìn)。(6)結(jié)構(gòu)性:每個進(jìn)程有一個控制塊PCB進(jìn)程和程序的相同點(diǎn):程序是構(gòu)成進(jìn)程的組成部分之一,一個進(jìn)程存在的目的就是執(zhí)行其所對應(yīng)的程序,如果沒有程序,進(jìn)程就失去了其存在的意義。進(jìn)程與程序的差別:(1)程序是靜態(tài)的,而進(jìn)程是動態(tài)的;(2)程序可以寫在紙上或在某一存儲介質(zhì)上長期保存,而進(jìn)程具有生存期,創(chuàng)建后存在,撤銷后消亡;(3) 個程序可以對應(yīng)多個進(jìn)程,但一個進(jìn)程只能對應(yīng)一個程序;例如,一組學(xué)生在一個分時系統(tǒng)中做C語言實(shí)習(xí),他們都

12、需要使用 C語言的編譯程序?qū)ζ湓闯绦蜻M(jìn)行編譯,為此每個學(xué)生都需要有一個進(jìn)程,這些進(jìn)程都運(yùn)行 C語言的編譯程序。另外,一個程序的多次執(zhí)行也分別對應(yīng)不同的進(jìn) 程。3. 有人說,用戶進(jìn)程所執(zhí)行的程序一定是用戶自己編寫的。這種說法對嗎?如不對舉例說明之。答:這種說法不對。例如,C編譯程序以用戶進(jìn)程身份運(yùn)行,但C編譯程序一般并不是用戶自己編寫的。此外還有調(diào)試程序、字處理程序等工具軟件。4. 什么是進(jìn)程上下文?進(jìn)程上下文包括哪些成分?哪些成分對目態(tài)程序是可見的?答:進(jìn)程是在操作系統(tǒng)支持下運(yùn)行的,進(jìn)程運(yùn)行時操作系統(tǒng)需要為其設(shè)置相應(yīng)的運(yùn)行環(huán)境,如系統(tǒng)堆棧、地址映射寄存器、打開文件表、PSW與 PC通用寄存器等

13、。在UNIX System V中,將進(jìn)程的物理實(shí)體與支持進(jìn)程運(yùn)行的物理環(huán)境合稱為進(jìn)程上下文(process con text),進(jìn)程上下文包括三個組成部分:用戶級上下文。是由用戶進(jìn)程的程序塊、用戶數(shù)據(jù)塊(含共享數(shù)據(jù)塊)和用戶堆棧組成的 進(jìn)程地址空間。系統(tǒng)級上下文。包括進(jìn)程控制塊、內(nèi)存管理信息、進(jìn)程環(huán)境塊,以及系統(tǒng)堆棧等組成的進(jìn) 程地址空間寄存器上下文。由程序狀態(tài)字寄存器、各類控制寄存器、地址寄存器、通用寄存器、用戶 堆棧指針等組成。其中用戶級上下文和部分寄存器上下文對目態(tài)程序是可見的。5. 進(jìn)程一般具有哪三個主要狀態(tài)?舉例說明狀態(tài)轉(zhuǎn)換的原因。答:進(jìn)程在其生存期內(nèi)可能處于如下三種基本狀態(tài)之一:(

14、1)運(yùn)行態(tài)(Run):進(jìn)程占有處理機(jī)資源,正在運(yùn)行。 顯然,在單處理機(jī)系統(tǒng)中任一時刻只能有一個進(jìn)程處于此種狀態(tài) ;(2)就緒態(tài)(Ready):進(jìn)程本身具備運(yùn)行條件,但由于處理機(jī)的個數(shù)少于可運(yùn)行進(jìn)程的個數(shù),暫未投入運(yùn)行。即相當(dāng)于等待處理機(jī)資源(3) 等待態(tài)(Wait): 也稱掛起態(tài)(Suspended)、封鎖態(tài)(Blocked)、睡眠態(tài)(Sleep)。 進(jìn)程本 身不具備運(yùn)行條件,即使分給它處理機(jī)也不能運(yùn)行。進(jìn)程正等待某一個事件的發(fā)生,如等待某一資源被釋放,等待與該進(jìn)程相關(guān)的I/O傳輸?shù)耐瓿尚盘柕?。進(jìn)程的三個基本狀態(tài)之間是可以相互轉(zhuǎn)換的。 具體地說,當(dāng)一個就緒進(jìn)程獲得處理機(jī)時, 其 狀態(tài)由就緒變?yōu)?/p>

15、運(yùn)行; 當(dāng)一個運(yùn)行進(jìn)程被剝奪處理機(jī)時, 如用完系統(tǒng)分給它的時間片、 出現(xiàn) 更高優(yōu)先級別的其它進(jìn)程, 其狀態(tài)由運(yùn)行變?yōu)榫途w; 當(dāng)一個運(yùn)行進(jìn)程因某事件受阻時, 如所 申請資源被占用、啟動I/O傳輸未完成,其狀態(tài)由運(yùn)行變?yōu)榈却?;?dāng)所等待事件發(fā)生時,如得到申請資源、I/O傳輸完成,其狀態(tài)由等待變?yōu)榫途w。6. 有幾種類型進(jìn)程隊(duì)列?每類各應(yīng)設(shè)置幾個隊(duì)列?答:通常,系統(tǒng)中的進(jìn)程隊(duì)列分為如下三類:(1) 就緒隊(duì)列:整個系統(tǒng)一個。所有處于就緒狀態(tài)的進(jìn)程按照某種組織方式排在這一隊(duì)列中, 進(jìn)程入隊(duì)列和出隊(duì)列的次序與處理機(jī)調(diào)度算法有關(guān)。在某些系統(tǒng)中,就緒隊(duì)列可能有多個, 用以對就緒進(jìn)程分類,以方便某種調(diào)度策略的實(shí)施。

16、(2) 等待隊(duì)列:每個等待事件一個,當(dāng)進(jìn)程等待某一事件時,進(jìn)入與該事件相關(guān)的等待隊(duì)列中;當(dāng)某事件發(fā)生時,與該事件相關(guān)的一個或多個進(jìn)程離開相應(yīng)的等待隊(duì)列,進(jìn)入就緒隊(duì)列。 運(yùn)行隊(duì)列:在單CPU系統(tǒng)中只有一個,在多CPU系統(tǒng)中每個CPU各有一個,每個隊(duì)列中 只有一個進(jìn)程,指向運(yùn)行隊(duì)列頭部的指針被稱作運(yùn)行指示字。7. 線程控制塊TCB中一般應(yīng)包含那些內(nèi)容?答:一般TCB中的內(nèi)容較少,因?yàn)橛嘘P(guān)資源分配等多數(shù)信息已經(jīng)記錄于所屬進(jìn)程的PCE中. TCB中的主要信息包括線程標(biāo)識、線程狀態(tài)、調(diào)度參數(shù)、現(xiàn)場、鏈接指針,其中現(xiàn)場信息主要包 括通用寄存器、指令計(jì)數(shù)器PC以及用戶棧指針對于操作系統(tǒng)支持的線程,TCE中還

17、應(yīng)包含系統(tǒng)棧指針。8. 同一進(jìn)程中的多個線程有哪些成分是共用的,哪些成分是私用的?答:同一進(jìn)程中的多個線程共享進(jìn)程獲得的主存空間和資源,包括代碼區(qū)、數(shù)據(jù)區(qū)、動態(tài)堆空間。線程的私有成分包括:線程控制塊;一個執(zhí)行棧;運(yùn)行時動態(tài)分給線程的寄存器。9. 比較用戶級線程與系統(tǒng)級線程間在以下方面的差別和各自的優(yōu)缺點(diǎn)。(1)創(chuàng)建速度;(2)切換速度;(3)并行性;(4)TCB的存儲位置答:用戶級線程由系統(tǒng)庫支持。線程的創(chuàng)建和撤銷,以及線程狀態(tài)的變化都由庫函數(shù)控制并 在目態(tài)完成,與線程相關(guān)的控制結(jié)構(gòu) TCE保存在目態(tài)空間并由運(yùn)行系統(tǒng)維護(hù)。由于線程對操作系統(tǒng)不可見,系統(tǒng)調(diào)度仍以進(jìn)程為單位,核心棧的個數(shù)與進(jìn)程個數(shù)

18、相對應(yīng)。用戶級別線程的優(yōu)點(diǎn)在于:(1)線程不依賴于操作系統(tǒng),可以采用與問題相關(guān)的調(diào)度策略, 靈活性好;(2)同一進(jìn)程中的線程切換不需進(jìn)入操作系統(tǒng),因而實(shí)現(xiàn)效率較高。缺點(diǎn)在于:(1)同一進(jìn)程中的多個線程不能真正并行,即使在多處理機(jī)環(huán)境中;(2)由于線程對操作系統(tǒng)不可見,調(diào)度在進(jìn)程級別,某進(jìn)程中的一個線程通過系統(tǒng)調(diào)用進(jìn)入操作系統(tǒng)受阻,該進(jìn)程的其它線程也不能運(yùn)行。核心級別線程通過系統(tǒng)調(diào)用由操作系統(tǒng)創(chuàng)建,線程的控制結(jié)構(gòu)TCB保存于操作系統(tǒng)空間, 線程狀態(tài)轉(zhuǎn)換由操作系統(tǒng)完成, 線程是CPU調(diào)度的基本單位。另外由于系統(tǒng)調(diào)度以線程為單位, 操作系統(tǒng)還需要為每個線程保持一個核心棧。核心級線程的優(yōu)點(diǎn)是并發(fā)性好,

19、在多CPU環(huán)境中同一進(jìn)程中的多個線程可以真正并行執(zhí)行。核心級別線程的缺點(diǎn)是線程控制和狀態(tài)轉(zhuǎn)換需要進(jìn)入操作系統(tǒng)完成,系統(tǒng)開銷比較大。10. 何謂作業(yè)?何謂作業(yè)步?作業(yè)何時轉(zhuǎn)為進(jìn)程 ?答:作業(yè)是早期批處理系統(tǒng)引入的一個概念。用戶要求計(jì)算機(jī)系統(tǒng)為其完成的計(jì)算任務(wù)的集合稱為作業(yè),分時用戶在一次登錄后所進(jìn)行的交互過程也常被看作一個作業(yè)。一般來說,作業(yè)是比進(jìn)程大的一個概念,一個作業(yè)通常包含多個計(jì)算步驟, 作業(yè)中一個相對獨(dú)立的處理步驟稱為一個作業(yè)步。當(dāng)作業(yè)被作業(yè)調(diào)度程序選中并調(diào)入內(nèi)存時,將按作業(yè)步創(chuàng)建相應(yīng)進(jìn)程。作業(yè)步驟之間具有順序或并發(fā)關(guān)系。一個作業(yè)步通常可以由一個進(jìn)程來完成, 這樣一個作業(yè)在內(nèi)存處理時通常

20、與多個進(jìn)程相對應(yīng),即作業(yè)與進(jìn)程具有一對多的關(guān)系。11. 分析作業(yè)、進(jìn)程、線程三者之間的關(guān)系。答:一個作業(yè)被調(diào)入內(nèi)存執(zhí)行時可能要為其創(chuàng)建多個進(jìn)程,進(jìn)程是資源分配的基本單位,一個進(jìn)程可能對應(yīng)若干個線程,線程是處理器調(diào)度的基本單位。12. 何謂系統(tǒng)開銷?試舉三個例子說明之。答:運(yùn)行操作系統(tǒng)程序,實(shí)現(xiàn)系統(tǒng)管理所花費(fèi)的時間和空間稱為系統(tǒng)開銷。例如,操作系統(tǒng)的內(nèi)核要占用內(nèi)存空間, 頁面調(diào)度時需占用設(shè)備資源并消耗處理機(jī)時間,進(jìn)程切換時也要占用處理器時間。三、處理機(jī)調(diào)度習(xí)題及解答:1. 試說明下述概念之間的聯(lián)系與差別:(1) 系統(tǒng)調(diào)用命令(2)訪管指令(3)廣義指令答:訪管指令由指令碼和訪管中斷號兩部分組成。

21、即:SVC n其中SVC(SuperVisor Call) 為指令碼,表明為訪管指令;n為訪管中斷號,其值是一整數(shù), 具體表示何種訪問要求。中斷發(fā)生時,硬件中斷裝置將訪管中斷號n送入舊的程序狀態(tài)字內(nèi)的中斷碼字段,訪管中斷總控程序由系統(tǒng)堆棧中將其取出,并據(jù)此轉(zhuǎn)入對應(yīng)的服務(wù)程序。在實(shí)際使用時,用戶程序與操作系統(tǒng)之間還需要相互傳遞參數(shù)和返回值。如此,用戶使用訪管指令的一般形式為:準(zhǔn)備參數(shù)SVC n取返回值根據(jù)具體訪管要求約定,參數(shù)及返回值可以通過寄存器傳遞,也可以通過內(nèi)存?zhèn)鬟f。對于后者,操作系統(tǒng)必須能夠訪問進(jìn)程空間。通常將稱為系統(tǒng)調(diào)用命令,它除訪管指令外,還有準(zhǔn)備參數(shù)和取返回值。為了使用方便,在高級

22、語言中一般將其寫為與過程調(diào)用相類似的形 式,即:返回值=系統(tǒng)調(diào)用名稱(參數(shù)1,參數(shù)2,參數(shù)m); 當(dāng)然,編譯程序會將翻譯成形如的形式。其中系統(tǒng)調(diào)用名稱對應(yīng),不同的系統(tǒng)調(diào)用名稱對應(yīng)不同的整數(shù) n。在有的書中,也將稱為代表的宏指令或廣義指令。2. 為什么說中斷是進(jìn)程切換的必要條件,但不是充分條件?答:假如在時刻T1與時刻T2之間發(fā)生了進(jìn)程切換, 則在時刻T1與時刻T2之間一定執(zhí)行了 處理機(jī)調(diào)度程序,而處理機(jī)調(diào)度程序是操作系統(tǒng)低層中的一個模塊,運(yùn)行于管態(tài),說明在T1與T2時刻之間處理機(jī)狀態(tài)曾由目態(tài)轉(zhuǎn)換到管態(tài)。由于中斷是系統(tǒng)由目態(tài)轉(zhuǎn)換為管態(tài)的必要條件,所以在時刻T1與時刻T2之間一定發(fā)生過中斷, 也就

23、是說,中斷是進(jìn)程切換的必要 條件,然而中斷不是進(jìn)程切換的充分條件。例如:一個進(jìn)程執(zhí)行一個系統(tǒng)調(diào)用命令將一個消息發(fā)給另外一個進(jìn)程,該命令的執(zhí)行將通過中斷進(jìn)入操作系統(tǒng),操作系統(tǒng)處理完消息的發(fā)送工作后可能返回原調(diào)用進(jìn)程,此時中斷未導(dǎo)致進(jìn)程切換;也可能選擇一個新的進(jìn)程,此時中斷導(dǎo)致了進(jìn)程切換。3試分析中斷與進(jìn)程狀態(tài)轉(zhuǎn)換之間的關(guān)系。答:進(jìn)程狀態(tài)轉(zhuǎn)換是由內(nèi)核控制的,如果一個進(jìn)程的狀態(tài)發(fā)生了改變,則在新舊狀態(tài)之間一定發(fā)生了處理機(jī)狀態(tài)由目態(tài)到管態(tài)的轉(zhuǎn)換,而中斷是處理機(jī)狀態(tài)由目態(tài)轉(zhuǎn)換到管態(tài)的必要條件,所以中斷也是進(jìn)程狀態(tài)轉(zhuǎn)換的必要條件。4.中斷發(fā)生時,舊的 PSW和PC為何需要壓入系統(tǒng)棧?答:因?yàn)橥ǔV袛嗵幚沓?/p>

24、序的最后一條指令是中斷返回指令,該指令從系統(tǒng)棧頂彈出斷點(diǎn)信息,如果未將PSW和PC壓入系統(tǒng)棧,則中斷返回指令彈出的不是中斷前的斷點(diǎn)信息,而是 不確定的信息,這將導(dǎo)致系統(tǒng)處于不確定的狀態(tài),嚴(yán)重的情況會使系統(tǒng)崩潰。采用棧結(jié)構(gòu)的原因是中斷可能發(fā)生嵌套,此時能保證以與中斷相反的次序返回上層中斷處理程序或返回目態(tài)。在某些硬件系統(tǒng)中, 沒有采用棧結(jié)構(gòu),中斷發(fā)生時現(xiàn)場信息被送到系統(tǒng)空間指定單元,對每種中斷硬件規(guī)定一個現(xiàn)場保存單元,這樣處理的缺點(diǎn)是中斷類型不能增加,相同類型中斷不能嵌套發(fā)生。5何謂中斷向量?用戶能否修改中斷向量的值 ?答:當(dāng)中斷事件發(fā)生時,中斷裝置根據(jù)中斷類別自動地將中斷處理程序所對應(yīng)的PSW

25、 PC送入程序狀態(tài)字和指令計(jì)數(shù)器中,如此便轉(zhuǎn)移到對應(yīng)的中斷處理程序。這個轉(zhuǎn)移類似于向量轉(zhuǎn)移,因而PSW和PC被稱為中斷向量。用戶不能修改中斷向量的值,因?yàn)樾薷闹袛嘞蛄渴?特權(quán)指令,普通用戶程序不能執(zhí)行特權(quán)指令。另外,如果允許用戶修改中斷向量的值,那么用戶就可以破壞中斷向量與處理程序之間的聯(lián)系,并可能攻擊系統(tǒng)。例如將中斷向量與一段病毒程序聯(lián)系起來,使中斷發(fā)生時便執(zhí)行病毒程序,從而破壞計(jì)算機(jī)系統(tǒng)。6. 中斷向量的存儲位置是否可由程序改變?為什么?中斷向量的值是如何確定的 ?答:中斷向量的存儲位置是由硬件確定的,不能由程序改變。中斷發(fā)生后,中斷裝置按照中斷類型到內(nèi)存指定位置取出中斷向量。例如,在IB

26、M PC系統(tǒng)中,地址00003FF是中斷向量空間。操作系統(tǒng)的設(shè)計(jì)者根據(jù)各中斷事件處理程序的存儲位置及運(yùn)行環(huán)境確定對應(yīng)中斷向量 的值,系統(tǒng)啟動時由初始化程序?qū)⒃撝堤钊胫付ㄎ恢谩?. 有人說,中斷發(fā)生后硬件中斷裝置保證處理機(jī)進(jìn)入管態(tài),這種說法準(zhǔn)確嗎?說明理由。答:這種說法不準(zhǔn)確。中斷發(fā)生后, 硬件中斷裝置負(fù)責(zé)引出中斷處理程序, 中斷處理程序是 否運(yùn)行于管態(tài)取決于 PSW中的處理機(jī)狀態(tài)位,該位的值是操作系統(tǒng)初始化時設(shè)置的, 只有在 初試化程序正確設(shè)置該狀態(tài)位的前提下,才能保證中斷后系統(tǒng)進(jìn)入管態(tài)。8. 為什么在中斷處理過程中通常允許高優(yōu)先級別的中斷事件中途插入,而不響應(yīng)低優(yōu)先級別的中斷事件?答:根據(jù)引

27、起中斷事件的重要性和其緊迫程度,硬件將中斷源分為若干個級別, 稱作中斷優(yōu)先級。如果有多個中斷同時發(fā)生, 硬件將首先響應(yīng)優(yōu)先級別最高的中斷請求。對于相同優(yōu)先級別的中斷,硬件將按照事先規(guī)定好的次序依次響應(yīng)。在中斷事件的處理過程中可能會發(fā)生新的中斷,這就是中斷嵌套。中斷嵌套是必要的。但是,如果不加以控制,低優(yōu)先級別的中斷源可能打擾高優(yōu)先級別中斷事件的處理過程,甚至可能會使中斷嵌套層數(shù)無限增長,直至系統(tǒng)棧溢出。為此, 硬件提供了中斷屏蔽指令,利用中斷屏蔽指令可以暫時禁止任意一個或多個中斷源向處理機(jī)發(fā)中斷請求。當(dāng)然,在需要的時候還可以利用硬件指令解除對中斷源的屏蔽。通常,在一個中斷事件的處理過程中,程序

28、屏蔽包括該級在內(nèi)的所有低優(yōu)先級別的中斷,但允許更高優(yōu)先級別的中斷中途插入。這樣, 發(fā)生中斷嵌套時,嵌套中斷事件的優(yōu)先級別是按照響應(yīng)的順序依次遞增的。這樣做處理主要有兩個原因:(1)從邏輯上來說,高優(yōu)先級別中斷源所對應(yīng)的事件比低優(yōu)先級別中斷源所對 應(yīng)的中斷事件急迫;(2)由于硬件中斷類型是有限的,這樣做實(shí)際上也就限制了中斷嵌套的 深度。9. 為什么說“關(guān)中斷”會影響系統(tǒng)的并發(fā)性答:考慮單處理機(jī)系統(tǒng)。 在單處理機(jī)系統(tǒng)中, 并發(fā)是通過將處理機(jī)輪流分配給多個進(jìn)程而實(shí) 現(xiàn)的,這個分配是由操作系統(tǒng)中處理機(jī)調(diào)度程序完成的。中斷是進(jìn)程切換的必要條件,如果關(guān)了中斷,則操作系統(tǒng)無法獲得處理機(jī)的控制權(quán),也就無法使多

29、個進(jìn)程分時共享處理機(jī)。在關(guān)中斷期間,一個進(jìn)程獨(dú)占處理機(jī)。所以說“關(guān)中斷”會影響系統(tǒng)的并發(fā)性10. 假如關(guān)中斷后操作系統(tǒng)進(jìn)入了死循環(huán),會產(chǎn)生什么后果?答:系統(tǒng)不響應(yīng)任何外部干預(yù)事件,系統(tǒng)表現(xiàn)為“死機(jī)”。11. 為什么不允許目態(tài)程序執(zhí)行關(guān)中斷指令及中斷屏蔽指令?答:開關(guān)中斷指令和中斷屏蔽指令屬于特權(quán)指令,一般用戶無權(quán)訪問。如果允許用戶使用, 用戶關(guān)中斷后可能影響系統(tǒng)對內(nèi)部或外部事件的響應(yīng),也會使操作系統(tǒng)無法獲得系統(tǒng)控制 權(quán)。12. 如果沒有中斷,是否能夠?qū)崿F(xiàn)多道程序設(shè)計(jì)?為什么?答:不能。因?yàn)橐粋€程序一旦被調(diào)度執(zhí)行,將一直執(zhí)行下去,中間不可能被打斷,不可能達(dá) 到多個進(jìn)程交替執(zhí)行的并發(fā)目的。13.

30、下列中斷源哪些通常是可以屏蔽的,哪些通常是不可屏蔽的?(1) I/O 中斷;(2)訪管中斷;(3)時鐘中斷;(4)掉電中斷。答:(1) I/O中斷可以屏蔽;(2)訪管中斷不可以屏蔽;(3)時鐘中斷可以屏蔽;(4)掉電 中斷不可以屏蔽。對于訪管中斷來說,若在管態(tài)屏蔽沒有意義(不會發(fā)生訪管中斷);若在目態(tài)屏蔽,則應(yīng)用程序無法訪問操作系統(tǒng),不能正常運(yùn)行。14. 下列中斷事件哪些可由用戶自行處理?哪些只能由操作系統(tǒng)中斷服務(wù)程序統(tǒng)一處理?為什么?(1)溢出;(2)地址越界;(3)除零;(4)非法指令;(5)掉電答:一般來說,只影響應(yīng)用程序自身的中斷,可以由用戶自行處理,包括:(1)溢出;(3)除 零。可

31、能影響其它用戶或操作系統(tǒng)的中斷只能由操作系統(tǒng)中斷服務(wù)程序統(tǒng)一處理,包括:(2)地址越界;(4)非法指令;(5)掉電。15. 如果中斷由用戶程序自行處理,為何需要將被中斷程序的斷點(diǎn)由系統(tǒng)堆棧彈出并壓入用戶堆棧?答:中斷發(fā)生時,被中斷程序的現(xiàn)場信息已被壓入系統(tǒng)棧中。而中斷續(xù)元運(yùn)行于目態(tài),它執(zhí)行完畢后將由用戶棧區(qū)中恢復(fù)現(xiàn)場。為此,操作系統(tǒng)在轉(zhuǎn)到中斷續(xù)元之前應(yīng)當(dāng)將系統(tǒng)棧中的現(xiàn)場信息彈出并壓入用戶棧中,否則用戶中斷續(xù)元執(zhí)行完畢后將無法恢復(fù)現(xiàn)場返回?cái)帱c(diǎn)。16. 對于下面中斷與進(jìn)程狀態(tài)轉(zhuǎn)換之間的關(guān)系各舉兩個例子說明之:(1)定會引起進(jìn)程狀態(tài)轉(zhuǎn)換的中斷事件;(2)可能引起進(jìn)程狀態(tài)轉(zhuǎn)換的中斷事件。答:定會引起進(jìn)

32、程狀態(tài)轉(zhuǎn)換的中斷事件:當(dāng)前運(yùn)行進(jìn)程終止、應(yīng)用程序啟動I/O傳輸并等待I/O數(shù)據(jù)、運(yùn)行程序申請當(dāng)前被占用的某一資源。可能引起進(jìn)程狀態(tài)轉(zhuǎn)換的中斷事件:時鐘 中斷事件可能引起進(jìn)程狀態(tài)轉(zhuǎn)換,例如對于時間片輪轉(zhuǎn)進(jìn)程調(diào)度算法,若時鐘中斷發(fā)生后, 當(dāng)前進(jìn)程的時間片已用完,則將發(fā)生進(jìn)程切換;否則不發(fā)生進(jìn)程切換。17. 若在T1時刻進(jìn)程P1運(yùn)行,T2時刻進(jìn)程P2運(yùn)行,且P1M P2,則在時刻T1和時刻T2期間之內(nèi)一定發(fā)生過中斷。這種說法對嗎?為什么?答:這種說法對。如果在時刻T1進(jìn)程P1在運(yùn)行,在時刻 T2進(jìn)程P2在運(yùn)行,且P1M P2,則說在時刻 T1和時 刻T2之間發(fā)生了進(jìn)程切換。這說明在時刻T1和時刻T2

33、之間執(zhí)行了處理機(jī)調(diào)度程序,而處理機(jī)調(diào)度程序是操作系統(tǒng)低層中的一個模塊,在系統(tǒng)運(yùn)行的過程中, 除非顯式地調(diào)用到該模塊,否則系統(tǒng)不會由運(yùn)行一個進(jìn)程轉(zhuǎn)去運(yùn)行另外一個進(jìn)程,就是說不會發(fā)生進(jìn)程切換。只有進(jìn)入操作系統(tǒng),即處于系統(tǒng)態(tài),才有可能調(diào)用到處理機(jī)調(diào)度,因?yàn)樘幱谟脩魬B(tài)運(yùn)行的用戶程序不可能直接調(diào)用操作系統(tǒng)中的任何模塊。中斷是系統(tǒng)由用戶態(tài)轉(zhuǎn)換為系統(tǒng)態(tài)的必要條件。據(jù)此,假如在時刻T1與時刻T2之間發(fā)生了進(jìn)程切換, 則在時刻T1與時刻T2之間一定 發(fā)生過中斷。18. 進(jìn)程切換時,上升進(jìn)程的PSW PC為何必須由一條指令同時恢復(fù)答:中斷向量中程序狀態(tài)字 PSW與指令計(jì)數(shù)器PC的內(nèi)容必須由一條指令同時恢復(fù),這樣才

34、 能保證系統(tǒng)狀態(tài)由管態(tài)轉(zhuǎn)到目態(tài)的同時,控制轉(zhuǎn)到上升進(jìn)程的斷點(diǎn)處繼續(xù)執(zhí)行。如果不同時恢復(fù),則只能(1)先恢復(fù)PSW再恢復(fù)PC在恢復(fù)PSW后已經(jīng)轉(zhuǎn)到目態(tài),操作系統(tǒng)恢復(fù) PC 的使命無法完成;(2)先恢復(fù)pc再恢復(fù)PSvy pc改變后轉(zhuǎn)到操作系統(tǒng)另外區(qū)域(因?yàn)閜sw仍為系統(tǒng)狀態(tài)),PSV無法恢復(fù)。19. 某系統(tǒng)采用可搶占處理機(jī)的靜態(tài)優(yōu)先數(shù)調(diào)度算法,請問何時會發(fā)生搶占處理機(jī)的現(xiàn) 象?答:當(dāng)一個新創(chuàng)建的進(jìn)程或一個被喚醒進(jìn)程的優(yōu)先數(shù)比正在運(yùn)行進(jìn)程的優(yōu)先數(shù)高時,可能發(fā) 生搶占處理機(jī)現(xiàn)象。20. 在實(shí)時系統(tǒng)中,采用不可搶占處理機(jī)的優(yōu)先數(shù)調(diào)度算法是否適宜?為什么??為什么?答:不適宜。一旦一個低優(yōu)先數(shù)、需要大量

35、 CPU寸間的進(jìn)程占用處理機(jī),就會一直運(yùn)行,直 到運(yùn)行結(jié)束,或者直到因某事件而阻塞。 在此之前,即使高優(yōu)先數(shù)的緊急任務(wù)到達(dá),也得不 到處理,因而可能延誤對重要事件的響應(yīng)和處理。21. 在分時系統(tǒng)中,進(jìn)程調(diào)度是否只能采用時間片輪轉(zhuǎn)算法答:分時系統(tǒng)的特點(diǎn)是要求響應(yīng)速度及時,除RR算法之外,還可以采用可剝奪CPU的動態(tài)優(yōu)先數(shù)調(diào)度算法。如經(jīng)典 UNIX的處理機(jī)調(diào)度算法,由于負(fù)反饋性質(zhì),算法也可以保證響應(yīng) 速度。22. 有人說,在采用等長時間片輪轉(zhuǎn)處理機(jī)調(diào)度算法的分時操作系統(tǒng)中,各終端用戶所占有處理機(jī)的時間總量是相同的。這種說法對嗎?為什么?答:這種說法不對。因?yàn)樘幚頇C(jī)是分配給進(jìn)程(線程)的,而不同終端

36、用戶可能有不同數(shù)量 的進(jìn)程,一個擁有較多數(shù)量進(jìn)程的終端顯然比擁有較少數(shù)量進(jìn)程的終端獲得CPU的時間要多。23. 對于下述處理機(jī)調(diào)度算法分別畫出進(jìn)程狀態(tài)轉(zhuǎn)換圖。(1) 時間片輪轉(zhuǎn)算法;(2) 可搶占處理機(jī)的優(yōu)先數(shù)調(diào)度算法(3) 不可搶占處理機(jī)的優(yōu)先數(shù)調(diào)度算法。答:(1)時間片輪轉(zhuǎn)算法(2)可搶占處理機(jī)的優(yōu)先數(shù)調(diào)度 算法調(diào)度選甲.一_.廣_、調(diào)度選中._r>咅行)<Lil TTil*C就緒L運(yùn)行丿r時間片到、等鈿牛爭件發(fā)生一_等特爭件5導(dǎo)待)(3)不可搶占處理機(jī)的優(yōu)先數(shù)調(diào)度算法圍廈逆畔fxy啊靜(24.舉出兩個例子說明操作系統(tǒng)訪問進(jìn)程空間的必要性。答: 例(1):進(jìn)程執(zhí)行輸出操作時,通

37、過系統(tǒng)調(diào)用進(jìn)入系統(tǒng),由操作系統(tǒng)將待輸出的數(shù)據(jù)由進(jìn) 程空間取出送給指定的外部設(shè)備,為此操作系統(tǒng)必須訪問用戶進(jìn)程空間。例(2):當(dāng)發(fā)生可由用戶自己處理的中斷事件時,操作系統(tǒng)在轉(zhuǎn)到中斷續(xù)元之前應(yīng)當(dāng)將系 統(tǒng)堆棧中的現(xiàn)場信息彈出并壓入用戶堆棧中,為此操作系統(tǒng)也必須訪問進(jìn)程空間。25 根據(jù)進(jìn)程和線程的組成說明進(jìn)程調(diào)度和線程調(diào)度各需要完成哪些工作。答:進(jìn)程調(diào)度: 地址映射寄存器;(2)用戶棧指針;(3)通用寄存器;PSW與PC線程 調(diào)度:(1)用戶棧指針;(2)通用寄存器;(3)PC。26. 系統(tǒng)資源利用率與系統(tǒng)效率是否一定成正比?如不是,舉例說明之。答:系統(tǒng)效率高則資源利用率高,而反之卻不盡然。例如,在虛

38、擬頁式存儲管理系統(tǒng)中,當(dāng)頁面置換算法不合理或分給進(jìn)程的頁架數(shù)過少時,可能發(fā)生抖動(thrashing),此時I/O設(shè)備很忙碌,但系統(tǒng)效率可能很低。27. 設(shè)有周期性實(shí)時任務(wù)集如下表所示,用EDF算法和RMS算法是否可以調(diào)度?畫出相應(yīng)的Gantt圖。由于; 1因而采用EDF算法一定可以調(diào)度,其Gan ttC1A1B1A2B2C25101510155圖為:0305401555A1B1C1A2B2C2A3B3A4C3101551015510151050 102530|40 1 556070809510511012060由于1J40-11 = 0.780,因而采用RMS算法不可調(diào)度。28.分析Linu

39、x進(jìn)程調(diào)度算法的調(diào)度效果。答:Lin ux在調(diào)度級別上考慮三種特征進(jìn)程:Real-time FIFO, Real-time Rou nd Rob in,Timesharing.調(diào)度基于 Goodness度量指標(biāo),涉及如下一些參量:Priority: 140( 缺省值20),可通過nice系統(tǒng)調(diào)用調(diào)整,nice(value) 中value的取值范 圍為(-20,20)之間,以與經(jīng)典UNIX保持兼容,但在內(nèi)部對value值進(jìn)行反向,取priority=20-value 。Quantum:進(jìn)程尚可運(yùn)行的剩余時間.對于運(yùn)行進(jìn)程來說,每個時鐘間任務(wù)發(fā)生周期Ti處理時間CiA3010B4015C505隔(

40、10ms,稱為一個jiffy),將quantum減1,當(dāng)所有就緒進(jìn)程的 quantum配額下降到0時,重新計(jì)算所有進(jìn)程(包括等待進(jìn)程)的quantum值。Goodness值的計(jì)算方法如下:lf(Real-time)Good ness=1000 + priority;lf(Timeshari ng && qua ntum=0)Good ness=0;lf(Timeshari ng && qua ntum>0)Good ness=qua ntum + priority.調(diào)度發(fā)生在如下時刻:(1)運(yùn)行進(jìn)程的quantum減至0; 運(yùn)行進(jìn)程執(zhí)行系統(tǒng)調(diào)用exit ;

41、運(yùn)行進(jìn)程因等待I/O、信號燈而被封鎖;(4)原來具有高goodness的進(jìn)程被解除封鎖。容易 看出調(diào)度效果:實(shí)時優(yōu)先于分時,交互和 I/O進(jìn)程優(yōu)先于CPU進(jìn)程。四、同步與互斥習(xí)題及解答:1.何謂與時間有關(guān)的錯誤 ?舉例說明之。答:并發(fā)進(jìn)程的執(zhí)行實(shí)際上是進(jìn)程活動的某種交叉,某些交叉次序可能得到錯誤結(jié)果。由于具體交叉的形成與進(jìn)程的推進(jìn)速度有關(guān),而速度是時間的函數(shù), 因而將這種錯誤稱為與時間有關(guān)的錯誤。例如,兩個并發(fā)進(jìn)程的程序如下:int n=0; mai n( ) 創(chuàng)建進(jìn)程A; 創(chuàng)建進(jìn)程B; ;B( )while(1)睡眠一段時間;printf( “ %d ,n);n=0; ;A( ) while

42、(1) n+;假設(shè)進(jìn)程A被部署在公園入口的終端上, 用來記錄一段時間內(nèi)進(jìn)入公園的人數(shù), 進(jìn)程B被部 署在公園的控制中心, 用來輸出一段時間內(nèi)進(jìn)入公園的總?cè)藬?shù)。 進(jìn)程A和進(jìn)程B共享全局變 量n, n表示記錄下的人數(shù)。如果在進(jìn)程 B執(zhí)行完打印語句后被進(jìn)程 A打斷,進(jìn)程A執(zhí)行了 若干次變量自增語句, 之后進(jìn)程B接著執(zhí)行清0語句,那么進(jìn)程A對n的累加丟失了,相當(dāng) 于進(jìn)程B被打斷的這段時間內(nèi)進(jìn)入公園的人沒有被記錄下來。發(fā)生與時間有關(guān)的錯誤。2.有人說,假設(shè)兩個進(jìn)程之間沒有共享內(nèi)存,則二者之間沒有公共變量,這種說法準(zhǔn)確嗎?說明原因。答:如果只從用戶空間考慮,這種說法是正確的。但從操作系統(tǒng)的角度來說并不準(zhǔn)確

43、。兩個沒有公共內(nèi)存的用戶進(jìn)程可能同時(宏觀)進(jìn)入操作系統(tǒng),并訪問操作系統(tǒng)空間中的公共變量。3何謂忙式等待?是否還有其它方式的等待 ?比較它們之間的聯(lián)系和差別。答:不進(jìn)入等待狀態(tài)的等待稱為忙式等待。另一種等待方式是阻塞式等待,進(jìn)程得不到共享資源時將進(jìn)入阻塞狀態(tài),讓出CPU合其他進(jìn)程使用。忙等待和阻塞式等待的相同之處在于進(jìn) 程都不具備繼續(xù)向前推進(jìn)的條件,不同之處在于處于忙等待的進(jìn)程不主動放棄CPU盡管CPU可能被剝奪,因而是低效的;而處于阻塞狀態(tài)的進(jìn)程主動放棄CPU因而是高效的。4 下列進(jìn)程互斥方法哪些存在忙式等待問題?(1)軟件:面包店算法(2)硬件:TS指令(3)關(guān)中斷指令答:(1)、( 2)

44、存在忙等待問題。5 .為何開關(guān)中斷進(jìn)程互斥方法僅在單CPU系統(tǒng)中是有效的?答:關(guān)中斷方法不適用于多 CPU系統(tǒng),因?yàn)殛P(guān)中斷只能保證 CPU不由一個進(jìn)程切換到另外一 個進(jìn)程,從而防止多個進(jìn)程并發(fā)地進(jìn)入公共臨界區(qū)域。但即使關(guān)中斷后,不同進(jìn)程仍可以在不同CPU上并行執(zhí)行關(guān)于同一組共享變量的臨界區(qū)代碼6 .在多處理機(jī)系統(tǒng)中,軟件互斥方法是否有效?為什么?答:依然有效。多處理機(jī)并行與單處理并發(fā)之間的差別在于程序交叉的粒度,單處理機(jī)機(jī)環(huán)境中進(jìn)程交叉發(fā)生在指令之間,多處理機(jī)環(huán)境中進(jìn)程交叉發(fā)生在指令周期之間。由于純軟件互斥算法并不依賴特殊的硬件指令(如test_and_set),指令之間的交叉與指令周期之間的

45、交叉結(jié)果相同。7 .試分析臨界區(qū)域的大小與系統(tǒng)并發(fā)性之間的關(guān)系。答:關(guān)于同一組變量的臨界區(qū)域是不能并發(fā)執(zhí)行的代碼,臨界區(qū)越大,并發(fā)性越差,因而編寫并發(fā)程序應(yīng)盡量縮小臨界區(qū)域范圍。&設(shè)CR1是關(guān)于一組共享變量 SV1的臨界區(qū)域,CR2是關(guān)于另外一組共享變量 SV2的臨 界區(qū)域,當(dāng)進(jìn)程 P1進(jìn)入CR1時,進(jìn)程P2是否可以進(jìn)入 CR2?為什么?答:可以。因?yàn)榛コ馐窃谧兞考墑e上的,多個進(jìn)程同時進(jìn)入關(guān)于不同變量的臨界區(qū)不會引起與時間有關(guān)的錯誤。9. Lamport面包店互斥算法是否會出現(xiàn)餓死情況?不會,該算法是公平的。假定系統(tǒng)中共有n個進(jìn)程,每個想要進(jìn)入臨界區(qū)域的進(jìn)程(線程)在最壞的情況下需要等

46、待其它n-1個進(jìn)程進(jìn)入并離開臨界區(qū)域之后即可獲得進(jìn)入臨界區(qū)域的機(jī)會,因而存在(忙式)等待的上界。10 .試用信號燈和PV操作實(shí)現(xiàn)臨界區(qū)語句:region < 共享變量 > do < 語句>變量類型 共享變量答:semaphore s=1;P(s);語句V(s);11. 由V操作喚醒的進(jìn)程是否一定能夠直接進(jìn)入運(yùn)行狀態(tài)?舉例說明之。答:否。一般來說,喚醒是將進(jìn)程狀態(tài)由等待狀態(tài)變成就緒狀態(tài),而就緒進(jìn)程何時獲得處理機(jī)則是由系統(tǒng)的處理機(jī)調(diào)度策略確定的。如果采用搶占式優(yōu)先級調(diào)度算法,并且被喚醒的進(jìn)程是當(dāng)前系統(tǒng)中優(yōu)先級最高的進(jìn)程,那么該進(jìn)程將被調(diào)度執(zhí)行,其狀態(tài)變成運(yùn)行態(tài)。如果該進(jìn)程不

47、是系統(tǒng)中優(yōu)先級最高的進(jìn)程或系統(tǒng)采用其它調(diào)度算法,那么該進(jìn)程不會被調(diào)度執(zhí)行, 其狀態(tài)將維持在就緒態(tài)。12. 設(shè)S1和S2為兩個信號燈變量,下列八組P、V操作哪些可以同時進(jìn)行 ?哪些不能同時進(jìn)行?為什么?(1)P(S1) ,P(S2) (2)P(S1),V(S2)(3)V(S1) ,P(S2) (4)V(S1),V(S2)(5)P(S1) ,P(S1) (6)P(S2),V(S2)(7)V(S1) ,P(S1) (8)V(S2),V(S2)答:能同時進(jìn)行的包括:(1)、(2)、(3)、(4)。這些操作涉及不同信號燈變量,屬于關(guān)于不 同組共享變量的臨界區(qū)。不能同時進(jìn)行的包括:(5)、(6)、(7)、

48、(8)。這些操作涉及相同的信號燈變量,屬于關(guān)于同一組共享變量的臨界區(qū)。13. 對于生產(chǎn)者一消費(fèi)者問題,假設(shè)緩沖區(qū)是無界的,試用信號燈與PV操作給出解法。答:由于是無界緩沖區(qū),所以生產(chǎn)者不會因得不到緩沖區(qū)而被阻塞,不需要對空緩沖區(qū)進(jìn)行管理,可以去掉在有界緩沖區(qū)中用來管理空緩沖區(qū)的信號量及其PV操作。semaphore mutex_ in=1; semaphore mutex_out=1; semaphore empty=0;int in=0 ,out=0;生產(chǎn)者活動:while(1) produce n ext product; P(mutex_i n);add the product to b

49、ufferi n; in+;v(mutex_i n);V(empty);消費(fèi)者活動:while(1)P(empty);P(mutex_out);take the product from bufferout; out+;V(mutex_out);14. 設(shè)有一個可以裝 A、B兩種物品的倉庫, 其容量無限大,但要求倉庫中 A B兩種物品 的數(shù)量滿足下述不等式:-Me A物品數(shù)量一B物品數(shù)量w N其中M和N為正整數(shù)。 試用信號燈和PV操作描述 A B兩種物品的入庫過程。答:已知條件-MA物品數(shù)量一B物品數(shù)量w N可以拆成兩個不等式,即A物品數(shù)量一B物品數(shù)量w N,B物品數(shù)量一A物品數(shù)量w M這兩個

50、不等式的含義是:倉庫中A物品可以比B物品多,但不能超過 N個;E物品可以比 A物品多,但不能超過 M個。semaphore a=n;semaphore b=m; void mai n()createprocess(A,);createprocess(B,);A物品入庫:B物品入庫:void A() while(1) P(a);A物品入庫;V(b); void B() while(1) P(b);B物品入庫;V(a);15.試用信號燈與PV操作實(shí)現(xiàn)司機(jī)與售票員之間的同步問題。設(shè)公共汽車上有一個司機(jī)和一個售票員,其活動如下圖所示。司機(jī)的活動:Pl:dD7:啟動車輛; 正常疔車; 到站停車;礙h,詹

51、票員的活動:P2:(b:關(guān)車門;口 mFY開車門:Mile ;為了安全起見,顯然要求:(1)關(guān)車門后方能啟動車輛;(2)到站停車后方能開車門。 亦即“啟 動車輛”這一活動應(yīng)當(dāng)在“關(guān)車門”這一活動之后,“開車門”這一活動應(yīng)當(dāng)在“到站停車” 這一活動之后。解:如果進(jìn)程P2尚未推進(jìn)到處時,進(jìn)程P1已經(jīng)推進(jìn)到處,則P1應(yīng)等待直到P2推進(jìn)到處為止;同樣,如果進(jìn)程P1尚未推進(jìn)到處時,進(jìn)程P2已經(jīng)推進(jìn)到處,則 P2應(yīng)等待直到P1推進(jìn)到處為止。如果進(jìn)程P1在處發(fā)生了等待,則當(dāng)進(jìn)程P2執(zhí)行到處時應(yīng)將P1喚醒;同樣,如果進(jìn)程 P2在處發(fā)生了等待,則當(dāng)進(jìn)程P2執(zhí)行到處時應(yīng)將 P1喚醒。用信號量和P、V操作解決這一問

52、題,需要定義兩個信號量,一個信號量start表示是否允許司機(jī)啟動車輛,另一個信號量open表示是否允許售票員開車門。初始狀態(tài)是車停在始發(fā)站,車門開著,等待乘客上車。因此,兩個信號量的初值都是0。semaphore start=0;semaphore ope n=0;司機(jī)的活動P1: do P(start);啟動車輛; 正常行車;售票員的活動P2: do關(guān)車門;V(start);隹西-口,到站停車V(ope n);while (1);P(ope n);開車門;while (1);16.設(shè)有A、B、C三組進(jìn)程,它們互斥地使用某一獨(dú)占型資源R,使用前申請,使用后釋放。資源分配原則如下(1) 當(dāng)只有一

53、組申請進(jìn)程時,該組申請進(jìn)程依次獲得(2) 當(dāng)有兩組申請進(jìn)程時,各組申請進(jìn)程交替獲得(3) 當(dāng)有三組申請進(jìn)程時,各組申請進(jìn)程輪流獲得R;R,組內(nèi)申請進(jìn)程依次獲得R;R,組內(nèi)申請進(jìn)程依次獲得Ro試用信號燈和PV操作分別給出各組進(jìn)程的申請活動程序段和釋放活動程序段。解:int free=1; 設(shè)備狀態(tài)標(biāo)志semaphore mutex=1; semaphore qa=qb=qc=0; / int coun ta=co un tb=co un tc=O;A組申請:P(mutex); if(free=1) free=0; V(mutex); else coun ta+; V(mutex); P(qa);A組進(jìn)程活動可以給出各組等待隊(duì)列 等待隊(duì)列長度 A組釋放:P(mutex); if(cou ntb>0) coun tb-;V(qb);else if(cou ntc>0) coun tc-;V(qc);else if(cou nta>0) coun ta-V(qa);else free=1;B組和C組進(jìn)程活動。17.設(shè)自行車生產(chǎn)線上有一只箱子,其中有N個位置(N > 3),每個位置可存放一個車架或一個車輪;又設(shè)有三個工人,其活動分別為:工人1活動:工人2活動:工人3活動:do do do 加工一個車架;加工一個車輪;箱中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論