計算機操作系統(tǒng)(第3版)課后習(xí)題答案解析(完整版)_第1頁
計算機操作系統(tǒng)(第3版)課后習(xí)題答案解析(完整版)_第2頁
計算機操作系統(tǒng)(第3版)課后習(xí)題答案解析(完整版)_第3頁
計算機操作系統(tǒng)(第3版)課后習(xí)題答案解析(完整版)_第4頁
計算機操作系統(tǒng)(第3版)課后習(xí)題答案解析(完整版)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

./第一章1.設(shè)計現(xiàn)代OS的主要目標(biāo)是什么?答:〔1有效性〔2方便性〔3可擴充性〔4開放性2.OS的作用可表現(xiàn)在哪幾個方面?答:〔1OS作為用戶與計算機硬件系統(tǒng)之間的接口〔2OS作為計算機系統(tǒng)資源的管理者〔3OS實現(xiàn)了對計算機資源的抽象3.為什么說OS實現(xiàn)了對計算機資源的抽象?答:OS首先在裸機上覆蓋一層I/O設(shè)備管理軟件,實現(xiàn)了對計算機硬件操作的第一層次抽象;在第一層軟件上再覆蓋文件管理軟件,實現(xiàn)了對硬件資源操作的第二層次抽象。OS通過在計算機硬件上安裝多層系統(tǒng)軟件,增強了系統(tǒng)功能,隱藏了對硬件操作的細節(jié),由它們共同實現(xiàn)了對計算機資源的抽象。4.試說明推動多道批處理系統(tǒng)形成和發(fā)展的主要動力是什么?答:主要動力來源于四個方面的社會需求與技術(shù)發(fā)展:〔1不斷提高計算機資源的利用率;〔2方便用戶;〔3器件的不斷更新?lián)Q代;〔4計算機體系結(jié)構(gòu)的不斷發(fā)展。5.何謂脫機I/O和聯(lián)機I/O?答:脫機I/O是指事先將裝有用戶程序和數(shù)據(jù)的紙帶或卡片裝入紙帶輸入機或卡片機,在外圍機的控制下,把紙帶或卡片上的數(shù)據(jù)或程序輸入到磁帶上。該方式下的輸入輸出由外圍機控制完成,是在脫離主機的情況下進行的。而聯(lián)機I/O方式是指程序和數(shù)據(jù)的輸入輸出都是在主機的直接控制下進行的。6.試說明推動分時系統(tǒng)形成和發(fā)展的主要動力是什么?答:推動分時系統(tǒng)形成和發(fā)展的主要動力是更好地滿足用戶的需要。主要表現(xiàn)在:CPU的分時使用縮短了作業(yè)的平均周轉(zhuǎn)時間;人機交互能力使用戶能直接控制自己的作業(yè);主機的共享使多用戶能同時使用同一臺計算機,獨立地處理自己的作業(yè)。7.實現(xiàn)分時系統(tǒng)的關(guān)鍵問題是什么?應(yīng)如何解決?答:關(guān)鍵問題是當(dāng)用戶在自己的終端上鍵入命令時,系統(tǒng)應(yīng)能及時接收并及時處理該命令,在用戶能接受的時延內(nèi)將結(jié)果返回給用戶。解決方法:針對及時接收問題,可以在系統(tǒng)中設(shè)置多路卡,使主機能同時接收用戶從各個終端上輸入的數(shù)據(jù);為每個終端配置緩沖區(qū),暫存用戶鍵入的命令或數(shù)據(jù)。針對及時處理問題,應(yīng)使所有的用戶作業(yè)都直接進入內(nèi)存,并且為每個作業(yè)分配一個時間片,允許作業(yè)只在自己的時間片內(nèi)運行,這樣在不長的時間內(nèi),能使每個作業(yè)都運行一次。8.為什么要引入實時OS?答:實時操作系統(tǒng)是指系統(tǒng)能及時響應(yīng)外部事件的請求,在規(guī)定的時間內(nèi)完成對該事件的處理,并控制所有實時任務(wù)協(xié)調(diào)一致地運行。引入實時OS是為了滿足應(yīng)用的需求,更好地滿足實時控制領(lǐng)域和實時信息處理領(lǐng)域的需要。9.什么是硬實時任務(wù)和軟實時任務(wù)?試舉例說明。答:硬實時任務(wù)是指系統(tǒng)必須滿足任務(wù)對截止時間的要求,否則可能出現(xiàn)難以預(yù)測的結(jié)果。舉例來說,運載火箭的控制等。軟實時任務(wù)是指它的截止時間并不嚴格,偶爾錯過了任務(wù)的截止時間,對系統(tǒng)產(chǎn)生的影響不大。舉例:網(wǎng)頁內(nèi)容的更新、火車售票系統(tǒng)。10.在8位微機和16位微機中,占據(jù)了統(tǒng)治地位的是什么操作系統(tǒng)?答:單用戶單任務(wù)操作系統(tǒng),其中最具代表性的是CP/M和MS-DOS.11.試列出WindowsOS中五個主要版本,并說明它們分別較之前一個版本有何改進。答:〔1MicrosoftWindows1.0是微軟公司在個人電腦上開發(fā)圖形界面的首次嘗試?!?Windows95是混合的16位/32位系統(tǒng),第一個支持32位。帶來了更強大、更穩(wěn)定、更實用的桌面圖形用戶界面,結(jié)束了桌面操作系統(tǒng)間的競爭?!?Windows98是微軟公司的混合16位/32位Windows操作系統(tǒng),改良了硬件標(biāo)準的支持,革新了內(nèi)存管理,是多進程操作系統(tǒng)?!?WindowsXP是基于Windows2000的產(chǎn)品,擁有新用戶圖形界面月神Luna。簡化了用戶安全特性,整合了防火墻?!?WindowsVista包含了上百種新功能;特別是新版圖形用戶界面和WindowsAero全新界面風(fēng)格、加強的搜尋功能〔WindowsIndexingService、新媒體創(chuàng)作工具以及重新設(shè)計的網(wǎng)絡(luò)、音頻、輸出〔打印和顯示子系統(tǒng)。。12.試從交互性、及時性以及可靠性方面,將分時系統(tǒng)與實時系統(tǒng)進行比較。答:〔1及時性:實時信息處理系統(tǒng)對實時性的要求與分時系統(tǒng)類似,都是以人所能接受的等待時間來確定;而實時控制系統(tǒng)的及時性,是以控制對象所要求的開始截止時間或完成截止時間來確定的,一般為秒級到毫秒級,甚至有的要低于100微妙?!?交互性:實時信息處理系統(tǒng)具有交互性,但人與系統(tǒng)的交互僅限于訪問系統(tǒng)中某些特定的專用服務(wù)程序。不像分時系統(tǒng)那樣能向終端用戶提供數(shù)據(jù)和資源共享等服務(wù)?!?可靠性:分時系統(tǒng)也要求系統(tǒng)可靠,但相比之下,實時系統(tǒng)則要求系統(tǒng)具有高度的可靠性。因為任何差錯都可能帶來巨大的經(jīng)濟損失,甚至是災(zāi)難性后果,所以在實時系統(tǒng)中,往往都采取了多級容錯措施保障系統(tǒng)的安全性及數(shù)據(jù)的安全性。13.OS有哪幾大特征?其最基本的特征是什么?答:并發(fā)性、共享性、虛擬性和異步性四個基本特征;最基本的特征是并發(fā)性。14.處理機管理有哪些主要功能?它們的主要任務(wù)是什么?答:處理機管理的主要功能是:進程管理、進程同步、進程通信和處理機調(diào)度;進程管理:為作業(yè)創(chuàng)建進程,撤銷已結(jié)束進程,控制進程在運行過程中的狀態(tài)轉(zhuǎn)換。進程同步:為多個進程〔含線程的運行______________進行協(xié)調(diào)。通信:用來實現(xiàn)在相互合作的進程之間的信息交換。處理機調(diào)度:〔1作業(yè)調(diào)度。從后備隊里按照一定的算法,選出若干個作業(yè),為他們分配運行所需的資源〔首選是分配內(nèi)存?!?進程調(diào)度:從進程的就緒隊列中,按照一定算法選出一個進程,把處理機分配給它,并設(shè)置運行現(xiàn)場,使進程投入執(zhí)行。15.內(nèi)存管理有哪些主要功能?他們的主要任務(wù)是什么?答:內(nèi)存管理的主要功能有:內(nèi)存分配、內(nèi)存保護、地址映射和內(nèi)存擴充。內(nèi)存分配:為每道程序分配內(nèi)存。內(nèi)存保護:確保每道用戶程序都只在自己的內(nèi)存空間運行,彼此互不干擾。地址映射:將地址空間的邏輯地址轉(zhuǎn)換為內(nèi)存空間與對應(yīng)的物理地址。內(nèi)存擴充:用于實現(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ù)是什么?答:文件管理主要功能:文件存儲空間的管理、目錄管理、文件的讀/寫管理和保護。文件管理的主要任務(wù):管理用戶文件和系統(tǒng)文件,方便用戶使用,保證文件安全性。18.是什么原因使操作系統(tǒng)具有異步性特征?答:操作系統(tǒng)的異步性體現(xiàn)在三個方面:一是進程的異步性,進程以人們不可預(yù)知的速度向前推進,二是程序的不可再現(xiàn)性,即程序執(zhí)行的結(jié)果有時是不確定的,三是程序執(zhí)行時間的不可預(yù)知性,即每個程序何時執(zhí)行,執(zhí)行順序以及完成時間是不確定的。19.模塊接口法存在哪些問題?可通過什么樣的途徑來解決?答:〔1模塊接口法存在的問題:①在OS設(shè)計時,各模塊間的接口規(guī)定很難滿足在模塊完成后對接口的實際需求。②在OS設(shè)計階段,設(shè)計者必須做出一系列的決定,每一個決定必須建立在上一個決定的基礎(chǔ)上。但模塊化結(jié)構(gòu)設(shè)計的各模塊設(shè)計齊頭并進,無法尋找可靠的順序,造成各種決定的無序性,使程序設(shè)計人員很難做到設(shè)計中的每一步?jīng)Q定都建立在可靠的基礎(chǔ)上,因此模塊接口法被稱為"無序模塊法"。〔2解決途徑:將模塊接口法的決定順序無序變有序,引入有序分層法。20.在微內(nèi)核OS中,為什么要采用客戶/服務(wù)器模式?答:C/S模式具有獨特的優(yōu)點:⑴數(shù)據(jù)的分布處理和存儲。⑵便于集中管理。⑶靈活性和可擴充性。⑷易于改編應(yīng)用軟件。21.試描述什么是微內(nèi)核OS。答:1足夠小的內(nèi)核2基于客戶/服務(wù)器模式3應(yīng)用機制與策略分離原理4采用面向?qū)ο蠹夹g(shù)。22.在基于微內(nèi)核結(jié)構(gòu)的OS中,應(yīng)用了哪些新技術(shù)?答:在基于微內(nèi)核結(jié)構(gòu)的OS中,采用面向?qū)ο蟮某绦蛟O(shè)汁技術(shù)。23.何謂微內(nèi)核技術(shù)?在微內(nèi)核中通常提供了哪些功能?答:把操作系統(tǒng)中更多的成分和功能放到更高的層次〔即用戶模式中去運行,而留下一個盡量小的內(nèi)核,用它來完成操作系統(tǒng)最基本的核心功能,稱這種技術(shù)為微內(nèi)核技術(shù)。在微內(nèi)核中通常提供了進程〔線程管理、低級存儲器管理、中斷和陷入處理等功能。24.微內(nèi)核操作系統(tǒng)具有哪些優(yōu)點?它為何能有這些優(yōu)點?答:1提高了系統(tǒng)的可擴展性2增強了系統(tǒng)的可靠性3可移植性4提供了對分布式系統(tǒng)的支持5融入了面向?qū)ο蠹夹g(shù)第二章1.什么是前趨圖?為什么要引入前趨圖?答:前趨圖<PrecedenceGraph>是一個有向無循環(huán)圖,記為DAG<DirectedAcyclicGraph>,用于描述進程之間執(zhí)行的前后關(guān)系。2.畫出下面四條語句的前趨圖:S1=a:=x+y;S2=b:=z+1;S3=c:=a–b;S4=w:=c+1;答:其前趨圖為:3.什么程序并發(fā)執(zhí)行會產(chǎn)生間斷性特征?答:程序在并發(fā)執(zhí)行時,由于它們共享系統(tǒng)資源,為完成同一項任務(wù)需要相互合作,致使這些并發(fā)執(zhí)行的進程之間,形成了相互制約關(guān)系,從而使得進程在執(zhí)行期間出現(xiàn)間斷性。4.程序并發(fā)執(zhí)行時為什么會失去封閉性和可再現(xiàn)性?答:程序并發(fā)執(zhí)行時,多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)由多個程序改變,致使程序運行失去了封閉性,也會導(dǎo)致其失去可再現(xiàn)性。5.在操作系統(tǒng)中為什么要引入進程概念?它會產(chǎn)生什么樣的影響?答:為了使程序在多道程序環(huán)境下能并發(fā)執(zhí)行,并對并發(fā)執(zhí)行的程序加以控制和描述,在操作系統(tǒng)中引入了進程概念。影響:使程序的并發(fā)執(zhí)行得以實行。6.試從動態(tài)性,并發(fā)性和獨立性上比較進程和程序?答:<1>動態(tài)性是進程最基本的特性,表現(xiàn)為由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,因得不到資源而暫停執(zhí)行,由撤銷而消亡。進程有一定的生命期,而程序只是一組有序的指令集合,是靜態(tài)實體。<2>并發(fā)性是進程的重要特征,同時也是OS的重要特征。引入進程的目的正是為了使其程序能和其它進程的程序并發(fā)執(zhí)行,而程序是不能并發(fā)執(zhí)行的。<3>獨立性是指進程實體是一個能獨立運行的基本單位,也是系統(tǒng)中獨立獲得資源和獨立調(diào)度的基本單位。對于未建立任何進程的程序,不能作為獨立單位參加運行。7.試說明PCB的作用,為什么說PCB是進程存在的惟一標(biāo)志?答:PCB是進程實體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。作用是使一個在多道程序環(huán)境下不能獨立運行的程序,成為一個能獨立運行的基本單位,成為能與其它進程并發(fā)執(zhí)行的進程。OS是根據(jù)PCB對并發(fā)執(zhí)行的進程進行控制和管理的。8.試說明進程在三個基本狀態(tài)之間轉(zhuǎn)換的典型原因。答:〔1就緒狀態(tài)→執(zhí)行狀態(tài):進程分配到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)處于五種不同的需要:終端用戶需要,父進程需要,操作系統(tǒng)需要,對換北京石油化工學(xué)院信息工程學(xué)院計算機系5/48《計算機操作系統(tǒng)》習(xí)題參考答案余有明與計07和計G09的同學(xué)們編著5/48需要和負荷調(diào)節(jié)需要。處于掛起狀態(tài)的進程不能接收處理機調(diào)度。10.在進行進程切換時,所要保存的處理機狀態(tài)信息有哪些?答:進行進程切換時,所要保存的處理機狀態(tài)信息有:〔1進程當(dāng)前暫存信息〔2下一指令地址信息〔3進程狀態(tài)信息〔4過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址信息。11.試說明引起進程創(chuàng)建的主要事件。答:引起進程創(chuàng)建的主要事件有:用戶登錄、作業(yè)調(diào)度、提供服務(wù)、應(yīng)用請求。12.試說明引起進程被撤銷的主要事件。答:引起進程被撤銷的主要事件有:正常結(jié)束、異常結(jié)束〔越界錯誤、保護錯、非法指令、特權(quán)指令錯、運行超時、等待超時、算術(shù)運算錯、I/O故障、外界干預(yù)〔操作員或操作系統(tǒng)干預(yù)、父進程請求、父進程終止。13.在創(chuàng)建一個進程時所要完成的主要工作是什么?答:〔1OS發(fā)現(xiàn)請求創(chuàng)建新進程事件后,調(diào)用進程創(chuàng)建原語Creat<>;〔2申請空白PCB;〔3為新進程分配資源;〔4初始化進程控制塊;〔5將新進程插入就緒隊列.14.在撤銷一個進程時所要完成的主要工作是什么?答:〔1根據(jù)被終止進程標(biāo)識符,從PCB集中檢索出進程PCB,讀出該進程狀態(tài)?!?若被終止進程處于執(zhí)行狀態(tài),立即終止該進程的執(zhí)行,置調(diào)度標(biāo)志真,指示該進程被終止后重新調(diào)度?!?若該進程還有子進程,應(yīng)將所有子孫進程終止,以防它們成為不可控進程?!?將被終止進程擁有的全部資源,歸還給父進程,或歸還給系統(tǒng)?!?將被終止進程PCB從所在隊列或列表中移出,等待其它程序搜集信息。15.試說明引起進程阻塞或被喚醒的主要事件是什么?答:a.請求系統(tǒng)服務(wù);b.啟動某種操作;c.新數(shù)據(jù)尚未到達;d.無新工作可做.16.進程在運行時存在哪兩種形式的制約?并舉例說明之。答:〔1間接相互制約關(guān)系。舉例:有兩進程A和B,如果A提出打印請求,系統(tǒng)已把唯一的一臺打印機分配給了進程B,則進程A只能阻塞;一旦B釋放打印機,A才由阻塞改為就緒。〔2直接相互制約關(guān)系。舉例:有輸入進程A通過單緩沖向進程B提供數(shù)據(jù)。當(dāng)緩沖空時,計算進程因不能獲得所需數(shù)據(jù)而阻塞,當(dāng)進程A把數(shù)據(jù)輸入緩沖區(qū)后,便喚醒進程B;反之,當(dāng)緩沖區(qū)已滿時,進程A因沒有緩沖區(qū)放數(shù)據(jù)而阻塞,進程B將緩沖區(qū)數(shù)據(jù)取走后便喚醒A。17.為什么進程在進入臨界區(qū)之前應(yīng)先執(zhí)行"進入?yún)^(qū)"代碼?而在退出前又要執(zhí)行"退出區(qū)"代碼?答:為了實現(xiàn)多個進程對臨界資源的互斥訪問,必須在臨界區(qū)前面增加一段用于檢查欲訪問的臨界資源是否正被訪問的代碼,如果未被訪問,該進程便可進入臨界區(qū)對資源進行訪問,并設(shè)置正被訪問標(biāo)志,如果正被訪問,則本進程不能進入臨界區(qū),實現(xiàn)這一功能的代碼為"進入?yún)^(qū)"代碼;在退出臨界區(qū)后,必須執(zhí)行"退出區(qū)"代碼,用于恢復(fù)未被訪問標(biāo)志,使其它進程能再訪問此臨界資源。18.同步機構(gòu)應(yīng)遵循哪些基本準則?為什么?答:同步機構(gòu)應(yīng)遵循的基本準則是:空閑讓進、忙則等待、有限等待、讓權(quán)等待原因:為實現(xiàn)進程互斥進入自己的臨界區(qū)。19.試從物理概念上說明記錄型信號量wait和signal。答:wait<S>:當(dāng)S.value>0時,表示目前系統(tǒng)中這類資源還有可用的。執(zhí)行一次wait操作,意味著進程請求一個單位的該類資源,使系統(tǒng)中可供分配的該類資源減少一個,因此描述為S.value:=S.value-1;當(dāng)S.value<0時,表示該類資源已分配完畢,進程應(yīng)調(diào)用block原語自我阻塞,放棄處理機,并插入到信號量鏈表S.L中。signal<S>:執(zhí)行一次signal操作,意味著釋放一個單位的可用資源,使系統(tǒng)中可供分配的該類資源數(shù)增加一個,故執(zhí)行S.value:=S.value+1操作。若加1后S.value≤0,則表示在該信號量鏈表中,仍有等待該資源的進程被阻塞,因此應(yīng)調(diào)用wakeup原語,將S.L鏈表中的第一個等待進程喚醒。20.你認為整型信號量機制是否完全遵循了同步機構(gòu)的四條準則?答:整型信號量機制不完全遵循同步機制的四條準則,它不滿足"讓權(quán)等待"準則。21.如何利用信號量機制來實現(xiàn)多個進程對臨界資源的互斥訪問?并舉例說明之。答:為使多個進程互斥訪問某臨界資源,只需為該資源設(shè)置一互斥信號量mutex,并設(shè)其初值為1,然后將各進程訪問該資源的臨界區(qū)CS置于wait<mutex>和signal<mutex>操作之間即可。這樣,每個欲訪問該臨界資源的進程在進入臨界區(qū)之前,都要先對mutex執(zhí)行wait操作,若該資源此刻未被訪問,本次wait操作必然成功,進程便可進入自己的臨界區(qū),這時若再有其他進程也欲進入自己的臨界區(qū),此時由于對mutex執(zhí)行wait操作定會失敗,因而該進程阻塞,從而保證了該臨界資源能被互斥訪問。當(dāng)訪問臨界資源的進程退出臨界區(qū)后,應(yīng)對mutex執(zhí)行signal操作,釋放該臨界資源。利用信號量實現(xiàn)進程互斥的進程描述如下:Varmutex:semaphore:=1;beginparbeginprocess1:beginrepeatwait<mutex>;criticalsectionsignal<mutex>;remaindersectionuntilfalse;endprocess2:beginrepeatwait<mutex>;criticalsectionsignal<mutex>;remaindersectionuntilfalse;endparend22.試寫出相應(yīng)的程序來描述圖2-17所示的前驅(qū)圖。答:〔aVara,b,c,d,e,f,g,h;semaphore:=0,0,0,0,0,0,0,0;beginparbeginbeginS1;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;parendend〔bVara,b,c,d,e,f,g,h,i,j;semaphore:=0,0,0,0,0,0,0,0,0,0;beginparbeginbeginS1;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;parendend23.在生產(chǎn)者消費者問題中,如果缺少了signal<full>或signal<empty>,對執(zhí)行結(jié)果有何影響?答:如果缺少signal<full>,那么表明從第一個生產(chǎn)者進程開始就沒有改變信號量full值,即使緩沖池產(chǎn)品已滿,但full值還是0,這樣消費者進程執(zhí)行wait<full>時認為緩沖池是空而取不到產(chǎn)品,消費者進程一直處于等待狀態(tài)。如果缺少signal<empty>,在生產(chǎn)者進程向n個緩沖區(qū)投滿產(chǎn)品后消費者進程才開始從中取產(chǎn)品,這時empty=0,full=n,那么每當(dāng)消費者進程取走一個產(chǎn)品empty值并不改變,直到緩沖池取空了,empty值也是0,即使目前緩沖池有n個空緩沖區(qū),生產(chǎn)者進程要想再往緩沖池中投放產(chǎn)品也會因為申請不到空緩沖區(qū)被阻塞。24.在生產(chǎn)消費者問題中,如果將兩個wait操作即wait<full>和wait<mutex>互換位置,或者將signal<mutex>與signal〔full互換位置,結(jié)果如何?答:將wait<full>和wait<mutex>互換位置后,可能引起死鎖??紤]系統(tǒng)中緩沖區(qū)全滿時,若一生產(chǎn)者進程先執(zhí)行了wait<mutex>操作并獲得成功,則當(dāng)再執(zhí)行wait<empty>操作時,它將因失敗而進入阻塞狀態(tài),它期待消費者進程執(zhí)行signal<empty>來喚醒自己,在此之前,它不可能執(zhí)行signal<mutex>操作,從而使試圖通過執(zhí)行wait<mutex>操作而進入自己的臨界區(qū)的其他生產(chǎn)者和所有消費者進程全部進入阻塞狀態(tài),這樣容易引起系統(tǒng)死鎖。若signal<mutex>和signal<full>互換位置后只是影響進程對臨界資源的釋放次序,而不會引起系統(tǒng)死鎖,因此可以互換位置。25.我們在為某一臨界資源設(shè)置一把鎖W,當(dāng)W=1時表示關(guān)鎖,當(dāng)W=0時表示鎖已打開。試寫出開鎖和關(guān)鎖的原語,并利用他們實現(xiàn)互斥。答:整型信號量:lock<W>:whileW=1dono-opW:=1;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;beginrepeatlock<W>;criticalsectionunlock<W>;remaindersectionuntilfalse;end26.試修改下面生產(chǎn)者-消費者問題解法中的錯誤:答:producer:beginrepeat…produceraniteminnextp;wait<mutex>;wait<full>;/*應(yīng)為wait<empty>,而且還應(yīng)該在wait<mutex>的前面*/buffer<in>:=nextp;/*緩沖池數(shù)組游標(biāo)應(yīng)前移:in:=<in+1>modn;*/signal<mutex>;/*signal<full>;*/untilfalse;endconsumer:beginrepeatwait<mutex>;wait<empty>;/*應(yīng)為wait<full>,而且還應(yīng)該在wait<mutex>的前面*/nextc:=buffer<out>;out:=out+1;/*考慮循環(huán),應(yīng)改為:out:=<out+1>modn;*/signal<mutex>;/*signal<empty>;*/consumeriteminnextc;untilfalse;end27.試利用記錄型信號量寫出一個不會出現(xiàn)死鎖的哲學(xué)家進餐問題的算法.答:Varchopstick:array[0,…,4]ofsemaphore;所有信號量均被初始化為1,第i位哲學(xué)家的活動可描述為:RepeatWait<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ù)進行計算.試寫出利用信號量機制實現(xiàn)兩者共享單緩沖的同步算法。答:a.Varmutex,empty,full:semaphore:=1,1,0;gather:beginrepeat……gatherdatainnextp;wait<empty>;wait<mutex>;buffer:=nextp;signal<mutex>;signal<full>;untilfalse;endcompute:beginrepeat……wait<full>;wait<mutex>;nextc:=buffer;signal<mutex>;signal<empty>;computedatainnextc;untilfalse;endb.Varempty,full:semaphore:=1,0;gather:beginrepeat……gatherdatainnextp;wait<empty>;buffer:=nextp;signal<full>;untilfalse;endcompute:beginrepeat……wait<full>;nextc:=buffer;signal<empty>;computedatainnextc;untilfalse;end29.畫圖說明管程由哪幾部分組成,為什么要引入條件變量?答:管程由四部分組成:①管程的名稱;②局部于管程內(nèi)部的共享數(shù)據(jù)結(jié)構(gòu)說明;③對該數(shù)據(jù)結(jié)構(gòu)進行操作的一組過程;④對局部于管程內(nèi)部的共享數(shù)據(jù)設(shè)置初始值的語句;當(dāng)一個進程調(diào)用了管程,在管程中時被阻塞或掛起,直到阻塞或掛起的原因解除,而在此期間,如果該進程不釋放管程,則其它進程無法進入管程,被迫長時間地等待。為了解決這個問題,引入了條件變量condition。30.如何利用管程來解決生產(chǎn)者與消費者問題?答:首先建立一個管程,命名為ProclucerConsumer,包括兩個過程:〔1Put〔item過程。生產(chǎn)者利用該過程將自己生產(chǎn)的產(chǎn)品放到緩沖池,用整型變量count表示在緩沖池中已有的產(chǎn)品數(shù)目,當(dāng)count≥n時,表示緩沖池已滿,生產(chǎn)者須等待?!?get〔item過程。消費者利用該過程從緩沖池中取出一個產(chǎn)品,當(dāng)count≤0時,表示緩沖池中已無可取的產(chǎn)品,消費者應(yīng)等待。PC管程可描述如下:typeproducer-consumer=monitorVarin,out,count:integer;buffer:array[0,…,n-1]ofitem;notfull,notempty:condition;procedureentrydot<item>beginifcount>=nthennotfull.wait;buffer<in>:=nextp;in:=<in+1>modn;count:=count+1;ifnotempty.queuethennotempty.signal;endprocedureentryget<item>beginifcount<=0thennotfull.wait;nextc:=buffer<out>;out:=<out+1>modn;count:=count-1;ifnotfull.quenethennotfull.signal;endbeginin:=out:=0;count:=0end在利用管程解決生產(chǎn)者一消費者問題時,其中的生產(chǎn)者和消費者可描述為:producer:beginpepeatproduceanineminnestpPC.put<item>;untilfalse;endconsumer:beginrepeatPC.get<item>;consumetheiteminenxtc;untilfalse;end31.什么是AND信號量?試利用AND信號量寫出生產(chǎn)者一消費者問題的解法。答:為解決并行帶來的死鎖問題,在wait操作中引入AND條件,其基本思想是將進程在整個運行過程中所需要的所有臨界資源,一次性地全部分配給進程,用完后一次性釋放。解決生產(chǎn)者-消費者問題可描述如下:varmutex,empty,full:semaphore:=1,n,0;buffer:array[0,...,n-1]ofitem;in,out:integer:=0,0;beginparbeginproducer:beginrepeat…produceaniteminnextp;…wait<empty>;wait<s1,s2,s3,...,sn>;//s1,s2,...,sn為執(zhí)行生產(chǎn)者進程除empty外其余的條件wait<mutex>;buffer<in>:=nextp;in:=<in+1>modn;signal<mutex>;signal<full>;signal<s1,s2,s3,...,sn>;untilfalse;endconsumer:beginrepeatwait<full>;wait<k1,k2,k3,...,kn>;//k1,k2,...,kn為執(zhí)行消費者進程除full外其余的條件wait<mutex>;nextc:=buffer<out>;out:=<out+1>modn;signal<mutex>;signal<empty>;signal<k1,k2,k3,...,kn>;consumetheiteminnextc;untilfalse;endparendend32.什么是信號量集?試利用信號量集寫出讀者一寫者問題的解法。答:對AND信號量加以擴充,形成的信號量集合的讀寫機制。解法:VarRNinteger;L,mx:semaphore:=RN,1;beginparbeginreader:beginrepeatSwait<L,1,1>;Swait<mx,1,1>;…performreadoperation;…Ssignal<L,1>;untilfalseendwriter:beginrepeatSwait<mx,1,1;L,RN,0>;performwriteoperation;Ssignal<mx,1>;untilfalseendparendend33.試比較進程間的低級與高級通信工具。答:用戶用低級通信工具實現(xiàn)進程通信很不方便,效率低,通信對用戶不透明,所有操作都必須由程序員來實現(xiàn),而高級通信工具彌補了這些缺陷,用戶直接利用操作系統(tǒng)提供的一組通信命令,高效地傳送大量的數(shù)據(jù)。34.當(dāng)前有哪幾種高級通信機制?答:共享存儲器系統(tǒng)、消息傳遞系統(tǒng)以及管道通信系統(tǒng)。35.消息隊列通信機制有哪幾方面的功能?答:〔1構(gòu)成消息〔2發(fā)送消息〔3接收梢息〔4互斥與同步。36.為什么要在OS中引入線程?答:在操作系統(tǒng)中引入線程,則是為了減少程序在并發(fā)執(zhí)行時所付出的時空開銷,使OS具有更好的并發(fā)性,提高CPU的利用率。進程是分配資源的基本單位,而線程則是系統(tǒng)調(diào)度的基本單位。37.試說明線程具有哪些屬性?答:〔1>輕型實體〔2獨立調(diào)度和分派的基本單位〔3可并發(fā)執(zhí)行〔4共享進程資源。38.試從調(diào)度性,并發(fā)性,擁有資源及系統(tǒng)開銷方面對進程和線程進行比較。答:〔1調(diào)度性。線程在OS中作為調(diào)度和分派的基本單位,進程只作為資源擁有的基本單位?!?并發(fā)性。進程可以并發(fā)執(zhí)行,一個進程的多個線程也可并發(fā)執(zhí)行?!?擁有資源。進程始終是擁有資源的基本單位,線程只擁有運行時必不可少的資源,本身基本不擁有系統(tǒng)資源,但可以訪問隸屬進程的資源?!?系統(tǒng)開銷。操作系統(tǒng)在創(chuàng)建、撤消和切換進程時付出的開銷顯著大于線程。39.為了在多線程OS中實現(xiàn)進程之間的同步與通信,通常提供了哪幾種同步機制?答:同步功能可以控制程序流并訪問共享數(shù)據(jù),從而并發(fā)執(zhí)行多個線程。共有四種同步模型:互斥鎖、讀寫鎖、條件變量和信號。40.用于實現(xiàn)線程同步的私用信號量和公用信號量之間有何差別?答:〔1私用信號量。當(dāng)某線程需利用信號量實現(xiàn)同一進程中各線程之間的同步時,可調(diào)用創(chuàng)建信號量的命令來創(chuàng)建一個私用信號量,其數(shù)據(jù)結(jié)構(gòu)存放在應(yīng)用程序的地址空間中。〔2公用信號量。公用信號量是為實現(xiàn)不同進程間或不同進程中各線程之間的同步而設(shè)置的。其數(shù)據(jù)結(jié)構(gòu)是存放在受保護的系統(tǒng)存儲區(qū)中,由OS為它分配空間并進行管理。41.何謂用戶級線程和內(nèi)核支持線程?答:〔1用戶級線程:僅存在于用戶空間中的線程,無須內(nèi)核支持。這種線程的創(chuàng)建、撤銷、線程間的同步與通信等功能,都無需利用系統(tǒng)調(diào)用實現(xiàn)。用戶級線程的切換通常發(fā)生在一個應(yīng)用進程的諸多線程之間,同樣無需內(nèi)核支持?!?內(nèi)核支持線程:在內(nèi)核支持下運行的線程。無論是用戶進程中的線程,還是系統(tǒng)線程中的線程,其創(chuàng)建、撤銷和切換等都是依靠內(nèi)核,在內(nèi)核空間中實現(xiàn)的。在內(nèi)核空間里還為每個內(nèi)核支持線程設(shè)置了線程控制塊,內(nèi)核根據(jù)該控制塊感知某線程的存在并實施控制。42.試說明用戶級線程的實現(xiàn)方法。答:用戶級線程是在用戶空間中的實現(xiàn)的,運行在"運行時系統(tǒng)"與"內(nèi)核控制線程"的中間系統(tǒng)上。運行時系統(tǒng)用于管理和控制線程的函數(shù)的集合。內(nèi)核控制線程或輕型進程LWP可通過系統(tǒng)調(diào)用獲得內(nèi)核提供服務(wù),利用LWP進程作為中間系統(tǒng)。43.試說明內(nèi)核支持線程的實現(xiàn)方法。答:系統(tǒng)在創(chuàng)建新進程時,分配一個任務(wù)數(shù)據(jù)區(qū)PTDA,其中包括若干個線程控制塊TCB空間。創(chuàng)建一個線程分配一個TCB,有關(guān)信息寫入TCB,為之分配必要的資源。當(dāng)PTDA中的TCB用完,而進程又有新線程時,只要所創(chuàng)建的線程數(shù)目未超過系統(tǒng)允許值,系統(tǒng)可在為之分配新的TCB;在撤銷一個線程時,也應(yīng)回收線程的所有資源和TCB。第三章1.高級調(diào)度與低級調(diào)度的主要任務(wù)是什么?為什么要引入中級調(diào)度?答:高級調(diào)度的主要任務(wù)是根據(jù)某種算法,把外存上處于后備隊列中的那些作業(yè)調(diào)入內(nèi)存。低級調(diào)度是保存處理機的現(xiàn)場信息,按某種算法先取進程,再把處理器分配給進程。引入中級調(diào)度的主要目的是為了提高內(nèi)存利用率和系統(tǒng)吞吐量。使那些暫時不能運行的進程不再占用內(nèi)存資源,將它們調(diào)至外存等待,把進程狀態(tài)改為就緒駐外存狀態(tài)或掛起狀態(tài)。2.何謂作業(yè)、作業(yè)步和作業(yè)流?答:作業(yè)包含通常的程序和數(shù)據(jù),還配有作業(yè)說明書。系統(tǒng)根據(jù)該說明書對程序的運行進行控制。批處理系統(tǒng)中是以作業(yè)為基本單位從外存調(diào)入內(nèi)存。作業(yè)步是指每個作業(yè)運行期間都必須經(jīng)過若干個相對獨立相互關(guān)聯(lián)的順序加工的步驟。作業(yè)流是指若干個作業(yè)進入系統(tǒng)后依次存放在外存上形成的輸入作業(yè)流;在操作系統(tǒng)的控制下,逐個作業(yè)進程處理,于是形成了處理作業(yè)流。3.在什么情況下需要使用作業(yè)控制塊JCB?其中包含了哪些內(nèi)容?答:每當(dāng)作業(yè)進入系統(tǒng)時,系統(tǒng)便為每個作業(yè)建立一個作業(yè)控制塊JCB,根據(jù)作業(yè)類型將它插入到相應(yīng)的后備隊列中。JCB包含的內(nèi)容通常有:1>作業(yè)標(biāo)識2>用戶名稱3>用戶賬戶4>作業(yè)類型〔CPU繁忙型、I/O芳名型、批量型、終端型5>作業(yè)狀態(tài)6>調(diào)度信息〔優(yōu)先級、作業(yè)已運行7>資源要求8>進入系統(tǒng)時間9>開始處理時間10>作業(yè)完成時間11>作業(yè)退出時間12>資源使用情況等4.在作業(yè)調(diào)度中應(yīng)如何確定接納多少個作業(yè)和接納哪些作業(yè)?答:作業(yè)調(diào)度每次接納進入內(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保存處理機的現(xiàn)場信息〔2按某種算法選取進程〔3把處理機分配給進程。6.在搶占調(diào)度方式中,搶占的原則是什么?答:搶占的原則有:時間片原則、優(yōu)先權(quán)原則、短作業(yè)優(yōu)先權(quán)原則等。7.在選擇調(diào)度方式和調(diào)度算法時,應(yīng)遵循的準則是什么?答:〔1面向用戶的準則:周轉(zhuǎn)時間短、響應(yīng)時間快、截止時間的保證、優(yōu)先權(quán)準則。〔2面向系統(tǒng)的準則:系統(tǒng)吞吐量高、處理機利用率好、各類資源的平衡利用。8.在批處理系統(tǒng)、分時系統(tǒng)和實時系統(tǒng)中,各采用哪幾種進程〔作業(yè)調(diào)度算法?答:批處理系統(tǒng)的調(diào)度算法:短作業(yè)優(yōu)先、優(yōu)先權(quán)、高響應(yīng)比優(yōu)先、多級反饋隊列調(diào)度算法。分時系統(tǒng)的調(diào)度算法:時間片輪轉(zhuǎn)法。實時系統(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)建進程時確定且在進程的整個運行期間保持不變的優(yōu)先級。動態(tài)優(yōu)先級是指在創(chuàng)建進程時賦予的優(yōu)先權(quán),可以隨進程推進或隨其等待時間增加而改變的優(yōu)先級,可以獲得更好的調(diào)度性能。確定進程優(yōu)先級的依據(jù):進程類型、進程對資源的需求和用戶要求。10.試比較FCFS和SPF兩種進程調(diào)度算法。答:相同點:兩種調(diào)度算法都可以用于作業(yè)調(diào)度和進程調(diào)度。不同點:FCFS調(diào)度算法每次都從后備隊列中選擇一個或多個最先進入該隊列的作業(yè),將它們調(diào)入內(nèi)存、分配資源、創(chuàng)建進程、插入到就緒隊列。該算法有利于長作業(yè)/進程,不利于短作業(yè)/進程。SPF算法每次調(diào)度都從后備隊列中選擇一個或若干個估計運行時間最短的作業(yè),調(diào)入內(nèi)存中運行。該算法有利于短作業(yè)/進程,不利于長作業(yè)/進程。11.在時間片輪轉(zhuǎn)法中,應(yīng)如何確定時間片的大???答:時間片應(yīng)略大于一次典型的交互需要的時間。一般應(yīng)考慮三個因素:系統(tǒng)對相應(yīng)時間的要求、就緒隊列中進程的數(shù)目和系統(tǒng)的處理能力。12.通過一個例子來說明通常的優(yōu)先級調(diào)度算法不能適用于實時系統(tǒng)?答:實時系統(tǒng)的調(diào)度算法很多,主要是基于任務(wù)的開始截止時間和任務(wù)緊急/松弛程度的任務(wù)優(yōu)先級調(diào)度算法,通常的優(yōu)先級調(diào)度算法不能滿足實時系統(tǒng)的調(diào)度實時性要求而不適用。13.為什么說多級反饋隊列調(diào)度算法能較好地滿足各方面用戶的需求?答:〔1終端型作業(yè)用戶提交的作業(yè)大多屬于較小的交互型作業(yè),系統(tǒng)只要使這些作業(yè)在第一隊列規(guī)定的時間片內(nèi)完成,終端作業(yè)用戶就會感到滿足?!?短批處理作業(yè)用戶,開始時像終端型作業(yè)一樣,如果在第一隊列中執(zhí)行一個時間片段即可完成,便可獲得與終端作業(yè)一樣的響應(yīng)時間。對于稍長作業(yè),通常只需在第二和第三隊列各執(zhí)行一時間片即可完成,其周轉(zhuǎn)時間仍然較短?!?長批處理作業(yè),它將依次在第1,2,…,n個隊列中運行,然后再按輪轉(zhuǎn)方式運行,用戶不必擔(dān)心其作業(yè)長期得不到處理。所以,多級反饋隊列調(diào)度算法能滿足多用戶需求。14.為什么在實時系統(tǒng)中,要求系統(tǒng)〔尤其是CPU具有較強的處理能力?答:實時系統(tǒng)中通常有著多個實時任務(wù)。若處理機的處理能力不夠強,有可能因為處理機忙不過來而使某些實時任務(wù)得不到及時處理,導(dǎo)致發(fā)生難以預(yù)料的后果。15.按照調(diào)度方式可將實時調(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)中保持一個實時任務(wù)就緒隊列,該隊列按各任務(wù)截止時間的先后排序。舉例:非搶占式調(diào)度方式用于非周期實時任務(wù)。圖3-9是將該算法用于非搶占調(diào)度方式之例。該例中具有四個非周期任務(wù),它們先后到達。系統(tǒng)首先調(diào)度任務(wù)1執(zhí)行,在任務(wù)1執(zhí)行期間,任務(wù)2、3又先后到達。由于任務(wù)3的開始截止時間早于任務(wù)2,故系統(tǒng)在任務(wù)1后將調(diào)度任務(wù)3執(zhí)行。在此期間又到達作業(yè)4,其開始截止時間仍是早于任務(wù)2的,故在任務(wù)3執(zhí)行完后,系統(tǒng)又調(diào)度任務(wù)4執(zhí)行,最后才調(diào)度任務(wù)2執(zhí)行。圖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時必須完成,而它本身所需的運行時間就有100ms,因此,調(diào)度程序必須在100ms之前調(diào)度執(zhí)行,該任務(wù)的緊急程度<松弛程度>為100ms。又如,另一任務(wù)在400ms時必須完成,它本身需要運行150ms,則其松弛程度為250ms。18.何謂死鎖?產(chǎn)生死鎖的原因和必要條件是什么?答:死鎖是指多個進程在運行過程中因爭奪資源而造成的一種僵局,當(dāng)進程處于這種僵持狀態(tài)時,若無外力作用,它們都將無法再向前推進。產(chǎn)生死鎖的原因為競爭資源和進程間推進順序非法。其必要條件是:互斥條件、請求和保持條件、不剝奪條件、環(huán)路等待條件。19.在解決死鎖問題的幾個方法中,哪種方法最易于實現(xiàn)?哪種方法使資源利用率最高?答:解決死鎖的四種方法即預(yù)防、避免、檢測和解除死鎖中,預(yù)防死鎖最容易實現(xiàn);避免死鎖使資源的利用率最高。20.請詳細說明可通過哪些途徑預(yù)防死鎖。答:〔1擯棄"請求和保持"條件,就是如果系統(tǒng)有足夠資源,便一次性把進程需要的所有資源分配給它;〔2擯棄"不剝奪"條件,就是已經(jīng)擁有資源的進程,當(dāng)它提出新資源請求而不能立即滿足時,必須釋放它已保持的所有資源,待以后需要時再重新申請;〔3擯棄"環(huán)路等待"條件,就是將所有資源按類型排序標(biāo)號,所有進程對資源的請求必須嚴格按序號遞增的次序提出。21.在銀行家算法的例子中,如果P0發(fā)出請求向量由Request<0,2,0>改為Request<0,1,0>,問系統(tǒng)可否將資源分配給它?<此答案有點問題,需重新考慮>答:〔1可以。銀行家算法各種資源數(shù)量分別為10、5、7,在T0時刻的資源分配如圖所示:〔2具體分析如下:①Requst0<0,1,0><=Need0<7,4,3>;②Requst0<0,1,0><=Available<2,3,0>;系統(tǒng)先假定可為P0分配資源,并修改Available0,Allocation0和Need0向量,由此形成的資源變化情況如下圖所示:〔3P0請求資源:P0發(fā)出請求向量Requst0<0,1,0>,系統(tǒng)按銀行家算法進行檢查:①Requst0<0,1,0><=Need0<7,4,3>;②Requst0<0,1,0><=Available<2,3,0>;③系統(tǒng)暫時先假定可為P0分配資源,并修改______________有關(guān)數(shù)據(jù),如下圖所示綜上所述系統(tǒng)可以將資源分配給它。22.銀行家算法中出現(xiàn)以下資源分配,試問〔1該狀態(tài)是否安全?〔2若進程P2提出Request<1,2,2,2>后,系統(tǒng)能否將資源分配給它?試問:〔1該狀態(tài)是否安全?〔2若進程P2提出請求Request〔1,2,2,2后,系統(tǒng)能否將資源分配給它?<參考答案有錯>答:〔1安全,因為存在安全序列{P0,P3,P4,P1,P2}〔2系統(tǒng)能分配資源,分析如下。①Request<1,2,2,2><=Need2<2,3,5,6>;②Request<1,2,2,2><=Available2<1,3,5,4>改成Available2<1,6,2,2>;③系統(tǒng)先假定可為P2分配資源,并修改Available2,Allocation2和Need2向量,由此形成的資源變化情況如下圖所示:④再利用安全性算法檢查此時系統(tǒng)是否安全。如下圖由此進行的安全性檢查得知,可以找到一個安全序列{P2,P0,P1,P3,P4}。第四章1.為什么要配置層次式存儲器?答:設(shè)置多個存儲器可以使存儲器兩端的硬件能并行工作;采用多級存儲系統(tǒng),特別是Cache技術(shù),是減輕存儲器帶寬對系統(tǒng)性能影響的最佳結(jié)構(gòu)方案;在微處理機內(nèi)部設(shè)置各種緩沖存儲器,減輕對存儲器存取的壓力。增加CPU中寄存器數(shù)量大大緩解對存儲器壓力。2.可采用哪幾種方式將程序裝入內(nèi)存?它們分別適用于何種場合?答:〔1絕對裝入方式,只適用于單道程序環(huán)境?!?可重定位裝入方式,適用于多道程序環(huán)境?!?動態(tài)運行時裝入方式,用于多道程序環(huán)境;不允許程序運行時在內(nèi)存中移位置。3.何謂靜態(tài)鏈接?何謂裝入時動態(tài)鏈接和運行時的動態(tài)鏈接?P120答:靜態(tài)鏈接是指在程序運行前,先將各目標(biāo)模塊及它們所需的庫函數(shù),鏈接成一個完整的裝配模塊,以后不再拆開的鏈接方式。裝入時動態(tài)鏈接是指將用戶源程序編譯后得到的一組目標(biāo)模塊,在裝入內(nèi)存時采用邊裝入邊鏈接的鏈接方式。運行時動態(tài)鏈接是指對某些目標(biāo)模塊的鏈接,是在程序執(zhí)行中需要該目標(biāo)模塊時,才對它進行的鏈接。4.在進行程序鏈接時,應(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)重定位?如何實現(xiàn)?答:在程序執(zhí)行過程中,每當(dāng)訪問指令或數(shù)據(jù)時,將要訪問的程序或數(shù)據(jù)的邏輯地址轉(zhuǎn)換成物理地址,引入了動態(tài)重定位;具體實現(xiàn)方法是在系統(tǒng)中增加一個重定位寄存器,用來裝入程序在內(nèi)存中的起始地址,程序執(zhí)行時,真正訪問的內(nèi)存地址是相對地址與重定位寄存器中的地址相加之和,從而實現(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ū)大小修改為兩者之和?!?回收區(qū)后鄰空閑區(qū)。將兩區(qū)合并,改后鄰空閑區(qū)始址為回收區(qū)始址,大小為兩者之和?!?回收區(qū)前后均鄰空閑區(qū)。將三個分區(qū)合并,修改前鄰空閑區(qū)大小為三者之和?!?回收區(qū)前后均不鄰空閑區(qū)。為回收區(qū)設(shè)置空閑區(qū)表項,填入回收區(qū)始址和大小并插入空閑區(qū)隊列。8.令表示大小為、地址為x的塊的伙伴系統(tǒng)地址,試寫出的通用表達式。答:當(dāng)時,;當(dāng)時,9.分區(qū)存儲管理中常用那些分配策略?比較它們的優(yōu)缺點。答:分區(qū)存儲管理中的常用分配策略:首次適應(yīng)算法、循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法、最壞適應(yīng)算法。首次適應(yīng)算法優(yōu)缺點:保留了高址部分的大空閑區(qū),有利于后來的大型作業(yè)分配;低址部分不斷被劃分,留下許多難以利用的小空閑區(qū),每次查找都從低址開始增加了系統(tǒng)開銷。循環(huán)首次適應(yīng)算法優(yōu)缺點:內(nèi)存空閑分區(qū)分布均勻,減少了查找系統(tǒng)開銷;缺乏大空閑分區(qū),導(dǎo)致不能裝入大型作業(yè)。最佳適應(yīng)算法優(yōu)缺點:每次分配給文件的都是最適合該文件大小的分區(qū),內(nèi)存中留下許多難以利用的小空閑區(qū)。最壞適應(yīng)算法優(yōu)缺點:剩下空閑區(qū)不太小,產(chǎn)生碎片幾率小,對中小型文件分配分區(qū)操作有利;存儲器中缺乏大空閑區(qū),對大型文件分區(qū)分配不利。10.在系統(tǒng)中引入對換后可帶來哪些好處?答:交換技術(shù)將暫不需要的作業(yè)移到外存,讓出內(nèi)存空間以調(diào)入其它作業(yè),交換到外存的作業(yè)也可以被再次調(diào)入。目的是解決內(nèi)存緊張問題,帶來的好處是進一步提高了內(nèi)存利用率和系統(tǒng)吞吐量。11.為實現(xiàn)對換,系統(tǒng)應(yīng)具備哪幾方面的功能?答:系統(tǒng)應(yīng)具備三方面功能:對換空間管理,進程換出,進程換入。12.在以進程為單位進行對換時,每次是否都將整個進程換出?為什么?答:在以進程為單位進行對換時,并非每次都將整個進程換出。這是因為:<1>從結(jié)構(gòu)上講,進程由程序段、數(shù)據(jù)段和進程控制塊組成的,其中進程控制塊總有部分或全部常駐內(nèi)存,不被換出。<2>程序段和數(shù)據(jù)段可能正被若干進程共享,此時它們也不能換出。13.為實現(xiàn)分頁存儲管理,需要哪些硬件的支持?答:動態(tài)重定位技術(shù)、虛擬存儲技術(shù)、多道程序設(shè)計技術(shù)。14.較詳細的說明引入分段存儲管理是為了滿足用戶哪幾方面的需要。答:1>方便編程。用戶通常把自己的作業(yè)按照邏輯關(guān)系劃分為若干段,每段都從0編址,并有自己名字和長度。因此,希望要訪問的邏輯地址是由段名和段內(nèi)偏移量決定。2>信息共享。在實現(xiàn)對程序和數(shù)據(jù)的共享時,是以信息邏輯單位為基礎(chǔ)。分頁系統(tǒng)中的頁是存放信息的物理單位,無完整意義,不便于共享;段是信息的邏輯單位。為了實現(xiàn)段的共享,希望存儲管理能與用戶程序分段的組織方式相適應(yīng)。3>信息保護。對信息的邏輯單位進行保護,分段能更有效方便地實現(xiàn)信息保護功能。4>動態(tài)增長。在實際應(yīng)用中,有些段特別是數(shù)據(jù)段,在使用過程中會不斷增長,事先又無法確切知道增長多少。分段存儲管理方式能較好解決這個問題。5>動態(tài)鏈接。運行時先將主程序?qū)?yīng)的目標(biāo)程序裝入內(nèi)存并啟動運行,運行過程中又需要調(diào)用某段時,才將該段調(diào)入內(nèi)存鏈接。所以動態(tài)鏈接也要求以段作為管理單位。15.在具有快表的段頁式存儲管理方式中,如何實現(xiàn)地址變換?答:在CPU給出有效地址后,由地址變換機構(gòu)自動將頁號P送入高速緩沖寄存器,并將此頁號與高速緩存中的所有頁號比較,若找到匹配頁號,表示要訪問的頁表項在快表中??芍苯訌目毂碜x出該頁對應(yīng)物理塊號,送到物理地址寄存器中。如快表中沒有對應(yīng)頁表項,則再訪問內(nèi)存頁表,找到后,把從頁表項中讀出物理塊號送地址寄存器;同時修改快表,將此頁表項存入快表。但若寄存器已滿,則OS必須找到合適的頁表項換出。16.為什么說為什么說分段系統(tǒng)比分頁系統(tǒng)更易于實現(xiàn)信息的共享和保護?答:分頁系統(tǒng)的每個頁面是分散存儲的,為了實現(xiàn)信息共享和保護,頁面之間需要一一對應(yīng),為此需要建立大量的頁表項;而分段系統(tǒng)的每個段都從0編址,并采用一段連續(xù)的地址空間,在實現(xiàn)共享和保護時,只需為要共享和保護的程序設(shè)置一個段表項,將其中的基址與內(nèi)存地址一一對應(yīng)就能夠?qū)崿F(xiàn)。17.分段和分頁存儲管理有何區(qū)別?答:〔1頁是信息的物理單位,分頁是為了實現(xiàn)離散分配方式,以消減內(nèi)存的外部零頭,提高內(nèi)存利用率。段則是信息的邏輯單位,它含有一組相對完整的信息。〔2頁的大小固定且由系統(tǒng)決定,由系統(tǒng)把邏輯地址劃分為頁號和頁內(nèi)地址兩部分,是由機械硬件實現(xiàn)的,因而在系統(tǒng)中只能有一種大小的的頁面;而段的長度卻不固定,決定于用戶所編寫的程序,通常由編譯程序在對原程序進行編譯時,根據(jù)信息的性質(zhì)來劃分?!?分頁的作業(yè)地址空間是一維的,而分段作業(yè)地址空間則是二維的。18.試全面比較連續(xù)分配和離散分配方式.答:〔1連續(xù)分配是指為一個用戶程序分配一個連續(xù)的地址空間,包括單一和分區(qū)兩種分配方式。單一方式將內(nèi)存分為系統(tǒng)區(qū)和用戶區(qū),最簡單,只用于單用戶單任務(wù)操作系統(tǒng);分區(qū)方式分固定和動態(tài)分區(qū)?!?離散分配方式分為分頁、分段和段頁式存儲管理。分頁式存儲管理旨在提高內(nèi)存利用率,分段式存儲管理旨在滿足用戶<程序員>的需要,段頁式存儲管理則將兩者結(jié)合起來,具有分段系統(tǒng)便于實現(xiàn)、可共享、易于保護和動態(tài)鏈接等優(yōu)點,又能像分頁系統(tǒng)很好解決外部碎片及為各段可離散分配內(nèi)存等問題,是比較有效的存儲管理方式;19.虛擬存儲器有哪些特征?其中最本質(zhì)的特征是什么?答:虛擬存儲器有多次性、對換性、虛擬性三大特征。最本質(zhì)的特征是虛擬性。20.實現(xiàn)虛擬存儲器需要哪些硬件支持?答:〔1請求分頁〔段的頁〔段表機制〔2缺頁〔段中斷機構(gòu)〔3地址變換機構(gòu)21.實現(xiàn)虛擬存儲器需要哪幾個關(guān)鍵技術(shù)?答:〔1在分頁請求系統(tǒng)中是在分頁的基礎(chǔ)上,增加了請求調(diào)頁功能和頁面置換功能所形成的頁式虛擬存儲系統(tǒng)。允許只裝入少數(shù)頁面的程序〔及數(shù)據(jù),便啟動運行?!?在請求分段系統(tǒng)中是在分段系統(tǒng)的基礎(chǔ)上,增加了請求調(diào)段及分段置換功能后形成的段式虛擬存儲系統(tǒng)。允許只裝入少數(shù)段〔而非所有段的用戶程序和數(shù)據(jù),即可啟動運行。22.在請求分頁系統(tǒng)中,頁表應(yīng)包括哪些數(shù)據(jù)項?每項的作用是什么?答:頁表應(yīng)包括:頁號、物理塊號、狀態(tài)位P、訪問字段A、修改位M和外存地址。其中狀態(tài)位P指示該頁是否調(diào)入內(nèi)存,供程序訪問時參考;訪問字段A用于記錄本頁在一段時間內(nèi)被訪問的次數(shù),或最近已有多長時間未被訪問,提供給置換算法選擇換出頁面時參考;修改位M表示該頁在調(diào)入內(nèi)存后是否被修改過;外存地址用于指出該頁在外存上的地址,通常是物理塊號,供調(diào)入該頁時使用。23.在請求分頁系統(tǒng)中,應(yīng)從何處將所需頁面調(diào)入內(nèi)存?答:請求分頁系統(tǒng)中的缺頁從何處調(diào)入內(nèi)存分三種情況:〔1系統(tǒng)擁有足夠?qū)Q區(qū)空間時,可以全部從對換區(qū)調(diào)入所需頁面,提高調(diào)頁速度。在進程運行前將與該進程有關(guān)的文件從文件區(qū)拷貝到對換區(qū)。〔2系統(tǒng)缺少足夠?qū)Q區(qū)空間時,不被修改的文件直接從文件區(qū)調(diào)入;當(dāng)換出這些頁面時,未被修改的不必換出,再調(diào)入時,仍從文件區(qū)直接調(diào)入。對于可能修改的,在換出時便調(diào)到對換區(qū),以后需要時再從對換區(qū)調(diào)入。〔3UNIX方式。未運行頁面從文件區(qū)調(diào)入。曾經(jīng)運行過但被換出頁面,下次從對換區(qū)調(diào)入。UNIX系統(tǒng)允許頁面共享,某進程請求的頁面有可能已調(diào)入內(nèi)存,直接使用不再調(diào)入。24.在請求分頁系統(tǒng)中,常采用哪幾種頁面置換算法?答:采用的頁面置換算法有:最佳置換算法和先進先出置換算法,最近最久未使用〔LRU置換算法,Clock置換算法,最少使用置換算法,頁面緩沖算法等。25.在請求分頁系統(tǒng)中,通常采用哪種頁面分配方式?為什么?答:固定分配方式是基于進程的類型<交互型>或根據(jù)程序員、系統(tǒng)管理員的建議,為每個進程分配固定頁數(shù)的內(nèi)存空間,整個運行期間不再改變;采用可變分配方式有全局置換和局部置換兩種,前者易于實現(xiàn),后者效率高。26.在一個請求分頁系統(tǒng)中,采用LRU頁面置換算法時,假如一個作業(yè)的頁面走向為4,3,2,1,4,3,5,4,3,2,1,5,當(dāng)分配給該作業(yè)的物理塊數(shù)M分別為3和4時,試計算訪問過程中所發(fā)生的缺頁次數(shù)和缺頁率?比較所得結(jié)果?<參考答案有錯>答:當(dāng)分配給該作業(yè)的物理塊數(shù)M為3時,缺頁7次,缺頁率:7/12=0.583;當(dāng)分配給該作業(yè)的物理塊數(shù)M為4時,缺頁4次,缺頁率:4/12=0.333.以上解答出錯。正確解法見下面:答:當(dāng)分配給該作業(yè)的物理塊數(shù)M為3時,缺頁9次,缺頁率:9/12=3/4;當(dāng)分配給該作業(yè)的物理塊數(shù)M為4時,缺頁10次,缺頁率:10/12=5/6.27.實現(xiàn)LRU算法所需的硬件支持是什么?答:需要寄存器和棧等硬件支持。寄存器用于記錄某進程在內(nèi)存中各頁的使用情況,棧用于保存當(dāng)前使用的各個頁面的頁面號。28.試說明改進型Clock置換算法的基本原理.答:因為修改過的頁面在換出時付出的開銷比未被修改過的頁面大,在改進型Clock算法中,既考慮頁面的使用情況,還要增加置換代價的因素;在選擇頁面作為淘汰頁面時,把同時滿足未使用過和未被修改作為首選淘汰頁面。29.說明請求分段系統(tǒng)中的缺頁中斷處理過程。答:請求分段系統(tǒng)中的缺頁中斷處理過程描述如下:〔1根據(jù)當(dāng)前執(zhí)行指令中的邏輯地址查頁表,判斷該頁是否在主存儲器中〔2該頁標(biāo)志為"0"形成缺頁中斷,中斷裝置通過交換PSW讓操作系統(tǒng)的中斷處理程序占用處理器?!?操作系統(tǒng)處理缺頁中斷處理的辦法是查主存分配表找一個空閑的主存塊,查頁表找出該頁在磁盤上位置,啟動磁盤讀出該頁信息。〔4把從磁盤上讀出的信息裝入找到的主存塊中?!?當(dāng)頁面住處被裝入主存后,應(yīng)修改頁表中對應(yīng)的表目,填上該頁所占用的主存塊把標(biāo)志置為"1",表示該頁已在主存儲器中〔6由于產(chǎn)生缺頁中斷時的那條指令并沒執(zhí)行完,所以在把頁面裝入之后應(yīng)重新執(zhí)行被中斷指令。請求分段系統(tǒng)中的缺頁中斷處理過程如下圖所示:30.如何實現(xiàn)分段共享?答:在每個進程的段表中,用相應(yīng)的表項指向共享段在內(nèi)存中起始地址;配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)作為共享段表,在段表項中設(shè)置共享進程計數(shù)Count,每調(diào)用一次該共享段,Count值增1,每當(dāng)進程釋放一個共享段時,Count減1,若減為0,則系統(tǒng)回收該共享段的物理內(nèi)存,取消在共享段表中該段對應(yīng)的表項;共享段應(yīng)給不同的進程以不同的存取權(quán)限;不同的進程可以使用不同的段號去共享該段。第五章1.試說明設(shè)備控制器的組成。答:由設(shè)備控制器與處理機的接口,設(shè)備控制器與設(shè)備的接口與I/O邏輯組成。2.為了實現(xiàn)CPU與設(shè)備控制器間的通信,設(shè)備控制器應(yīng)具備哪些功能?答:接收和識別命令;數(shù)據(jù)交換;標(biāo)識和報告設(shè)備狀態(tài);地址識別;數(shù)據(jù)緩沖;差錯控制。3.什么是字節(jié)多路通道?什么是數(shù)組選擇通道和數(shù)組多路通道?答:〔1字節(jié)多路通道。按字節(jié)交叉方式工作的通道。通常含有許多非分配型子通道,數(shù)量從幾十到數(shù)百個,每個子通道連接一臺I/O設(shè)備,控制其I/O操作。子通道按時間片輪轉(zhuǎn)方式共享主通道?!?數(shù)組選擇通道。按數(shù)組方式傳送數(shù)據(jù),傳輸速率很高,每次只允許一個設(shè)備數(shù)據(jù)。〔3數(shù)組多路通道。將數(shù)組選擇通道傳輸速率高和字節(jié)多路通道的各子通道分時并行操作的優(yōu)點結(jié)合而成。含有多個非分配型子通道,具有很高的數(shù)據(jù)傳輸率和通道利用率。4.如何解決因通道不足而產(chǎn)生的瓶頸問題?答:解決問題的有效方法是增加設(shè)備到主機間的通路而不增加通道,把一個設(shè)備連到多個控制器上,控制器又連到多個通道上,這種多通路方式解決了"瓶頸"問題,提高了系統(tǒng)可靠性,個別通道或控制器的故障不會使設(shè)備和存儲器之間沒有通路。5.試對VESA及PCI兩種總線進行比較。答:VESA總線的設(shè)計思想是以低價占領(lǐng)市場??偩€帶寬32位,最高傳輸速率132Mb/s。廣泛用于486微機。缺點是能連接的設(shè)備數(shù)僅為2~4臺,控制器中無緩沖,難于適應(yīng)處理器速度的提高,不支持Pentium機。PCI總線在CPU和外設(shè)間插入了復(fù)雜的管理層,協(xié)調(diào)數(shù)據(jù)傳輸和提供一致接口。管理層中配有數(shù)據(jù)緩沖,放大了線路的驅(qū)動能力,最多支持10種外設(shè),支持高時鐘頻率的CPU運行,最大傳輸速率132Mb/s??蛇B接ISA、EISA等傳統(tǒng)總線,又支持Pentium的64位系統(tǒng),是基于奔騰等新一代微處理器而發(fā)展的總線。6.試說明推動I/O控制發(fā)展的主要因素是什么?答:推動I/O控制發(fā)展的主要動力在于盡量減少主機對I/O控制的干預(yù),把主機從繁雜的I/O控制事務(wù)中解脫出來,用更多的時間和精力去完成其數(shù)據(jù)處理任務(wù)。同時,中斷機制在計算機系統(tǒng)中的引入、DMA控制器的出現(xiàn)和通道研制的成功使I/O控制的發(fā)展具備了技術(shù)支持和成為可能。7.有哪幾種I/O控制方式?各適用于何種場合?答:共有四種I/O控制方式。<1>程序I/O方式:早期計算機無中斷機構(gòu),處理機對I/O設(shè)備的控制采用程序I/O方式或稱忙等的方式。<2>中斷驅(qū)動I/O控制方式:適用于有中斷機構(gòu)的計算機系統(tǒng)中。<3>直接存儲器訪問〔DMAI/O控制方式:適用于具有DMA控制器的計算機系統(tǒng)中。<4>I/O通道控制方式:具有通道程序的計算機系統(tǒng)中。8.試說明DMA的工作流程。答:以從磁盤讀入數(shù)據(jù)為例,說明DMA的工作流程。當(dāng)CPU要從磁盤讀入數(shù)據(jù)塊時,先向磁盤控制器發(fā)送一條讀命令。該命令被送到命令寄存器CR中。同時還發(fā)送本次要讀入數(shù)據(jù)的內(nèi)存起始目標(biāo)地址,送入內(nèi)存地址寄存器MAR;本次要讀數(shù)據(jù)的字節(jié)數(shù)送入數(shù)據(jù)計數(shù)器DC,將磁盤中的源地址直接送DMA控制器的I/O控制邏輯上。然后啟動DMA控制器傳送數(shù)據(jù),以后CPU便處理其它任務(wù)。整個數(shù)據(jù)傳送過程由DMA控制器控制。下圖為DMA方式的工作流程圖。9.引入緩沖的主要原因是什么?答:引入緩沖的主要原因是:〔1緩和CPU與I/O設(shè)備間速度不匹配的矛盾〔2減少對CPU的中斷頻率,放寬對中斷響應(yīng)時間的限制〔3提高CPU與I/O設(shè)備之間的并行性10.在單緩沖情況下,為什么系統(tǒng)對一塊數(shù)據(jù)的處理時間為max〔C,T+M?答:在塊設(shè)備輸入時,先從磁盤把一塊數(shù)據(jù)輸入到緩沖區(qū),耗時為T;然后由操作系統(tǒng)將緩沖區(qū)數(shù)據(jù)送給用戶區(qū),耗時M;接下來由CPU對塊數(shù)據(jù)進行計算,耗時C。在單緩沖情況下,磁盤把數(shù)據(jù)輸入到緩沖區(qū)的操作和CPU對數(shù)據(jù)的計算過程可以并行展開,所以系統(tǒng)對每一整塊數(shù)據(jù)的處理時間為max<C,T>+M。11.為什么在雙緩沖情況下,系統(tǒng)對一塊數(shù)據(jù)的處理時間為max〔T,C?答:寫入者花費時間T將數(shù)據(jù)寫滿一個緩沖區(qū)后再寫另一個緩沖區(qū);讀出者花費時間M將一個緩沖區(qū)數(shù)據(jù)送到用戶區(qū)后再傳送另一個緩沖區(qū)數(shù)據(jù),計算者讀出用戶區(qū)數(shù)據(jù)進行處理。由于將數(shù)據(jù)從緩沖區(qū)傳到用戶區(qū)操作必須與讀用戶區(qū)數(shù)據(jù)處理串行進行,而且可以與從外存?zhèn)魉蛿?shù)據(jù)填滿緩沖區(qū)的操作并行。因此耗時大約為max<C+M,T>。考慮M是內(nèi)存數(shù)據(jù)塊的移動耗時非常短暫可以省略,因此近似地認為系統(tǒng)對一塊數(shù)據(jù)處理時間為max<C,T>。12.試繪圖說明把多緩沖用于輸出時的情況。答:多緩沖用于輸出的示意圖如下:13.試說明收容輸入工作緩沖區(qū)和提取輸出工作緩沖區(qū)的工作情況。答:①收容輸入工作緩沖區(qū)的工作情況為:在輸入進程需要輸入數(shù)據(jù)時,調(diào)用GetBuf<EmptyQueue>過程,從EmptyQueue隊列的隊首摘下一個空緩沖區(qū),作為收容輸入工作緩沖區(qū)Hin。然后把數(shù)據(jù)輸入其中,裝滿后再調(diào)用PutBuf<InputQueue,Hin>過程,將該緩沖區(qū)掛在輸入隊列InputQueue的隊尾。②提取輸出工作緩沖區(qū)的工作情況為:當(dāng)要輸出數(shù)據(jù)時,調(diào)用GetBuf<OutputQueue>過程,從輸出隊列的隊首取得一裝滿輸出數(shù)據(jù)的緩沖區(qū)作為提取輸出工作緩沖區(qū)Sout。在數(shù)據(jù)提取完后,再調(diào)用PutBuf<EmptyQueue,Sout>過程,將該緩沖區(qū)掛到空緩沖隊列EmptyQueue的隊尾。14.何謂安全分配方式和不安全分配方式?答:①安全分配方式是指每當(dāng)進程發(fā)出I/O請求后,便進入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。在采用這種分配策略時,一旦進程已獲得某種設(shè)備資源后便阻塞,使它不可能再請求任何資源,而在它運行時又不保持任何資源。這種分配方式已經(jīng)摒棄了造成死鎖的"請求和保持"條件,分配是安全的。缺點是進程進展緩慢,CPU與I/O設(shè)備串行工作。②不安全分配方式是指進程發(fā)出I/O請求后仍繼續(xù)執(zhí)行,需要時又可發(fā)出第二個I/O請求、第三個I/O請求。僅當(dāng)進程請求的設(shè)備已被另一個進程占有時,進程才進入阻塞狀態(tài)。優(yōu)點是一個進程可同時操作多個設(shè)備,進程推進迅速。缺點是分配不安全,可能具有"請求和保持"條件,可能造成死鎖。因此,在設(shè)備分配程序中需增加一個功能,用于對本次的設(shè)備分配是否會發(fā)生死鎖進行安全性計算,僅當(dāng)計算結(jié)果表明分配安全的情況下才進行分配。15.為何要引入設(shè)備獨立性?如何實現(xiàn)設(shè)備獨立性?答:現(xiàn)代操作系統(tǒng)為了提高系統(tǒng)的可適應(yīng)性和可擴展性,都實現(xiàn)了設(shè)備獨立性或設(shè)備無關(guān)性?;竞x是應(yīng)用程序獨立于具體使用的物理設(shè)備,應(yīng)用程序以邏輯設(shè)備名請求使用某類設(shè)備。實現(xiàn)了設(shè)備獨立性功能可帶來兩方面的好處:〔1設(shè)備分配時的靈活性;〔2易于實現(xiàn)I/O重定向。為了實現(xiàn)設(shè)備的獨立性,應(yīng)引入邏輯設(shè)備和物理設(shè)備概念。在應(yīng)用程序中,使用邏輯設(shè)備名請求使用某類設(shè)備;系統(tǒng)執(zhí)行時是使用物理設(shè)備名。鑒于驅(qū)動程序是與硬件或設(shè)備緊密相關(guān)的軟件,必須在驅(qū)動程序之上設(shè)置一層設(shè)備獨立性軟件,執(zhí)行所有設(shè)備的公有操作、完成邏輯設(shè)備名到物理設(shè)備名的轉(zhuǎn)換〔為此應(yīng)設(shè)置一張邏輯設(shè)備表并向用戶層〔或文件層軟件提供統(tǒng)一接口,從而實現(xiàn)設(shè)備的獨立性。16.在考慮到設(shè)備的獨立性時,應(yīng)如何分配獨占設(shè)備?答:在考慮到設(shè)備的獨立性時,應(yīng)按如下步驟來分配獨占設(shè)備:<1>進程以邏輯設(shè)備名提出I/O請求。<2>根據(jù)邏輯設(shè)備表獲得I/O請求的邏輯設(shè)備對應(yīng)物理設(shè)備在系統(tǒng)設(shè)備表中的指針。<3>檢索系統(tǒng)設(shè)備表,找到屬于請求類型、空閑可用且分配安全設(shè)備的設(shè)備控制表,將對應(yīng)設(shè)備分配給請求進程;未找到則等待等待喚醒和分配。<4>到設(shè)備控制表中找出與其相連接的控制器的控制器控制表,根據(jù)狀態(tài)字段判斷是否忙碌,忙則等待;否則將該控制器分配給進程。<5>到該控制器的控制器控制表中找出與其相連接的通道的通道控制表,判斷通道是否忙碌,忙則等待;否則將該通道分配給進程。<6>只有在設(shè)備、控制器和通道三者都分配成功時,這次的設(shè)備分配才算成功,然后便可啟動設(shè)備進行數(shù)據(jù)傳送。17.何謂設(shè)備虛擬?實現(xiàn)設(shè)備虛擬時所依賴的關(guān)鍵技術(shù)是什么?答:設(shè)備虛擬是指把獨占設(shè)備經(jīng)過某種技術(shù)處理改造成虛擬設(shè)備??商摂M設(shè)備是指一臺物理設(shè)備在采用虛擬技術(shù)后,可變成多臺邏輯上的虛擬設(shè)備,則可虛擬設(shè)備是可共享的設(shè)備,將它同時分配給多個進程使用,并對這些訪問該物理設(shè)備的先后次序進行控制。18.試說明SPOOLing系統(tǒng)的組成。答:SPOOLing系統(tǒng)由輸入井和輸出井、輸入緩沖區(qū)和輸出緩沖區(qū)、輸入進程SPi和輸出進程SPo三部分組成。19.在實現(xiàn)后臺打印時,SPOOLing系統(tǒng)應(yīng)為請求I/O的進程提供哪些服務(wù)?答:在實現(xiàn)后臺打印時,SPOOLing系統(tǒng)應(yīng)為請求I/O的進程提供以下服務(wù):〔1由輸出進程在輸出井中申請一空閑盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;〔2輸出進程為用戶進程申請空白用戶打印表,填入打印要求,將該表掛到請求打印隊列。〔3一旦打印機空閑,輸出進程便從請求打印隊列的隊首取出一張請求打印表,根據(jù)表中要求將要打印的數(shù)據(jù)從輸出井傳送到內(nèi)存緩沖區(qū),再由打印機進行打印。20.試說明設(shè)備驅(qū)動程序具有哪些特點。答:設(shè)備驅(qū)動程序具有如下特點:〔1是請求I/O進程與設(shè)備控制器間的一個通信程序;〔2驅(qū)動程序與I/O設(shè)備的特性緊密相關(guān);〔3驅(qū)動程序與I/O控制方式緊密相關(guān);〔4驅(qū)動程序與硬件緊密相關(guān),部分程序用匯編語言書寫,基本部分往往固化在ROM中。21.試說明設(shè)備驅(qū)動程序應(yīng)具有哪些功能?答:設(shè)備驅(qū)動程序的主要功能包括:〔1將接收到的抽象要求轉(zhuǎn)為具體要求;〔2檢查用戶I/O請求合法性,了解I/O設(shè)備狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備工作方式;〔3發(fā)出I/O命令,啟動分配到的I/O設(shè)備,完成指定I/O操作;〔4及時響應(yīng)由控制器或通道發(fā)來的中斷請求,根據(jù)中斷類型調(diào)用相應(yīng)中斷處理程序處理;〔5對于有通道的計算機,驅(qū)動程序還應(yīng)該根據(jù)用戶I/O請求自動構(gòu)成通道程序。22.設(shè)備中斷處理程序通常需完成哪些工作?答:設(shè)備中斷處理程序通常需完成如下工作:<1>喚醒被阻塞的驅(qū)動程序進程;<2>保護被中斷進程的CPU環(huán)境;<3>分析中斷原因、轉(zhuǎn)入相應(yīng)的設(shè)備中斷處理程序;<4>進行中斷處理;<5>恢復(fù)被中斷進程。23.磁盤訪問時間由哪幾部分組成?每部分時間應(yīng)如何計算?答:磁盤訪問時間由尋道時間Ts、旋轉(zhuǎn)延遲時間Tr、傳輸時間Tt三部分組成?!?Ts是啟動磁臂時間s與磁頭移動n條磁道的時間和,即Ts=m×n+s?!?Tr是指定扇區(qū)移動到磁頭下面所經(jīng)歷的時間。硬盤15000r/min時Tr為2ms;軟盤300或600r/min時Tr為50~100ms。〔3Tt是指數(shù)據(jù)從磁盤讀出或向磁盤寫入經(jīng)歷的時間。Tt的大小與每次讀/寫的字節(jié)數(shù)b和旋轉(zhuǎn)速度有關(guān):Tt=b/rN。24.目前常用的磁盤調(diào)度算法有哪幾種?每種算法優(yōu)先考慮的問題是什么?答:目前常用的磁盤調(diào)度算法有先來先服務(wù)、最短尋道時間優(yōu)先及掃描等算法。<1>先來先服務(wù)算法優(yōu)先考慮進程請求訪問磁盤的先后次序;<2>最短尋道時間優(yōu)先算法優(yōu)先考慮要求訪問的磁道與當(dāng)前磁頭所在磁道距離是否最近;<3>掃描算法考慮欲訪問的磁道與當(dāng)前磁道

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論