




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
考研基礎(chǔ)知識(shí)總結(jié)
?什么是操作系統(tǒng)?它有什么基本特征?(哈工大2000年試題)
【解答】
操作系統(tǒng):操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)中的一個(gè)系統(tǒng)軟件。它是一些程序模塊的集合,
這些程序模塊管理和限制計(jì)算機(jī)中的硬件和軟件資源,合理地組織計(jì)算機(jī)工作流程,以
便有效地利用這些資源為用戶(hù)供應(yīng)一個(gè)功能強(qiáng),運(yùn)用便利的工作環(huán)境,從而在用戶(hù)及計(jì)
算機(jī)之間起到接口的作用。
操作系統(tǒng)的基本特征是并行性,共享性,不確定性。
?推斷:操作系統(tǒng)程序都是在核心態(tài)下才能運(yùn)行。(大連理工大學(xué)2000年試題)
【分析】
操作系統(tǒng)是一組限制和管理計(jì)算機(jī)硬件和軟件資源,合理地對(duì)各類(lèi)作業(yè)進(jìn)行調(diào)度
以及便利用戶(hù)的程序的集合。操作系統(tǒng)供應(yīng)的服務(wù),一部分必需在核心態(tài)下才能運(yùn)行,
如進(jìn)程調(diào)度,目錄服務(wù)等。還有一些功能,如DOS下的外部命令,則可以由用戶(hù)調(diào)用,
運(yùn)行在用戶(hù)態(tài)下。
【解答】
錯(cuò)誤。
?批處理系統(tǒng)的主要缺點(diǎn)是:(清華大學(xué)1996年試題)
A.CPU利用率低。B.不能并發(fā)執(zhí)行。
C.缺少交互性。D.以上都不是。
【解答】
選擇C。
?填空:多道運(yùn)行的特征之一是宏觀上并行,它的含義是((華中科技大學(xué)2000
年試題)
【分析】
多道運(yùn)行的特征是多道性,宏觀上并行,彳散觀上串行。多道性是指計(jì)算機(jī)主存中同
時(shí)存放幾道相互獨(dú)立的程序。宏觀上并行是指同時(shí)進(jìn)入系統(tǒng)的幾道程序都處于運(yùn)行過(guò)程
中,即它們先后開(kāi)始了各自的運(yùn)行,但都未運(yùn)行完畢。微觀上串行是指主存中的多道程
序輪番或分時(shí)地占有處理機(jī)交替執(zhí)行。
【解答】
并發(fā)程序都已經(jīng)開(kāi)始執(zhí)行,但都未結(jié)束。
?推斷:在分時(shí)系統(tǒng)中,響應(yīng)時(shí)間X時(shí)間片X用戶(hù)數(shù),因此為改善響應(yīng)時(shí)間,常用的
原則是使時(shí)間片越小越好。(東南大學(xué)1996年試題)
【分析】
時(shí)間片越小,進(jìn)程切換所用的開(kāi)銷(xiāo)就相對(duì)越大。因此時(shí)間片不是越小越好,一般運(yùn)
用戶(hù)鍵入的常用命令能在一個(gè)時(shí)間片內(nèi)處理完畢即可。
【解答】
錯(cuò)誤。
?實(shí)時(shí)系統(tǒng)應(yīng)具備的兩個(gè)基本特性是()和()。(北京理工大學(xué)2000年試題)
【分析】
實(shí)時(shí)系統(tǒng)是順應(yīng)實(shí)時(shí)限制和實(shí)時(shí)信息處理的須要而產(chǎn)生的。所謂"實(shí)時(shí)"是表示"及時(shí)
","即時(shí)",而實(shí)時(shí)系統(tǒng)是指系統(tǒng)能及時(shí)(或即時(shí))響應(yīng)外部事務(wù)的懇求,在規(guī)定的時(shí)間
內(nèi)完成對(duì)該事務(wù)的處理,并限制全部實(shí)時(shí)任務(wù)協(xié)調(diào)一樣地運(yùn)行。實(shí)時(shí)系統(tǒng)的應(yīng)用領(lǐng)域確
定了它的特性是:①具有實(shí)時(shí)時(shí)鐘管理功能;②能進(jìn)行過(guò)載愛(ài)護(hù);③高牢靠性。
【解答】
及時(shí)性高牢靠性
?實(shí)時(shí)信息處理是實(shí)時(shí)應(yīng)用的一種,例如()和()都是實(shí)時(shí)信息處理的例子。
(華中科技大學(xué)2000年試題)
【解答】
飛機(jī)訂票系統(tǒng),圖書(shū)資料查詢(xún)系統(tǒng)
?現(xiàn)代操作系統(tǒng)的基本功能是管理計(jì)算機(jī)系統(tǒng)的硬件,軟件資源,這些管理工作分
為A管理,B管理,C管理,D管理,E和通信事務(wù)管理。(東南大學(xué)2000年試題)
【解答】
A.處理機(jī)B.存儲(chǔ)器管理C.設(shè)備D.文件E.作業(yè)
【擴(kuò)展】
選擇:操作系統(tǒng)的()管理部分負(fù)責(zé)對(duì)進(jìn)程調(diào)度。
A.主存儲(chǔ)器B.限制器C.運(yùn)算器D.處理機(jī)這里要防止把處理機(jī)與系統(tǒng)結(jié)
構(gòu)中所說(shuō)的處理機(jī)的組成混淆起來(lái)。選擇D。
?為了支持多道程序運(yùn)行,存儲(chǔ)管理必須要實(shí)現(xiàn)的主要功能有(),()和主存
擴(kuò)充。(華中科技大學(xué)1997年試題)
【分析】
在多道程序運(yùn)行環(huán)境下,程序員無(wú)法預(yù)知存儲(chǔ)管理模塊將把他們的程序安排到主存
的什么地方,而且程序員也盼望擺脫存儲(chǔ)地址,存儲(chǔ)空間大小等細(xì)微環(huán)節(jié)問(wèn)題。因此存
儲(chǔ)管理模塊應(yīng)當(dāng)供應(yīng)地址重定位實(shí)力。另外,由于主存中可同時(shí)存放多道程序,為了防
止程序間相互干擾,存儲(chǔ)管理模塊必需供應(yīng)存儲(chǔ)愛(ài)護(hù)手段。
【解答】
存儲(chǔ)無(wú)關(guān)性,存儲(chǔ)愛(ài)護(hù)
?選擇:衡量整個(gè)計(jì)算機(jī)性能指標(biāo)的參數(shù)有:(北京理工大學(xué)1999年試題)
A.用戶(hù)接口。B.資源利用率。C.作業(yè)步的多少。D.吞吐量。E.周
轉(zhuǎn)時(shí)間。
【分析】
操作系統(tǒng)的性能與計(jì)算機(jī)系統(tǒng)工作的優(yōu)劣有著親密的聯(lián)系。評(píng)價(jià)操作系統(tǒng)的性能指
標(biāo)一般有:
系統(tǒng)的牢靠性;系統(tǒng)的吞吐率(量),是指系統(tǒng)在單位時(shí)間內(nèi)所處理的信息量,以每
小時(shí)或每天所處理的各類(lèi)作業(yè)的數(shù)量來(lái)度量;系統(tǒng)響應(yīng)時(shí)間,是指用戶(hù)從提交作業(yè)到得
到計(jì)算結(jié)果這段時(shí)間,又稱(chēng)周轉(zhuǎn)時(shí)間;系統(tǒng)資源利用率,指系統(tǒng)中各個(gè)部件,各種設(shè)備
的運(yùn)用程度。它用在給定時(shí)間內(nèi),某一設(shè)備實(shí)際運(yùn)用時(shí)間所占的比例來(lái)度量;可移植性。
【解答】選擇B,D,Eo
【擴(kuò)展】
推斷:資源的利用率高和系統(tǒng)的工作效率高是一回事O。(東南大學(xué)試題)
解答:系統(tǒng)的工作效率,也就是吞吐率。從上述分析可知,此題應(yīng)判錯(cuò)誤。
3.2邏輯結(jié)構(gòu)
?推斷:數(shù)據(jù)庫(kù)管理程序須要調(diào)用操作系統(tǒng)程序,操作系統(tǒng)程序的實(shí)現(xiàn)也須要數(shù)據(jù)
庫(kù)系統(tǒng)的支持。O(大連理工大學(xué)2000年試題)
【分析】
從操作系統(tǒng)虛擬機(jī)的結(jié)構(gòu)來(lái)看,最核心層是裸機(jī),緊挨著的一層是操作系統(tǒng),這一
層把應(yīng)用程序和裸機(jī)隔離開(kāi)來(lái),使得應(yīng)用程序看起來(lái)似乎運(yùn)行在一個(gè)虛擬機(jī)器上。題中
說(shuō)法沒(méi)有正確反映應(yīng)用程序與操作系統(tǒng)的關(guān)系。
【解答】
錯(cuò)誤。
?簡(jiǎn)答:操作系統(tǒng)有哪幾種結(jié)構(gòu)設(shè)計(jì)方法?簡(jiǎn)述其中之一的特點(diǎn)。(武漢大學(xué)2000
年試題)
【解答】
操作系統(tǒng)有無(wú)結(jié)構(gòu),層次結(jié)構(gòu)和客戶(hù)/服務(wù)器模型等3種結(jié)構(gòu)設(shè)計(jì)方法。
現(xiàn)今大多數(shù)操作系統(tǒng)采納的是層次結(jié)構(gòu)。層次結(jié)構(gòu)是結(jié)構(gòu)設(shè)計(jì)方法的一種,運(yùn)用這
種方法進(jìn)行設(shè)計(jì)時(shí),可以形成正確,結(jié)構(gòu)清晰的軟件系統(tǒng),從而達(dá)到牢靠,可適應(yīng),可
移植的設(shè)計(jì)目標(biāo)。在層次式結(jié)構(gòu)下,操作系統(tǒng)的各模塊應(yīng)處于什么位置,各模塊之間的
關(guān)系特別清晰。
?一個(gè)分層結(jié)構(gòu)操作系統(tǒng)由裸機(jī),用戶(hù),CPU調(diào)度和P,V操作,文件管理,作業(yè)
管理,內(nèi)存管理,設(shè)備管理,命令管理等部分組成。試按層次結(jié)構(gòu)的原則從內(nèi)到外將各
部分重新排列。(中國(guó)科學(xué)院計(jì)算技術(shù)探討所1997年試題)
【解答】
按層次結(jié)構(gòu)的原則從內(nèi)到外依次為:裸機(jī),CPU調(diào)度和P,V操作,內(nèi)存管理,作
業(yè)管理,設(shè)備管理,文件管理,命令管理,用戶(hù)。
?在計(jì)算機(jī)系統(tǒng)中,為什么要區(qū)分管態(tài)與目態(tài)?操作系統(tǒng)為什么能為用戶(hù)程序供應(yīng)
各種服務(wù)?(西安電子科技大學(xué)1999年試題)
【解答】
操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)中最重要的系統(tǒng)軟件,為了能正確地進(jìn)行管理和限制,其本
身是不能被破壞的。因此,系統(tǒng)采納了區(qū)分處理機(jī)狀態(tài)的方法,為操作系統(tǒng)程序建立一
個(gè)愛(ài)護(hù)環(huán)境。這樣,用戶(hù)程序只能在管態(tài)下運(yùn)行,只能執(zhí)行非特權(quán)指令,只能訪問(wèn)自己
的存儲(chǔ)區(qū),從而愛(ài)護(hù)了操作系統(tǒng)程序的正常運(yùn)行。
操作系統(tǒng)虛擬機(jī)為用戶(hù)供應(yīng)了一個(gè)幫助解決問(wèn)題的裝置。操作系統(tǒng)為用戶(hù)供應(yīng)兩種
類(lèi)型的用戶(hù)界面,其一是命令接口,包括鍵盤(pán)命令,作業(yè)限制語(yǔ)言,圖形化用戶(hù)界面等;
其二是系統(tǒng)調(diào)用,又稱(chēng)程序接口。通過(guò)這兩種界面,操作系統(tǒng)把它的全部操作命令的集
合呈現(xiàn)給用戶(hù)(或用戶(hù)程序),從而實(shí)現(xiàn)了為用戶(hù)服務(wù)。
?推斷:用戶(hù)程序通常可以直接訪問(wèn)系統(tǒng)緩沖區(qū)中的數(shù)據(jù)。()(大連理工大學(xué)2000
年試題)
【分析】
由前面敘述可知,用戶(hù)程序工作在目態(tài)下,只能直接訪問(wèn)自己的存儲(chǔ)區(qū),訪問(wèn)系統(tǒng)
緩沖區(qū)必需通過(guò)操作系統(tǒng)的服務(wù)。
【解答】
錯(cuò)誤。
?選擇:你認(rèn)為下列哪幾種指令應(yīng)當(dāng)在核心狀態(tài)下執(zhí)行。((上海交通大學(xué)1999年
試題,10分)
1.屏蔽全部中斷;2.讀時(shí)鐘周期;3.設(shè)置時(shí)鐘日期;4.改變存儲(chǔ)映像圖;5.存
取某地址單元的內(nèi)容;6.停機(jī)。
【解答】
1,2,4,6必需在核心狀態(tài)下執(zhí)行。
?簡(jiǎn)答:試說(shuō)明中斷在進(jìn)程限制中的推動(dòng)作用。(南開(kāi)大學(xué)2000年試題)(8分)
【解答】
中斷是實(shí)現(xiàn)操作系統(tǒng)功能的基礎(chǔ),是構(gòu)成多道程序運(yùn)行環(huán)境的根本措施,是進(jìn)程限
制中的推動(dòng)力氣。例如,外設(shè)完成中斷或懇求運(yùn)用外設(shè)的訪管中斷的出現(xiàn),將導(dǎo)致I/O
管理進(jìn)程投入運(yùn)行;申請(qǐng)或釋放主存而發(fā)出的訪管中斷,將導(dǎo)致在主存中創(chuàng)建一個(gè)進(jìn)程
而且開(kāi)始運(yùn)行;時(shí)鐘中斷或I/O完成中斷,可導(dǎo)致處理機(jī)調(diào)度工作的執(zhí)行;操作員從鍵
盤(pán)發(fā)出終止執(zhí)行的命令,可以終止當(dāng)前進(jìn)程的運(yùn)行。所以,中斷是進(jìn)程運(yùn)行的引導(dǎo),是
它們被激活的驅(qū)動(dòng)源。
?選擇:中斷發(fā)生時(shí),由硬件愛(ài)護(hù)并更新程序指令計(jì)數(shù)器PC,而不是由軟件完成,
主要是為了()(華中科技大學(xué)1998年試題)
A.提高處理速度。B.使中斷程序易于編制。C.節(jié)約內(nèi)存。D.能進(jìn)入
中斷處理程序并能正確返回。
【分析】
一次中斷過(guò)程分為中斷進(jìn)入(由硬件負(fù)責(zé))和中斷處理過(guò)程(由軟件負(fù)責(zé))。在中
斷進(jìn)入過(guò)程中,首先保存PC,PS值,然后從中斷向量地址中得到PC,PS值放入寄存
器。軟件的中斷處理過(guò)程是,先保存現(xiàn)場(chǎng)信息和參數(shù)傳遞,再執(zhí)行中斷處理程序,最終
復(fù)原和退出中斷。簡(jiǎn)要地說(shuō),一次中斷,兩次愛(ài)護(hù)現(xiàn)場(chǎng)。分步愛(ài)護(hù)現(xiàn)場(chǎng)的緣由是,進(jìn)入
軟件的中斷處理后,PC,PS寄存器里被填上了新內(nèi)容,因此,PC,PS的愛(ài)護(hù)只能由
硬件完成。
【解答】
答案是D。
【擴(kuò)展】
中斷響應(yīng)的實(shí)質(zhì)是什么?
從上述分析可知,中斷響應(yīng)的實(shí)質(zhì)是交換指令執(zhí)行地址和處理器狀態(tài)信息。
?填空:中斷優(yōu)先級(jí)是由硬件規(guī)定的,若要調(diào)整中斷的響應(yīng)次序,可通過(guò)。
(北京大學(xué)1997年試題)
【分析】
中斷優(yōu)先級(jí)是由硬件規(guī)定的,其次序是不能由軟件更改的。要調(diào)整中斷的響應(yīng)次序,
只能通過(guò)中斷屏蔽。
【解答】
中斷屏蔽
3.3用戶(hù)界面與OS實(shí)例
?在答卷上用連線把下面左右兩列詞連起來(lái)形成最恰當(dāng)?shù)?對(duì)。(東南大學(xué)2000年
試題)
左列:右列:
(1)Linux(1)面對(duì)對(duì)象
(2)UNIX(2)網(wǎng)絡(luò)操作系統(tǒng)
(3)WindowsNT(3)微內(nèi)核
(4)Mach3.0(4)自由軟件
(5)OS/2(5)C語(yǔ)言
【分析】
UNIX的核心代碼大部分是用C語(yǔ)言寫(xiě)的。WindowsNT是當(dāng)然的網(wǎng)絡(luò)操作系統(tǒng)。
Linux是UNIX的一種,詳細(xì)講Linux是一套兼容于SystemV以及BSDUNIX的操作系
統(tǒng),也是遵循POSIX規(guī)范的一個(gè)操作系統(tǒng)。Linux于1991年4月由芬蘭人LinusBenedict
Torvalds在赫爾辛基大學(xué)獨(dú)立開(kāi)發(fā),并由此開(kāi)創(chuàng)了自由軟件的先河。當(dāng)UNIX日漸龐大
困難而難以駕馭時(shí),人們提出了Microkernel的概念,就是把Kernel去蕪存菁,僅留下
重要的部分,以此減低Kernel的困難度。Mach就是在Camegie-Mellon(卡耐基-梅隆
CMU)大學(xué)誕生的一個(gè)Microkernel(微核心)操作系統(tǒng)(1980年)。Mach最普遍的版
本是Mach2.5。它是很多商業(yè)UNIX如DECOSF/1,NextStep的基礎(chǔ)。Mach3.0才是真
正純粹的完全Microkernel化版本。
OS/2采納32位搶先多任務(wù)體系結(jié)構(gòu),采納客戶(hù)機(jī)一服務(wù)器策略,在對(duì)等層環(huán)境既
是一個(gè)客戶(hù)機(jī)又是一個(gè)服務(wù)器。OS/2可以同時(shí)運(yùn)行Windows3.1,DOS和OS/2的應(yīng)用
軟件。
OS/2的圖形用戶(hù)界面稱(chēng)為WorkplaceShell。它運(yùn)用面對(duì)對(duì)象的標(biāo)記和拖放界面(在
這一點(diǎn)上,WindowsNT也是)。用戶(hù)可以對(duì)工具和文件夾進(jìn)行個(gè)人化以簡(jiǎn)化對(duì)重要信息
的訪問(wèn)。
【解答】
連線見(jiàn)下圖:
充圖I:
(1)面向?qū)ο?/p>
(2)掰絡(luò)操作系統(tǒng)
(3)微內(nèi)核
(4)自由軟件
(5)C語(yǔ)言
3.4進(jìn)程的描述與限制
?什么是進(jìn)程限制塊?試從進(jìn)程管理,進(jìn)程通信,中斷處理,文件管理,存儲(chǔ)
管理,設(shè)備管理的角度設(shè)計(jì)進(jìn)程限制塊應(yīng)包含的項(xiàng)目。(北京大學(xué)1999年試題)
【分析】
北京大學(xué)1990年,1992年,1995年,1997年都以名詞說(shuō)明的形式考查了PCB
這一知識(shí)點(diǎn)。1999年再次考查這一知識(shí)點(diǎn),并提高了考試要求,即要求理解PCB結(jié)構(gòu)
中各重量的含義。
熟記我們?cè)谇懊媪谐龅倪M(jìn)程限制原語(yǔ)的形式描述有助于加深對(duì)這個(gè)題的理解。
【解答】
進(jìn)程限制塊(PCB)是為描述進(jìn)程的運(yùn)動(dòng)變化過(guò)程而采納的一個(gè)與進(jìn)程相聯(lián)系的數(shù)
據(jù)結(jié)構(gòu),用于記錄系統(tǒng)管理進(jìn)程所需的信息,描述進(jìn)程的瞬間特征。它是進(jìn)程的唯一實(shí)
體,操作系統(tǒng)通過(guò)PCB而感知進(jìn)程的存在。
為了完成進(jìn)程管理,進(jìn)程通信,中斷處理,文件管理,存儲(chǔ)管理,設(shè)備管理等
各項(xiàng)任務(wù),進(jìn)程PCB結(jié)構(gòu)必需如下項(xiàng)目:
①進(jìn)程的標(biāo)識(shí)符name:每個(gè)進(jìn)程都必需有唯一的標(biāo)識(shí)符,可以用字符或編號(hào)表示。
在創(chuàng)建一個(gè)進(jìn)程時(shí),由創(chuàng)建者給出進(jìn)程的標(biāo)識(shí),唯一地標(biāo)識(shí)進(jìn)程,與其他進(jìn)程區(qū)分。
②進(jìn)程當(dāng)前運(yùn)行狀態(tài)status:說(shuō)明本進(jìn)程目前處于何種狀態(tài)(運(yùn)行,就緒,等待),
作為進(jìn)程調(diào)度時(shí)安排處理機(jī)的主要依據(jù)。
③當(dāng)前隊(duì)列指針next:登記了處于同一狀態(tài)的下一個(gè)PCB的地址,以此將處于同
一狀態(tài)的全部進(jìn)程鏈接起來(lái)。比如在一個(gè)就緒隊(duì)列中,當(dāng)前活動(dòng)進(jìn)程堵塞,則須要依據(jù)
當(dāng)前隊(duì)列指針調(diào)度下一個(gè)就緒進(jìn)程進(jìn)入運(yùn)行。
④總鏈指針all_q_next:將全部的進(jìn)程鏈接起來(lái),進(jìn)程PCB中的該項(xiàng)內(nèi)容總是指向
總鏈中的下一個(gè)PCB地址。這在有的場(chǎng)合是很便利的,比如當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí),須要推
斷創(chuàng)建者給出的標(biāo)識(shí)符名是否唯一,此時(shí)沿總鏈往下查找就比較便利。
⑤程序開(kāi)始地址start_addi-:進(jìn)程開(kāi)始的地址。當(dāng)一個(gè)進(jìn)程被調(diào)度進(jìn)入運(yùn)行時(shí),須
要從今處獲得進(jìn)程開(kāi)始地址。
⑥CPU現(xiàn)場(chǎng)愛(ài)護(hù)區(qū)cpustatus:通常愛(ài)護(hù)的信息有工作寄存器,指令計(jì)數(shù)器以及程
序狀態(tài)字等,供進(jìn)程調(diào)度時(shí)運(yùn)用。當(dāng)一個(gè)進(jìn)程由運(yùn)行轉(zhuǎn)入其他狀態(tài)時(shí),須要把這些信息
保存起來(lái)。當(dāng)一個(gè)進(jìn)程投入運(yùn)行時(shí),又須要把這些內(nèi)容寫(xiě)入相應(yīng)的寄存器。同時(shí)進(jìn)行中
斷處理也須要保存CPU現(xiàn)場(chǎng)。
⑦通信信息communicationinformation:是指每個(gè)進(jìn)程在運(yùn)行過(guò)程中與別的進(jìn)程進(jìn)
行通信時(shí)所記錄的有關(guān)信息。
⑧家庭聯(lián)系processfamily:有的系統(tǒng)允許一個(gè)進(jìn)程創(chuàng)建自己的子進(jìn)程,這樣,會(huì)組
成一個(gè)進(jìn)程家庭。在pcb中必需指明本進(jìn)程與家庭的聯(lián)系,如它的子進(jìn)程和父進(jìn)程的標(biāo)
識(shí)符。
⑨占有資源清單own_resource,用于設(shè)備管理。
⑩進(jìn)程優(yōu)先級(jí)priority,在中斷處理,進(jìn)程調(diào)度過(guò)程中都須要比較進(jìn)程之間的優(yōu)先
級(jí)。
上述項(xiàng)目是一般PCB結(jié)構(gòu)應(yīng)包含最基本內(nèi)容。不同的操作系統(tǒng)所運(yùn)用的PCB結(jié)構(gòu)
是不同的。在UNIX系統(tǒng)中,為完成存儲(chǔ)管理,文件管理,還在PCB結(jié)構(gòu)中設(shè)有i結(jié)點(diǎn)
指針,主存地址,當(dāng)前中斷愛(ài)護(hù)區(qū)內(nèi)⑷等內(nèi)容。
?推斷:進(jìn)程是基于多道程序技術(shù)而提出來(lái)的。其最基本的特性是并發(fā)性和動(dòng)態(tài)性;
進(jìn)程的執(zhí)行也即在各種基本狀態(tài)之間多次轉(zhuǎn)換的過(guò)程。但只有處于就緒,堵塞,執(zhí)行這
3種狀態(tài)的進(jìn)程位于內(nèi)存。(中科院軟件所2000年試題)
【解答】
錯(cuò)誤。①去掉并發(fā)性;②進(jìn)程在新,死狀態(tài)上只經(jīng)過(guò)一次;③進(jìn)程都在內(nèi)存中。
?一個(gè)單CPU的操作系統(tǒng)共有n個(gè)進(jìn)程,不考慮進(jìn)程狀態(tài)過(guò)渡的狀況:(北京大學(xué)
1995年試題)
①給出運(yùn)行進(jìn)程的個(gè)數(shù)。
②給出就緒進(jìn)程的個(gè)數(shù)。
③給出等待進(jìn)程的個(gè)數(shù)。
【分析】
單處理機(jī)在任一時(shí)刻只能處理一道程序,在不考慮狀態(tài)過(guò)渡的狀況下,任一進(jìn)程只
有3種狀態(tài),即運(yùn)行,就緒和等待。但此時(shí)該系統(tǒng)其他條件未知(如資源安排狀況),
故無(wú)法確定就緒進(jìn)程和等待進(jìn)程的數(shù)目。
【解答】
①1。
②不肯定。
③不肯定。
?填空:為了實(shí)現(xiàn)進(jìn)程由等待狀態(tài)轉(zhuǎn)換成就緒狀態(tài)的狀態(tài)變化,操作系統(tǒng)應(yīng)供應(yīng)
原語(yǔ)。(華中科技大學(xué)2001年試題)
【解答】
喚醒原語(yǔ)。
?什么是線程?試說(shuō)明線程與進(jìn)程的關(guān)系。(南京大學(xué)2000年試題)
【解答】
在引入線程的OS中,線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)調(diào)度和分派的基本單位。
進(jìn)程與線程既區(qū)分,又聯(lián)系。進(jìn)程是任務(wù)調(diào)度的單位,也是系統(tǒng)資源的安排單位;
而線程是進(jìn)程中的一條執(zhí)行路徑,當(dāng)系統(tǒng)支持多線程處理時(shí),線程是任務(wù)調(diào)度的單位,
但不是系統(tǒng)資源的安排單位。每個(gè)進(jìn)程至少有一個(gè)執(zhí)行線程。
3.5同步,互斥與通信
?何謂臨界區(qū)?下面給出的實(shí)現(xiàn)兩個(gè)進(jìn)程互斥的算法是平安的嗎?為什么?(中國(guó)
科學(xué)技術(shù)大學(xué)1998年試題)
#defineTRUE;#defineFALSE;
intflag[2];
flag[0]=flag[l]=FALSE;
entei^crtsec(i)inti;{
WHILE(flag[l-i]);
flag[i]=TRUE;}
leave-crtsec(i)inti;{
flag[i]=FALSE;}
processi:/*i=0ORi=1*/
enter-crtsec(i);/*進(jìn)入臨界區(qū)*/
INCRTICALSECTION
Leave-crtsec(i);/*離開(kāi)臨界區(qū)*/
【解答】
一次僅允許一個(gè)進(jìn)程運(yùn)用的資源稱(chēng)為臨界資源,在進(jìn)程中對(duì)于臨界資源訪問(wèn)的程序
段稱(chēng)為臨界區(qū)。
從概念上講,系統(tǒng)中各進(jìn)程在邏輯上是獨(dú)立的,它們可以按各自獨(dú)立的速度向前推
動(dòng)。但由于它們共享某些臨界資源,而產(chǎn)生了臨界區(qū)問(wèn)題。對(duì)于具有臨界區(qū)問(wèn)題的共行
進(jìn)程,它們之間必需互斥,以保證不會(huì)同時(shí)進(jìn)入臨界區(qū)。
這種算法是不平安的。因?yàn)?,在進(jìn)入臨界區(qū)的操作enter-crtsec()不是一個(gè)原子操作,
假如兩個(gè)進(jìn)程同時(shí)執(zhí)行完其循環(huán)(此前兩個(gè)flag均為False),則這兩個(gè)進(jìn)程可以同時(shí)進(jìn)
入臨界區(qū)。
?舉例說(shuō)明P,V操作為什么要求設(shè)計(jì)成原語(yǔ)(即對(duì)同一信號(hào)量上的操作必需互
斥)。(北京大學(xué)1993年試題)
【分析】
這是一個(gè)概念題,要求考生對(duì)P,V操作有較深刻的理解。
【解答】
P操作的流程如下所示。
PROCEDUREP(S)BEGIN
lockoutinterrupts;
S:=S-l;
IFS<0THEN
BEGIN
status(q):=blockeda;
insert(Q,q);
unlockinterrupts;
scheduler;
END;
ELSEunlockinterruptsEND;
設(shè)信號(hào)量S的初值為1,當(dāng)一個(gè)P操作執(zhí)行完"S:=S-1"后,S的值為0,該P(yáng)操作
不應(yīng)被堵塞。但若P操作不是一個(gè)原語(yǔ),也就是說(shuō)在一個(gè)P操作執(zhí)行的過(guò)程中可以有另
一個(gè)P操作同時(shí)在執(zhí)行,假如第2個(gè)P操作在第1個(gè)P操作執(zhí)行推斷語(yǔ)句“IFS<0”前也
執(zhí)行了"S:=S-1”操作,則這時(shí)的S值為-1。這時(shí)第一個(gè)P操作將會(huì)被堵塞。這樣的P操
作不符合P操作的語(yǔ)義。
同樣地,對(duì)于V操作,其流程為:
PROCEDUREV(S)BEGIN
lockoutinterrupts;
S:=S+1;
IFS<=0THEN
BEGIN
remove(Q,R);
status(R):=readya;
insert(RL,R);
length(RL):=length(RL)+1;
END;
unlockinterrupts;END;
設(shè)信號(hào)量s的初值為-1,當(dāng)一個(gè)V操作執(zhí)行完"S:=S+1”后,S的值為0,該V操
作應(yīng)當(dāng)喚醒一個(gè)被P操作堵塞的進(jìn)程。但若V操作不是一個(gè)原語(yǔ),也就是說(shuō)在一個(gè)V
操作執(zhí)行的過(guò)程中可以有另一個(gè)V操作同時(shí)在執(zhí)行。假如第2個(gè)V操作在第1個(gè)V操
作執(zhí)行推斷語(yǔ)句"IFSN"前也執(zhí)行了"S:=S+1"操作,則這時(shí)的S值為1。這時(shí)第1個(gè)V
操作將不再去喚醒被堵塞的進(jìn)程。這樣的V操作不符合V操作的語(yǔ)義。
同樣地,當(dāng)P操作的執(zhí)行過(guò)程中插入了V操作,也會(huì)出現(xiàn)不符合原語(yǔ)語(yǔ)義的狀況。
例如,在P操作執(zhí)行完"S:=S-1”后,S的值為-1,經(jīng)推斷,該進(jìn)程應(yīng)當(dāng)被堵塞。但若在
進(jìn)行推斷后堵塞進(jìn)程前執(zhí)行完另外一個(gè)V操作,則該V操作并沒(méi)有可以喚醒的被堵塞的
進(jìn)程。而當(dāng)V操作執(zhí)行完后接著執(zhí)行P操作時(shí),該P(yáng)操作仍將堵塞該進(jìn)程,這一進(jìn)程將
不被喚醒。
對(duì)于V操作的執(zhí)行過(guò)程中插入了P操作,也會(huì)出現(xiàn)不符合原語(yǔ)語(yǔ)義的狀況。例如,
在V操作執(zhí)行完"S:=S+1”后,S的值為1,該進(jìn)程無(wú)需喚醒其他進(jìn)程。但若在進(jìn)行推
斷前執(zhí)行了一個(gè)P操作,則在后續(xù)操作中須要喚醒一個(gè)堵塞進(jìn)程。
【擴(kuò)展】
類(lèi)似這一類(lèi)有關(guān)概念的探討,首先須要明確概念的定義,然后再進(jìn)行探討。在探討
的過(guò)程中,對(duì)可能發(fā)生的狀況應(yīng)分類(lèi)探討。論述要清晰。
?一個(gè)系統(tǒng)有多個(gè)進(jìn)程(>5)共同存在并同時(shí)工作,但只有5臺(tái)磁帶機(jī)。每個(gè)進(jìn)
程最多可以申請(qǐng)一臺(tái)磁帶機(jī)工作。編制了下列程序來(lái)管理磁帶機(jī):(北京大學(xué)1993年試
題)
申請(qǐng):
PROCEDUREget_tape(VARx:integer);
VARi:integer;
tape_units:sharedinteger;
wait_tape:sharedboolean;
tape:sharedARRAY[0..4]OFinteger;
BEGIN
wait_tape:=true;
P(S);
WHILE(wait_tape二true)DO
BEGIN
IFtape_units>0THEN
BEGIN
tape_units:=tape_units-l;
i:=0;
WHILE(i<=4)DO
BEGIN
IFtape[i]=0THEN
BEGIN
x:=i;
tape[i]:=1;
exit
END;
i:=i+1;
END;
wait_tape:二false;
END;
END;
V(S);
END;釋放:
PROCEDURErelease_tape(x:integer);
VARtape_units:sharedinteger;
tape:sharedARRAY[0..4]OFinteger;
BEGIN
P(S);
tape_units:二tape_units+1;
tape[x]:=0;
V(S);
END;
說(shuō)明:
shared表示該變量為多個(gè)進(jìn)程共享。
S為信號(hào)量,初值為lo
其他變量初值為:
tape[i]=0(0<i<4)
tape_units=5
wait_tape=false
問(wèn):
①上述程序的問(wèn)題在什么地方?
②改正它。
【分析】本題考查了臨界資源的屬性。臨界資源可以為多個(gè)進(jìn)程共享,訪問(wèn),必需
是全部變量。
【解答】
程序的問(wèn)題有:
(1)全部的共享變量應(yīng)是全局變量,而非局部變量。
(2)wait_tape也應(yīng)互斥共享,但在題中并未實(shí)現(xiàn)這一點(diǎn)。
改后的程序如下:
BEGIN
Vartape_units:sharedinteger;
tape:sharedARRAY[0..4]OFinteger;
wait_tape:sharedinteger;
S:integer;
PROCEDUREget_tape(varx:integer);
BEGIN
vari:integer;
P(S);
wait_tape:=true;
WHILE(wait_tape二true)DO
BEGIN
IFtape_units>0THEN
BEGIN
tape_units:二tape_units-1;
i=0;
WHILE(i<=4)DO
BEGIN
x:=i;
tape[i]:=1;
exit
END;
i:=i+1;
END;
wait_tape:=folse;
END;
END;
V(S);
END;
PROCEDURErelease_tape(x:integer);
BEGIN
P(S);
tape_units:=tape_units+1;
tape[x]:=0;
V(S);
End;
3.6算法設(shè)計(jì)題
?進(jìn)程A和B利用公共緩沖池交換數(shù)據(jù)。設(shè)緩沖池有N個(gè)緩沖塊,進(jìn)程A每次生
成一個(gè)數(shù)據(jù)塊存入一空緩沖區(qū),進(jìn)程B每次從緩沖池中取出一個(gè)滿的緩沖塊。試用信號(hào)
量及P,V操作實(shí)現(xiàn)進(jìn)程A和B的同步。(中山大學(xué)1996年試題)
【分析】
本題是標(biāo)準(zhǔn)的生產(chǎn)者一消費(fèi)者問(wèn)題。與上題相比,運(yùn)用了多緩沖區(qū),須要增加一個(gè)
信號(hào)量。另外,環(huán)形緩沖池和環(huán)形隊(duì)列管理也是考點(diǎn)之一。
【解答】
Varmutex,empty,full:semaphore:1,n,0;
buffer:ARRAY[0..n-l]ofitem;
in,out:integer:=0,0;
BEGIN
COBEGIN:
A:BEGIN
LI:
produceadateblock;
P(empty);
P(mutex);
Buffer[in]:=nextp;
in:=(in+1)modn
V(mutex);
V(full);
GOTOLI;
END;
B:BEGIN
L2:
P(fuU);
P(mutex);
Nextpc:=Bufler[out];
out:二(out+1)modn
V(mutex);
V(empty);
consumetheiteminnextc
GOTOL2;
END;
GOTOL2;END;
【擴(kuò)展】
此題應(yīng)留意以下幾點(diǎn):
(1)在全部的程序中P(mutex)和V(mutex)應(yīng)成對(duì)出現(xiàn)。
⑵對(duì)資源信號(hào)量empty和foil的P,V操作也必需成對(duì)出現(xiàn),但它們是處于不
同的程序中,正是這一點(diǎn)保證了互斥共享。
(3)在每個(gè)程序中的P操作依次不能顛倒,應(yīng)先執(zhí)行對(duì)資源信號(hào)量的操作,再執(zhí)
行對(duì)互斥信號(hào)量的操作,否則可能引起進(jìn)程死鎖。
?設(shè)有一個(gè)具有N個(gè)信息元素的環(huán)形緩沖區(qū),A進(jìn)程依次地把信息寫(xiě)入緩沖區(qū),B
進(jìn)程依次地從緩沖區(qū)讀出信息。回答下列問(wèn)題:(中國(guó)科學(xué)院軟件探討所1996年試題)
①敘述A,B兩進(jìn)程的相互制約關(guān)系;②判別下列用RV操作表示的同步算法是
否正確?如不正確,試說(shuō)明理由,并修改成正確算法。
VARbuffer:ARRAY0..N-1OFT;
in,out:O..N-1;VARSLS2:Semaphore;
SI:=0;S2:=N;in:=out:=0;
PROCEDUREA:
BEGIN
REPEAT
生產(chǎn)數(shù)據(jù)m;
P(S2);
Buffer(in):二m;
in:=(in+l)MODN;
V(S1);
forever
END;
PROCEDUREB:
BEGIN
REPEAT
V(S2);
m:=buffer(out);
消費(fèi)m;
out:=(out+1)MODN;
P(S1);
forever
END;
【分析】
本題是一個(gè)標(biāo)準(zhǔn)的生產(chǎn)者-消費(fèi)者問(wèn)題。題中所給的算法與標(biāo)準(zhǔn)算法不同,但考生
不能因此就說(shuō)這個(gè)算法不正確??忌毤?xì)致分析試題中所給出的算法。
在本題中,進(jìn)程B在運(yùn)用緩沖區(qū)前(讀緩沖區(qū))無(wú)需進(jìn)行任何P操作,即進(jìn)程B
不會(huì)因任何緣由被堵塞。這與題目中的限制要求不相符。因此這個(gè)算法實(shí)現(xiàn)是錯(cuò)誤的。
此外,對(duì)緩沖區(qū)的訪問(wèn)也沒(méi)有用互斥信號(hào)量進(jìn)行限制。
【解答】
①A和B兩進(jìn)程的相互制約關(guān)系如下:
當(dāng)緩沖區(qū)滿時(shí),A進(jìn)程不可以寫(xiě),必需等待;當(dāng)緩沖區(qū)空時(shí),B進(jìn)程不可以讀,必
需等待。
②該算法有錯(cuò),它對(duì)讀進(jìn)程進(jìn)入臨界區(qū)未加限制。當(dāng)緩沖區(qū)為空時(shí),也可以進(jìn)入臨
界區(qū)讀信息。當(dāng)存在多個(gè)讀進(jìn)程和多個(gè)寫(xiě)進(jìn)程時(shí),還須要引入一個(gè)信號(hào)量SO以防止同
時(shí)讀或同時(shí)寫(xiě)。
改進(jìn)后的算法如下:
VARbuffer:ARRAY0..N-1OFT;
in,out:O..N-1;VARSO,SI,S2:Semaphore;
SO:=1;S1:=0;S2:=N;in:=out:=0;
PROCEDUREA:
BEGIN
REPEAT
生產(chǎn)數(shù)據(jù)m;
P(S2);
P(S0);
Buffer(in):=m;
in:=(in+1)MODN;
V(S0);
V(S1);
forever
END;
PROCEDUREB:
BEGIN
REPEAT
P(S1);
P(so);
m:=bufier(out);
out:=(out+1)MODN;
V(S0);
V(S2);
消費(fèi)m;
forever
END;
【擴(kuò)展】
本題是一類(lèi)判別錯(cuò)誤和改錯(cuò)題。這類(lèi)題目一般是用來(lái)檢查考生對(duì)一些典型算法的駕
馭程度的。在本題中,是考查考生對(duì)生產(chǎn)者一消費(fèi)者問(wèn)題的駕馭。解答這類(lèi)問(wèn)題時(shí),首
先須要對(duì)標(biāo)準(zhǔn)算法嫻熟駕馭,其次,還需對(duì)算法的變化做到心中有數(shù)。不要把正確的變
化列為出錯(cuò)點(diǎn)。例如本例中,假如題目中的算法給出的V操作依次與標(biāo)準(zhǔn)算法不同,考
生則不能認(rèn)為其解答是錯(cuò)誤的。因?yàn)樵谙拗扑惴ㄖ?,V操作的依次不會(huì)影響算法的正確
性。
?今有3個(gè)并發(fā)進(jìn)程R,M和P,它們共享了一個(gè)可循環(huán)運(yùn)用的緩沖區(qū)B,緩沖區(qū)
B共有N個(gè)單元。進(jìn)程R負(fù)責(zé)從輸入設(shè)備讀信息,每讀一個(gè)字符后,把它存放在緩沖區(qū)
B的一個(gè)單元中;進(jìn)程M負(fù)責(zé)處理讀入的字符,若發(fā)覺(jué)讀入的字符中有空格符,則把它
改成“,“;進(jìn)程P負(fù)責(zé)把處理后的字符取出并打印輸出。當(dāng)緩沖區(qū)單元中的字符被進(jìn)程
P取出后,則又可用來(lái)存放下一次讀入的字符。請(qǐng)用P,V操作為同步機(jī)制寫(xiě)出它們能
正確并發(fā)執(zhí)行的程序。(南京大學(xué)1997年試題)
【分析】
此題是3個(gè)進(jìn)程之間的同步問(wèn)題。明顯R與M,R與P,P與M之間均應(yīng)有一緩
沖區(qū)指針。與之對(duì)應(yīng)有3個(gè)信號(hào)量。
【解答】
Varfull,changed,empty,mutex:integer;
VarfullP,changedP,emptyP:integer;
Varch:char;
VarcharrayARRAY[0..n]ofchar;
fullP:=0;
emptyP:=0;
changedP:=0;
fidl:=0;
empty:二n;
changed:=0;
mutex:=0;R:
BEGIN
getchar(ch);
P(Empty);
P(mutex);
charray[fullP]:=ch;
fullP:=(fullP+1)modn;
V(mutex);
V(changed);
END;
M:
BEGIN
P(changed);
P(mutex);
ch:=charray[changedP];
ifch=*'then
ch=',';
changedP:=(changedP+1)modn;
V(fuU);
V(changed);
END;
P:
BEGIN
P(fuU);
P(mutex);
ch:=charray[emptyP];
putchar(ch);
emptyP:二(emptyP+1)modn;
V(mutex);
V(empty);
END;
【擴(kuò)展】
本題在進(jìn)程同步之外,還考查了考生基本編程實(shí)力及環(huán)形隊(duì)列操作??忌鷳?yīng)當(dāng)留意
這個(gè)信號(hào)。盡管P,V操作本身已有肯定難度,但仍舊存在結(jié)合其他知識(shí)點(diǎn)命題,以進(jìn)
一步增加難度的可能。
我們可以列舉一些知識(shí)點(diǎn)綜合的方向。比如說(shuō),在讀者一寫(xiě)者問(wèn)題中,可以結(jié)合
UNIX文件系統(tǒng)附帶考查文件打開(kāi),關(guān)閉等操作;可以把P,V操作和實(shí)際的資源管理
問(wèn)題結(jié)合起來(lái),等等。
?多個(gè)進(jìn)程共享一個(gè)文件,其中只讀文件的稱(chēng)之為讀者,其余只寫(xiě)文件的稱(chēng)為寫(xiě)者。
讀者可以同時(shí)讀,但是寫(xiě)者只能獨(dú)立地寫(xiě)。(中科院軟件所1995年試題)
①說(shuō)明進(jìn)程間的相互制約關(guān)系,應(yīng)設(shè)哪些信號(hào)量?
②用P,V操作寫(xiě)出其同步算法。
③修改上述的同步算法,使得它對(duì)寫(xiě)者優(yōu)先,即一旦有寫(xiě)者到達(dá),后續(xù)的讀者都必
需等待,而無(wú)論是否有讀者在讀文件。
【分析】
本題要求寫(xiě)出的算法與前面的題目略有不同。這里的兩類(lèi)進(jìn)程(讀者和寫(xiě)者進(jìn)程)
的限制是不相同的。對(duì)于寫(xiě)者進(jìn)程,只能獨(dú)占文件,即當(dāng)有寫(xiě)者進(jìn)程時(shí)不能有其他進(jìn)程
運(yùn)行;對(duì)于讀者進(jìn)程,可以與其他的讀者進(jìn)程共享文件,即當(dāng)有讀者進(jìn)程的,只允許其
他的讀者進(jìn)程運(yùn)行,而不允許寫(xiě)者進(jìn)程運(yùn)行。此外,當(dāng)全部正在運(yùn)行的讀者進(jìn)程運(yùn)行完
畢后,才允許其他的寫(xiě)者進(jìn)程進(jìn)入。
為了達(dá)到這一限制效果,我們引入了一個(gè)變量rc,用于記錄當(dāng)前正在運(yùn)行的讀者進(jìn)
程數(shù)。每個(gè)讀者進(jìn)程進(jìn)入系統(tǒng)后須對(duì)rc值加1。當(dāng)rc值由0變?yōu)?時(shí),說(shuō)明是第一個(gè)讀
者進(jìn)程進(jìn)入,因此須要該讀者進(jìn)程對(duì)限制寫(xiě)者進(jìn)程的信號(hào)量進(jìn)行P操作,以便與寫(xiě)者進(jìn)
程互斥運(yùn)行;當(dāng)rc值由非。值增加時(shí),說(shuō)明不是第一個(gè)讀者進(jìn)程,此時(shí)限制寫(xiě)者進(jìn)程的
信號(hào)量已經(jīng)過(guò)P操作限制禁止寫(xiě)者進(jìn)程進(jìn)入,因此不須要再次對(duì)該信號(hào)量進(jìn)行P操作。
當(dāng)讀者進(jìn)程退出時(shí),須對(duì)rc做減1操作。如發(fā)覺(jué)減1后rc值變?yōu)?,說(shuō)明是最終一
個(gè)讀者進(jìn)程退出,因此須要該讀者進(jìn)程對(duì)限制寫(xiě)者進(jìn)程的信號(hào)量進(jìn)行V操作,以便使寫(xiě)
者進(jìn)程能夠進(jìn)入。
【解答】
①進(jìn)程間的相互制約關(guān)系有三類(lèi)。一是讀者之間允許同時(shí)讀;二是讀者與寫(xiě)者之間
須互斥進(jìn)行;三是寫(xiě)者之間須互斥寫(xiě)。
②進(jìn)程間的限制算法如下所示。
BEGIN
integermutexl,mutex2,rc;
mutex1:=1;
mutex2:二1;
rc:=0;
COBEGIN
reader:BEGIN
P(mutexl);
rc:=rc+1;
IFrc=1THENP(mutex2);
V(mutexl);
Readingthefile;
P(mutexl);
rc:=rc-l;
IFrc=0THENV(mutex2);
V(mutexl);
END;
writer:BEGIN
P(mutex2);
Writeingthefile;
V(mutex2);
END;
COENDEND;
③為了提高寫(xiě)者的優(yōu)先級(jí),我們?cè)黾右粋€(gè)信號(hào)量W,用以在寫(xiě)進(jìn)程到達(dá)時(shí)封鎖后續(xù)
的讀者進(jìn)程。相應(yīng)的限制算法如下:
BEGIN
integermutex1,mutex2,rc,w;
mutex1:=1;
mutex2:=1;
rc:=0;
w:二1;
COBEGIN
reader:BEGIN
P(w);
P(mutexl);
rc:=rc+1;
IFrc=1THENP(mutex2);
V(mutexl);
V(w);
ReadingtheFILE;
P(mutexl);
rc:=rc-l;
IFrc=0THENV(mutex2);
V(mutexl);
END;
writer:BEGIN
P(w);
P(mutex2);
WriteingtheFILE;
V(mutex2);
V(w);
END;
COENDEND;
【擴(kuò)展】
對(duì)于可由一類(lèi)進(jìn)程多次訪問(wèn),而不同類(lèi)的進(jìn)程必需互斥訪問(wèn)的資源的限制,是進(jìn)程
限制中常見(jiàn)的一類(lèi)問(wèn)題。本題是這類(lèi)問(wèn)題中的一個(gè)典型,它給出了對(duì)于這類(lèi)資源的限制
方法,即采納一個(gè)資源計(jì)數(shù)變量rc進(jìn)行限制。把對(duì)于該資源的訪問(wèn)限制變成對(duì)變量rc
的訪問(wèn)。這時(shí),資源計(jì)數(shù)變量rc是一個(gè)臨界資源,須要用信號(hào)量對(duì)其進(jìn)行訪問(wèn)限制。
?有橋如圖所示。(北京大學(xué)1992年試題)
車(chē)流如箭頭所示。橋上不允許兩車(chē)交會(huì),但允許同方向多輛車(chē)依次通行(即橋上可
以有多個(gè)同方向的車(chē))。用P,V操作實(shí)現(xiàn)交通管理以防止橋上堵塞。
【分析】
由于橋上不允許兩車(chē)會(huì)面,故橋應(yīng)被互斥訪問(wèn),而同一方向上允很多輛車(chē)依次通過(guò),
即臨界區(qū)允很多個(gè)實(shí)例訪問(wèn)。用一個(gè)信號(hào)量來(lái)互斥訪問(wèn)臨界區(qū)。由于不能允許某一方向
的車(chē)完全“限制"橋,應(yīng)保證最多某一方向上連續(xù)通過(guò)肯定數(shù)量的車(chē)后,必需讓另一方向
上的車(chē)通過(guò)。用另兩個(gè)信號(hào)量來(lái)實(shí)現(xiàn)這一點(diǎn)。
【解答】
BEGIN
Varintegermutex,availn,avails;
availn=m;
avails=m;
mutex=0;
COBEGIN
South:BEGIN
LI:
P(avails);
P(mutex);
Crossthebridge;
V(mutex);
V(availn);
END;
North:BEGIN
LI:
P(availn);
P(mutex);
Crossthebridge;
V(mutex);
V(avails);
END;
COEND;
END;
【擴(kuò)展】
在解此類(lèi)題目時(shí),首先應(yīng)分析清晰此題的臨界區(qū)是什么,題目對(duì)臨界區(qū)的共享的約
束條件是什么,再分析應(yīng)設(shè)幾個(gè)信號(hào)量,各信號(hào)量的作用是什么。當(dāng)全部問(wèn)題都分析清
晰之后再做題。另外當(dāng)遇到實(shí)際問(wèn)題時(shí),依據(jù)實(shí)際狀況,留意分析是否應(yīng)補(bǔ)充約束條件。
在實(shí)際考試中最好把全部分析過(guò)程,補(bǔ)充的約束條件寫(xiě)出,一方面扶植解題,一方面扶
植老師閱卷。
3.7進(jìn)程通信
?圖所示的是高級(jí)通信原語(yǔ)SEND和RECEIVE不完整的框圖。請(qǐng)?zhí)畛溥m當(dāng)?shù)腜,V
操作,并說(shuō)明所用信號(hào)量的意義和初值。(中國(guó)科學(xué)院軟件探討所1994年試題)
申詢(xún)一科總區(qū)
消且義消g區(qū)
從消鳥(niǎo)池上摘下一消總
消息區(qū)挖人落自於
消自淺樓恢區(qū)
將放消總區(qū)
【分析】
本題是一個(gè)生產(chǎn)者一消費(fèi)者問(wèn)題,與標(biāo)準(zhǔn)的生產(chǎn)者一消費(fèi)者問(wèn)題的不同之處在于本
題的消息緩沖區(qū)的個(gè)數(shù)是無(wú)限制的,因此,不須要生產(chǎn)者一消費(fèi)者問(wèn)題解答中的信號(hào)量
availo在框圖中所給出的信號(hào)量就是限制消息個(gè)數(shù)的信號(hào)量fiill。為了正確地限制程序流
程,我們還要加入對(duì)應(yīng)于生產(chǎn)者一消費(fèi)者問(wèn)題中的信號(hào)量mutex,以限制對(duì)消息鏈的互
斥訪問(wèn)。
【解答】
框圖中所缺的步驟如下:
①P(S1)
②V(S1)
③P(S2)
@P(S1)
⑤V(S1)
其中,S1是用于限制互斥訪問(wèn)消息鏈的互斥信號(hào)量,其初值為1;S2是用于記錄消
息個(gè)數(shù)的同步信號(hào)量,其初值為0。
?消息緩沖通信技術(shù)是一種高級(jí)通信機(jī)制,由Hansen首先提出。(北京大學(xué)1997
年試題)
①試敘述高級(jí)通信機(jī)制與低級(jí)通信機(jī)制P,V原語(yǔ)操作的主要區(qū)分。
②請(qǐng)給出消息緩沖機(jī)制(有界緩沖)的基本原理。
③消息緩沖通信機(jī)制(有界緩沖)中供應(yīng)發(fā)送原語(yǔ)Send(receiver,a),調(diào)用參數(shù)
a表示發(fā)送消息的內(nèi)存區(qū)首地址,試設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),并用P,V原語(yǔ)操作實(shí)現(xiàn)Send
原語(yǔ)。
【解答】
①P,V操作是一種低級(jí)通信機(jī)制,它們作為同步工具用在進(jìn)程同步和互斥上是特
別有效的,但是作為通信工具,則不夠志向。而高級(jí)通信機(jī)制是指用戶(hù)可直接利用操作
系統(tǒng)所供應(yīng)的一組通信命令,高效傳送大量數(shù)據(jù)的一種通信方式。二者的主要區(qū)分如下:
P,V操作效率較低。
通信對(duì)用戶(hù)不透亮。
②消息緩沖通信機(jī)制,首先由美國(guó)的Hansan提出,并在RC4000上實(shí)現(xiàn)。在這種
通信機(jī)制中,發(fā)送進(jìn)程利用Send原語(yǔ),將消息直接發(fā)送給接收進(jìn)程。接收進(jìn)程利用
Receive原語(yǔ)接受消息。該機(jī)制主要利用的數(shù)據(jù)結(jié)構(gòu)是消息緩沖區(qū)。
發(fā)送進(jìn)程在利用發(fā)送原語(yǔ)發(fā)送消息前,在自己的內(nèi)存空間里設(shè)置一發(fā)送區(qū),把待發(fā)
送的正文,發(fā)送進(jìn)程標(biāo)記符,消息長(zhǎng)度等信息填入,然后調(diào)用發(fā)送原語(yǔ),把消息發(fā)送給
目標(biāo)進(jìn)程。發(fā)送原語(yǔ)首先依據(jù)發(fā)送區(qū)中設(shè)置的長(zhǎng)度來(lái)申請(qǐng)一個(gè)緩沖區(qū)i,接著把發(fā)送區(qū)中
的正文信息復(fù)制到緩沖區(qū)i中。為了能將i掛在接收進(jìn)程的消息隊(duì)列上,應(yīng)先獲得接收進(jìn)
程的內(nèi)部標(biāo)記符。由于該隊(duì)列屬于臨界資源,應(yīng)執(zhí)行同步操作。
接收進(jìn)程調(diào)用接收原語(yǔ)receive。,從自己的消息緩沖隊(duì)列中,摘下第一個(gè)消息緩沖
區(qū)i,并將其中的消息正文拷貝到指定的消息接收區(qū)內(nèi)。
③消息緩沖區(qū)可描述為:
typemessagebuffer=record
sender;發(fā)送者進(jìn)程標(biāo)記符
size;消息長(zhǎng)度
text;消息正文
next;指向下一個(gè)消息緩沖區(qū)的指針
end;
發(fā)送原語(yǔ):
PROCEDUREsend(receive,a)
〃接收進(jìn)程標(biāo)記receive,發(fā)送區(qū)a
BEGIN
getbufi(a.size,i);
i.sender:=a.sender;
i.size:二a.size;
i.text:二a.text;
i.next:=0;
getid(PCB.set,receive.j);
P(j.mutex);
insert(j.mq,i);
V(j.mutex);
V(j.sm);
END;
接收原語(yǔ):
PROCEDUREreceive(b)
〃發(fā)送區(qū)b
BEGIN
j:二internalname;
P(j.sm);
P(j.mutex);
remove(j.mq,i);
V(j.mutex);
b.sender:=i.sender;
b.size:二i.size;
b.text:=i.text;
END;
3.8進(jìn)程調(diào)度
?設(shè)某系統(tǒng)進(jìn)程的狀態(tài)除了最基本的三種狀態(tài)外,還增加了創(chuàng)建狀態(tài),延遲狀態(tài)和
完成狀態(tài)。試畫(huà)出系統(tǒng)的進(jìn)程狀態(tài)變遷圖,并標(biāo)明狀態(tài)變遷可能的緣由。(華中科技大學(xué)
2001年試題)
【解答】
進(jìn)程狀態(tài)變遷圖及可能的緣由如圖所示:
3.9死鎖
?用信號(hào)量及p,v操作解生產(chǎn)者-消費(fèi)者問(wèn)題,并改動(dòng)操作使之產(chǎn)生死鎖。(南開(kāi)
大學(xué)1995年試題)
【分析】
本題是關(guān)于P,V操作及生產(chǎn)者一消費(fèi)者問(wèn)題的一個(gè)基本問(wèn)題。在這里主要考查考
生對(duì)生產(chǎn)者一消費(fèi)者問(wèn)題的理解和對(duì)死鎖問(wèn)題的理解。
【解答】
生產(chǎn)者-消費(fèi)者問(wèn)題的流程如下:
BEGINintegermutex,avail,full;
mutex:=1;
avail:=n;
fuU:=0;
COBEGIN
producer:BEGIN
LI:producenextproduct;
P(avail);
P(mutex);
addTObuffer;
V(foU);
V(mutex);
gotoLI;
END;
consumer:BEGIN
L2:P(fuU);
P(mutex);
takefrombuffer;
V(avail);
V(mutex);
consumeproduct;
gotoL2;
END;
COEND
END;
要使該操作產(chǎn)生死鎖,只需改動(dòng)P操作的依次。能產(chǎn)生死鎖的操作流程如下:
BEGINintegermutex,avail,full;
mutex:=1;
avail:=n;
faU:=0;
COBEGIN
producer:BEGIN
LI:producenextproduct;
P(mutex);
P(avail);
addTObuffer;
V(fuU);
V(mutex);
gotoLI;
END;
consumer:BEGIN
L2:P(mutex);
P(fiiU);
takefrombuffer;
V(avail);
V(mutex);
consumeproduct;
gotoL2;
END;
COEND
END;
在這個(gè)流程里,由于生產(chǎn)者和消費(fèi)者在生產(chǎn)和消費(fèi)之前都要對(duì)信號(hào)量mutex進(jìn)行P
操作,所以,會(huì)導(dǎo)致生產(chǎn)者進(jìn)入臨界區(qū)后(對(duì)mutex進(jìn)行P操作后),因無(wú)緩沖區(qū)而被
堵塞;消費(fèi)者由于無(wú)法進(jìn)入臨界區(qū),無(wú)法釋放緩沖區(qū),從而導(dǎo)致死鎖。同樣地,當(dāng)消費(fèi)
者進(jìn)入臨界區(qū)后(對(duì)mutex進(jìn)行P操作后),由于無(wú)產(chǎn)品可供運(yùn)用被堵塞;而生產(chǎn)者由
于無(wú)法進(jìn)入臨界區(qū),無(wú)法生產(chǎn)產(chǎn)品,從而導(dǎo)致死鎖。
【擴(kuò)展】
產(chǎn)生死鎖是在用信號(hào)量進(jìn)行流程限制過(guò)程中常會(huì)遇到的一個(gè)問(wèn)題。何時(shí)會(huì)發(fā)生死
鎖。如何避開(kāi)死鎖,是在考研中??嫉膯?wèn)題。在本題中,要求用經(jīng)典的生產(chǎn)者-消費(fèi)者問(wèn)
題構(gòu)造出死鎖現(xiàn)象,是一種常見(jiàn)的題型。此外,還會(huì)有要求分析給定流程限制是否會(huì)產(chǎn)
生死鎖等類(lèi)似的問(wèn)題。
?用信號(hào)量及P,V操作解生產(chǎn)者-消費(fèi)者問(wèn)題,并改動(dòng)操作使之產(chǎn)生死鎖。(南開(kāi)
大學(xué)1995年試題)
【分析】
本題是關(guān)于P,V操作及生產(chǎn)者一消費(fèi)者問(wèn)題的一個(gè)基本問(wèn)題。在這里主要考查考
生對(duì)生產(chǎn)者一消費(fèi)者問(wèn)題的理解和對(duì)死鎖問(wèn)題的理解。
【解答】
生產(chǎn)者-消費(fèi)者問(wèn)題的流程如下:
BEGINintegermutex,avail,full;
mutex:=1;
avail:二n;
fuU:=0;
COBEGIN
producer:BEGIN
LI:producenextproduct;
P(avail);
P(mutex);
addTObuffer;
V(fuU);
V(mutex);
gotoLI;
END;
consumer:BEGIN
L2:P(fon);
P(mutex);
takefrombuffer;
V(avail);
V(mutex);
consumeproduct;
gotoL2;
END;
COEND
END;
要使該操作產(chǎn)生死鎖,只需改動(dòng)P操作的依次。能產(chǎn)生死鎖的操作流程如下:
BEGINintegermutex,avail,full;
mutex:=1;
avail:二n;
fuU:=0;
COBEGIN
producer:BEGIN
LI:producenextproduct;
P(mutex);
P(avail);
addTObuffer;
V(fuU);
V(mutex);
gotoLI;
END;
consumer:BEGIN
L2:P(mutex);
P(fuU);
takefrombuffer;
V(avail);
V(mutex);
consumeproduct;
gotoL2;
END;
COEND
END;
在這個(gè)流程里,由于生產(chǎn)者和消費(fèi)者在生產(chǎn)和消費(fèi)之前都要對(duì)信號(hào)量mutex進(jìn)行P
操作,所以,會(huì)導(dǎo)致生產(chǎn)者進(jìn)入臨界區(qū)后(對(duì)mutex進(jìn)行P操作后),因無(wú)緩沖區(qū)而被
堵塞;消費(fèi)者由于無(wú)法進(jìn)入臨界區(qū),無(wú)法釋放緩沖區(qū),從而導(dǎo)致死鎖。同樣地,當(dāng)消費(fèi)
者進(jìn)入臨界區(qū)后(對(duì)mutex進(jìn)行P操作后),由于無(wú)產(chǎn)品可供運(yùn)用被堵塞;而生產(chǎn)者由
于無(wú)法進(jìn)入臨界區(qū),無(wú)法生產(chǎn)產(chǎn)品,從而導(dǎo)致死鎖。
【擴(kuò)展】
產(chǎn)生死鎖是在用信號(hào)量進(jìn)行流程限制過(guò)程中常會(huì)遇到的一個(gè)問(wèn)題。何時(shí)會(huì)發(fā)生死
鎖。如何避開(kāi)死鎖,是在考研中常考的問(wèn)題。在本題中,要求用經(jīng)典的生產(chǎn)者-消費(fèi)者問(wèn)
題構(gòu)造出死鎖現(xiàn)象,是一種常見(jiàn)的題型。此外,還會(huì)有要求分析給定流程限制是否會(huì)產(chǎn)
生死鎖等類(lèi)似的問(wèn)題。
?分析下面信號(hào)量解決哲學(xué)家進(jìn)餐問(wèn)題的同步算法是否滿意同步機(jī)制的準(zhǔn)則。若不
滿意,說(shuō)明為什么,并給出滿意同步機(jī)制準(zhǔn)則的同步算法。(中科院軟件所1998年試題)
VARfork:ARRAY[0..4]OFsemaphore;
fork[0]:=fork[l]:=fork[2]:二fbrk[3]:=fork[4]:=1;
PARBEGIN
Pi:REPEAT/*第i個(gè)哲學(xué)家的生活過(guò)程*/
ThinkFORWhile;
P(fork[i]);
P(FOR[(i+l)MOD5]);
EatFORWHILE;
V(fork[i]);
V(fbrk[(i+1)MOD5]);
UNTILfalse
BXREND
【分析】
哲學(xué)家進(jìn)餐問(wèn)題是進(jìn)程同步與互斥中的一個(gè)典型問(wèn)題。本題要求分析算法是否滿意
同步機(jī)制的準(zhǔn)則,即每次至多有一個(gè)進(jìn)程進(jìn)入臨界區(qū),進(jìn)程應(yīng)在有限時(shí)間內(nèi)進(jìn)入臨界區(qū),
進(jìn)程在臨界區(qū)內(nèi)停留有限時(shí)間。本題所給出的算法會(huì)在特定狀況下產(chǎn)生死鎖,因此無(wú)法
滿意同步機(jī)制的準(zhǔn)則中的“有限等待‘準(zhǔn)則。為了解決這一問(wèn)題,我們可以用額外的信號(hào)
量來(lái)限制對(duì)臨界資源的訪問(wèn),避開(kāi)死鎖。
【解答】
上述同步算法不滿意同步機(jī)制的準(zhǔn)則中的“有限等待”準(zhǔn)則。當(dāng)每個(gè)哲學(xué)家都只拿到
一把叉子時(shí),發(fā)生死鎖。
一種改進(jìn)的算法如下:
VARfork:ARRAY[0..4]OFsemaphore;
VARmutex:semaphore;
fork[0]:=fork[l]:=fork[2]:=fork[3]:=fork[4]:=1;
mutex:=1;
PARBEGIN
Pi:REPEAT/*第i個(gè)哲學(xué)家的生活過(guò)程*/
ThinkFo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 食品生銷(xiāo)售合作合同協(xié)議
- 鐳雕設(shè)備技術(shù)協(xié)議合同
- 預(yù)包裝快餐采購(gòu)合同協(xié)議
- 預(yù)售vip卡合同協(xié)議
- 項(xiàng)目協(xié)議書(shū)合同
- 雇傭員工勞動(dòng)合同協(xié)議
- 隧道鋼架安裝合同協(xié)議
- 面包磚購(gòu)銷(xiāo)合同協(xié)議
- 食品煙酒供銷(xiāo)合同協(xié)議
- 陵園出讓土地合同協(xié)議
- 【真題】2024年宿遷市中考生物試卷(含答案解析)
- 2024年4月自考08229計(jì)算機(jī)統(tǒng)計(jì)分析方法試題
- 汽車(chē)坡道玻璃雨棚施工方案
- 創(chuàng)意輪椅設(shè)計(jì)說(shuō)明書(shū)
- 2024年建筑業(yè)10項(xiàng)新技術(shù)
- 【真題】2023年鎮(zhèn)江市中考化學(xué)試卷(含答案解析)
- 高三一??偨Y(jié)主題班會(huì)課件
- 針刺傷預(yù)防與措施
- 《老年冠心病慢病管理指南(2023版)》解讀
- 兒科感染性疾病課件
- 快遞行業(yè)上市公司財(cái)務(wù)財(cái)務(wù)績(jī)效評(píng)價(jià)研究-以順豐控股為例
評(píng)論
0/150
提交評(píng)論