




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
計算機(jī)操作系統(tǒng)課后答案
第一章
1.設(shè)計現(xiàn)代OS的主要目標(biāo)是什么?
(1)有效性(2)方便性(3)可擴(kuò)充性(4)開放性
2.OS的作用可表現(xiàn)在哪幾個方面?
(1)OS作為用戶與計算機(jī)硬件系統(tǒng)之間的接口(2)OS作為計算機(jī)系統(tǒng)資源的
管理者(3)OS實(shí)現(xiàn)了對計算機(jī)資源的抽象
3.為什么說OS實(shí)現(xiàn)了對計算機(jī)資源的抽象?
答:OS首先在裸機(jī)上覆蓋一層I/O設(shè)備管理軟件,實(shí)現(xiàn)了對計算機(jī)硬件操作的
第一層次抽象;在第一層軟件上再覆蓋文件管理軟件,實(shí)現(xiàn)了對硬件資源操作的
第二層次抽象。OS通過在計算機(jī)硬件上安裝多層系統(tǒng)軟件,增強(qiáng)了系統(tǒng)功能,
隱藏了對硬件操作的細(xì)節(jié),由它們共同實(shí)現(xiàn)了對計算機(jī)資源的抽象。
4.試說明推動多道批處理系統(tǒng)形成和發(fā)展的主要動力是什么?
答:主要動力來源于四個方面的社會需求與技術(shù)發(fā)展:
(1)不斷提高計算機(jī)資源的利用率;(2)方便用戶;(3)器件的不斷更新?lián)Q代;
(4)計算機(jī)體系結(jié)構(gòu)的不斷發(fā)展。
5.何謂脫機(jī)I/O和聯(lián)機(jī)I/O?
答:脫機(jī)I/O是指事先將裝有用戶程序和數(shù)據(jù)的紙帶或卡片裝入紙帶輸入機(jī)或
K片機(jī),在外圍機(jī)的控制下,把紙帶或卡片上的數(shù)據(jù)或程序輸入到磁帶上。該方
式下的輸入輸出由外圍機(jī)控制完成,是在脫離主機(jī)的情況下進(jìn)行的。
而聯(lián)機(jī)I/O方式是指程序和數(shù)據(jù)的輸入輸出都是在主機(jī)的直接控制下進(jìn)行的。
6.試說明推動分時系統(tǒng)形成和發(fā)展的主要動力是什么?
答:推動分時系統(tǒng)形成和發(fā)展的主要動力是更好地滿足用戶的需要。主要表現(xiàn)在:
CPU的分時使用縮短了作業(yè)的平均周轉(zhuǎn)時間;人機(jī)交互能力使用戶能直接控制自
己的作業(yè);主機(jī)的共享使多用戶能同時使用同一臺計算機(jī),獨(dú)立地處理自己的作
業(yè)。
7.實(shí)現(xiàn)分時系統(tǒng)的關(guān)鍵問題是什么?應(yīng)如何解決?
答:關(guān)鍵問題是當(dāng)用戶在自己的終端上鍵入命令時一,系統(tǒng)應(yīng)能及時接收并及時處
理該命令,在用戶能接受的時延內(nèi)將結(jié)果返回給用戶。
解決方法:針對及時接收問題,可以在系統(tǒng)中設(shè)置多路卡,使主機(jī)能同時接收用
戶從各個終端上輸入的數(shù)據(jù);為每個終端配置緩沖區(qū),暫存用戶鍵入的命令或數(shù)
據(jù)。針對及時處理問題,應(yīng)使所有的用戶作業(yè)都直接進(jìn)入內(nèi)存,并且為每個作業(yè)
分配一個時間片,允許作業(yè)只在自己的時間片內(nèi)運(yùn)行,這樣在不長的時間內(nèi),能
使每個作業(yè)都運(yùn)行一次。
8.為什么要引入實(shí)時OS?
答:實(shí)時操作系統(tǒng)是指系統(tǒng)能及時響應(yīng)外部事件的請求,在規(guī)定的時間內(nèi)完成對
該事件的處理,并控制所有實(shí)時任務(wù)協(xié)調(diào)一致地運(yùn)行。引入實(shí)時OS是為了滿足
應(yīng)用的需求,更好地滿足實(shí)時控制領(lǐng)域和實(shí)時信息處理領(lǐng)域的需要。
9.什么是硬實(shí)時任務(wù)和軟實(shí)時任務(wù)?試舉例說明。
答:硬實(shí)時任務(wù)是指系統(tǒng)必須滿足任務(wù)對截止時間的要求,否則可能出現(xiàn)難以預(yù)
測的結(jié)果。舉例來說,運(yùn)載火箭的控制等。
軟實(shí)時任務(wù)是指它的截止時間并不嚴(yán)格,偶爾錯過了任務(wù)的截止時間,對系統(tǒng)產(chǎn)
生的影響不大。舉例:網(wǎng)頁內(nèi)容的更新、火車售票系統(tǒng)。
10.在8位微機(jī)和16位微機(jī)中,占據(jù)了統(tǒng)治地位的是什么操作系統(tǒng)?
答:單用戶單任務(wù)操作系統(tǒng),其中最具代表性的是CP/M和MS-DOS.
11.試列出WindowsOS中五個主要版本,并說明它們分別較之前一個版本有何
改進(jìn)。
答(1)MicrosoftWindows1.0是微軟公司在個人電腦上開發(fā)圖形界面的首次
嘗試。(2)Windows95是混合的16位/32位系統(tǒng),第-一個支持32位。帶來了更
強(qiáng)大、更穩(wěn)定、更實(shí)用的桌面圖形用戶界面,結(jié)束了桌面操作系統(tǒng)間的競爭。3)
Windows98是微軟公司的混合16位/32位Windows操作系統(tǒng),改良了硬件標(biāo)準(zhǔn)
的支持,革新了內(nèi)存管理,是多進(jìn)程操作系統(tǒng)。(4)WindowsXP是基于Windows
2000的產(chǎn)品,擁有新用戶圖形界面月神Luna。簡化了用戶安全特性,整合了防
火墻。(5)WindowsVista包含了上百種新功能;特別是新版圖形用戶界面和
WindowsAero全新界面風(fēng)格、加強(qiáng)的搜尋功能(WindowsIndexingService)、
新媒體創(chuàng)作工具以及重新設(shè)計的網(wǎng)絡(luò)、音頻、輸出(打?。┖惋@示子系統(tǒng)。。
12.試從交互性、及時性以及可靠性方面,將分時系統(tǒng)與實(shí)時系統(tǒng)進(jìn)行比較。
答(1)及時性:實(shí)時信息處理系統(tǒng)對實(shí)時性的要求與分時系統(tǒng)類似,都是以人
所能接受的等待時間來確定;而實(shí)時控制系統(tǒng)的及時性,是以控制對象所要求的
開始截止時間或完成截止時間來確定的,一般為秒級到毫秒級,甚至有的要低于
100微妙。(2)交互性:實(shí)時信息處理系統(tǒng)具有交互性,但人與系統(tǒng)的交互僅限
于訪問系統(tǒng)中某些特定的專用服務(wù)程序。不像分時系統(tǒng)那樣能向終端用戶提供數(shù)
據(jù)和資源共享等服務(wù)。(3)可靠性:分時系統(tǒng)也要求系統(tǒng)可靠,但相比之下,實(shí)
時系統(tǒng)則要求系統(tǒng)具有高度的可靠性。因?yàn)槿魏尾铄e都可能帶來巨大的經(jīng)濟(jì)損
失,甚至是災(zāi)難性后果,所以在實(shí)時系統(tǒng)中,往往都采取了多級容錯措施保障系
統(tǒng)的安全性及數(shù)據(jù)的安全性。
13.OS有哪幾大特征?其最基本的特征是什么?
答:并發(fā)性、共享性、虛擬性和異步性四個基本特征;最基本的特征是并發(fā)性。
14.處理機(jī)管理有哪些主要功能?它們的主要任務(wù)是什么?
答:處理機(jī)管理的主要功能是:進(jìn)程管理、進(jìn)程同步、進(jìn)程通信和處理機(jī)調(diào)度;
進(jìn)程管理:為作業(yè)創(chuàng)建進(jìn)程,撤銷已結(jié)束進(jìn)程,控制進(jìn)程在運(yùn)行過程中的狀態(tài)轉(zhuǎn)
換。進(jìn)程同步:為多個進(jìn)程(含線程)的運(yùn)行進(jìn)行協(xié)調(diào)。
通信:用來實(shí)現(xiàn)在相互合作的進(jìn)程之間的信息交換。
處理機(jī)調(diào)度:
(1)作業(yè)調(diào)度。從后備隊(duì)里按照一定的算法,選出若干個作業(yè),為他們分配運(yùn)
行所需的資源(首選是分配內(nèi)存)。
(2)進(jìn)程調(diào)度:從進(jìn)程的就緒隊(duì)列中,按照一定算法選出一個進(jìn)程,把處理機(jī)
分配給它,并設(shè)置運(yùn)行現(xiàn)場,使進(jìn)程投入執(zhí)行。
15.內(nèi)存管理有哪些主要功能?他們的主要任務(wù)是什么?
答:內(nèi)存管理的主要功能有:內(nèi)存分配、內(nèi)存保護(hù)、地址映射和內(nèi)存擴(kuò)充。
內(nèi)存分配:為每道程序分配內(nèi)存。
內(nèi)存保護(hù):確保每道用戶程序都只在自己的內(nèi)存空間運(yùn)行,彼此互不干擾。
地址映射:將地址空間的邏輯地址轉(zhuǎn)換為內(nèi)存空間與對應(yīng)的物理地址。
內(nèi)存擴(kuò)充:用于實(shí)現(xiàn)請求調(diào)用功能,置換功能等。
16.設(shè)備管理有哪些主要功能?其主要任務(wù)是什么?
答:主要功能有:緩沖管理、設(shè)備分配和設(shè)備處理以及虛擬設(shè)備等。
主要任務(wù):完成用戶提出的I/O請求,為用戶分配I/O設(shè)備;提高CPU和I/O設(shè)
備的利用率;提高I/O速度;以及方便用戶使用I/O設(shè)備.
17.文件管理有哪些主要功能?其主要任務(wù)是什么?
答:文件管理主要功能:文件存儲空間的管理、目錄管理、文件的讀/寫管理和
保護(hù)。文件管理的主要任務(wù):管理用戶文件和系統(tǒng)文件,方便用戶使用,保證文
件安全性。
18.是什么原因使操作系統(tǒng)具有異步性特征?
答:操作系統(tǒng)的異步性體現(xiàn)在三個方面:一是進(jìn)程的異步性,進(jìn)程以人們不可預(yù)
知的速度向前推進(jìn),二是程序的不可再現(xiàn)性,即程序執(zhí)行的結(jié)果有時是不確定的,
三是程序執(zhí)行時間的不可預(yù)知性,即每個程序何時執(zhí)行,執(zhí)行順序以及完成時間
是不確定的。
19.模塊接口法存在哪些問題?可通過什么樣的途徑來解決?
答(1)模塊接口法存在的問題:①在OS設(shè)計時,各模塊間的接口規(guī)定很難滿
足在模塊完成后對接口的實(shí)際需求。②在OS設(shè)計階段,設(shè)計者必須做出一系列
的決定,每一個決定必須建立在上一個決定的基礎(chǔ)上。但模塊化結(jié)構(gòu)設(shè)計的各模
塊設(shè)計齊頭并進(jìn),無法尋找可靠的順序,造成各種決定的無序性,使程序設(shè)計人
員很難做到設(shè)計中的每-?步?jīng)Q定都建立在可靠的基礎(chǔ)上,因此模塊接口法被稱為
“無序模塊法”。(2)解決途徑:將模塊接口法的決定順序無序變有序,引入有
序分層法。
20.在微內(nèi)核0S中,為什么要采用客戶/服務(wù)器模式?
答:C/S模式具有獨(dú)特的優(yōu)點(diǎn):⑴數(shù)據(jù)的分布處理和存儲。⑵便于集中管理。⑶
靈活性和可擴(kuò)充性。⑷易于改編應(yīng)用軟件。
21.試描述什么是微內(nèi)核0S。
答:1)足夠小的內(nèi)核2)基于客戶/服務(wù)器模式3)應(yīng)用機(jī)制與策略分離原理4)
采用面向?qū)ο蠹夹g(shù)。
22.在基于微內(nèi)核結(jié)構(gòu)的0S中,應(yīng)用了哪些新技術(shù)?
答:在基于微內(nèi)核結(jié)構(gòu)的0S中,采用面向?qū)ο蟮某绦蛟O(shè)汁技術(shù)。
23.何謂微內(nèi)核技術(shù)?在微內(nèi)核中通常提供了哪些功能?
答:把操作系統(tǒng)中更多的成分和功能放到更高的層次(即用戶模式)中去運(yùn)行,
而留下一個盡量小的內(nèi)核,用它來完成操作系統(tǒng)最基本的核心功能,稱這種技術(shù)
為微內(nèi)核技術(shù)。在微內(nèi)核中通常提供了進(jìn)程(線程)管理、低級存儲器管理、中
斷和陷入處理等功能。
24.微內(nèi)核操作系統(tǒng)具有哪些優(yōu)點(diǎn)?它為何能有這些優(yōu)點(diǎn)?
答:1)提高了系統(tǒng)的可擴(kuò)展性2)增強(qiáng)了系統(tǒng)的可靠性3)可移植性4)提供了
對分布式系統(tǒng)的支持5)融入了面向?qū)ο蠹夹g(shù)。因?yàn)槲?nèi)核OS結(jié)構(gòu)是建立在模
塊化、層次化結(jié)構(gòu)的基礎(chǔ)上的,并采用了客戶/服務(wù)器模式和面向?qū)ο蟮某绦蛟O(shè)
計技術(shù),所以能有這些優(yōu)點(diǎn)。
第二章
1.什么是前趨圖?為什么要引入前趨圖?
答:前趨圖(PrecedenceGraph)是一個有向無循環(huán)圖,記為DAG(Directed
Acyclic
Graph),用于描述進(jìn)程之間執(zhí)行的前后關(guān)系。
2.畫出下面四條語句的前趨圖:
Sl=a:=x+y;S2=b:=z+l;S3=c:=a-b;S4=w:=c+l;
答:其前趨圖為:
3.為什么程序并發(fā)執(zhí)行會產(chǎn)生間斷性特征?
答:程序在并發(fā)執(zhí)行時,由于它們共享系統(tǒng)資源,為完成同一項(xiàng)任務(wù)需要相互合
作,致使這些并發(fā)執(zhí)行的進(jìn)程之間,形成了相互制約關(guān)系,從而使得進(jìn)程在執(zhí)行
期間出現(xiàn)間斷性。
4.程序并發(fā)執(zhí)行時為什么會失去封閉性和可再現(xiàn)性?
答:程序并發(fā)執(zhí)行時,多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)由
多個程序改變,致使程序運(yùn)行失去了封閉性,也會導(dǎo)致其失去可再現(xiàn)性。
5.在操作系統(tǒng)中為什么要引入進(jìn)程概念?它會產(chǎn)生什么樣的影響?
答:為了使程序在多道程序環(huán)境下能并發(fā)執(zhí)行,并對并發(fā)執(zhí)行的程序加以控制和
描述,在操作系統(tǒng)中引入了進(jìn)程概念。
影響:使程序的并發(fā)執(zhí)行得以實(shí)行。
6.試從動態(tài)性,并發(fā)性和獨(dú)立性上比較進(jìn)程和程序?
答:(1)動態(tài)性是進(jìn)程最基本的特性,表現(xiàn)為由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,因
得不到資源而暫停執(zhí)行,由撤銷而消亡。進(jìn)程有-定的生命期,而程序只是一組
有序的指令集合,是靜態(tài)實(shí)體。
(2)并發(fā)性是進(jìn)程的重要特征,同時也是OS的重要特征。引入進(jìn)程的目的正是
為了使其程序能和其它進(jìn)程的程序并發(fā)執(zhí)行,而程序是不能并發(fā)執(zhí)行的。
(3)獨(dú)立性是指進(jìn)程實(shí)體是一個能獨(dú)立運(yùn)行的基本單位,也是系統(tǒng)中獨(dú)立獲得資
源和獨(dú)立調(diào)度的基本單位。對于未建立任何進(jìn)程的程序,不能作為獨(dú)立單位參加
運(yùn)行。
7.試說明PCB的作用,為什么說PCB是進(jìn)程存在的惟一標(biāo)志?
答:PCB是進(jìn)程實(shí)體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。作用是
使一個在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序,成為一個能獨(dú)立運(yùn)行的基本單
位,成為能與其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程。OS是根據(jù)PCB對并發(fā)執(zhí)行的進(jìn)程進(jìn)行
控制和管理的。
8.試說明進(jìn)程在三個基本狀態(tài)之間轉(zhuǎn)換的典型原因。
答(1)就緒狀態(tài)一執(zhí)行狀態(tài):進(jìn)程分配到CPU資源
(2)執(zhí)行狀態(tài)一就緒狀態(tài):時間片用完
(3)執(zhí)行狀態(tài)一阻塞狀態(tài):I/O請求
(4)阻塞狀態(tài)-就緒狀態(tài):I/O完成
9.為什么要引入掛起狀態(tài)?該狀態(tài)有哪些性質(zhì)?
答:引入掛起狀態(tài)處于五種不同的需要:終端用戶需要,父進(jìn)程需要,操作系統(tǒng)
需要,對換需要和負(fù)荷調(diào)節(jié)需要。處于掛起狀態(tài)的進(jìn)程不能接收處理機(jī)調(diào)度。
10.在進(jìn)行進(jìn)程切換時,所要保存的處理機(jī)狀態(tài)信息有哪些?
答:進(jìn)行進(jìn)程切換時,所要保存的處理機(jī)狀態(tài)信息有:
(1)進(jìn)程當(dāng)前暫存信息2)下一指令地址信息3)進(jìn)程狀態(tài)信息
(4)過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址信息。
11.試說明引起進(jìn)程創(chuàng)建的主要事件。
答:引起進(jìn)程創(chuàng)建的主要事件有:用戶登錄、作業(yè)調(diào)度、提供服務(wù)、應(yīng)用請求。
12.試說明引起進(jìn)程被撤銷的主要事件。
答:引起進(jìn)程被撤銷的主要事件有:正常結(jié)束、異常結(jié)束(越界錯誤、保護(hù)錯、
非法指令、特權(quán)指令錯、運(yùn)行超時、等待超時、算術(shù)運(yùn)算錯、I/O故障)、外界
干預(yù)(操作員或操作系統(tǒng)干預(yù)、父進(jìn)程請求、父進(jìn)程終止)。
13.在創(chuàng)建一個進(jìn)程時所要完成的主要工作是什么?
(1)OS發(fā)現(xiàn)請求創(chuàng)建新進(jìn)程事件后,調(diào)用進(jìn)程創(chuàng)建原語CreatO;
(2)申請空白PCB;3)為新進(jìn)程分配資源;4)初始化進(jìn)程控制塊;
(5)將新進(jìn)程插入就緒隊(duì)列.
14.在撤銷一個進(jìn)程時所要完成的主要工作是什么?
答:1)根據(jù)被終止進(jìn)程標(biāo)識符,從PCB集中檢索出進(jìn)程PCB,讀出該進(jìn)程狀態(tài)。
(2)若被終止進(jìn)程處于執(zhí)行狀態(tài),立即終止該進(jìn)程的執(zhí)行,置調(diào)度標(biāo)志真,指
示該進(jìn)程被終止后重新調(diào)度。
(3)若該進(jìn)程還有子進(jìn)程,應(yīng)將所有子孫進(jìn)程終止,以防它們成為不可控進(jìn)程。
(4)將被終止進(jìn)程擁有的全部資源,歸還給父進(jìn)程,或歸還給系統(tǒng)。
(5)將被終止進(jìn)程PCB從所在隊(duì)列或列表中移出,等待其它程序搜集信息。
15.試說明引起進(jìn)程阻塞或被喚醒的主要事件是什么?
答:a.請求系統(tǒng)服務(wù);b.啟動某種操作;c.新數(shù)據(jù)尚未到達(dá);d.無新工作可
做.
16.進(jìn)程在運(yùn)行時存在哪兩種形式的制約?并舉例說明之。
(1)間接相互制約關(guān)系。舉例:有兩進(jìn)程A和B,如果A提出打印請求,系統(tǒng)
已把唯一的一臺打印機(jī)分配給了進(jìn)程B,則進(jìn)程A只能阻塞;一旦B釋放打印
機(jī),A才由阻塞改為就緒。
(2)直接相互制約關(guān)系。舉例:有輸入進(jìn)程A通過單緩沖向進(jìn)程B提供數(shù)據(jù)。
當(dāng)緩沖空時,計算進(jìn)程因不能獲得所需數(shù)據(jù)而阻塞,當(dāng)進(jìn)程A把數(shù)據(jù)輸入緩沖
區(qū)后,便喚醒進(jìn)程B;反之,當(dāng)緩沖區(qū)已滿時,進(jìn)程A因沒有緩沖區(qū)放數(shù)據(jù)而阻
塞,進(jìn)程B將緩沖區(qū)數(shù)據(jù)取走后便喚醒A。
17.為什么進(jìn)程在進(jìn)入臨界區(qū)之前應(yīng)先執(zhí)行“進(jìn)入?yún)^(qū)”代碼?而在退出前又要
執(zhí)行“退出區(qū)”代碼?
答:為了實(shí)現(xiàn)多個進(jìn)程對臨界資源的互斥訪問,必須在臨界區(qū)前面增加?段用于
檢查欲訪問的臨界資源是否正被訪問的代碼,如果未被訪問,該進(jìn)程便可進(jìn)入臨
界區(qū)對資源進(jìn)行訪問,并設(shè)置正被訪問標(biāo)志,如果正被訪問,則本進(jìn)程不能進(jìn)入
臨界區(qū),實(shí)現(xiàn)這一功能的代碼為〃進(jìn)入?yún)^(qū)”代碼;在退出臨界區(qū)后,必須執(zhí)行"退
出區(qū)”代碼,用于恢復(fù)未被訪問標(biāo)志,使其它進(jìn)程能再訪問此臨界資源。
18.同步機(jī)構(gòu)應(yīng)遵循哪些基本準(zhǔn)則?為什么?
答:同步機(jī)構(gòu)應(yīng)遵循的基本準(zhǔn)則是:空閑讓進(jìn)、忙則等待、有限等待、讓權(quán)等待
原因:為實(shí)現(xiàn)進(jìn)程互斥進(jìn)入自己的臨界區(qū)。
19.試從物理概念上說明記錄型信號量wait和signal。
答:wait(S):當(dāng)S.valueX)時,表示目前系統(tǒng)中這類資源還有可用的。執(zhí)行一
次wait操作,意味著進(jìn)程請求一個單位的該類資源,使系統(tǒng)中可供分配的該類
資源減少一個,因此描述為S.value:=S.valueT;當(dāng)S.value<0時,表示該類
資源已分配完畢,進(jìn)程應(yīng)調(diào)用block原語自我阻塞,放棄處理機(jī),并插入到信號
量鏈表S.L中。signal(S):執(zhí)行一次signal操作,意味著釋放一個單位的可用
資源,使系統(tǒng)中可供分配的該類資源數(shù)增加一個,故執(zhí)行S.value:=S.value+1
操作。若加1后S.valueWO,則表示在該信號量鏈表中,仍有等待該資源的進(jìn)
程被阻塞,因此應(yīng)調(diào)用wakeup原語,將S.L鏈表中的第一個等待進(jìn)程喚醒。
20.你認(rèn)為整型信號量機(jī)制是否完全遵循了同步機(jī)構(gòu)的四條準(zhǔn)則?
答:整型信號量機(jī)制不完全遵循同步機(jī)制的四條準(zhǔn)則,它不滿足“讓權(quán)等待”準(zhǔn)
則。
21.如何利用信號量機(jī)制來實(shí)現(xiàn)多個進(jìn)程對臨界資源的互斥訪問?并舉例說明
之。
答:為使多個進(jìn)程互斥訪問某臨界資源,只需為該資源設(shè)置一互斥信號量mutex,
并設(shè)其初值為1,然后將各進(jìn)程訪問該資源的臨界區(qū)CS置于wait(mutex)和
signal(mutex)操作之間即可。這樣,每個欲訪問該臨界資源的進(jìn)程在進(jìn)入臨界
區(qū)之前,都要先對mutex執(zhí)行wait操作,若該資源此刻未被訪問,本次wait操
作必然成功,進(jìn)程便可進(jìn)入自己的臨界區(qū),這時若再有其他進(jìn)程也欲進(jìn)入自己的
臨界區(qū),此時由于對mutex執(zhí)行wait操作定會失敗,因而該進(jìn)程阻塞,從而保
證了該臨界資源能被互斥訪問。當(dāng)訪問臨界資源的進(jìn)程退出臨界區(qū)后,應(yīng)對
mutex執(zhí)行signal操作,釋放該臨界資源。利用信號量實(shí)現(xiàn)進(jìn)程互斥的進(jìn)程描
述
如下:
Varmutex:semaphore:=1;
begin
parbegin
process1:begin
repeat
wait(mutex);
criticalsection
signal(mutex);
remaindersection
untilfalse;
end
process2:begin
repeat
wait(mutex);
criticalsection
signal(mutex);
remaindersection
untilfalse;
end
parend
22.試寫出相應(yīng)的程序來描述圖2-17所示的前驅(qū)圖。
答(a)Vara,b,c,d,e,f,g,h;semaphores0,0,0,0,0,0,0,0;
begin
parbegin
beginSI;signal(a);signal(b);end;
beginwait(a);S2;signal(c);signal(d);end;
beginwait(b);S3;signal(e);end;
beginwait(c);S4;signal(f);end;
beginwait(d);S5;signal(g);end;
beginwait(e);S6;signal(h);end;
beginwait(f);wait(g);wait(h);S7;end;
parend
end
(b)Vara,b,c,d,e,f,g,h,i,j;semaphores0,0,0,0,0,0,0,0,0,
0;
begin
parbegin
beginSI;signal(a);signal(b);end;
beginwait(a);S2;signal(c);signal(d);end;
beginwait(b);S3;signal(e);signal(f);end;
beginwait(c);S4;signal(g);end;
beginwait(d);S5;signal(h);end;
beginwait(e);S6;signal(i);end;
beginwait(f);S7;signal(j);end;
beginwait(g);wait(h);wait(i);wait(j);S8;end;
parend
end
23.在生產(chǎn)者消費(fèi)者問題中,如果缺少了signal(full)或signal(empty),對執(zhí)
行結(jié)果有何影響?
答:如果缺少signal(full),那么表明從第一個生產(chǎn)者進(jìn)程開始就沒有改變信
號量full值,即使緩沖池產(chǎn)品已滿,但full值還是0,這樣消費(fèi)者進(jìn)程執(zhí)行
wait(full)時認(rèn)為緩沖池是空而取不到產(chǎn)品,消費(fèi)者進(jìn)程一直處于等待狀態(tài)。
如果缺少signal(empty),在生產(chǎn)者進(jìn)程向n個緩沖區(qū)投滿產(chǎn)品后消費(fèi)者進(jìn)程才
開始從中取產(chǎn)品,這時empty=O,full=n,那么每當(dāng)消費(fèi)者進(jìn)程取走一個產(chǎn)品
empty值并不改變,直到緩沖池取空了,empty值也是0,即使目前緩沖池有n個
空緩沖區(qū),生產(chǎn)者進(jìn)程要想再往緩沖池中投放產(chǎn)品也會因?yàn)樯暾埐坏娇站彌_區(qū)被
阻塞。
24.在生產(chǎn)消費(fèi)者問題中,如果將兩個wait操作即wait(full)和wait(mutex)
互換位置,或者將signal(mutex)與signal(full)互換位置,結(jié)果如何?
答:將wait(full)和wait(mutex)互換位置后,可能引起死鎖??紤]系統(tǒng)中緩沖
區(qū)全滿時,若一生產(chǎn)者進(jìn)程先執(zhí)行了wait(mutex)操作并獲得成功,則當(dāng)再執(zhí)行
wait(empty)操作時,它將因失敗而進(jìn)入阻塞狀態(tài),它期待消費(fèi)者進(jìn)程執(zhí)行
signal(empty)來喚醒自己,在此之前,它不可能執(zhí)行signal(mutex)操作,從
而使試圖通過執(zhí)行wait(mutex)操作而進(jìn)入自己的臨界區(qū)的其他生產(chǎn)者和所有
消費(fèi)者進(jìn)程全部進(jìn)入阻塞狀態(tài),這樣容易引起系統(tǒng)死鎖。若signal(mutex)和
signal(full)互換位置后只是影響進(jìn)程對臨界資源的釋放次序,而不會引起系統(tǒng)
死鎖,因此可以互換位置。
25.我們在為某一臨界資源設(shè)置一把鎖W,當(dāng)W=1時表示關(guān)鎖,當(dāng)W=0時表示鎖
已打開。試寫出開鎖和關(guān)鎖的原語,并利用他們實(shí)現(xiàn)互斥。
答:整型信號量:lock(W):whileW=1dono-op
W:=l;
unlock(W):W:=0;
記錄型信號量:lock(W):W:=W+1;
if(W>1)thenblock(W,L)
unlock(W):W:=W-1;
if(W>0)thenwakeup(W,L)
例子:
VarW:semaphore:=0;
begin
repeat
lock(W);
criticalsection
unlock(W);
remaindersection
untilfalse;
end
26.試修改下面生產(chǎn)者一消費(fèi)者問題解法中的錯誤:
答:producer:
begin
repeat
produceraniteminnextp;
wait(mutex);
wait(full);/*應(yīng)為wait(empty),而且還應(yīng)該在wait(mutex)的前面*/
buffer(in):=nextp;
/*緩沖池數(shù)組游標(biāo)應(yīng)前移:in:=(in+l)modn;*/
signal(mutex);
/*signal(full);*/
untilfalse;
end
consumer:
begin
repeat
wait(mutex);
wait(empty);/*應(yīng)為wait(full),而且還應(yīng)該在wait(mutex)的前面*/
nextc:=buffer(out);
out:=out+l;/*考慮循環(huán),應(yīng)改為:out:=(out+1)modn;*/
signal(mutex);/*signal(empty);*/
consumeriteminnextc;
untilfalse;
end
27.試?yán)糜涗浶托盘柫繉懗鲆粋€不會出現(xiàn)死鎖的哲學(xué)家進(jìn)餐問題的算法.
答:Varchopstick:array[0,4]ofsemaphore;
所有信號量均被初始化為1,第i位哲學(xué)家的活動可描述為:
Repeat
Wait(chopstick[i]);
Wait(.chopstick[(i+1)mod5]);
Ea.t;
Signal(chopstick[i]);
Signal(chopstick[(i+1)mod5])
Ea.t;
Think;
Untilfalse;
28.在測量控制系統(tǒng)中的數(shù)據(jù)采集任務(wù),把所采集的數(shù)據(jù)送一單緩沖區(qū);計算
任務(wù)從該單緩沖中取出數(shù)據(jù)進(jìn)行計算.試寫出利用信號量機(jī)制實(shí)現(xiàn)兩者共享單
緩沖的同步算法。
答:a.Varmutex,empty,full:semaphore:=1,1,0;
gather:
begin
repeat
gatherdatainnextp;
wait(empty);
wait(mutex);
buffer:=nextp;
signal(mutex);
signal(full);
untilfalse;
end
compute:
begin
repeat
wait(full);
wait(mutex);
nextc:=buffer;
signal(mutex);
signal(empty);
computedatainnextc;
untilfalse;
end
b.Varempty,full:semaphore:=1,0;
gather:
begin
repeat
gatherdatainnextp;
wait(empty);
buffer:=nextp;
signal(full);
untilfalse;
end
compute:
begin
repeat
wait(full);
nextc:=buffer;
signal(empty);
computedatainnextc;
untilfalse;
end
29.畫圖說明管程由哪幾部分組成,為什么要引入條件變量?
答:管程由四部分組成:①管程的名稱;②局部于管程內(nèi)部的共享數(shù)據(jù)結(jié)構(gòu)說明;
③對該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的一組過程;④對局部于管程內(nèi)部的共享數(shù)據(jù)設(shè)置初始
值的語句;
當(dāng)一個進(jìn)程調(diào)用了管程,在管程中時被阻塞或掛起,直到阻塞或掛起的原因解除,
而在此期間,如果該進(jìn)程不釋放管程,則其它進(jìn)程無法進(jìn)入管程,被迫長時間地
等待。為了解決這個問題,引入了條件變量condition。
30.如何利用管程來解決生產(chǎn)者與消費(fèi)者問題?
答:首先建立一個管程,命名為ProclucerConsumer,包括兩個過程:(1)Put
(item)過程。生產(chǎn)者利用該過程將自己生產(chǎn)的產(chǎn)品放到緩沖池,用整型變
量count表示在緩沖池中已有的產(chǎn)品數(shù)目,當(dāng)count2n時,表示緩沖池已滿,
生產(chǎn)者須等待。2)get(item)過程。消費(fèi)者利用該過程從緩沖池中取出一個產(chǎn)
品,當(dāng)countWO時,表示緩沖池中已無可取的產(chǎn)品,消費(fèi)者應(yīng)等待。
PC管程可描述如下:
typeproducer-consumer=monitor
Varin,out,count:integer;
buffer:array[0,n-l]ofitem;
notfull,notempty:condition;
procedureentrydot(item)
begin
ifcount>=nthennotfull,wait;
buffer(in):=nextp;
in:=(in+l)modn;
count:=count+l;
ifnotempty.queuethennotempty.signal;
end
procedureentryget(item)
begin
ifcount<=0thennotfull,wait;
nextc:=buffer(out);
out:=(out+l)modn;
count:=count-l;
ifnotfull.quenethennotfull.signal;
end
beginin:=out:=0;
count:=0
end
在利用管程解決生產(chǎn)者一消費(fèi)者問題時,其中的生產(chǎn)者和消費(fèi)者可描述為:
producer:begin
pepeat
produceanineminnestp
PC.put(item);
untilfalse;
end
consumer:begin
repeat
PC.get(item);
consumetheiteminenxtc;
untilfalse;
end
31.什么是AND信號量?試?yán)肁ND信號量寫出生產(chǎn)者一消費(fèi)者問題的解法。
答:為解決并行帶來的死鎖問題,在wait操作中引入AND條件,其基本思想是
將進(jìn)程在整個運(yùn)行過程中所需要的所有臨界資源,一次性地全部分配給進(jìn)程,用
完后一次性釋放。
解決生產(chǎn)者一消費(fèi)者問題可描述如下:
varmutex,empty,full:semaphore:=1,n,0;
buffer:array[0,...,n-l]ofitem;
in,out:integer:=0,0;
begin
parbegin
producer:begin
repeat
produceaniteminnextp;
wait(empty);
wait(si,s2,s3,...,sn);//si,s2,...,sn為執(zhí)行生產(chǎn)者進(jìn)程除empty外其余的
條件
wait(mutex);
buffer(in):=nextp;
in:=(in+l)modn;
signal(mutex);
signal(full);
signal(si,s2,s3,...,sn);
untilfalse;
end
consumer:begin
repeat
wait(full);
wait(kl,k2,k3,...,kn);//kl,k2,...,kn為執(zhí)行消費(fèi)者進(jìn)程除full外其余的
條件
wait(mutex);
nextc:=buffer(out);
out:=(out+l)modn;
signal(mutex);
signal(empty);
signal(kl,k2,k3,...,kn);
consumetheiteminnextc;
untilfalse;
end
parend
end
32.什么是信號量集?試?yán)眯盘柫考瘜懗鲎x者一寫者問題的解法。
答:對AND信號量加以擴(kuò)充,形成的信號量集合的讀寫機(jī)制。
解法:VarRNinteger;
L,mx:semaphore:=RN,1;
begin
parbegin
reader:begin
repeat
Swait(L,1,1);
Swait(mx,1,1);
performreadoperation;
Ssignal(L,1);
untilfalse
end
writer:begin
repeat
Swait(mx,1,1;L,RN,0);
performwriteoperation;
Ssignal(mx,1);
untilfalse
end
parend
end
33.試比較進(jìn)程間的低級與高級通信工具。
答:用戶用低級通信工具實(shí)現(xiàn)進(jìn)程通信很不方便,效率低,通信對用戶不透明,
所有操作都必須由程序員來實(shí)現(xiàn),而高級通信工具彌補(bǔ)了這些缺陷,用戶直接利
用操作系統(tǒng)提供的?組通信命令,高效地傳送大量的數(shù)據(jù)。
34.當(dāng)前有哪幾種高級通信機(jī)制?
答:共享存儲器系統(tǒng)、消息傳遞系統(tǒng)以及管道通信系統(tǒng)。
35.消息隊(duì)列通信機(jī)制有哪幾方面的功能?
答(1)構(gòu)成消息(2)發(fā)送消息(3)接收梢息(4)互斥與同步。
36.為什么要在0S中引入線程?
答:在操作系統(tǒng)中引入線程,則是為了減少程序在并發(fā)執(zhí)行時所付出的時空開銷,
使0S具有更好的并發(fā)性,提高CPU的利用率。進(jìn)程是分配資源的基本單位,而線
程則是系統(tǒng)調(diào)度的基本單位。
37.試說明線程具有哪些屬性?
答(1)輕型實(shí)體(2)獨(dú)立調(diào)度和分派的基本單位(3)可并發(fā)執(zhí)行(4)共享進(jìn)
程資源。
38.試從調(diào)度性,并發(fā)性,擁有資源及系統(tǒng)開銷方面對進(jìn)程和線程進(jìn)行比較。
答(1)調(diào)度性。線程在OS中作為調(diào)度和分派的基本單位,進(jìn)程只作為資源擁
有的基本單位。
(2)并發(fā)性。進(jìn)程可以并發(fā)執(zhí)行,一個進(jìn)程的多個線程也可并發(fā)執(zhí)行。
(3)擁有資源。進(jìn)程始終是擁有資源的基本單位,線程只擁有運(yùn)行時必不可少
的資源,本身基本不擁有系統(tǒng)資源,但可以訪問隸屬進(jìn)程的資源。
(4)系統(tǒng)開銷。操作系統(tǒng)在創(chuàng)建、撤消和切換進(jìn)程時付出的開銷顯著大于線程。
39.為了在多線程OS中實(shí)現(xiàn)進(jìn)程之間的同步與通信,通常提供了哪幾種同步機(jī)
制?
答:同步功能可以控制程序流并訪問共享數(shù)據(jù),從而并發(fā)執(zhí)行多個線程。共有四
種同步模型:互斥鎖、讀寫鎖、條件變量和信號。
40.用于實(shí)現(xiàn)線程同步的私用信號量和公用信號量之間有何差別?
答:1)私用信號量。當(dāng)某線程需利用信號量實(shí)現(xiàn)同一進(jìn)程中各線程之間的同步
時,可調(diào)用創(chuàng)建信號量的命令來創(chuàng)建一個私用信號量,其數(shù)據(jù)結(jié)構(gòu)存放在應(yīng)用程
序的地址空間中。
(2)公用信號量。公用信號量是為實(shí)現(xiàn)不同進(jìn)程間或不同進(jìn)程中各線程之間的
同步而設(shè)置的。其數(shù)據(jù)結(jié)構(gòu)是存放在受保護(hù)的系統(tǒng)存儲區(qū)中,由0S為它分配空
間并進(jìn)行管理。
41.何謂用戶級線程和內(nèi)核支持線程?
答(1)用戶級線程:僅存在于用戶空間中的線程,無須內(nèi)核支持。這種線程的
創(chuàng)建、撤銷、線程間的同步與通信等功能,都無需利用系統(tǒng)調(diào)用實(shí)現(xiàn)。用戶級線
程的切換通常發(fā)生在?個應(yīng)用進(jìn)程的諸多線程之間,同樣無需內(nèi)核支持。
(2)內(nèi)核支持線程:在內(nèi)核支持下運(yùn)行的線程。無論是用戶進(jìn)程中的線程,還
是系統(tǒng)線程中的線程,其創(chuàng)建、撤銷和切換等都是依靠內(nèi)核,在內(nèi)核空間中實(shí)現(xiàn)
的。在內(nèi)核空間里還為每個內(nèi)核支持線程設(shè)置了線程控制塊,內(nèi)核根據(jù)該控制塊
感知某線程的存在并實(shí)施控制。
42.試說明用戶級線程的實(shí)現(xiàn)方法。
答:用戶級線程是在用戶空間中的實(shí)現(xiàn)的,運(yùn)行在“運(yùn)行時系統(tǒng)”與“內(nèi)核控制
線程”的中間系統(tǒng)上。運(yùn)行時系統(tǒng)用于管理和控制線程的函數(shù)的集合。內(nèi)核控制
線程或輕型進(jìn)程LWP可通過系統(tǒng)調(diào)用獲得內(nèi)核提供服務(wù),利用LWP進(jìn)程作為中間
系統(tǒng)。
43.試說明內(nèi)核支持線程的實(shí)現(xiàn)方法。
答:系統(tǒng)在創(chuàng)建新進(jìn)程時一,分配一個任務(wù)數(shù)據(jù)區(qū)PTDA,其中包括若干個線程控
制塊TCB空間。創(chuàng)建一個線程分配一個TCB,有關(guān)信息寫入TCB,為之分配必要
的資源。當(dāng)PTDA中的TCB用完,而進(jìn)程又有新線程時,只要所創(chuàng)建的線程數(shù)目
未超過系統(tǒng)允許值,系統(tǒng)可在為之分配新的TCB;在撤銷一個線程時,也應(yīng)回收
線程的所有資源和TCB。
第三章
1.高級調(diào)度與低級調(diào)度的主要任務(wù)是什么?為什么要引入中級調(diào)度?
答:高級調(diào)度的主要任務(wù)是根據(jù)某種算法,把外存上處于后備隊(duì)列中的那些作業(yè)
調(diào)入內(nèi)存。低級調(diào)度是保存處理機(jī)的現(xiàn)場信息,按某種算法先取進(jìn)程,再把處理
器分配給進(jìn)程。引入中級調(diào)度的主要目的是為了提高內(nèi)存利用率和系統(tǒng)吞吐量。
使那些暫時不能運(yùn)行的進(jìn)程不再占用內(nèi)存資源,將它們調(diào)至外存等待,把進(jìn)程狀
態(tài)改為就緒駐外存狀態(tài)或掛起狀態(tài)。
2.何謂作業(yè)、作業(yè)步和作業(yè)流?
答:作業(yè)包含通常的程序和數(shù)據(jù),還配有作業(yè)說明書。系統(tǒng)根據(jù)該說明書對程序
的運(yùn)行進(jìn)行控制。批處理系統(tǒng)中是以作業(yè)為基本單位從外存調(diào)入內(nèi)存。
作業(yè)步是指每個作業(yè)運(yùn)行期間都必須經(jīng)過若干個相對獨(dú)立相互關(guān)聯(lián)的順序加工
的步驟。作業(yè)流是指若干個作業(yè)進(jìn)入系統(tǒng)后依次存放在外存上形成的輸入作業(yè)
流;在操作系統(tǒng)的控制下,逐個作業(yè)進(jìn)程處理,于是形成了處理作業(yè)流。
3.在什么情況下需要使用作業(yè)控制塊JCB?其中包含了哪些內(nèi)容?
答:每當(dāng)作業(yè)進(jìn)入系統(tǒng)時,系統(tǒng)便為每個作業(yè)建立一個作業(yè)控制塊JCB,根據(jù)作
業(yè)類型將它插入到相應(yīng)的后備隊(duì)列中。JCB包含的內(nèi)容通常有:1)作業(yè)標(biāo)識2)
用戶名稱3)用戶賬戶4)作業(yè)類型(CPU繁忙型、I/O芳名型、批量型、終端型)
5)作業(yè)狀態(tài)6)調(diào)度信息(優(yōu)先級、作業(yè)已運(yùn)行)7)資源要求8)進(jìn)入系統(tǒng)時間9)
開始處理時間10)作業(yè)完成時間11)作業(yè)退出時間12)資源使用情況等
4.在作業(yè)調(diào)度中應(yīng)如何確定接納多少個作業(yè)和接納哪些作業(yè)?
答:作業(yè)調(diào)度每次接納進(jìn)入內(nèi)存的作業(yè)數(shù),取決于多道程序度。應(yīng)將哪些作業(yè)從
外存調(diào)入內(nèi)存,取決于采用的調(diào)度算法。最簡單的是先來服務(wù)調(diào)度算法,較常用
的是短作業(yè)優(yōu)先調(diào)度算法和基于作業(yè)優(yōu)先級的調(diào)度算法。
5.試說明低級調(diào)度的主要功能。
答(1)保存處理機(jī)的現(xiàn)場信息(2)按某種算法選取進(jìn)程(3)把處理機(jī)分配給
進(jìn)程。
6.在搶占調(diào)度方式中,搶占的原則是什么?
答:搶占的原則有:時間片原則、優(yōu)先權(quán)原則、短作業(yè)優(yōu)先權(quán)原則等。
7.在選擇調(diào)度方式和調(diào)度算法時,應(yīng)遵循的準(zhǔn)則是什么?
答:1)面向用戶的準(zhǔn)則:周轉(zhuǎn)時間短、響應(yīng)時間快、截止時間的保證、優(yōu)先權(quán)
準(zhǔn)則。2)面向系統(tǒng)的準(zhǔn)則:系統(tǒng)吞吐量高、處理機(jī)利用率好、各類資源的平衡
利用。
8.在批處理系統(tǒng)、分時系統(tǒng)和實(shí)時系統(tǒng)中,各采用哪幾種進(jìn)程(作業(yè))調(diào)度算
法?
答:批處理系統(tǒng)的調(diào)度算法:短作業(yè)優(yōu)先、優(yōu)先權(quán)、高響應(yīng)比優(yōu)先、多級反饋隊(duì)
列調(diào)度算法。分時系統(tǒng)的調(diào)度算法:時間片輪轉(zhuǎn)法。實(shí)時系統(tǒng)的調(diào)度算法:最早
截止時間優(yōu)先即EDF、最低松弛度優(yōu)先即LLF算法。
9.何謂靜態(tài)和動態(tài)優(yōu)先級?確定靜態(tài)優(yōu)先級的依據(jù)是什么?
答:靜態(tài)優(yōu)先級是指在創(chuàng)建進(jìn)程時確定且在進(jìn)程的整個運(yùn)行期間保持不變的優(yōu)先
級。動態(tài)優(yōu)先級是指在創(chuàng)建進(jìn)程時賦予的優(yōu)先權(quán),可以隨進(jìn)程推進(jìn)或隨其等待時
間增加而改變的優(yōu)先級,可以獲得更好的調(diào)度性能。確定進(jìn)程優(yōu)先級的依據(jù):進(jìn)
程類型、進(jìn)程對資源的需求和用戶要求。
10.試比較FCFS和SPF兩種進(jìn)程調(diào)度算法。
答:相同點(diǎn):兩種調(diào)度算法都可以用于作業(yè)調(diào)度和進(jìn)程調(diào)度。
不同點(diǎn):FCFS調(diào)度算法每次都從后備隊(duì)列中選擇一個或多個最先進(jìn)入該隊(duì)列的
作業(yè),將它們調(diào)入內(nèi)存、分配資源、創(chuàng)建進(jìn)程、插入到就緒隊(duì)列。該算法有利于
長作業(yè)/進(jìn)程,不利于短作業(yè)/進(jìn)程。SPF算法每次調(diào)度都從后備隊(duì)列中選擇一個
或若干個估計運(yùn)行時間最短的作業(yè),調(diào)入內(nèi)存中運(yùn)行。該算法仃利于短作業(yè)/進(jìn)
程,不利于長作業(yè)/進(jìn)程。
11.在時間片輪轉(zhuǎn)法中,應(yīng)如何確定時間片的大???
答:時間片應(yīng)略大于一次典型的交互需要的時間。一般應(yīng)考慮三個因素:系統(tǒng)對
相應(yīng)時間的要求、就緒隊(duì)列中進(jìn)程的數(shù)目和系統(tǒng)的處理能力。
12.通過一個例子來說明通常的優(yōu)先級調(diào)度算法不能適用于實(shí)時系統(tǒng)?
答:實(shí)時系統(tǒng)的調(diào)度算法很多,主要是基于任務(wù)的開始截止時間和任務(wù)緊急/松
弛程度的任務(wù)優(yōu)先級調(diào)度算法,通常的優(yōu)先級調(diào)度算法不能滿足實(shí)時系統(tǒng)的調(diào)度
實(shí)時性要求而不適用。
13.為什么說多級反饋隊(duì)列調(diào)度算法能較好地滿足各方面用戶的需求?
答:(1)終端型作業(yè)用戶提交的作業(yè)大多屬于較小的交互型作業(yè),系統(tǒng)只要使這
些作業(yè)在第一隊(duì)列規(guī)定的時間片內(nèi)完成,終端作業(yè)用戶就會感到滿足。
(2)短批處理作業(yè)用戶,開始時像終端型作業(yè)一樣,如果在第一隊(duì)列中執(zhí)行一
個時間片段即可完成,便可獲得與終端作業(yè)一樣的響應(yīng)時間。對于稍長作業(yè),通
常只需在第二和第三隊(duì)列各執(zhí)行一時間片即可完成,其周轉(zhuǎn)時間仍然較短。
(3)長批處理作業(yè),它將依次在第1,2,n個隊(duì)列中運(yùn)行,然后再按輪轉(zhuǎn)
方式運(yùn)行,用戶不必?fù)?dān)心其作業(yè)長期得不到處理。所以,多級反饋隊(duì)列調(diào)度算法
能滿足多用戶需求。
14.為什么在實(shí)時系統(tǒng)中,要求系統(tǒng)(尤其是CPU)具有較強(qiáng)的處理能力?
答:實(shí)時系統(tǒng)中通常有著多個實(shí)時任務(wù)。若處理機(jī)的處理能力不夠強(qiáng),有可能因
為處理機(jī)忙不過來而使某些實(shí)時任務(wù)得不到及時處理,導(dǎo)致發(fā)生難以預(yù)料的后
果。
15.按照調(diào)度方式可將實(shí)時調(diào)度算法分為哪幾種?
答:可分為非搶占式和搶占式兩種算法。而非搶占式算法又分為非搶占式輪轉(zhuǎn)和
優(yōu)先調(diào)度算法;搶占式調(diào)度算法又分為基于時鐘中斷的搶占式優(yōu)先權(quán)和立即搶占
式優(yōu)先權(quán)調(diào)度算法。
16.什么是最早截止時間優(yōu)先調(diào)度算法?舉例說明。
答:根據(jù)任務(wù)的開始截止時間確定的任務(wù)優(yōu)先級調(diào)度算法。截止時間越早則優(yōu)先
級越高。該算法要求在系統(tǒng)中保持一個實(shí)時任務(wù)就緒隊(duì)列,該隊(duì)列按各任務(wù)截止
時間的先后排序。舉例:非搶占式調(diào)度方式用于非周期實(shí)時任務(wù)。圖3-9是將
該算法用于非搶占調(diào)度方式之例。該例中具有四個非周期任務(wù),它們先后到達(dá)。
系統(tǒng)首先調(diào)度任務(wù)1執(zhí)行,在任務(wù)1執(zhí)行期間,任務(wù)2、3又先后到達(dá)。由于任
務(wù)3的開始截止時間早于任務(wù)2,故系統(tǒng)在任務(wù)1后將調(diào)度任務(wù)3執(zhí)行。在此期
間又到達(dá)作業(yè)4,其開始截止時間仍是早于任務(wù)2的,故在任務(wù)3執(zhí)行完后,系
統(tǒng)又調(diào)度任務(wù)4執(zhí)行,最后才調(diào)度任務(wù)2執(zhí)行。
1342
開始做止時間<?Ai
任務(wù)執(zhí)行廠.I;.I;I;I一,
任務(wù)到達(dá)1—ftf
1234
圖3-9EDF算法用于非搶占調(diào)度的調(diào)度方式
17.什么是最低松弛度優(yōu)先調(diào)度算法?舉例說明之。
答:該算法是根據(jù)任務(wù)緊急(或松弛)的程度,來確定任務(wù)的優(yōu)先級。任務(wù)的緊急
程度愈高,為該任務(wù)所賦予的優(yōu)先級就愈高,以使之優(yōu)先執(zhí)行。例如,一個任務(wù)
在200ms時必須完成,而它本身所需的運(yùn)行時間就有100ms,因此,調(diào)度程序
必須在100ms之前調(diào)度執(zhí)行,該任務(wù)的緊急程度(松弛程度)為100ms。又如,
另一任務(wù)在400ms時必須完成,它本身需要運(yùn)行150ms,則其松弛程度為250
niSo
18.何謂死鎖?產(chǎn)生死鎖的原因和必要條件是什么?
答:死鎖是指多個進(jìn)程在運(yùn)行過程中因爭奪資源而造成的一種僵局,當(dāng)進(jìn)程處于
這種僵持狀態(tài)時,若無外力作用,它們都將無法再向前推進(jìn)。
產(chǎn)生死鎖的原因?yàn)楦偁庂Y源和進(jìn)程間推進(jìn)順序非法。其必要條件是:互斥條件、
請求和保持條件、不剝奪條件、環(huán)路等待條件。
19.在解決死鎖問題的幾個方法中,哪種方法最易于實(shí)現(xiàn)?哪種方法使資源利
用率最高?
答:解決死鎖的四種方法即預(yù)防、避免、檢測和解除死鎖中,預(yù)防死鎖最容易實(shí)
現(xiàn);避免死鎖使資源的利用率最高。
20.請?jiān)敿?xì)說明可通過哪些途徑預(yù)防死鎖。
答(1)摧棄“請求和保持”條件,就是如果系統(tǒng)有足夠資源,便一次性把進(jìn)程
需要的所有資源分配給它;
(2)損棄“不剝奪”條件,就是已經(jīng)擁有資源的進(jìn)程,當(dāng)它提出新資源請求而
不能立即滿足時,必須釋放它已保持的所有資源,待以后需要時再重新申請;
(3)推棄“環(huán)路等待”條件,就是將所有資源按類型排序標(biāo)號,所有進(jìn)程對資
源的請求必須嚴(yán)格按序號遞增的次序提出。
21.在銀行家算法的例子中,如果P。發(fā)出請求向量由Request(0,2,0)改為
Request(0,1,0),問系統(tǒng)可否將資源分配給它?(此答案有點(diǎn)問題,需重新考慮)
答(1)可以。銀行家算法各種資源數(shù)量分別為10、5、7,在T0時刻的資源分
配如圖所示:
^情況MaxAllocationNeedAvailable
進(jìn)程ABCABCABCABC
Po753010743332
Pl322200122
3102
902600
p2
222211011
p3
433002431
p4
(2)具體分析如下:
①RequstO(0,1,0)<=NeedO(7,4,3);
②RequstO(0,1,0)<=Available(2,3,0);
系統(tǒng)先假定可為P0分配資源,并修改Available。,Allocation。和Need。向量,
由此形成
的資源變化情況如下圖所示:
^情況MaxAllocationNeedAvailable
進(jìn)程ABCABcABCABC
Po763010743322
Pl322200122
902302600
p2
P3222211011
P4430013.
(3)P0請求資源:P0發(fā)出請求向量Requst0(0,l,0),系統(tǒng)按銀行家算法進(jìn)行檢
查:
①RequstO(0,1,0)<=NeedO(7,4,3);
②RequstO(O,1,0)〈二Available(2,3,0);
③系統(tǒng)暫時先假定可為P0分配資源,并修改有關(guān)數(shù)據(jù),如下圖所示
Work|Need|Allocation|Work+Allocation|
ABCABCABcABcFinish
Po322733020342Ture
Pi342122200542Ture
542600302844Ture
p2
8440112111055Ture
p3
p.10554310021057Ture
綜上所述系統(tǒng)可以將資源分配給它。
22.銀行家算法中出現(xiàn)以下資源分配,試問(1)該狀態(tài)是否安全?(2)若進(jìn)
程P2提出
Request。,2,2,2)后,系統(tǒng)能否將資源分配給它?
ProcessAllocationNeedAvailable
Po003200121622
Pi10001750
13542356
P2
03320652
P3
00140656
P4
試問:(1)該狀態(tài)是否安全?
(2)擷程P2提出請求Request(1,2,2,2)后,系統(tǒng)能否將資源分配給它?(參
考答案有錯)
答:(1)安全,因?yàn)榇嬖诎踩蛄衶PO,P3,P4,P1,P2}
⑵若進(jìn)程P2提出請求Request^,2,2,2)后,系統(tǒng)不能將資源分配給它,若
分配給進(jìn)程P2,系統(tǒng)還剩的資源情況為(0,4,0,0),此時系統(tǒng)中的資源將無
法滿足任何一個進(jìn)程的資源請求,從而導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),容易引起死鎖
的發(fā)生。
第四章
1.為什么要配置層次式存儲器?
答:設(shè)置多個存儲器可以使存儲器兩端的硬件能并行工作;采用多級存儲系統(tǒng),
特別是Cache技術(shù),是減輕存儲器帶寬對系統(tǒng)性能影響的最佳結(jié)構(gòu)方案;在微
處理機(jī)內(nèi)部設(shè)置各種緩沖存儲器,減輕對存儲器存取的壓力。增加CPU中寄存器
數(shù)量大大緩解對存儲器壓力。
2.可采用哪幾種方式將程序裝入內(nèi)存?它們分別適用于何種場合?
答(1)絕對裝入方式,只適用于單道程序環(huán)境。
(2)可重定位裝入方式,適用于多道程序環(huán)境。
(3)動態(tài)運(yùn)行時裝入方式,用于多道程序環(huán)境;不允許程序運(yùn)行時在內(nèi)存中移
位置。
3.何謂靜態(tài)鏈接?何謂裝入時動態(tài)鏈接和運(yùn)行時的動態(tài)鏈接?P120
答:靜態(tài)鏈接是指在程序運(yùn)行前,先將各目標(biāo)模塊及它們所需的庫函數(shù),鏈接成
一個完整的裝配模塊,以后不再拆開的鏈接方式。
裝入時動態(tài)鏈接是指將用戶源程序編譯后得到的一組目標(biāo)模塊,在裝入內(nèi)存時采
用邊裝入邊鏈接的鏈接方式。
運(yùn)行時動態(tài)鏈接是指對某些目標(biāo)模塊的鏈接,是在程序執(zhí)行中需要該目標(biāo)模塊
時,才對它進(jìn)行的鏈接。
4.在進(jìn)行程序鏈接時,應(yīng)完成哪些工作?
答:由鏈接程序Linker將編譯后形成的一組目標(biāo)模塊,以及它們需要的庫函數(shù)
鏈接在一起,形成一個完整的裝入模塊LoadModule。主要工作是修改程序內(nèi)的
相對地址和修改目標(biāo)程序中的外部調(diào)用標(biāo)號。
5.在動態(tài)分區(qū)分配方式中,應(yīng)如何將各空閑分區(qū)鏈接成空閑分區(qū)鏈?
答:在每個分區(qū)的起始部分,設(shè)置一些控制分區(qū)分配的信息,以及用于鏈接各分
區(qū)所用的前向指針;在分區(qū)尾部設(shè)置一個后向指針,通過前后向鏈接指針,將所
有空閑分區(qū)鏈成一個雙向鏈。當(dāng)分區(qū)分配出去后,把狀態(tài)位由“0”改為“1”。
6.為什么要引入動態(tài)重定位?如何實(shí)現(xiàn)?
答:在程序執(zhí)行過程中,每當(dāng)訪問指令或數(shù)據(jù)時一,將要訪問的程序或數(shù)據(jù)的邏輯
地址轉(zhuǎn)換成物理地址,引入了動態(tài)重定位;
具體實(shí)現(xiàn)方法是在系統(tǒng)中增加一個重定位寄存器,用來裝入程序在內(nèi)存中的起始
地址,程序執(zhí)行時,真正訪問的內(nèi)存地址是相對地址與重定位寄存器中的地址相
加之和,從而實(shí)現(xiàn)動態(tài)重定位。
7.在采用首次適應(yīng)算法回收內(nèi)存時,可能出現(xiàn)哪幾種情況?應(yīng)怎樣處理這些情
況?
答:在采用首次適應(yīng)算法回收內(nèi)存時可能出現(xiàn)4種情況:
(1)回收區(qū)前鄰空閑區(qū)。將回收區(qū)與前鄰空閑區(qū)合并,將前鄰空閑區(qū)大小修改
為兩者之和。
(2)回收區(qū)后鄰空閑區(qū)。將兩區(qū)合并,改后鄰空閑區(qū)始址為|口1收區(qū)始址,大小
為兩者之和。
(3)回收區(qū)前后均鄰空閑區(qū)。將三個分區(qū)合并,修改前鄰空閑區(qū)大小為三者之
和。
(4)回收區(qū)前后均不鄰空閑區(qū)。為回收區(qū)設(shè)置空閑區(qū)表項(xiàng),填入回收區(qū)始址和
大小并插入空閑區(qū)隊(duì)列。
8.令buddy^x)表示大小為21\地址為x的塊的伙伴系統(tǒng)地址,試寫出
buddy^x)的通用表達(dá)式。
答:當(dāng)xMOD2k+1=0時,budd%(x)=x+2,當(dāng)xMOD2k+1=2k
時,k
buddyK(x)=x-2
9.分區(qū)存儲管理中常用那些分配策略?比較它們的優(yōu)缺點(diǎn)。
答:分區(qū)存儲管理中的常用分配策略:首次適應(yīng)算法、循環(huán)首次適應(yīng)算法、最佳
適應(yīng)算法、最壞適應(yīng)算法。
首次適應(yīng)算法優(yōu)缺點(diǎn):保留了高址部分的大空閑區(qū),有利于后來的大型作業(yè)分配;
低址部分不斷被劃分,留下許多難以利用的小空閑區(qū),每次查找都從低址開始增
加了系統(tǒng)開銷。
循環(huán)首次適應(yīng)算法優(yōu)缺點(diǎn):內(nèi)存空閑分區(qū)分布均勻,減少了查找系統(tǒng)開銷;缺乏
大空閑分區(qū),導(dǎo)致不能裝入大型作業(yè)。
最佳適應(yīng)算法優(yōu)缺點(diǎn):每次分配給文件的都是最適合該文件大小的分區(qū),內(nèi)存中
留下許多難以利用的小空閑區(qū)。
最壞適應(yīng)算法優(yōu)缺點(diǎn):剩下空閑區(qū)不太小,產(chǎn)生碎片幾率小,對中小型文件分配
分區(qū)操作有利;存儲器中缺乏大空閑區(qū),對大型文件分區(qū)分配不利。
10.在系統(tǒng)中引入對換后可帶來哪些好處?
答:交換技術(shù)將暫不需要的作業(yè)移到外存,讓出內(nèi)存空間以調(diào)入其它作業(yè),交換
到外存的作業(yè)也可以被再次調(diào)入。目的是解決內(nèi)存緊張問題,帶來的好處是進(jìn)一
步提高了內(nèi)存利用率和系統(tǒng)吞吐量。
11.為實(shí)現(xiàn)對換,系統(tǒng)應(yīng)具備哪幾方面的功能?
答:系統(tǒng)應(yīng)具備三方面功能:對換空間管理,進(jìn)程換出,進(jìn)程換入。
12.在以進(jìn)程為單位進(jìn)行對換時,每次是否都將整個進(jìn)程換出?為什么?
答:在以進(jìn)程為單位進(jìn)行對換時,并非每次都將整個進(jìn)程換出。這是因?yàn)椋?/p>
(1)從結(jié)構(gòu)上講,進(jìn)程由程序段、數(shù)據(jù)段和進(jìn)程控制塊組成的,其中進(jìn)程控制塊
總有部分或全部常駐內(nèi)存,不被換出。
(2)程序段和數(shù)據(jù)段可能正被若干進(jìn)程共享,此時它們也不能換出。
13.為實(shí)現(xiàn)分頁存儲管理,需要哪些硬件的支持?
答:動態(tài)重定位技術(shù)、虛擬存儲技術(shù)、多道程序設(shè)計技術(shù)。
14.較詳細(xì)的說明引入分段存儲管理是為了滿足用戶哪幾方面的需要。
答:1)方便編程。用戶通常把自己的作業(yè)按照邏輯關(guān)系劃分為若干段,每段都
從0編址,并有自己名字和長度。因此,希望要訪問的邏輯地址是由段名和段
內(nèi)偏移量決定。
2)信息共享。在實(shí)現(xiàn)對程序和數(shù)據(jù)的共享時,是以信息邏輯單位為基礎(chǔ)。分頁
系統(tǒng)中的頁是存放信息的物理單位,無完整意義,不便于共享;段是信息的邏輯
單位。為了實(shí)現(xiàn)段的共享,希望存儲管理能與用戶程序分段的組織方式相適應(yīng)。
3)信息保護(hù)。對信息的邏輯單位進(jìn)行保護(hù),分段能更有效方便地實(shí)現(xiàn)信息保護(hù)
功能。
4)動態(tài)增長。在實(shí)際應(yīng)用中,有些段特別是數(shù)據(jù)段,在使用過程中會不斷增長,
事先又無法確切知道增長多少。分段存儲管理方式能較好解決這個問題。
5)動態(tài)鏈接。運(yùn)行時先將主程序?qū)?yīng)的目標(biāo)程序裝入內(nèi)存并啟動運(yùn)行,運(yùn)行過
程中又需要調(diào)用某段時,才將該段調(diào)入內(nèi)存鏈接。所以動態(tài)鏈接也要求以段作為
管理單位。
15.在具有快表的段頁式存儲管理方式中,如何實(shí)現(xiàn)地址變換?
答在CPU給出有效地址后,由地址變換機(jī)構(gòu)自動將頁號P送入高速緩沖寄存器,
并將此頁號與高速緩存中的所有頁號比較,若找到匹配頁號,表示要訪問的頁表
項(xiàng)在快表中。可直接從快表讀出該頁對應(yīng)物理塊號,送到物理地址寄存器中。如
快表中沒有對應(yīng)頁表項(xiàng),則再訪問內(nèi)存頁表,找到后,把從頁表項(xiàng)中讀出物理塊
號送地址寄存器;同時修改快表,將此頁表項(xiàng)存入快表。但若寄存器已滿,則
OS必須找到合適的頁表項(xiàng)換出。
16.為什么說分段系統(tǒng)比分頁系統(tǒng)更易于實(shí)現(xiàn)信息的共享和保護(hù)?
答:分頁系統(tǒng)的每個頁面是分散存儲的,為了實(shí)現(xiàn)信息共享和保護(hù),頁面之間需
要一一對應(yīng),為此需要建立大量的頁表項(xiàng);而分段系統(tǒng)的每個段都從0編址,
并采用?段連續(xù)的地址空間,在實(shí)現(xiàn)共享和保護(hù)時,只需為要共享和保護(hù)的程序
設(shè)置一個段表項(xiàng),將其中的基址與內(nèi)存地址一一對應(yīng)就能夠?qū)崿F(xiàn)。
17.分段和分頁存儲管理有何區(qū)別?
答:1)頁是信息的物理單位,分頁是為了實(shí)現(xiàn)離散分配方式,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河北省安全員《A證》考試題庫及答案
- 二零二五年度智能制造入股合同協(xié)議書
- 2025年度農(nóng)業(yè)科技企業(yè)員工借調(diào)與農(nóng)業(yè)技術(shù)推廣合同
- 2025年度個體工商戶合伙協(xié)議范文與投資融資及財務(wù)規(guī)劃協(xié)議
- 2025年度征收城市老舊危房房屋拆遷補(bǔ)償協(xié)議
- 2025年度人事專員勞動合同(附員工培訓(xùn)服務(wù)內(nèi)容)
- 2025年度文化產(chǎn)業(yè)發(fā)展勞動合同法規(guī)范與創(chuàng)意人才合同
- 2025年度個人租賃市場租賃合同電子簽名合同
- 2025年度健康養(yǎng)生館店鋪承包合作協(xié)議
- 2025年度太陽能光伏發(fā)電站機(jī)電安裝服務(wù)協(xié)議
- 第17講 新高考新結(jié)構(gòu)命題下的導(dǎo)數(shù)解答題綜合訓(xùn)練(教師版)-2025版高中數(shù)學(xué)一輪復(fù)習(xí)考點(diǎn)幫
- 01-衛(wèi)生法學(xué)與衛(wèi)生法概述課件
- 2024年世界職業(yè)院校技能大賽高職組“新型電力系統(tǒng)技術(shù)與應(yīng)用組”參考試題庫(含答案)
- 幼兒園家長會安全保健
- (完整版)小升初英語語法總結(jié)+練習(xí)題及答案
- 全員營銷激勵專項(xiàng)方案
- 云南省高中信息技術(shù)學(xué)業(yè)水平考試知識點(diǎn)復(fù)習(xí)
- DBJ33-T 1325-2024 螺栓連接全裝配混凝土墻板結(jié)構(gòu)技術(shù)規(guī)程
- 220kVGIS安裝施工方案
- CRISPR-Cas9-基因編輯技術(shù)簡介
- 儲運(yùn)工作危害分析(JHA+LS)評價記錄
評論
0/150
提交評論