1.,什么是計(jì)算機(jī)的操作系統(tǒng)址否?
計(jì)算機(jī)系統(tǒng)是由硬件和軟件兩部分組成的。操作系統(tǒng)是配置在計(jì)算機(jī)硬件上的第一層軟件滑负,是對(duì)硬件系統(tǒng)的首次擴(kuò)充在张。·
2.操作系統(tǒng)管理計(jì)算機(jī)系統(tǒng)的那些資源矮慕?
計(jì)算機(jī)系統(tǒng)中帮匾,可將資源分為四類:處理器,存儲(chǔ)器痴鳄,I/O設(shè)備及信息瘟斜。相應(yīng)的OS的主要功能也正是管理這四類資源。即:處理器管理痪寻,用于分配和控制處理器螺句;存儲(chǔ)器管理,主要負(fù)責(zé)內(nèi)存的分配和回收橡类;IO設(shè)備管理蛇尚,負(fù)責(zé)IO設(shè)備的分配和操縱;文件管理顾画,負(fù)責(zé)文件的存取取劫,共享和保護(hù)匆笤。
3.為什么要引進(jìn)分時(shí)系統(tǒng)?分時(shí)系統(tǒng)的主要特點(diǎn)是什么谱邪?
主要特點(diǎn):多路性炮捧。允許一臺(tái)主機(jī)上同時(shí)聯(lián)接多臺(tái)聯(lián)機(jī)終端。
獨(dú)立性惦银。每個(gè)用戶各占一個(gè)終端咆课,彼此獨(dú)立操作,互不干擾扯俱。
及時(shí)性书蚪。用戶的請(qǐng)求能在很短的時(shí)間內(nèi)獲得響應(yīng)。
交互性蘸吓。用戶可通過(guò)終端與系統(tǒng)進(jìn)行廣泛的人機(jī)對(duì)話善炫。
4說(shuō)明分時(shí)系統(tǒng)和多終端實(shí)時(shí)系統(tǒng)的差別。
多路性库继。實(shí)時(shí)系統(tǒng)處理系統(tǒng)也按分時(shí)原則為多個(gè)終端用戶服務(wù)。實(shí)時(shí)控制系統(tǒng)的多路性則主要表現(xiàn)在系統(tǒng)周期性的對(duì)多路現(xiàn)場(chǎng)信息進(jìn)行采集窜醉,以及對(duì)多個(gè)對(duì)象獲多個(gè)執(zhí)行機(jī)構(gòu)進(jìn)行控制宪萄。而分時(shí)系統(tǒng)中的多路性則與用戶情況有關(guān),時(shí)多時(shí)少榨惰、
獨(dú)立性拜英。實(shí)時(shí)信息處理系統(tǒng)中的每個(gè)終端用戶在向?qū)崟r(shí)系統(tǒng)提出服務(wù)請(qǐng)求時(shí),是批次獨(dú)立地操作琅催,互不干擾居凶;而實(shí)時(shí)控制系統(tǒng)中,對(duì)信息的采集和對(duì)對(duì)象的控制也都是彼此互不干擾‘
及時(shí)性藤抡。實(shí)時(shí)信息處理系統(tǒng)對(duì)實(shí)時(shí)性的要求和分時(shí)系統(tǒng)類似侠碧,都是以人所能接受的等待時(shí)機(jī)啊來(lái)確定的;而實(shí)時(shí)控制系統(tǒng)的及時(shí)性缠黍,則是以控制對(duì)象所要求的開(kāi)始截止時(shí)間或完成截止時(shí)間來(lái)確定的弄兜,一般為秒級(jí)到毫秒級(jí),
交互性瓷式。實(shí)時(shí)信息處理系統(tǒng)雖然也具有交互性替饿,但這里人與系統(tǒng)的交互僅限于訪問(wèn)系統(tǒng)
中某些特定的專用服務(wù)程序。它不像分時(shí)系統(tǒng)那樣能向終端用戶提供數(shù)據(jù)處理和資源共享服務(wù)贸典。
可靠性视卢。分時(shí)系統(tǒng)雖然也要求系統(tǒng)可靠,但相比之下廊驼,實(shí)時(shí)系統(tǒng)則要求系統(tǒng)是具有高度的可靠性据过。
1.5 什么是系統(tǒng)功能調(diào)用惋砂。
系統(tǒng)調(diào)用是操作系統(tǒng)提供給用戶的程序級(jí)的接口。用戶可以在自己編寫(xiě)的程序中調(diào)用 操作系統(tǒng)的功能蝶俱。
1.6 網(wǎng)絡(luò)操作系統(tǒng)與分布式操作系統(tǒng)的區(qū)別是什么班利?
1.7 微型計(jì)算機(jī)與大型計(jì)算機(jī)的硬件組織有何不同特點(diǎn)?
l.8 試述虛擬處理機(jī)的概念榨呆。
在虛擬處理機(jī)技術(shù)中罗标,利用多道程序設(shè)計(jì)技術(shù),為每道程序建立一個(gè)進(jìn)程积蜻,讓多道程序并發(fā)的執(zhí)行闯割,以此來(lái)分時(shí)使用一臺(tái)處理器。此時(shí)竿拆,雖然操作系統(tǒng)中只有一臺(tái)處理機(jī)宙拉,但它卻能同時(shí)為多個(gè)用戶服務(wù),是每個(gè)終端用戶都認(rèn)為是有一個(gè)處理機(jī)在專門的服務(wù)丙笋。
即利用多道程序設(shè)計(jì)技術(shù)哲思,把一臺(tái)物理上的處理機(jī)虛擬為多臺(tái)邏輯上的處理機(jī),在每臺(tái)邏輯處理機(jī)上運(yùn)行一道程序蜻展。把用戶所感覺(jué)到的處理機(jī)成為虛擬處理器虚吟。
1.9 操作系統(tǒng)與系統(tǒng)中的其它軟件以及與硬件是什么關(guān)系?
1.10什么是網(wǎng)絡(luò)操作系統(tǒng)怠肋,它與通常的操作系統(tǒng)有何不同敬鬓?
網(wǎng)絡(luò)操作系統(tǒng)是在原來(lái)各自計(jì)算機(jī)操作系統(tǒng)的基礎(chǔ)上研制開(kāi)發(fā)的,用以對(duì)整個(gè)網(wǎng)絡(luò)資 源進(jìn)行統(tǒng)一管理和協(xié)調(diào)控制笙各。它要按照網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)的各個(gè)協(xié)議標(biāo)準(zhǔn)钉答,為通信雙方建立和 拆除通信鏈路;對(duì)傳輸錯(cuò)誤進(jìn)行檢驗(yàn)和校正等等杈抢。用戶可以通過(guò)網(wǎng)絡(luò)訪問(wèn)遠(yuǎn)地資源数尿。由網(wǎng) 絡(luò)操作系統(tǒng)實(shí)現(xiàn)協(xié)調(diào)用戶需求,分配系統(tǒng)資源的工作春感,至于具體的資源管理和控制仍由用 戶的主機(jī)操作系統(tǒng)完成砌创。
l.11定義、比較下列名詞鲫懒,并寫(xiě)出其反義詞嫩实。
(1)聯(lián)機(jī);
是指用戶在控制臺(tái) 或終端前直接控制其作業(yè)的運(yùn)行窥岩,也就是說(shuō)用戶和他的作業(yè)之間有著交互作用甲献。
脫機(jī)。
(2)分時(shí)颂翼;
是把處理機(jī)時(shí)間劃分成很短的時(shí)間片晃洒,輪流地分配 給各個(gè)聯(lián)機(jī)作業(yè)使用慨灭。如果某個(gè)作業(yè)在時(shí)間片結(jié)束之前計(jì)算還未完成,那么該作業(yè)就被暫 時(shí)中斷球及,等待下一輪再繼續(xù)計(jì)算氧骤,此時(shí)CPU讓給另一個(gè)作業(yè)使用。
實(shí)時(shí)
(3)實(shí)時(shí)吃引;
所謂“實(shí)時(shí)”是指對(duì)隨機(jī)發(fā)生的外部事件做出及時(shí)的響應(yīng)并對(duì)其進(jìn)行處理筹陵。實(shí)時(shí)操作 系統(tǒng)通常指這樣一類系統(tǒng):計(jì)算機(jī)能及時(shí)響應(yīng)外部事件的請(qǐng)求,在規(guī)定的時(shí)間內(nèi)完成對(duì)該 事件的處理镊尺,并控制所有實(shí)時(shí)設(shè)備和實(shí)時(shí)任務(wù)協(xié)調(diào)一致地運(yùn)行朦佩。
分時(shí)
(4)交互式計(jì)算
1.12操作系統(tǒng)的主要作用和功能是什么?
從一般用戶的觀點(diǎn)庐氮,可把OS语稠、看作是用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口;從資源管理的觀點(diǎn)看弄砍,則可把OS視為計(jì)算機(jī)系統(tǒng)資源的管理者仙畦。另外,OS音婶、實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象议泵,隱藏了對(duì)硬件操作的細(xì)節(jié),使用戶能更方便的使用機(jī)器桃熄。
1.13什么是多道程序設(shè)計(jì)技術(shù),引入多道程序設(shè)計(jì)技術(shù)的起因和目的是什么型奥?
用戶所提交的作業(yè)都先存放在外存上并排成一個(gè)隊(duì)列瞳收,稱為“后備隊(duì)列”;然后厢汹,由作業(yè)調(diào)度程序按一定的算法從后備隊(duì)列中選擇若干個(gè)作業(yè)調(diào)入內(nèi)存螟深,使他們共享CPU和系統(tǒng)的各種資源。烫葬、
原因:?jiǎn)闻捞幚硐到y(tǒng)中界弧,內(nèi)存中僅有一道作業(yè),它
無(wú)法充分利用系統(tǒng)中的素有資源搭综,致使系統(tǒng)性能較差垢箕,為了進(jìn)一步提高資源的利用率和系統(tǒng)吞吐量,引入多道程序設(shè)計(jì)技術(shù)兑巾。
1.14試畫(huà)出三道作業(yè)的運(yùn)行情況条获。列舉多道程序系統(tǒng)中存在哪些并行運(yùn)行情況。
1.15多道程序系統(tǒng)具有哪些特性蒋歌,并設(shè)想一下這些特性對(duì)操作系統(tǒng)設(shè)計(jì)將帶來(lái)什么 影響帅掘? 1.16比較批處理系統(tǒng)委煤、分時(shí)系統(tǒng)和實(shí)時(shí)系統(tǒng)的特點(diǎn)
2-1 操作系統(tǒng)的運(yùn)行環(huán)境指什么?
操作系統(tǒng)的運(yùn)行環(huán)境主要包括系統(tǒng)的硬件環(huán)境和由其它的系統(tǒng)軟件組成的軟件環(huán)境修档, 同時(shí)操作系統(tǒng)與使用它的操作者之間也有一定相互關(guān)系.
2-2 現(xiàn)代計(jì)算機(jī)為什么設(shè)置目態(tài)/管態(tài)這兩種不同的機(jī)器狀態(tài)碧绞?現(xiàn)在的 Intel 80386 設(shè)置了 四級(jí)不同的機(jī)器狀態(tài)(把管態(tài)又分為三個(gè)特權(quán)級(jí)),你能說(shuō)出自己的理解嗎吱窝?
處理機(jī)有時(shí)執(zhí)行用戶程序讥邻,有時(shí)執(zhí)行操作系統(tǒng)的程序。在什么時(shí)候執(zhí)行哪個(gè)指令集由機(jī) 器的狀態(tài)確定癣诱。有些系統(tǒng)將處理機(jī)工作狀態(tài)劃分為核心狀態(tài)计维,管理狀態(tài)和用戶程序狀態(tài)(又 稱目標(biāo)狀態(tài))三種。但多數(shù)系統(tǒng)將處理機(jī)工作狀態(tài)較簡(jiǎn)單地劃分為管態(tài)(一般指操作系統(tǒng)管 理程序運(yùn)行的狀態(tài))和目態(tài)(用戶程序運(yùn)行時(shí)的狀態(tài))撕予。
為了讓計(jì)算機(jī)工作于多用戶或多任務(wù)的多道程序設(shè)計(jì)環(huán)境中鲫惶,保證操作系統(tǒng)有充分的 協(xié)調(diào)和管理能力,必須把指令系統(tǒng)中的指令分為特權(quán)指令和普通指令实抡。
2-3 什么叫特權(quán)指令欠母?為什么要把指令分為特權(quán)指令和非特權(quán)指令?
為了讓計(jì)算機(jī)工作于多用戶或多任務(wù)的多道程序設(shè)計(jì)環(huán)境中吆寨,保證操作系統(tǒng)有充分的 協(xié)調(diào)和管理能力赏淌,必須把指令系統(tǒng)中的指令分為特權(quán)指令和普通指令。 所謂特權(quán)指令是指只能由操作系統(tǒng)使用的指令啄清,如啟動(dòng)某設(shè)備指令六水,設(shè)置時(shí)鐘指令, 控制中斷屏蔽的某些指令辣卒,清主存指令掷贾,建立存儲(chǔ)保護(hù)指令等等。
2-4 說(shuō)明以下各條指令是特權(quán)指令還是非特權(quán)指令荣茫,并說(shuō)明理由:
(1)啟動(dòng)磁帶機(jī)想帅; (2)求?的 n 次冪; (3)停止 CPU啡莉; (4)讀時(shí)鐘港准; (5)清主存; (6)屏蔽一切中斷咧欣; (7)修改指令地址寄存器內(nèi)容浅缸。
(1) (3) (4) (5) (6)
(2) (7)
2-5 CPU 如何判斷可否執(zhí)行當(dāng)前的特權(quán)指令?
2-6 什么是程序狀態(tài)字该押?主要包括什么內(nèi)容疗杉?
程序狀態(tài)字是處理機(jī)中的重要寄存器。用以指明 CPU 的工作狀態(tài),保證程序順序執(zhí)行烟具。
2-7 存儲(chǔ)保護(hù)的目的是什么梢什?常用的存儲(chǔ)保護(hù)機(jī)構(gòu)有哪兩種?指出它們的要點(diǎn)朝聋。
常用的存儲(chǔ)保護(hù)手段包括界寄存器和存儲(chǔ)保護(hù)鍵嗡午。
2-8 針對(duì)圖 2-3 所示的主存各存儲(chǔ)塊的情況,請(qǐng)回答以下兩種情況對(duì) A冀痕,B荔睹,C 各塊訪問(wèn)合 法? (1)存儲(chǔ)保護(hù)鍵的鑰為“0000” 言蛇; (2)存儲(chǔ)保護(hù)鍵的鑰為“0100” 僻他。
2-9 存儲(chǔ)保護(hù)鍵的取“保護(hù)位”是做什么用的?如何起作用腊尚?
2-10 什么是雙緩沖吨拗?詳述什么是三緩沖模式的操作。在什么環(huán)境下婿斥,三緩沖是有效益的劝篷? 2-11 CPU如何發(fā)現(xiàn)中斷事件?發(fā)現(xiàn)中斷事件后應(yīng)做什么工作民宿?
2-12 說(shuō)明中斷屏蔽的作用娇妓。
2-13 何謂中斷優(yōu)先級(jí)?為什么要對(duì)中斷事件分級(jí)活鹰?
2-14CPU 響應(yīng)中斷時(shí)哈恰,為什么要交換程序狀態(tài)字?怎樣進(jìn)行志群?
處理機(jī)一旦接受某 中斷請(qǐng)求時(shí)蕊蝗,系統(tǒng)進(jìn)行如下操作: (1)將程序狀態(tài)字 PSW 壓入堆棧; (2)將指令指針 IP(相當(dāng)于程序代碼段的段內(nèi)相對(duì)地址)和程序代碼段基地址寄存器 CS 的內(nèi)容壓入堆棧赖舟,以保存被中斷程序的返回地址; (3)取出中斷請(qǐng)求的中斷向量地址(其中包含有中斷處理程序的 IP夸楣,CS 的內(nèi)容)宾抓,以 便轉(zhuǎn)入中斷處理程序; (4)按中斷向量地址把中斷處理程序的程序狀態(tài)字取來(lái)豫喧,放入處理機(jī)的程序狀態(tài)字寄 存器中石洗。
2-15 什么是軟時(shí)鐘(虛擬時(shí)鐘)?有何作用紧显?
讲衫。可能有很多進(jìn)程要求 在某時(shí)間間隔后,或在指定時(shí)刻喚醒它運(yùn)行涉兽,因此招驴,每個(gè)進(jìn)程要有自己的間隔時(shí)鐘。在沒(méi)有 足夠多的硬件時(shí)鐘時(shí)枷畏,可以用軟件為每個(gè)進(jìn)程提供軟時(shí)鐘(或稱虛擬時(shí)鐘) 别厘。時(shí)鐘隊(duì)列就是 實(shí)現(xiàn)這種技術(shù)的方法之一。
2-16 有四個(gè)作業(yè) A拥诡,B触趴,C,D渴肉,要求定時(shí)喚醒運(yùn)行冗懦,其要求如下: A 20 秒后運(yùn)行,經(jīng)過(guò) 40 秒后再次運(yùn)行仇祭。 B 30 秒后運(yùn)行披蕉。 C 30 秒后運(yùn)行,經(jīng)過(guò) 25 秒后再次運(yùn)行前塔。 D 65 秒后運(yùn)行嚣艇。 請(qǐng)建立相應(yīng)的時(shí)鐘隊(duì)列。
2-17 列舉出提出基地址加位移編址的原因华弓。
由于程序要放入主存中才能執(zhí)行食零,因此,指令寂屏、數(shù)據(jù)都要 與主存絕對(duì)地址發(fā)生聯(lián)系贰谣。由于在多道程序系統(tǒng)中,主存存放多道作業(yè)迁霎,所以吱抚,程序員在編 寫(xiě)程序時(shí)不能確定程序在主存中的地址空間,所以不能用絕對(duì)地址編寫(xiě)程序考廉。用相對(duì)于某個(gè) 基準(zhǔn)地址來(lái)編寫(xiě)程序秘豹、安排指令和數(shù)據(jù)的位置,就形成了相對(duì)地址昌粤。所以相對(duì)地址是用于程 序編寫(xiě)和編譯中的地址系統(tǒng)既绕。
2-18 什么叫重定位?有哪幾種重定位技術(shù)涮坐?有何區(qū)別凄贩?
重定位是多道程序系統(tǒng)中最基本的概念。它涉及絕對(duì)地址袱讹、相對(duì)地址和邏輯地址空間等 概念疲扎。
絕對(duì)地址、相對(duì)地址和邏輯地址空間
絕對(duì)地址是指存儲(chǔ)控制部件能夠識(shí)別的主存單元編號(hào)(或字節(jié)地址),也就是主存單元 的實(shí)際地址椒丧。 相對(duì)地址是指相對(duì)于某個(gè)基準(zhǔn)量(通常用零作基準(zhǔn)量)編寫(xiě)程序時(shí)使用的地址壹甥。相對(duì)地 址常用于程序編寫(xiě)和編譯過(guò)程中。邏輯地址空間是指一個(gè)經(jīng)匯編瓜挽、編譯或連接裝配后的目標(biāo)程序的地址集合盹廷。
2-19 本書(shū)第 7 章的圖 7-10 中,圖(a)表示了一個(gè)作業(yè)的地址空間久橙,該作業(yè)被連接裝入程
序裝入主存中俄占,起始地址為 10000(絕對(duì)地址),請(qǐng)表示出該作業(yè)裝入主存后的 情況(存儲(chǔ)空間足夠作業(yè)裝入)淆衷。
2-20 對(duì)比絕對(duì)地址裝入程序與連接裝入程序缸榄。
在個(gè)人計(jì)算機(jī)(如 IBM-PC)中,用戶可以使用的主存起始地址是固定的祝拯。這種機(jī)器 上的編譯和匯編程序往往把源程序翻譯成絕對(duì)地址形式的目標(biāo)程序(以該機(jī)器的用戶可用的 起始地址作為基準(zhǔn)地址)甚带。因此,當(dāng)需要再次裝入目標(biāo)程序時(shí)佳头,就十分簡(jiǎn)單鹰贵,沒(méi)有重定位問(wèn) 題。只要按給出的起始地址康嘉,依次將程序讀入即可碉输。
多數(shù)多道程序系統(tǒng)使用相對(duì)裝入程序(或連接裝入程序)。這種程序的主要功能是把主 程序同各子程序連接裝配成一個(gè)大的完整的程序亭珍,并裝入主存運(yùn)行敷钾。
2-21 說(shuō)明硬件、軟件與固件的區(qū)別肄梨,固件對(duì)操作系統(tǒng)的意義何在阻荒?
許多原屬軟件的功能,通過(guò)微程序設(shè)計(jì)技術(shù)可以轉(zhuǎn)化為硬件众羡, 也就是通常所說(shuō)的固化侨赡,人們也把這些具有軟件功能的硬件稱為固件。
2-22 硬件必須具備哪些條件后粱侣,操作系統(tǒng)才可能提供多道程序設(shè)計(jì)的功能辆毡?
8.1 什么是臨界區(qū)?試舉一個(gè)臨界區(qū)的例子甜害。臨界區(qū)設(shè)計(jì)原則是什么?
臨界區(qū):每個(gè)進(jìn)程中球昨,訪問(wèn)臨界資源的那段代碼稱為臨界區(qū)尔店。例如多臺(tái)電腦共享一臺(tái)打印機(jī)時(shí),條用打印機(jī)執(zhí)行打印的程序就是臨界區(qū)。
設(shè)計(jì)原則:空閑讓進(jìn)嚣州,忙則等待鲫售,有限等待,讓權(quán)等待该肴;
8.2 并發(fā)進(jìn)程之間的制約關(guān)系有哪兩種情竹?引起制約的原因是什么?
進(jìn)程之間存在兩種制約關(guān)系匀哄,即同步和互斥秦效。
同步是由于并發(fā)進(jìn)程之間需要協(xié)調(diào)完成同一個(gè)任務(wù)時(shí)引起的一種關(guān)系,為一個(gè)進(jìn)程等待另一個(gè)進(jìn)程向它直接發(fā)送消息或數(shù)據(jù)時(shí)的一種制約關(guān)系涎嚼。
互斥是由于并發(fā)進(jìn)程之間競(jìng)爭(zhēng)系統(tǒng)的臨界資源引起的阱州,為一個(gè)進(jìn)程等待另一個(gè)進(jìn)程已經(jīng)占有的必須互斥使用的資源時(shí)的一種制約關(guān)系。
8.3 信號(hào)量的物理意義是什么法梯?應(yīng)如何設(shè)置其初值苔货?并說(shuō)明信號(hào)量的數(shù)據(jù)結(jié)構(gòu)。
物理意義:
當(dāng)信號(hào)量 s≥0 時(shí)立哑,s 表示系統(tǒng)中可供使用的資源的數(shù)量夜惭;
當(dāng)信號(hào)量 s<0 時(shí),│s│表示處于等待 s 的隊(duì)列中進(jìn)程的數(shù)量铛绰。
設(shè)置初值:
在描述臨界區(qū)的問(wèn)題時(shí)诈茧,由于臨界區(qū)是互斥使用的,所以至耻,對(duì)于各個(gè)進(jìn)程而言若皱,就是
只有一個(gè)資源,因此尘颓,信號(hào)量的初值是 1走触。
數(shù)據(jù)結(jié)構(gòu):
用于表示資源數(shù)目的整型變量value,一個(gè)進(jìn)程鏈表 L疤苹,用于構(gòu)成等待進(jìn)程隊(duì)列互广。
8.4 現(xiàn)有 P、Q卧土、R 三個(gè)進(jìn)程惫皱。P 負(fù)責(zé)把數(shù)據(jù)讀入緩沖區(qū),Q 負(fù)責(zé)從緩沖區(qū)中取出數(shù)據(jù)尤莺,進(jìn) 行加工計(jì)算旅敷,結(jié)果仍然寫(xiě)入緩沖區(qū)中,R 負(fù)責(zé)把進(jìn)程 Q 得到的結(jié)果輸出颤霎。分別考慮有 一個(gè)容量為 K 的緩沖區(qū)和兩個(gè)容量分別 K 的緩沖區(qū)的情況媳谁。
semaphoresp,sq,sr;
intbuf;sp=1;sq=0;sr=0;
cobegin
process P() {
while(true) {
從磁帶讀入數(shù)據(jù);
P(sp);
Buf=data;
V(sq);
}
}
process Q() {
while(true) {
P(sq);
data=buf;
加工 data;
buf=data;
V(sr);
}
}
process R() {
while(true) {
P(sr);
data=buf;
打印數(shù)據(jù);
}
}
coend.
8.5 考慮一個(gè)公共汽車的運(yùn)營(yíng)情況涂滴。 司機(jī)負(fù)責(zé)開(kāi)車、 到站停車晴音、 當(dāng)售票員關(guān)門后才能再次啟動(dòng)車柔纵; 售票員負(fù)責(zé)售票、 當(dāng)車停穩(wěn)后開(kāi)車門锤躁、 乘客下完車后關(guān)好車門搁料。 試用 P、 V 原語(yǔ)實(shí)現(xiàn)司機(jī)和售票員的同步過(guò)程系羞。
semaphore s1,s2; s1=0;s2=0;
cobegin
司機(jī)();
售票員();
coend
process 司機(jī)() {
while(true) {
P(s1);
啟動(dòng)車輛;
正常行車;
到站停車;
V(s2);
}
}
process 售票員() {
while(true) {
關(guān)車門;
V(s1);
售票;
P(s2);
開(kāi)車門;
上下乘客;
}
}
8.6 何謂死鎖郭计?產(chǎn)生死鎖的原因和必要條件是什么?
所謂死鎖是指兩個(gè)或兩個(gè)以上進(jìn)程處于無(wú)休止地等待永遠(yuǎn)不成立的條件的狀態(tài)觉啊。
死鎖的原因拣宏,可以歸結(jié)為兩點(diǎn):
(l)資源不足。當(dāng)系統(tǒng)中的共享資源不足以滿足多個(gè)進(jìn)程運(yùn)行需要時(shí)杠人,會(huì)由于競(jìng)爭(zhēng)資源產(chǎn)
生死鎖勋乾;
(2)進(jìn)程推進(jìn)順序非法。進(jìn)程在運(yùn)行過(guò)程中嗡善,請(qǐng)求和釋放資源的順序不當(dāng)辑莫,可以導(dǎo)致進(jìn)
程死鎖
產(chǎn)生死鎖的必要條件:
1.互斥條件
指進(jìn)程對(duì)資源的排它性使用,即在一段時(shí)間內(nèi)某資源只能由一個(gè)進(jìn)程占有罩引。如果此時(shí)還
有其它進(jìn)程要求該資源各吨,要求者進(jìn)程只能阻塞,直至占有該資源的進(jìn)程釋放資源為止袁铐。
2.部分分配條件
進(jìn)程已經(jīng)占有了至少一個(gè)資源揭蜒,但又提出了新的資源要求,而該資源又已被其它進(jìn)程占
有剔桨,此時(shí)請(qǐng)求進(jìn)程阻塞屉更,但又對(duì)已經(jīng)獲得的其它資源保持不放。
3.不可剝奪條件
進(jìn)程已獲得的資源洒缀,在未使用完之前瑰谜,不能被剝奪,只能在使用完時(shí)由自己釋放树绩。
4.環(huán)路等待條件
8.7 在解決死鎖問(wèn)題的幾個(gè)方法中萨脑,哪種方法最容易實(shí)現(xiàn)?哪種方法使資源的利用率最高饺饭?
解決/處理死鎖的方法有預(yù)防死鎖渤早、避免死鎖、檢測(cè)和解除死鎖瘫俊,其中預(yù)防死鎖方法最容易實(shí)現(xiàn)鹊杖,但由于所施加的限制條件過(guò)于嚴(yán)格提鸟,會(huì)導(dǎo)致系統(tǒng)資源利用率和系統(tǒng)吞吐量降低;而檢測(cè)和解除死鎖方法可是系統(tǒng)獲得較好的資源利用率和系統(tǒng)吞吐量仅淑。
8.8 請(qǐng)?jiān)敿?xì)說(shuō)明可通過(guò)哪些途徑預(yù)防死鎖?
擯棄“請(qǐng)求和保持”條件胸哥,就是如果系統(tǒng)有足夠資源涯竟,便一次性把進(jìn)程需要的所有資源分配給它;
擯棄“不剝奪”條件空厌,就是已經(jīng)擁有資源的進(jìn)程庐船,當(dāng)它提出新資源請(qǐng)求而不能立即滿足時(shí),必須釋放它已保持的所有資源嘲更,待以后需要時(shí)再重新申請(qǐng)筐钟;
擯棄“環(huán)路等待”條件,就是將所有資源按類型排序標(biāo)號(hào)赋朦,所有進(jìn)程對(duì)資源的請(qǐng)求必須嚴(yán)格按序號(hào)遞增的次序提出。
8.9 在銀行家算法的例子中,如果 P0 發(fā)出的請(qǐng)求向量由 Request0(0,2,0)改為 Request0( 0,1,0)劫映,問(wèn)系統(tǒng)可否將資源分配給它禽最?
可以分配,存在p1,p3,p4,p2,p0的安全序列毛嫉。
8.10 順序程序設(shè)計(jì)和共行程序設(shè)計(jì)的特點(diǎn)有何不同诽俯?
傳統(tǒng)的順序程序具有如下特征:
1. 順序性:包含兩個(gè)方面的含義,一條指令的執(zhí)行一定在前一指令執(zhí)行結(jié)束之后才能
開(kāi)始承粤;一條指令的執(zhí)行以它前一指令執(zhí)行的結(jié)果為前提暴区。
2. 封閉性:程序運(yùn)行的環(huán)境只能被程序本身修改,不能受任何外在因素影響辛臊。所謂程
序的運(yùn)行環(huán)境包括寄存器仙粱、內(nèi)存數(shù)據(jù)、各種堆棧等浪讳。
3. 確定性:程序的運(yùn)行結(jié)果與運(yùn)行速度無(wú)關(guān)缰盏。只要采用同樣的初始值,無(wú)論程序一氣
哈成地執(zhí)行淹遵,還是斷斷續(xù)續(xù)的執(zhí)行口猜,都能得到相同的運(yùn)行結(jié)果。
4. 可再現(xiàn)性:只要給出同樣的數(shù)據(jù)輸入透揣,無(wú)論什么時(shí)刻執(zhí)行該程序均會(huì)得到同樣的運(yùn)
行結(jié)果济炎。
由于并行程序的特殊性,往往不具備順序程序的特征辐真。
8.11 什么叫與時(shí)間有關(guān)的錯(cuò)誤须尚?表現(xiàn)在哪些方面崖堤?舉例說(shuō)明之
在操作系統(tǒng)中引入進(jìn)程、線程的概念后耐床,雖然能夠改善系統(tǒng)資源利用率密幔,提高系統(tǒng)效
率,但是由于進(jìn)程撩轰、線程等對(duì)資源的競(jìng)爭(zhēng)與共享等因素胯甩,給系統(tǒng)運(yùn)行造成混亂,我們稱之為
與時(shí)間有關(guān)的錯(cuò)誤堪嫂。
主要表現(xiàn)在對(duì)共享資源的使用上偎箫。多個(gè)進(jìn)程對(duì)共享區(qū)域的讀寫(xiě)會(huì)導(dǎo)致其他進(jìn)程的讀取錯(cuò)誤。
8.12 若進(jìn)程 A 和 B 在臨界段上互斥皆串,那么當(dāng) A 處于臨界段內(nèi)時(shí)不能打斷它的執(zhí)行淹办,這說(shuō)法對(duì)嗎?為什么恶复?
這種說(shuō)法不對(duì)怜森,臨界段上互斥是表明,兩個(gè)進(jìn)程不能同時(shí)執(zhí)行臨界段的代碼寂玲,但是進(jìn)程是可以被中斷的塔插,B中斷進(jìn)程A,B可以執(zhí)行臨界段代碼拓哟,依然滿足互斥想许。
8.13 同步與互斥這兩個(gè)概念有何區(qū)別?
在操作系統(tǒng)中断序,當(dāng)某一進(jìn)程正在訪問(wèn)某一存儲(chǔ)區(qū)域時(shí)流纹,就不允許其他進(jìn)程進(jìn)行讀寫(xiě)或者修改該存儲(chǔ)區(qū)的內(nèi)容,否則就會(huì)發(fā)生后果無(wú)法估計(jì)的錯(cuò)誤违诗。進(jìn)程之間的這種相互制約的關(guān)系成為進(jìn)程互斥漱凝。并發(fā)進(jìn)程在一些關(guān)鍵點(diǎn)上可能需要互相等待與互通消息,這種相互制約的等待與互通信息稱為進(jìn)程同步诸迟。實(shí)際上進(jìn)程互斥也是一種同步茸炒,他協(xié)調(diào)多個(gè)進(jìn)程互斥進(jìn)入同一個(gè)臨界資源對(duì)應(yīng)的臨界區(qū)。
8.14 信號(hào)量是一個(gè)初值為非負(fù)的整形變量阵苇,可在其上做加“1”和減“1”的操作壁公。這說(shuō)法對(duì)
嗎?如何改正之绅项?
錯(cuò)紊册,只可以做PV操作。
8.15 使用 cobegin/coend 改寫(xiě)下面的表達(dá)式以獲得最大程度的并行性快耿。
(3ab+4)/(c+d)(e-f)
t1:=3ab; t2:=c+d; t3:=e-f
t4:=t1+4; t5:=t2t3; t6:=t4/t5;
BEGIN
COBEGIN
BEGIN
COBEGIN
t1:=3ab;
t2:=c+d;
t3:=e-f
COEND;
t4:=t1+4;
END
t5:=t2**t3;
COEND;
t6:=t4/t5;
END;
8.16 把下列并行計(jì)算改寫(xiě)成順序計(jì)算序列囊陡。
a:=b+c芳绩;
cobegln
d:==bc-x;
e:=(a/b)+n2
coend
8.17 為什么下面的并行計(jì)算程序是不正確的撞反?
cobegin
a:=b+c妥色;
d:=bc-x;
e:=(a/b)+n**2
Coend
假設(shè)
S1: a:=b+c;
S2: d:=bc-x;
S3: e:=(a/b)+n*2
R(S1) = {b,c} W(S1)={a};
R(S2) = {b,c,x} W(S1)=e0mmy0c;
R(S1) = {a,b,n} W(S1)={e};
R(S1) = {b,c} W(S1)={a};
R(S2) = {b,c,x} W(S2)=4mkg00q;
R(S3) = {a,b,n} W(S3)={e};
R(S1)∩W(S3) ∪R(S3)∩W(S1) ∪ W(S1)∩W(S3)={a},不滿足 Bernstein 條件遏片,無(wú)法并行垛膝。
8.18 說(shuō)明下面的說(shuō)法是不正確的理由:當(dāng)幾個(gè)進(jìn)程訪問(wèn)主存中的共享數(shù)據(jù)時(shí),必須實(shí)行互斥以防止產(chǎn)生不確定的結(jié)果丁稀。
當(dāng)多個(gè)進(jìn)程對(duì)共享數(shù)據(jù)進(jìn)行只讀操作時(shí),是可以并行操作的倚聚,因?yàn)椴粫?huì)修改數(shù)據(jù)线衫,所以不會(huì)造成數(shù)據(jù)不同步的情況。
8.19 下面是兩個(gè)并發(fā)執(zhí)行的進(jìn)程惑折,它們能正確執(zhí)行嗎授账?若不能正確執(zhí)行,請(qǐng)舉例說(shuō)明惨驶,并改正之(X 是公共變量)白热。
cobegin
var x:integer;
procecc P1(進(jìn)程 P1)
var y, z: integer粗卜;
begin
x:=1屋确;
y:=0;
If x>=l then y:=y+1;
z:=y
end
Procecc P2(進(jìn)程 P2)
var t续扔,u:integer;
begin
x:=0攻臀;
t:=0;
if x<1 then t:=t+z;
u:=t
end
coend
不能正確執(zhí)行纱昧。進(jìn)程P2中使用了進(jìn)程P1中的結(jié)果z刨啸,如果按照x:=1;x:=0识脆;的順序執(zhí)行设联,且進(jìn)程2先與進(jìn)程1的z:=y語(yǔ)句執(zhí)行了if x<1 then t:=t+z;則此時(shí)z值未知,進(jìn)程會(huì)得到一個(gè)無(wú)法預(yù)知的結(jié)果灼捂。
改進(jìn):設(shè)置信號(hào)量mutex离例,對(duì)z實(shí)施互斥訪問(wèn). 在執(zhí)行t:=t+z;前,一定要先執(zhí)行z:=y
mutex:= 0
cobegin
var x:integer;
procecc P1(進(jìn)程 P1)
var y纵东, z: integer粘招;
begin
x:=1;
y:=0偎球;
If x>=l then y:=y+1;
z:=y
V(mutex);
end
Procecc P2(進(jìn)程 P2)
var t洒扎,u:integer;
begin
x:=0辑甜;
t:=0;
if x<1 then P(mutex); t:=t+z;
u:=t
end
coend
8.20 因修路使 A 地到 B 地的多路并行車道變?yōu)閱诬嚨琅劾洌?qǐng)問(wèn)在此問(wèn)題中磷醋,什么是臨界資源?
單行道
8.21 沒(méi)有幾個(gè)進(jìn)程共享一互斥段胡诗, 對(duì)于如下兩種情況:
(1) 每次只允許一個(gè)進(jìn)程進(jìn)入互斥段邓线;
(2) 最多允許 m 個(gè)進(jìn)程(m<n=同時(shí)進(jìn)入互斥段; 所采用的信號(hào)量是否相同煌恢? 信號(hào)量值的變化范圍如何骇陈?
(1)互斥信號(hào)量初值為 1 ,變化范圍為[ -n + l , 1 ]瑰抵。
(2)互斥信號(hào)量初值為 m 你雌,變化范圍為[ -n + m , m ]。
以上引
8.23 用銀行家算法判斷下述每個(gè)狀態(tài)是否安全二汛。 如果一個(gè)狀態(tài)是安全的婿崭, 說(shuō)明所有進(jìn)程是如
何能夠運(yùn)行完畢的。 如果一個(gè)狀態(tài)是不安全的肴颊, 說(shuō)明為什么可能出現(xiàn)死鎖氓栈。
狀態(tài) A 狀態(tài) B
占有臺(tái)數(shù) 最大需求 占有臺(tái)數(shù) 最大需求
用戶 1 2 6 用戶 1 4 8
用戶 2 4 7 用戶 2 3 9
用戶 3 5 6 用戶 3 5 8
用戶 4 0 2 可供分配的臺(tái)數(shù) 2
可供分配的臺(tái)數(shù) 1
狀態(tài)A安全,狀態(tài)B不安全婿着。
狀態(tài)A中授瘦,將可分配的1臺(tái)給用戶3,然后用戶3可以運(yùn)行竟宋,當(dāng)用戶3結(jié)束釋放資源奥务,其他用戶就可以運(yùn)行完畢。
狀態(tài)B中可分配臺(tái)數(shù)只有2袜硫,用戶1氯葬、2、3的需求都不止2婉陷,所以不論怎么樣分配帚称,3個(gè)用戶的需求都不能滿足,因此會(huì)出現(xiàn)死鎖秽澳。
8.24 給出一個(gè)涉及三個(gè)進(jìn)程和三個(gè)不同資源的死鎖例子闯睹, 并畫(huà)出相應(yīng)的資源分配圖。
進(jìn)程P1已經(jīng)分配了資源r3担神,請(qǐng)求資源r1楼吃;進(jìn)程P2已經(jīng)分配了資源r1,請(qǐng)求資源r2;進(jìn)程P3已經(jīng)分配了資源r2孩锡,請(qǐng)求資源r3酷宵;三個(gè)進(jìn)程相互等待,形成死鎖躬窜。
8.25 沒(méi)有兩個(gè)進(jìn)程 A 和 B 各自按以下順序使用 P浇垦, V 操作并行運(yùn)行(S; 和 S荣挨。 代表系統(tǒng)中
一臺(tái)打印機(jī)和一臺(tái)掃瞄儀資源信號(hào)量):
A 進(jìn)程 B 進(jìn)程
P(Sl) P(S男韧。)
… …
P(S2) P(Sl)
… …
V(S2) V(Sl)
… …
V(S1) V(S2)
… …
(1) 分析各種推進(jìn)速度可能引起的情況, 并畫(huà)出死鎖的圖形表示默垄,
A:P(Sl)此虑;
B:P(S2);
A:P(S2)口锭;等待
B:P(Sl)寡壮;等待,死鎖
A:P(Sl)讹弯;
A:P(S2);
B:P(S2)这溅;等待
B:P(Sl)组民;等待,死鎖
A:V(S2)悲靴;A:V(S1)臭胜;B:V(Sl);B:V(S2)癞尚;執(zhí)行結(jié)束
(2) 用死鎖的必要條件說(shuō)明產(chǎn)生死鎖和不產(chǎn)生死鎖的原因耸三。
死鎖的原因主要是:(1) 因?yàn)橄到y(tǒng)資源不足。(2) 進(jìn)程運(yùn)行推進(jìn)的順序不合適浇揩。(3) 資源分配不當(dāng)?shù)纫亲场H绻到y(tǒng)資源充足,進(jìn)程的資源請(qǐng)求都能夠得到滿足胳徽,死鎖出現(xiàn)的可能性就很低积锅,否則就會(huì)因爭(zhēng)奪有限的資源而陷入死鎖。其次养盗,進(jìn)程運(yùn)行推進(jìn)順序與速度不同缚陷,也可能產(chǎn)生死鎖。產(chǎn)生死鎖的四個(gè)必要條件:(1) 互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用往核。(2) 請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí)箫爷,對(duì)已獲得的資源保持不放。(3) 不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前虎锚,不能強(qiáng)行剝奪硫痰。(4) 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。這四個(gè)條件是死鎖的必要條件翁都,只要系統(tǒng)發(fā)生死鎖碍论,這些條件必然成立。
8.26 某系統(tǒng)有同類資源 m 個(gè)柄慰, 被 n 個(gè)進(jìn)程共享鳍悠, 請(qǐng)分別討論當(dāng) m>n 和 m<=n 時(shí)每個(gè)進(jìn)程最多可以請(qǐng)求多少個(gè)這類資源, 才能使系統(tǒng)一定不會(huì)發(fā)生死鎖坐搔?
那么當(dāng)m>n時(shí),m>n*(x-1)時(shí) 使系統(tǒng)不會(huì)死鎖,
m<=n時(shí),x=1 使系統(tǒng)不會(huì)死鎖
8.27 某系統(tǒng)中有六臺(tái)打印機(jī)藏研, N 個(gè)進(jìn)程共享打印機(jī)資源, 每個(gè)進(jìn)程要求兩臺(tái)概行, 試問(wèn) N 取哪些值時(shí)蠢挡, 系統(tǒng)才不會(huì)發(fā)生死鎖?
N≤5凳忙;
計(jì)算題: