習(xí)題總

1.,什么是計算機(jī)的操作系統(tǒng)?
計算機(jī)系統(tǒng)是由硬件和軟件兩部分組成的。操作系統(tǒng)是配置在計算機(jī)硬件上的第一層軟件,是對硬件系統(tǒng)的首次擴(kuò)充?!?br> 2.操作系統(tǒng)管理計算機(jī)系統(tǒng)的那些資源?
計算機(jī)系統(tǒng)中,可將資源分為四類:處理器,存儲器,I/O設(shè)備及信息。相應(yīng)的OS的主要功能也正是管理這四類資源。即:處理器管理,用于分配和控制處理器;存儲器管理,主要負(fù)責(zé)內(nèi)存的分配和回收;IO設(shè)備管理,負(fù)責(zé)IO設(shè)備的分配和操縱;文件管理,負(fù)責(zé)文件的存取,共享和保護(hù)。
3.為什么要引進(jìn)分時系統(tǒng)?分時系統(tǒng)的主要特點是什么?
主要特點:多路性。允許一臺主機(jī)上同時聯(lián)接多臺聯(lián)機(jī)終端。
獨立性。每個用戶各占一個終端,彼此獨立操作,互不干擾。
及時性。用戶的請求能在很短的時間內(nèi)獲得響應(yīng)。
交互性。用戶可通過終端與系統(tǒng)進(jìn)行廣泛的人機(jī)對話。
4說明分時系統(tǒng)和多終端實時系統(tǒng)的差別。
多路性。實時系統(tǒng)處理系統(tǒng)也按分時原則為多個終端用戶服務(wù)。實時控制系統(tǒng)的多路性則主要表現(xiàn)在系統(tǒng)周期性的對多路現(xiàn)場信息進(jìn)行采集,以及對多個對象獲多個執(zhí)行機(jī)構(gòu)進(jìn)行控制。而分時系統(tǒng)中的多路性則與用戶情況有關(guān),時多時少、
獨立性。實時信息處理系統(tǒng)中的每個終端用戶在向?qū)崟r系統(tǒng)提出服務(wù)請求時,是批次獨立地操作,互不干擾;而實時控制系統(tǒng)中,對信息的采集和對對象的控制也都是彼此互不干擾‘
及時性。實時信息處理系統(tǒng)對實時性的要求和分時系統(tǒng)類似,都是以人所能接受的等待時機(jī)啊來確定的;而實時控制系統(tǒng)的及時性,則是以控制對象所要求的開始截止時間或完成截止時間來確定的,一般為秒級到毫秒級,
交互性。實時信息處理系統(tǒng)雖然也具有交互性,但這里人與系統(tǒng)的交互僅限于訪問系統(tǒng)
中某些特定的專用服務(wù)程序。它不像分時系統(tǒng)那樣能向終端用戶提供數(shù)據(jù)處理和資源共享服務(wù)。
可靠性。分時系統(tǒng)雖然也要求系統(tǒng)可靠,但相比之下,實時系統(tǒng)則要求系統(tǒng)是具有高度的可靠性。
1.5 什么是系統(tǒng)功能調(diào)用。
系統(tǒng)調(diào)用是操作系統(tǒng)提供給用戶的程序級的接口。用戶可以在自己編寫的程序中調(diào)用 操作系統(tǒng)的功能。

1.6 網(wǎng)絡(luò)操作系統(tǒng)與分布式操作系統(tǒng)的區(qū)別是什么?
1.7 微型計算機(jī)與大型計算機(jī)的硬件組織有何不同特點?
l.8 試述虛擬處理機(jī)的概念。
在虛擬處理機(jī)技術(shù)中,利用多道程序設(shè)計技術(shù),為每道程序建立一個進(jìn)程,讓多道程序并發(fā)的執(zhí)行,以此來分時使用一臺處理器。此時,雖然操作系統(tǒng)中只有一臺處理機(jī),但它卻能同時為多個用戶服務(wù),是每個終端用戶都認(rèn)為是有一個處理機(jī)在專門的服務(wù)。
即利用多道程序設(shè)計技術(shù),把一臺物理上的處理機(jī)虛擬為多臺邏輯上的處理機(jī),在每臺邏輯處理機(jī)上運行一道程序。把用戶所感覺到的處理機(jī)成為虛擬處理器。
1.9 操作系統(tǒng)與系統(tǒng)中的其它軟件以及與硬件是什么關(guān)系?
1.10什么是網(wǎng)絡(luò)操作系統(tǒng),它與通常的操作系統(tǒng)有何不同?
網(wǎng)絡(luò)操作系統(tǒng)是在原來各自計算機(jī)操作系統(tǒng)的基礎(chǔ)上研制開發(fā)的,用以對整個網(wǎng)絡(luò)資 源進(jìn)行統(tǒng)一管理和協(xié)調(diào)控制。它要按照網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)的各個協(xié)議標(biāo)準(zhǔn),為通信雙方建立和 拆除通信鏈路;對傳輸錯誤進(jìn)行檢驗和校正等等。用戶可以通過網(wǎng)絡(luò)訪問遠(yuǎn)地資源。由網(wǎng) 絡(luò)操作系統(tǒng)實現(xiàn)協(xié)調(diào)用戶需求,分配系統(tǒng)資源的工作,至于具體的資源管理和控制仍由用 戶的主機(jī)操作系統(tǒng)完成。
l.11定義、比較下列名詞,并寫出其反義詞。
(1)聯(lián)機(jī);
是指用戶在控制臺 或終端前直接控制其作業(yè)的運行,也就是說用戶和他的作業(yè)之間有著交互作用。
脫機(jī)。
(2)分時;
是把處理機(jī)時間劃分成很短的時間片,輪流地分配 給各個聯(lián)機(jī)作業(yè)使用。如果某個作業(yè)在時間片結(jié)束之前計算還未完成,那么該作業(yè)就被暫 時中斷,等待下一輪再繼續(xù)計算,此時CPU讓給另一個作業(yè)使用。
實時
(3)實時;
所謂“實時”是指對隨機(jī)發(fā)生的外部事件做出及時的響應(yīng)并對其進(jìn)行處理。實時操作 系統(tǒng)通常指這樣一類系統(tǒng):計算機(jī)能及時響應(yīng)外部事件的請求,在規(guī)定的時間內(nèi)完成對該 事件的處理,并控制所有實時設(shè)備和實時任務(wù)協(xié)調(diào)一致地運行。
分時
(4)交互式計算
1.12操作系統(tǒng)的主要作用和功能是什么?
從一般用戶的觀點,可把OS、看作是用戶與計算機(jī)硬件系統(tǒng)之間的接口;從資源管理的觀點看,則可把OS視為計算機(jī)系統(tǒng)資源的管理者。另外,OS、實現(xiàn)了對計算機(jī)資源的抽象,隱藏了對硬件操作的細(xì)節(jié),使用戶能更方便的使用機(jī)器。
1.13什么是多道程序設(shè)計技術(shù),引入多道程序設(shè)計技術(shù)的起因和目的是什么?
用戶所提交的作業(yè)都先存放在外存上并排成一個隊列,稱為“后備隊列”;然后,由作業(yè)調(diào)度程序按一定的算法從后備隊列中選擇若干個作業(yè)調(diào)入內(nèi)存,使他們共享CPU和系統(tǒng)的各種資源。、
原因:單批道處理系統(tǒng)中,內(nèi)存中僅有一道作業(yè),它
無法充分利用系統(tǒng)中的素有資源,致使系統(tǒng)性能較差,為了進(jìn)一步提高資源的利用率和系統(tǒng)吞吐量,引入多道程序設(shè)計技術(shù)。
1.14試畫出三道作業(yè)的運行情況。列舉多道程序系統(tǒng)中存在哪些并行運行情況。
1.15多道程序系統(tǒng)具有哪些特性,并設(shè)想一下這些特性對操作系統(tǒng)設(shè)計將帶來什么 影響? 1.16比較批處理系統(tǒng)、分時系統(tǒng)和實時系統(tǒng)的特點

2-1 操作系統(tǒng)的運行環(huán)境指什么?
操作系統(tǒng)的運行環(huán)境主要包括系統(tǒng)的硬件環(huán)境和由其它的系統(tǒng)軟件組成的軟件環(huán)境, 同時操作系統(tǒng)與使用它的操作者之間也有一定相互關(guān)系.
2-2 現(xiàn)代計算機(jī)為什么設(shè)置目態(tài)/管態(tài)這兩種不同的機(jī)器狀態(tài)?現(xiàn)在的 Intel 80386 設(shè)置了 四級不同的機(jī)器狀態(tài)(把管態(tài)又分為三個特權(quán)級),你能說出自己的理解嗎?
處理機(jī)有時執(zhí)行用戶程序,有時執(zhí)行操作系統(tǒng)的程序。在什么時候執(zhí)行哪個指令集由機(jī) 器的狀態(tài)確定。有些系統(tǒng)將處理機(jī)工作狀態(tài)劃分為核心狀態(tài),管理狀態(tài)和用戶程序狀態(tài)(又 稱目標(biāo)狀態(tài))三種。但多數(shù)系統(tǒng)將處理機(jī)工作狀態(tài)較簡單地劃分為管態(tài)(一般指操作系統(tǒng)管 理程序運行的狀態(tài))和目態(tài)(用戶程序運行時的狀態(tài))。
為了讓計算機(jī)工作于多用戶或多任務(wù)的多道程序設(shè)計環(huán)境中,保證操作系統(tǒng)有充分的 協(xié)調(diào)和管理能力,必須把指令系統(tǒng)中的指令分為特權(quán)指令和普通指令。
2-3 什么叫特權(quán)指令?為什么要把指令分為特權(quán)指令和非特權(quán)指令?
為了讓計算機(jī)工作于多用戶或多任務(wù)的多道程序設(shè)計環(huán)境中,保證操作系統(tǒng)有充分的 協(xié)調(diào)和管理能力,必須把指令系統(tǒng)中的指令分為特權(quán)指令和普通指令。 所謂特權(quán)指令是指只能由操作系統(tǒng)使用的指令,如啟動某設(shè)備指令,設(shè)置時鐘指令, 控制中斷屏蔽的某些指令,清主存指令,建立存儲保護(hù)指令等等。
2-4 說明以下各條指令是特權(quán)指令還是非特權(quán)指令,并說明理由:
(1)啟動磁帶機(jī); (2)求?的 n 次冪; (3)停止 CPU; (4)讀時鐘; (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 存儲保護(hù)的目的是什么?常用的存儲保護(hù)機(jī)構(gòu)有哪兩種?指出它們的要點。
常用的存儲保護(hù)手段包括界寄存器和存儲保護(hù)鍵。
2-8 針對圖 2-3 所示的主存各存儲塊的情況,請回答以下兩種情況對 A,B,C 各塊訪問合 法? (1)存儲保護(hù)鍵的鑰為“0000” ; (2)存儲保護(hù)鍵的鑰為“0100” 。
2-9 存儲保護(hù)鍵的取“保護(hù)位”是做什么用的?如何起作用?
2-10 什么是雙緩沖?詳述什么是三緩沖模式的操作。在什么環(huán)境下,三緩沖是有效益的? 2-11 CPU如何發(fā)現(xiàn)中斷事件?發(fā)現(xiàn)中斷事件后應(yīng)做什么工作?
2-12 說明中斷屏蔽的作用。
2-13 何謂中斷優(yōu)先級?為什么要對中斷事件分級?
2-14CPU 響應(yīng)中斷時,為什么要交換程序狀態(tài)字?怎樣進(jìn)行?
處理機(jī)一旦接受某 中斷請求時,系統(tǒng)進(jìn)行如下操作: (1)將程序狀態(tài)字 PSW 壓入堆棧; (2)將指令指針 IP(相當(dāng)于程序代碼段的段內(nèi)相對地址)和程序代碼段基地址寄存器 CS 的內(nèi)容壓入堆棧,以保存被中斷程序的返回地址; (3)取出中斷請求的中斷向量地址(其中包含有中斷處理程序的 IP,CS 的內(nèi)容),以 便轉(zhuǎn)入中斷處理程序; (4)按中斷向量地址把中斷處理程序的程序狀態(tài)字取來,放入處理機(jī)的程序狀態(tài)字寄 存器中。
2-15 什么是軟時鐘(虛擬時鐘)?有何作用?
??赡苡泻芏噙M(jìn)程要求 在某時間間隔后,或在指定時刻喚醒它運行,因此,每個進(jìn)程要有自己的間隔時鐘。在沒有 足夠多的硬件時鐘時,可以用軟件為每個進(jìn)程提供軟時鐘(或稱虛擬時鐘) 。時鐘隊列就是 實現(xiàn)這種技術(shù)的方法之一。
2-16 有四個作業(yè) A,B,C,D,要求定時喚醒運行,其要求如下: A 20 秒后運行,經(jīng)過 40 秒后再次運行。 B 30 秒后運行。 C 30 秒后運行,經(jīng)過 25 秒后再次運行。 D 65 秒后運行。 請建立相應(yīng)的時鐘隊列。
2-17 列舉出提出基地址加位移編址的原因。
由于程序要放入主存中才能執(zhí)行,因此,指令、數(shù)據(jù)都要 與主存絕對地址發(fā)生聯(lián)系。由于在多道程序系統(tǒng)中,主存存放多道作業(yè),所以,程序員在編 寫程序時不能確定程序在主存中的地址空間,所以不能用絕對地址編寫程序。用相對于某個 基準(zhǔn)地址來編寫程序、安排指令和數(shù)據(jù)的位置,就形成了相對地址。所以相對地址是用于程 序編寫和編譯中的地址系統(tǒng)。
2-18 什么叫重定位?有哪幾種重定位技術(shù)?有何區(qū)別?
重定位是多道程序系統(tǒng)中最基本的概念。它涉及絕對地址、相對地址和邏輯地址空間等 概念。
絕對地址、相對地址和邏輯地址空間
絕對地址是指存儲控制部件能夠識別的主存單元編號(或字節(jié)地址),也就是主存單元 的實際地址。 相對地址是指相對于某個基準(zhǔn)量(通常用零作基準(zhǔn)量)編寫程序時使用的地址。相對地 址常用于程序編寫和編譯過程中。邏輯地址空間是指一個經(jīng)匯編、編譯或連接裝配后的目標(biāo)程序的地址集合。
2-19 本書第 7 章的圖 7-10 中,圖(a)表示了一個作業(yè)的地址空間,該作業(yè)被連接裝入程
序裝入主存中,起始地址為 10000(絕對地址),請表示出該作業(yè)裝入主存后的 情況(存儲空間足夠作業(yè)裝入)。
2-20 對比絕對地址裝入程序與連接裝入程序。
在個人計算機(jī)(如 IBM-PC)中,用戶可以使用的主存起始地址是固定的。這種機(jī)器 上的編譯和匯編程序往往把源程序翻譯成絕對地址形式的目標(biāo)程序(以該機(jī)器的用戶可用的 起始地址作為基準(zhǔn)地址)。因此,當(dāng)需要再次裝入目標(biāo)程序時,就十分簡單,沒有重定位問 題。只要按給出的起始地址,依次將程序讀入即可。
多數(shù)多道程序系統(tǒng)使用相對裝入程序(或連接裝入程序)。這種程序的主要功能是把主 程序同各子程序連接裝配成一個大的完整的程序,并裝入主存運行。
2-21 說明硬件、軟件與固件的區(qū)別,固件對操作系統(tǒng)的意義何在?
許多原屬軟件的功能,通過微程序設(shè)計技術(shù)可以轉(zhuǎn)化為硬件, 也就是通常所說的固化,人們也把這些具有軟件功能的硬件稱為固件。
2-22 硬件必須具備哪些條件后,操作系統(tǒng)才可能提供多道程序設(shè)計的功能?

8.1 什么是臨界區(qū)?試舉一個臨界區(qū)的例子。臨界區(qū)設(shè)計原則是什么?
臨界區(qū):每個進(jìn)程中,訪問臨界資源的那段代碼稱為臨界區(qū)。例如多臺電腦共享一臺打印機(jī)時,條用打印機(jī)執(zhí)行打印的程序就是臨界區(qū)。
設(shè)計原則:空閑讓進(jìn),忙則等待,有限等待,讓權(quán)等待;

8.2 并發(fā)進(jìn)程之間的制約關(guān)系有哪兩種?引起制約的原因是什么?
進(jìn)程之間存在兩種制約關(guān)系,即同步和互斥。
同步是由于并發(fā)進(jìn)程之間需要協(xié)調(diào)完成同一個任務(wù)時引起的一種關(guān)系,為一個進(jìn)程等待另一個進(jìn)程向它直接發(fā)送消息或數(shù)據(jù)時的一種制約關(guān)系。
互斥是由于并發(fā)進(jìn)程之間競爭系統(tǒng)的臨界資源引起的,為一個進(jìn)程等待另一個進(jìn)程已經(jīng)占有的必須互斥使用的資源時的一種制約關(guān)系。

8.3 信號量的物理意義是什么?應(yīng)如何設(shè)置其初值?并說明信號量的數(shù)據(jù)結(jié)構(gòu)。
物理意義:
當(dāng)信號量 s≥0 時,s 表示系統(tǒng)中可供使用的資源的數(shù)量;
當(dāng)信號量 s<0 時,│s│表示處于等待 s 的隊列中進(jìn)程的數(shù)量。
設(shè)置初值:
在描述臨界區(qū)的問題時,由于臨界區(qū)是互斥使用的,所以,對于各個進(jìn)程而言,就是
只有一個資源,因此,信號量的初值是 1。
數(shù)據(jù)結(jié)構(gòu):
用于表示資源數(shù)目的整型變量value,一個進(jìn)程鏈表 L,用于構(gòu)成等待進(jìn)程隊列。
8.4 現(xiàn)有 P、Q、R 三個進(jìn)程。P 負(fù)責(zé)把數(shù)據(jù)讀入緩沖區(qū),Q 負(fù)責(zé)從緩沖區(qū)中取出數(shù)據(jù),進(jìn) 行加工計算,結(jié)果仍然寫入緩沖區(qū)中,R 負(fù)責(zé)把進(jìn)程 Q 得到的結(jié)果輸出。分別考慮有 一個容量為 K 的緩沖區(qū)和兩個容量分別 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 考慮一個公共汽車的運營情況。 司機(jī)負(fù)責(zé)開車、 到站停車、 當(dāng)售票員關(guān)門后才能再次啟動車; 售票員負(fù)責(zé)售票、 當(dāng)車停穩(wěn)后開車門、 乘客下完車后關(guān)好車門。 試用 P、 V 原語實現(xiàn)司機(jī)和售票員的同步過程。
semaphore s1,s2; s1=0;s2=0;
cobegin
司機(jī)();
售票員();
coend
process 司機(jī)() {
while(true) {
P(s1);
啟動車輛;
正常行車;
到站停車;
V(s2);
}

process 售票員() {
while(true) {
關(guān)車門;
V(s1);
售票;
P(s2);
開車門;
上下乘客;
}
}
8.6 何謂死鎖?產(chǎn)生死鎖的原因和必要條件是什么?
所謂死鎖是指兩個或兩個以上進(jìn)程處于無休止地等待永遠(yuǎn)不成立的條件的狀態(tài)。

死鎖的原因,可以歸結(jié)為兩點:
(l)資源不足。當(dāng)系統(tǒng)中的共享資源不足以滿足多個進(jìn)程運行需要時,會由于競爭資源產(chǎn)
生死鎖;
(2)進(jìn)程推進(jìn)順序非法。進(jìn)程在運行過程中,請求和釋放資源的順序不當(dāng),可以導(dǎo)致進(jìn)
程死鎖

產(chǎn)生死鎖的必要條件:
1.互斥條件
指進(jìn)程對資源的排它性使用,即在一段時間內(nèi)某資源只能由一個進(jìn)程占有。如果此時還
有其它進(jìn)程要求該資源,要求者進(jìn)程只能阻塞,直至占有該資源的進(jìn)程釋放資源為止。
2.部分分配條件
進(jìn)程已經(jīng)占有了至少一個資源,但又提出了新的資源要求,而該資源又已被其它進(jìn)程占
有,此時請求進(jìn)程阻塞,但又對已經(jīng)獲得的其它資源保持不放。
3.不可剝奪條件
進(jìn)程已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。
4.環(huán)路等待條件
8.7 在解決死鎖問題的幾個方法中,哪種方法最容易實現(xiàn)?哪種方法使資源的利用率最高?
解決/處理死鎖的方法有預(yù)防死鎖、避免死鎖、檢測和解除死鎖,其中預(yù)防死鎖方法最容易實現(xiàn),但由于所施加的限制條件過于嚴(yán)格,會導(dǎo)致系統(tǒng)資源利用率和系統(tǒng)吞吐量降低;而檢測和解除死鎖方法可是系統(tǒng)獲得較好的資源利用率和系統(tǒng)吞吐量。

8.8 請詳細(xì)說明可通過哪些途徑預(yù)防死鎖?
擯棄“請求和保持”條件,就是如果系統(tǒng)有足夠資源,便一次性把進(jìn)程需要的所有資源分配給它;
擯棄“不剝奪”條件,就是已經(jīng)擁有資源的進(jìn)程,當(dāng)它提出新資源請求而不能立即滿足時,必須釋放它已保持的所有資源,待以后需要時再重新申請;
擯棄“環(huán)路等待”條件,就是將所有資源按類型排序標(biāo)號,所有進(jìn)程對資源的請求必須嚴(yán)格按序號遞增的次序提出。

8.9 在銀行家算法的例子中,如果 P0 發(fā)出的請求向量由 Request0(0,2,0)改為 Request0( 0,1,0),問系統(tǒng)可否將資源分配給它?
可以分配,存在p1,p3,p4,p2,p0的安全序列。
8.10 順序程序設(shè)計和共行程序設(shè)計的特點有何不同?
傳統(tǒng)的順序程序具有如下特征:
1. 順序性:包含兩個方面的含義,一條指令的執(zhí)行一定在前一指令執(zhí)行結(jié)束之后才能
開始;一條指令的執(zhí)行以它前一指令執(zhí)行的結(jié)果為前提。
2. 封閉性:程序運行的環(huán)境只能被程序本身修改,不能受任何外在因素影響。所謂程
序的運行環(huán)境包括寄存器、內(nèi)存數(shù)據(jù)、各種堆棧等。
3. 確定性:程序的運行結(jié)果與運行速度無關(guān)。只要采用同樣的初始值,無論程序一氣
哈成地執(zhí)行,還是斷斷續(xù)續(xù)的執(zhí)行,都能得到相同的運行結(jié)果。
4. 可再現(xiàn)性:只要給出同樣的數(shù)據(jù)輸入,無論什么時刻執(zhí)行該程序均會得到同樣的運
行結(jié)果。
由于并行程序的特殊性,往往不具備順序程序的特征。
8.11 什么叫與時間有關(guān)的錯誤?表現(xiàn)在哪些方面?舉例說明之
在操作系統(tǒng)中引入進(jìn)程、線程的概念后,雖然能夠改善系統(tǒng)資源利用率,提高系統(tǒng)效
率,但是由于進(jìn)程、線程等對資源的競爭與共享等因素,給系統(tǒng)運行造成混亂,我們稱之為
與時間有關(guān)的錯誤。
主要表現(xiàn)在對共享資源的使用上。多個進(jìn)程對共享區(qū)域的讀寫會導(dǎo)致其他進(jìn)程的讀取錯誤。

8.12 若進(jìn)程 A 和 B 在臨界段上互斥,那么當(dāng) A 處于臨界段內(nèi)時不能打斷它的執(zhí)行,這說法對嗎?為什么?
這種說法不對,臨界段上互斥是表明,兩個進(jìn)程不能同時執(zhí)行臨界段的代碼,但是進(jìn)程是可以被中斷的,B中斷進(jìn)程A,B可以執(zhí)行臨界段代碼,依然滿足互斥。
8.13 同步與互斥這兩個概念有何區(qū)別?
在操作系統(tǒng)中,當(dāng)某一進(jìn)程正在訪問某一存儲區(qū)域時,就不允許其他進(jìn)程進(jìn)行讀寫或者修改該存儲區(qū)的內(nèi)容,否則就會發(fā)生后果無法估計的錯誤。進(jìn)程之間的這種相互制約的關(guān)系成為進(jìn)程互斥。并發(fā)進(jìn)程在一些關(guān)鍵點上可能需要互相等待與互通消息,這種相互制約的等待與互通信息稱為進(jìn)程同步。實際上進(jìn)程互斥也是一種同步,他協(xié)調(diào)多個進(jìn)程互斥進(jìn)入同一個臨界資源對應(yīng)的臨界區(qū)。
8.14 信號量是一個初值為非負(fù)的整形變量,可在其上做加“1”和減“1”的操作。這說法對
嗎?如何改正之?
錯,只可以做PV操作。
8.15 使用 cobegin/coend 改寫下面的表達(dá)式以獲得最大程度的并行性。
(3ab+4)/(c+d)(e-f)
t1:=3
a
b; t2:=c+d; t3:=e-f
t4:=t1+4; t5:=t2t3; t6:=t4/t5;
BEGIN
COBEGIN
BEGIN
COBEGIN
t1:=3
a
b;
t2:=c+d;
t3:=e-f
COEND;
t4:=t1+4;
END
t5:=t2**t3;
COEND;
t6:=t4/t5;
END;

8.16 把下列并行計算改寫成順序計算序列。
a:=b+c;
cobegln
d:==bc-x;
e:=(a/b)+n
2
coend
8.17 為什么下面的并行計算程序是不正確的?
cobegin
a:=b+c;
d:=b
c-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)=u0z1t8os;
R(S1) = {a,b,n} W(S1)={e};
R(S1) = {b,c} W(S1)={a};
R(S2) = {b,c,x} W(S2)=u0z1t8os;
R(S3) = {a,b,n} W(S3)={e};

R(S1)∩W(S3) ∪R(S3)∩W(S1) ∪ W(S1)∩W(S3)={a},不滿足 Bernstein 條件,無法并行。

8.18 說明下面的說法是不正確的理由:當(dāng)幾個進(jìn)程訪問主存中的共享數(shù)據(jù)時,必須實行互斥以防止產(chǎn)生不確定的結(jié)果。

當(dāng)多個進(jìn)程對共享數(shù)據(jù)進(jìn)行只讀操作時,是可以并行操作的,因為不會修改數(shù)據(jù),所以不會造成數(shù)據(jù)不同步的情況。

8.19 下面是兩個并發(fā)執(zhí)行的進(jìn)程,它們能正確執(zhí)行嗎?若不能正確執(zhí)行,請舉例說明,并改正之(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語句執(zhí)行了if x<1 then t:=t+z;則此時z值未知,進(jìn)程會得到一個無法預(yù)知的結(jié)果。

改進(jìn):設(shè)置信號量mutex,對z實施互斥訪問. 在執(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)閱诬嚨?,請問在此問題中,什么是臨界資源?
單行道
8.21 沒有幾個進(jìn)程共享一互斥段, 對于如下兩種情況:
(1) 每次只允許一個進(jìn)程進(jìn)入互斥段;
(2) 最多允許 m 個進(jìn)程(m<n=同時進(jìn)入互斥段; 所采用的信號量是否相同? 信號量值的變化范圍如何?
(1)互斥信號量初值為 1 ,變化范圍為[ -n + l , 1 ]。
(2)互斥信號量初值為 m ,變化范圍為[ -n + m , m ]。
以上引

8.23 用銀行家算法判斷下述每個狀態(tài)是否安全。 如果一個狀態(tài)是安全的, 說明所有進(jìn)程是如
何能夠運行完畢的。 如果一個狀態(tài)是不安全的, 說明為什么可能出現(xiàn)死鎖。
狀態(tài) A 狀態(tài) B
占有臺數(shù) 最大需求 占有臺數(shù) 最大需求
用戶 1 2 6 用戶 1 4 8
用戶 2 4 7 用戶 2 3 9
用戶 3 5 6 用戶 3 5 8
用戶 4 0 2 可供分配的臺數(shù) 2
可供分配的臺數(shù) 1
狀態(tài)A安全,狀態(tài)B不安全。
狀態(tài)A中,將可分配的1臺給用戶3,然后用戶3可以運行,當(dāng)用戶3結(jié)束釋放資源,其他用戶就可以運行完畢。
狀態(tài)B中可分配臺數(shù)只有2,用戶1、2、3的需求都不止2,所以不論怎么樣分配,3個用戶的需求都不能滿足,因此會出現(xiàn)死鎖。

8.24 給出一個涉及三個進(jìn)程和三個不同資源的死鎖例子, 并畫出相應(yīng)的資源分配圖。
進(jìn)程P1已經(jīng)分配了資源r3,請求資源r1;進(jìn)程P2已經(jīng)分配了資源r1,請求資源r2;進(jìn)程P3已經(jīng)分配了資源r2,請求資源r3;三個進(jìn)程相互等待,形成死鎖。

8.25 沒有兩個進(jìn)程 A 和 B 各自按以下順序使用 P, V 操作并行運行(S; 和 S。 代表系統(tǒng)中
一臺打印機(jī)和一臺掃瞄儀資源信號量):
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)速度可能引起的情況, 并畫出死鎖的圖形表示,
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) 用死鎖的必要條件說明產(chǎn)生死鎖和不產(chǎn)生死鎖的原因。

死鎖的原因主要是:(1) 因為系統(tǒng)資源不足。(2) 進(jìn)程運行推進(jìn)的順序不合適。(3) 資源分配不當(dāng)?shù)?。如果系統(tǒng)資源充足,進(jìn)程的資源請求都能夠得到滿足,死鎖出現(xiàn)的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,進(jìn)程運行推進(jìn)順序與速度不同,也可能產(chǎn)生死鎖。產(chǎn)生死鎖的四個必要條件:(1) 互斥條件:一個資源每次只能被一個進(jìn)程使用。(2) 請求與保持條件:一個進(jìn)程因請求資源而阻塞時,對已獲得的資源保持不放。(3) 不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。(4) 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。這四個條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立。

8.26 某系統(tǒng)有同類資源 m 個, 被 n 個進(jìn)程共享, 請分別討論當(dāng) m>n 和 m<=n 時每個進(jìn)程最多可以請求多少個這類資源, 才能使系統(tǒng)一定不會發(fā)生死鎖?
那么當(dāng)m>n時,m>n*(x-1)時 使系統(tǒng)不會死鎖,
m<=n時,x=1 使系統(tǒng)不會死鎖

8.27 某系統(tǒng)中有六臺打印機(jī), N 個進(jìn)程共享打印機(jī)資源, 每個進(jìn)程要求兩臺, 試問 N 取哪些值時, 系統(tǒng)才不會發(fā)生死鎖?

N≤5;

計算題:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容