




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章操作系統(tǒng)概述課后習題.硬件將處理機劃分為兩種狀態(tài),即管態(tài)和目態(tài),這樣做給操作系統(tǒng)設計帶來什么好處?答:便于設計安全可靠的操作系統(tǒng)。管態(tài)和目態(tài)是計算機硬件為保護操作系統(tǒng)免受用戶程序的干擾和破壞而引入的兩種狀態(tài)。通常操作系統(tǒng)在管態(tài)下運行,可以執(zhí)行所有機器指令;而用戶程序在目態(tài)下運行,只能執(zhí)行非特權指令。如果用戶程序企圖在目態(tài)下執(zhí)行特權指令,將會引起保護性中斷,由操作系統(tǒng)終止該程序的執(zhí)行,從而保護了操作系統(tǒng)。?何為特權指令?舉例說明之。如果允許用戶執(zhí)行特權指令,會帶來什么后果?答:只能在管態(tài)下才能執(zhí)行的指令稱為特權指令。如開關中斷、置程序狀態(tài)寄存器等。如果允許用戶執(zhí)行特權指令,它將不僅影響當前運行的程序,而且還有可能影響操作系統(tǒng)的正常運行,甚至整個系統(tǒng)。.中斷向量在機器中的存儲位置是由硬件確定的,還是由軟件確定的?答:中斷向量在機器中的位置是由硬件確定的。例如,在中,內存空間——為中斷向量空間。.中斷向量的內容是由操作系統(tǒng)程序確定的還是由用戶程序確定的?答:中斷向量的內容是由操作系統(tǒng)程序確定的。向量的內容包括中斷處理程序的入口地址和程序狀態(tài)字(中斷處理程序運行環(huán)境),中斷處理程序是由操作系統(tǒng)裝入內存的,操作系統(tǒng)將根據裝入的實際地址和該中斷處理程序的運行環(huán)境來填寫中斷向量。.中斷向量內的處理機狀態(tài)位應當標明是管態(tài)還是目態(tài)?為什么?答:應當標明是管態(tài)。該狀態(tài)由系統(tǒng)初試化程序設置,這樣才能保證中斷發(fā)生后進入操作系統(tǒng)規(guī)定的中斷處理程序。.中斷和程序并發(fā)之間的關系是什么?答:中斷是程序并發(fā)的必要條件。如果沒有中斷,操作系統(tǒng)不能獲得系統(tǒng)控制權,無法按調度算法對處機進行重新分配,一個程序將一直運行到結束而不會被打斷。.說明“?!焙汀岸选钡牟顒e.答:棧是一塊按后進先出。規(guī)則訪問的存儲區(qū)域,用來實現中斷嵌套和子程序調用的參數和返回斷點.而堆雖然是一塊存儲區(qū)域,但是對堆的訪問是任意的,沒有后進先出的要求,堆主要用來為動態(tài)變量分配存儲空間。.何為系統(tǒng)棧?何為用戶棧?系統(tǒng)棧有何用途?用戶棧有何用途?答:系統(tǒng)棧是內存中操作系統(tǒng)空間的一個固定區(qū)域;用戶棧是內存中用戶空間的一個區(qū)域。系統(tǒng)棧的作用:0保存中斷現場,對于嵌套中斷,被中斷程序的現場信息依次壓入系統(tǒng)棧,中斷返回時逆序彈出;()保存操作系統(tǒng)子程序間相互調用的參數、返回值、返回點、以及子程序的局部變量。用戶棧的作用:用于保存用戶進程的子程序間相互調用的參數、返回值、返回點、以及子程序的局部變量。.用戶堆棧段的長度為何無法確定?答:用戶堆棧段的長度主要取決于兩個因素:。用戶進程(線程)中子程序(函數)之間的嵌套調用深度;。子程序參數和局部變量的數量及類型;()動態(tài)變量的使用.這些在進程(線程)運行前無法確定,由此導致用戶堆棧段的長度無法預先準確確定。堆棧段的動態(tài)擴充為何可能導致進程空間的搬遷?答:堆棧段的擴充需要在原來進程空間大小的基礎上增添新的存儲區(qū)域,而且通常要求及原來存儲區(qū)域連續(xù)。由于原存放位置處可擴展的區(qū)域可能已經被其它進程占用,故可能需要將整個進程空間搬遷到另外一個區(qū)域,以實現地址空間擴展要求。.何謂并行?何謂并發(fā)?在單處理機系統(tǒng)中,下述并行和并發(fā)現象哪些可能發(fā)生,哪些不會發(fā)生?()進程及進程之間的并行;()進程及進程之間的并發(fā);()處理機及設備之間的并行;()處理機及通道之間的并行;()通道及通道之間的并行;()設備及設備之間的并行;答:所謂并行是指同一時刻同時進行,進程并行需要多處理器的支持;所謂并發(fā),是指在一段時間內,多個進程都在向前推進,而在同一時刻,可能只有一個進程在執(zhí)行,多個進程輪流使用處理器。在單處理器傳統(tǒng)中,可能發(fā)生的并行和并發(fā)現象如下:()進程及進程之間的并發(fā)。例如,在操作系統(tǒng)中,播放進程和字處理進程可以并發(fā)執(zhí)行,這樣用戶就可以邊聽音樂邊寫文章了。0處理機及設備之間的并行.例如,當處理機進行科學運算時,打印機可以打印文檔。()處理機及通道之間的并行。通道程序的執(zhí)行可及處理機的操作并行。0通道及通道之間的并行。通常一個系統(tǒng)中有多個通道,這些通道可以并行地執(zhí)行相應的通道程序。()設備及設備之間的并行.例如打印機打印文檔時,磁帶機在輸入數據..何謂作業(yè)?它包括哪幾個部分?各部分用途是什么?答:所謂作業(yè)是指用戶要求計算機系統(tǒng)為其完成的計算任務的集合。一個作業(yè)通常包括程序、程序所處理的數據以及作業(yè)說明書。程序用來完成特定的功能,數據是程序處理的對象,作業(yè)說明書用來說明作業(yè)處理的步驟。.從透明性和資源共享兩方面,說明網絡操作系統(tǒng)及分布式操作系統(tǒng)之間的差別。答:從透明性上看,分布式操作系統(tǒng)優(yōu)于網絡操作系統(tǒng)。網絡用戶能夠感覺到所訪問的資源是在本地還是在遠地;而在分布式系統(tǒng)中,用戶感覺不到所訪問的資源是否在本地,分布式操作系統(tǒng)掩蓋了資源在地理位置上的差異。從資源共享上看,分布式操作系統(tǒng)比網絡操作系統(tǒng)能共享更多的資源。在網絡操作系統(tǒng)中,一個計算任務不能由一臺主機任意遷移到另外一臺主機上運行;而在分布式操作系統(tǒng)中,所有作業(yè)可以由一臺主機任意遷移到另外一臺主機上處理,即可實現處理機資源的共享,從而達到整個系統(tǒng)的負載平衡。.為什么構成分布式系統(tǒng)的主機一般都是相同的或兼容的?答:這樣更有利于進程的動態(tài)遷移。如果主機不兼容,則在一臺主機上能運行的進程,因所用指令系統(tǒng)不同,在另一臺主機上可能無法運行,導致進程難于在不同主機間遷移,使得分布式系統(tǒng)難于實現負載平衡。構成分布式系統(tǒng)的主機一般都是相同的或兼容的。.為什么嵌入式操作系統(tǒng)通常采用微內核結構? 答:嵌入式操作系統(tǒng)及一般操作系統(tǒng)相比具有比較明顯的差別:()嵌入式操作系統(tǒng)規(guī)模一般較小,因為一般硬件配置較低,而且對操作系統(tǒng)提供的功能要求也不高。()應用領域差別大,對于不同的應用領域其硬件環(huán)境和設備配置情況有明顯差別。所以,嵌入式操作系統(tǒng)一般采用微內核()結構,包括如下基本功能:()處理機調度;()基本內存管理:()通訊機制;()電源管理。在這些基本成分之上可進行擴展,以適應不同應用目標。第二章進程、線程及作業(yè)課后習題.為何引入多道程序設計?在多道程序系統(tǒng)中,內存中作業(yè)的道數是否越多越好?請說明原因。答:引入多道程序設計技術是為了提高計算機系統(tǒng)資源的利用率。在多道程序系統(tǒng)中,內存中作業(yè)的道數并非越多越好。一個計算機系統(tǒng)中的內存、外設等資源是有限的,只能容納適當數量的作業(yè),當作業(yè)道數增加時,將導致對資源的競爭激烈,系統(tǒng)開銷增大,從而導致作業(yè)的執(zhí)行緩慢,系統(tǒng)效率下降。.什么是進程?進程具有那些主要特性?比較進程及程序之間相同點及不同點.答:進程是具有一定獨立功能的程序關于一個數據集合的一次執(zhí)行活動。特性:并發(fā)性、動態(tài)性、獨立性、交往性、異步性和結構性.聯(lián)系:程序是進程的組成部分,一個進程存在的目的就是執(zhí)行其所對應的程序。區(qū)別:程序是靜態(tài)的,而進程是動態(tài)的:進程是有生存期的,而程序沒有;一個程序可對應多個進程,而一個進程只能對應一個程序..有人說,用戶進程所執(zhí)行的程序一定是用戶自己編寫的。這種說法對嗎?如不對舉例說明之。答:這種說法不對。例如,編譯程序以用戶進程身份運行,但編譯程序并不是用戶自己編寫的。此外還有字處理程序等工具軟件..什么是進程上下文?進程上下文包括那些成分?那些成分對目態(tài)程序是可見的? 答:在中,將進程的物理實體及支持進程運行的物理環(huán)境合稱為進程上下文(),進程上下文包括三個組成部分:?用戶級上下文。是由用戶進程的程序塊、用戶數據塊(含共享數據塊)和用戶堆棧組成的進程地址空間。?系統(tǒng)級上下文。包括進程控制塊'內存管理信息、進程環(huán)境塊,以及系統(tǒng)堆棧等組成的進程地址空間?寄存器上下文。由程序狀態(tài)字寄存器'各類控制寄存器、地址寄存器'通用寄存器'用戶堆棧指針等組成。其中用戶級上下文及部分寄存器上下文對目態(tài)程序是可見得。.進程一般具有哪三個主要狀態(tài)?舉例說明狀態(tài)轉換的原因。答:進程在其生存期內可能處于如下三種基本狀態(tài)之一:()運行態(tài)():進程占有處理機資源,正在運行。顯然,在單處理機系統(tǒng)中任一時刻只能有一個進程處于此種狀態(tài);()就緒態(tài)():進程本身具備運行條件,但由于處理機的個數少于可運行進程的個數,暫未投入運行。即相當于等待處理機資源;0等待態(tài)():也稱掛起態(tài)()、封鎖態(tài)()、睡眠態(tài)().進程本身不具備運行條件,即使分給它處理機也不能運行。進程正等待某一個事件的發(fā)生,如等待某一資源被釋放,等待及該進程相關的傳輸的完成信號等。進程的三個基本狀態(tài)之間是可以相互轉換的。具體地說,當一個就緒進程獲得處理機時,其狀態(tài)由就緒變?yōu)檫\行;當一個運行進程被剝奪處理機時,如用完系統(tǒng)分給它的時間片,或出現高優(yōu)先級別的其它進程,其狀態(tài)由運行變?yōu)榫途w;當一個運行進程因某事件受阻時,如所申請資源被占用,啟動傳輸未完成,其狀態(tài)由運行變?yōu)榈却?;當所等待事件發(fā)生時,如得到申請資源,傳輸完成,其狀態(tài)由等待變?yōu)榫途w。. 有幾種類型進程隊列?每類各應設置幾個隊列?答:有三種類型進程隊列:就緒隊列(整個系統(tǒng)一個)、等待隊列(每個等待事件一個)和運行隊列(在單系統(tǒng)中只有一個).線程控制塊中一般應包含那些內容?答:一般中的內容較少,因為有關資源分配等多數信息已經記錄于所屬進程的中.中的主要信息包括:線程標識、線程狀態(tài)、調度參數、現場、鏈接指針,其中現場信息主要包括通用寄存器、指令計數器以及用戶棧指針.對于操作系統(tǒng)支持的線程,中還應包含系統(tǒng)棧指針..同一進程中的多個線程有那些成分是共用的,那些成分是私用的?答:共用的成分有:堆、數據和程序代碼;私用的成分有:線程控制塊、寄存器和用戶棧。.比較用戶級線程及系統(tǒng)級線程間在以下方面的差別和各自的優(yōu)缺點。()創(chuàng)建速度;()切換速度;()并行性;()的存儲位置答:用戶級線程由系統(tǒng)庫支持.線程的創(chuàng)建和撤銷,以及線程狀態(tài)的變化都由庫函數控制并在目態(tài)完成,及線程相關的控制結構保存在目態(tài)空間并由運行系統(tǒng)維護。由于線程對操作系統(tǒng)不可見,系統(tǒng)調度仍以進程為單位,核心棧的個數及進程個數相對應用戶級別線程的優(yōu)點在于:()線程不依賴于操作系統(tǒng),可以采用及問題相關的調度策略,靈活性好;0同一進程中的線程切換不需進入操作系統(tǒng),因而實現效率較高。缺點在于:()同一進程中的多個線程不能真正并行,即使在多處理機環(huán)境中;()由于線程對操作系統(tǒng)不可見,調度在進程級別,某進程中的一個線程通過系統(tǒng)調用進入操作系統(tǒng)受阻,該進程的其它線程也不能運行.核心級別線程通過系統(tǒng)調用由操作系統(tǒng)創(chuàng)建,線程的控制結構保存于操作系統(tǒng)空間,線程狀態(tài)轉換由操作系統(tǒng)完成,線程是調度的基本單位。另外由于系統(tǒng)調度以線程為單位,操作系統(tǒng)還需要為每個線程保持一個核心棧.核心級線程的優(yōu)點是并發(fā)性好,在多環(huán)境中同一進程中的多個線程可以真正并行執(zhí)行。核心級別線程的缺點是線程控制和狀態(tài)轉換需要進入操作系統(tǒng)完成,系統(tǒng)開銷比較大。.何謂作業(yè)步?作業(yè)何時轉為進程?答:作業(yè)步:作業(yè)中一個相對獨立的處理步驟作業(yè)進入內存,根據作業(yè)步的要求建立進程。.分析作業(yè)、進程、線程三者之間的關系.答:聯(lián)系:一個作業(yè)包含多個進程,一個進程包含多個線程;區(qū)別:作業(yè)是向計算機提交任務的任務實體,而進程是執(zhí)行實體,是資源分配的基本單位,線程是處理機調度的基本單位。.何謂系統(tǒng)開銷?試舉三個例子說明之運行操作系統(tǒng)程序對系統(tǒng)進行管理而花費的時間和空間,如:作業(yè)調度、進程調度、進程切換等。第三章中段及處理機調度課后習題.試說明下述概念之間的聯(lián)系及差別:()系統(tǒng)調用命令()訪管指令0廣義指令答:訪管指令由指令碼和訪管中斷號兩部分組成。即: ①其中()為指令碼,表明為訪管指令;為訪管中斷號,其值是一整數,具體表示何種訪問要求。中斷發(fā)生時,硬件中斷裝置將訪管中斷號送入舊的程序狀態(tài)字內的中斷碼字段,訪管中斷總控程序由系統(tǒng)堆棧中將其取出,并據此轉入對應的服務程序。 在實際使用時,用戶程序及操作系統(tǒng)之間還需要相互傳遞參數和返回值。如此,用戶使用訪管指令的一般形式為:準備參數 取返回值 ② 根據具體訪管要求約定,參數及返回值可以通過寄存器傳遞,也可以通過內存?zhèn)鬟f。對于后者,操作系統(tǒng)必須能夠訪問進程空間。 通常將②稱為系統(tǒng)調用命令,它除訪管指令外,還有準備參數和取返回值。為了使用方便,在高級語言中一般將其寫為及過程調用相類似的形式,即: 返回值=系統(tǒng)調用名稱(參數,參數,…,參數); ③當然,編譯程序會將③翻譯成形如②的形式。其中系統(tǒng)調用名稱對應①,不同的系統(tǒng)調用名稱對應不同的整數。在有的書中,也將③稱為代表②的宏指令或廣義指令。.為什么說中斷是進程切換的必要條件,但不是充分條件?答:發(fā)生進程切換時一定發(fā)生中斷。系統(tǒng)由一個運行進程轉去運行另外一個進程,前提條件是必須進入操作系統(tǒng),即處于系統(tǒng)態(tài),因為處于用戶態(tài)運行的進程不可能將的使用權直接交給另一個進程,而中斷是從用戶態(tài)轉換為系統(tǒng)態(tài)的必要條件。即中斷是進程切換的前提(必要)條件。 但發(fā)生中斷時未必發(fā)生進程切換。如果中斷處理完后原進程不再具有繼續(xù)運行的條件,則一定會發(fā)生進程切換;反之,如果中斷處理完后原進程仍具有繼續(xù)運行的條件,則可能會發(fā)生進程切換,也可能不發(fā)生進程切換,這及處理機調度策略有關。.試分析中斷及進程狀態(tài)轉換之間的關系。答:進程狀態(tài)轉換是由內核控制的,如果一個進程的狀態(tài)發(fā)生了改變,則在新舊狀態(tài)之間一定發(fā)生了處理機狀態(tài)由目態(tài)到管態(tài)的轉換,而中斷是處理機狀態(tài)由目態(tài)轉換到管態(tài)的必要條件,所以中斷也是進程狀態(tài)轉換的必要條件。.中斷發(fā)生時,舊的和為何需要壓入系統(tǒng)棧? 答:保存斷點信息,以便中斷結束后接著原來的程序斷點處繼續(xù)執(zhí)行。通常來說中斷處理程序的最后一條指令是中斷返回指令,該指令從系統(tǒng)棧頂彈出斷點信息。如果未將和壓入系統(tǒng)棧,則中斷返回指令彈出的不是中斷前的斷點信息,而是不確定的信息,這將導致系統(tǒng)處于不確定的狀態(tài),嚴重的情況會使系統(tǒng)崩潰。.何謂中斷向量?用戶能否修改中斷向量的值?答:當中斷事件發(fā)生時,中斷裝置根據中斷類別自動地將中斷處理程序所對應的和送入程序狀態(tài)字和指令計數器中,如此便轉移到對應的中斷處理程序。這個轉移類似于向量轉移,因而和被稱為中斷向量。用戶不能修改中斷向量的值,因為修改中斷向量是特權指令,普通用戶程序不能執(zhí)行特權指令。另外,如果允許用戶修改中斷向量的值,那么,用戶就可以將中斷向量及一段病毒程序聯(lián)系起來,使中斷發(fā)生時便執(zhí)行病毒程序,從而破壞計算機系統(tǒng)。.中斷向量的存儲位置是否可由程序改變?為什么?中斷向量的值是如何確定的?答:中斷向量的存儲位置是由硬件確定的,不能由程序改變。中斷發(fā)生后,中斷裝置按照中斷類型到內存指定位置取出中斷向量。例如,在系統(tǒng)中,地址是中斷向量空間。操作系統(tǒng)的設計者根據各中斷事件處理程序的存儲位置及運行環(huán)境確定對應中斷向量的值,系統(tǒng)啟動時由初始化程序將該值填入指定位置。.有人說,中斷發(fā)生后硬件中斷裝置保證處理機進入管態(tài),這種說法準確嗎?說明理由。答:這種說法不準確。中斷發(fā)生后,硬件中斷裝置負責引出中斷處理程序,中斷處理程序是否運行于管態(tài)取決于中的處理機狀態(tài)位,該位的值是操作系統(tǒng)初始化時設置的,只有在初試化程序正確設置該狀態(tài)位的前提下,才能保證中斷后系統(tǒng)進入管態(tài)。.為什么在中斷處理過程中通常允許高優(yōu)先級別的中斷事件中途插入,而不響應低優(yōu)先級別的中斷事件?答:()從邏輯上來說,高優(yōu)先級別中斷源所對應的事件比低優(yōu)先級別中斷源所對應的中斷事件急迫;()由于硬件中斷類型是有限的,這樣做實際上也就限制了中斷嵌套的深度。防止中斷層數無限增長,甚至系統(tǒng)棧溢出。.為什么說“關中斷”會影響系統(tǒng)的并發(fā)性?答:考慮單處理機系統(tǒng)。在單處理機系統(tǒng)中,并發(fā)是通過將處理機輪流分配給多個進程而實現的,這個分配是由操作系統(tǒng)中處理機調度程序完成的。中斷是進程切換的必要條件,如果關了中斷,則操作系統(tǒng)無法獲得處理機的控制權,也就無法使多個進程分
時共享處理機。在關中斷期間,一個進程獨占處理機。所以說“關中斷”會影響系統(tǒng)的并發(fā)性。.假如關中斷后操作系統(tǒng)進入了死循環(huán),會產生什么后果?答:因為操作系統(tǒng)進入了死循環(huán),并且處于關中斷,即不能響應中斷,也就不能從死循環(huán)中退出。系統(tǒng)不響應任何外部干預事件,系統(tǒng)表現為“死機”。.為什么不允許目態(tài)程序執(zhí)行關中斷指令及中斷屏蔽指令?答:開關中斷指令和中斷屏蔽指令屬于特權指令,一般用戶無權訪問。如果允許用戶使用,用戶關中斷后可能影響系統(tǒng)對內部或外部事件的響應, 也會使操作系統(tǒng)無法獲得系統(tǒng)控制權。.如果沒有中斷,是否能夠實現多道程序設計?為什么?答:不能。因為一個程序一旦被調度執(zhí)行,將一直執(zhí)行下去,中間不可能被打斷,不可能達到多個進程交替執(zhí)行的并發(fā)目的。.下列中斷源哪些通常是可以屏蔽的,哪些通常是不可屏蔽的?()中斷;()訪管中斷;()時鐘中斷;0掉電中斷答:()中斷可以屏蔽;()訪管中斷不可以屏蔽;()時鐘中斷可以屏蔽;()掉電中斷不可以屏蔽。.下列中斷事件哪些可由用戶自行處理?哪些只能由操作系統(tǒng)中斷服務程序統(tǒng)一處理?為什么?()溢出;0地址越界;0除零;0非法指令;()掉電答:一般來說,只影響應用程序自身的中斷,可以由用戶自行處理,包括:()溢出;()除零??赡苡绊懫渌脩艋虿僮飨到y(tǒng)的中斷只能由操作系統(tǒng)中斷服務程序統(tǒng)一處理,包括:()地址越界;()非法指令;()掉電。.如果中斷由用戶程序自行處理,為何需要將被中斷程序的斷點由系統(tǒng)堆棧彈出并壓入用戶堆棧?答:中斷發(fā)生時,被中斷程序的現場信息已被壓入系統(tǒng)堆棧中。而中斷續(xù)元運行于目態(tài),它執(zhí)行完畢后將由用戶堆棧區(qū)中恢復現場。為此,操作系統(tǒng)在轉到中斷續(xù)元之前還應當將系統(tǒng)堆棧中的現場信息彈出并壓入用戶堆棧中,否則中斷續(xù)元執(zhí)行完畢后將無法恢復現場返回斷點。.對于下面中斷及進程狀態(tài)轉換之間的關系各舉兩個例子說明之:()一定會引起進程狀態(tài)轉換的中斷事件;()可能引起進程狀態(tài)轉換的中斷事件.答:定會引起進程狀態(tài)轉換的中斷事件:當前運行進程終止、應用程序啟動傳輸并等待數據、運行程序申請當前被占用的某一資源??赡芤疬M程狀態(tài)轉換的中斷事件:時鐘中斷事件可能引起進程狀態(tài)轉換,例如對于時間片輪轉進程調度算法,若時鐘中斷發(fā)生后,當前進程的時間片已用完,則將發(fā)生進程切換;否則不發(fā)生進程切換。.若在時刻進程運行,時刻進程運行,且X,則在時刻和時刻期間之內一定發(fā)生過中斷。這種說法對嗎?為什么?答:這種說法對。如果在時刻進程在運行,在時刻進程在運行,且W,則說在時刻和時刻之間發(fā)生了進程切換。這說明在時刻和時刻之間執(zhí)行了處理機調度程序,而處理機調度程序是操作系統(tǒng)低層中的一個模塊,在系統(tǒng)運行的過程中,除非顯式地調用到該模塊,否則系
統(tǒng)不會由運行一個進程轉去運行另外一個進程,就是說不會發(fā)生進程切換。只有進入操作系統(tǒng),即處于系統(tǒng)態(tài),才有可能調用到處理機調度,因為處于用戶態(tài)運行的用戶程序不可能直接調用操作系統(tǒng)中的任何模塊。中斷是系統(tǒng)由用戶態(tài)轉換為系統(tǒng)態(tài)的必要條件。據此,假如在時刻及時刻之間發(fā)生了進程切換, 則在時刻及時刻之間一定發(fā)生過中斷。.進程切換時,上升進程的和為何必須由一條指令同時恢復?答:中斷向量中程序狀態(tài)字及指令計數器的內容必須由一條指令同時恢復,這樣才能保證系統(tǒng)狀態(tài)由管態(tài)轉到目態(tài)的同時,控制轉到上升進程的斷點處繼續(xù)執(zhí)行。如果不同時恢復,則只能。先恢復再恢復,在恢復后已經轉到目態(tài),操作系統(tǒng)恢復的使命無法完成;()先恢復再恢復,改變后轉到操作系統(tǒng)另外區(qū)域(因為仍為系統(tǒng)狀態(tài)),無法恢復。.某系統(tǒng)采用可搶占處理機的靜態(tài)優(yōu)先數調度算法,請問何時會發(fā)生搶占處理機的現象?答:當一個新創(chuàng)建的進程或一個被喚醒進程的優(yōu)先數比正在運行進程的優(yōu)先數高時,可能發(fā)生搶占處理機現象。.在實時系統(tǒng)中,采用不可搶占處理機的優(yōu)先數調度算法是否適宜?為什么?答:不適宜。一旦一個低優(yōu)先數、需要大量時間的進程占用處理機,就會一直運行,直到運行結束,或者直到因某事件而阻塞。在此之前,即使高優(yōu)先數的緊急任務到達,也得不到處理,因而可能延誤對重要事件的響應和處理。.在分時系統(tǒng)中,進程調度是否只能采用時間片輪轉算法?為什么?答:分時系統(tǒng)的特點是要求響應速度及時,除算法之外,還可以采用可剝奪的動態(tài)優(yōu)先數調度算法。如經典的處理機調度算法,由于負反饋性質,算法也可以保證響應速度。.有人說,在采用等長時間片輪轉處理機調度算法的分時操作系統(tǒng)中,各終端用戶所占有處理機的時間總量是相同的.這種說法對嗎?為什么?答:這種說法不對。因為處理機是分配給進程(線程)的,而不同終端用戶可能有不同數量的進程,一個擁有較多數量進程的終端顯然比擁有較少數量進程的終端獲得的時間要多。.對于下述處理機調度算法分別畫出進程狀態(tài)轉換圖。 ()時間片輪轉算法; ()可搶占處理機的優(yōu)先數調度算法; ()不可搶占處理機的優(yōu)先數調度算法。答:0時間片輪轉算法 ()可搶占處理機的優(yōu)先數調度算法t0不可搶占處理機的優(yōu)先數調度算法.舉出兩個例子說明操作系統(tǒng)訪問進程空間的必要性.答:例():進程執(zhí)行輸出操作時,通過系統(tǒng)調用進入系統(tǒng),由操作系統(tǒng)將待輸出的數據由進程空間取出送給指定的外部設備,為此操作系統(tǒng)必須訪問用
戶進程空間。例():當發(fā)生可由用戶自己處理的中斷事件時,操作系統(tǒng)在轉到中斷續(xù)元之前應當將系統(tǒng)堆棧中的現場信息彈出并壓入用戶堆棧中,為此操作系統(tǒng)也必須訪問進程空間。.根據進程和線程的組成說明進程調度和線程調度各需要完成哪些工作。答:進程調度:()地址映射寄存器;()用戶棧指針:()通用寄存器;()及。線程調度:()用戶棧指針;()通用寄存器;()o .系統(tǒng)資源利用率及系統(tǒng)效率是否一定成正比?如不是,舉例說明之.答:不是,如程序的并發(fā)執(zhí)行時,并發(fā)要有個度,并發(fā)執(zhí)行的程序過多,雖然系統(tǒng)資源利用率提高,但是,由于競爭過于激烈,切換過于頻繁,系統(tǒng)開銷大,反而會使系統(tǒng)效率降低。.設有周期性實時任務集如下表所示,用算法和算法是否可以調度?畫出相應的圖。任務 發(fā)生周期 處理時間答:由于,因而采用算法一定可以調度,其圖為:由于,因而采用算法不可調度。第四章互斥、同步及通訊課后習題答案.何謂及時間有關的錯誤?舉例說明之。答:并發(fā)進程的執(zhí)行實際上是進程活動的某種交叉,某些交叉次序可能得到錯誤結果。由于具體交叉的形成及進程的推進速度有關,而速度是時間的函數,因而將這種錯誤稱為及時間有關的錯誤。例如,兩個并發(fā)進程的程序如下:;()(創(chuàng)建進程;創(chuàng)建進程;);假設進程被部署在公園入口的終端上,用來記錄進入公園的人數,進程被部署在公園的控制中心,用來輸出一段時間內進入公園的總人數。進程和進程共享全局變量。如果在進程執(zhí)行完打印語句后被進程打斷,進程執(zhí)行了若干次變量自增語句,之后進程接著執(zhí)行清語句,那么進程對的累加丟失了,相當于進程被打斷的這段時間內進入公園的人沒有被記錄下來。發(fā)生及時間有關的錯誤。.有人說,假設兩個進程之間沒有共享內存,則二者之間沒有公共變量,這種說法準確嗎?說明原因.答:如果只從用戶空間考慮,這種說法是正確的。但從操作系統(tǒng)的角度來說并不準確。兩個沒有公共內存的用戶進程可能同時(宏觀)進入操作系統(tǒng),并訪問操作系統(tǒng)空間中的公共變量。.何謂忙式等待?是否還有其它方式的等待?比較它們之間的聯(lián)系和差別。答:不進入等待狀態(tài)的等待稱為忙式等待。另一種等待方式是阻塞式等待,進程得不到共享資源時將進入阻塞狀態(tài),讓出給其他進程使用。忙等待和阻塞式等待的相同之處在于進程都不具備繼續(xù)向前推進的條件,不同之處在于處
于忙等待的進程不主動放棄,盡管可能被剝奪,因而是低效的;而處于阻塞狀態(tài)的進程主動放棄,因而是高效的。.下列進程互斥方法哪些存在忙式等待問題?()軟件:面包店算法0硬件:指令0關中斷指
令答:()、()存在忙等待問題。.為何開關中斷進程互斥方法僅在單系統(tǒng)中是有效的?答:關中斷方法不適用于多系統(tǒng),因為關中斷只能保證不由一個進程切換到另外一個進程,從而防止多個進程并發(fā)地進入公共臨界區(qū)域。但即使關中斷后,不同進程仍可以在不同上并行執(zhí)行關于同一組共享變量的臨界區(qū)代碼。.在多處理機系統(tǒng)中,軟件互斥方法是否有效?為什么?答:依然有效。多處理機并行及單處理并發(fā)之間的差別在于程序交叉的粒度,單處理機機環(huán)境中進程交叉發(fā)生在指令之間,多處理機環(huán)境中進程交叉發(fā)生在指令周期之間。由于純軟件互斥算法并不依賴特殊的硬件指令(如),指令之間的交叉及指令周期之間的交叉結果相同。.試分析臨界區(qū)域的大小及系統(tǒng)并發(fā)性之間的關系。答:關于同一組變量的臨界區(qū)域是不能并發(fā)執(zhí)行的代碼,臨界區(qū)越大,并發(fā)性越差,因而編寫并發(fā)程序應盡量減小臨界區(qū)域的大小。.設是關于一組共享變量的臨界區(qū)域,是關于另外一組共享變量的臨界區(qū)域,當進程進入時,進程是否
可以進入?為什么?答:進程互斥是指多個進程不能同時進入關于同一組共享變量的臨界區(qū),否則可能
發(fā)生于時間有關的錯誤。及不是同一組共享變量,所以當進程進入時,進程可以進入。.面包店互斥算法是否會出現餓死情況?答:不會,該算法是公平的。假定系統(tǒng)中共有個進程,每
個想要進入臨界區(qū)域的進程(線程)在最壞的情況下需要等待其它個進程進入并離開臨界區(qū)域之后即可
獲得進入臨界區(qū)域的機會,因而存在(忙式)等待的上界。.試用信號燈和操作實現臨界區(qū)語句: 〈共享變量〉〈語句〉答:; … ();〈語句〉….由操作喚醒的進程是否一定能夠直接進入運行狀態(tài)?舉例說明之。答:否。一般來說,喚醒是將進程狀態(tài)由等待狀態(tài)變成就緒狀態(tài),而就緒進程何時獲得處理機則是由系統(tǒng)的處理機調度策略確定的。 如果采用搶占式優(yōu)先級調度算法,并且被喚醒的進程是當前系統(tǒng)中優(yōu)先級最高的進程,那么該進程將被調
度執(zhí)行,該進程的狀態(tài)變成運行態(tài)。如果該進程不是系統(tǒng)中優(yōu)先級最高的進程或系統(tǒng)采用其它調度算法,
那么該進程不會被調度執(zhí)行,其狀態(tài)將維持在就緒態(tài)。.設和為兩個信號燈變量,下列八組、操作哪些可以同時進行?哪些不能同時進行?為什么?0(),0 00,()00,()()(),()()(),() ()(),()()(),() ()0,()答:0,(),0,()可以同時進行;(),。,。,。不可以同時進行。因為如果將信號燈變量看作共享變量,則、操作作為其臨界區(qū),為了不發(fā)生于時間有關的錯誤,須保證多個進程不能對同一個信號燈變量同時執(zhí)行、操作。.對于生產者一消費者問題,假設緩沖區(qū)是無界的,試用信號燈及操作給出解法。答:由于是無界緩沖區(qū),所以生產者不會因得不到緩沖區(qū)而被阻塞。生產者:(){生產一個物品;();口物品;;();();}消費者:(){();0;物品口;;();}.設有一個可以裝、兩種物品的倉庫,其容量無限大,但要求倉庫中、兩種物品的數量滿足下述不等式W物品數量一物品數量W其中和為正整數.試用信號燈和操作描述、兩種物品的入庫過程.解:若只放入,而不放入,則產品最多可放入次便被阻塞;若只放入,而不放入,則產品最多可放入次便被阻塞;每放入一次,放入產品的機會也多一次;同理,每放入一次,放入產品的機會也多一次,;產品進程: 產品進程(){ (){(); ()0;o產品入庫; 產品入庫;(); ()0;();}}.試用信號燈及操作實現司機及售票員之間的同步問題。設公共汽車上有一個司機和一個售票員,其活動如下圖所示。為了安全起見,顯然要求:()關車門后方能啟動車輛;()到站停車后方能開車門。亦即“啟動車輛”這一活動應當在“關車門”這一活動之后,“開車門”這一活動應當在“到站停車”這一活動之后。;司機: 售票員:(){ (){ (); 關車門; 啟動車輛; 0; 正常行駛; 售票;到站停車;0; 0; 開車門;} }.設有、、三組進程,它們互斥地使用某一獨占型資源,使用前申請,使用后釋放.資源分配原則如下:()當只有一組申請進程時,該組申請進程依次獲得; ()當有兩組申請進程時,各組申請進程交替獲得,組內申請進程交替獲得;()當有三組申請進程時,各組申請進程輪流獲得,組內申請進程交替獲得.試用信號燈和操作分別給出各組進程的申請活動程序段和釋放活動程序段設備狀態(tài)標志;各組等待隊列等待隊列長度組申請:()(){();}{()();} 組釋放:(?{():}{(?{();}{(?{();}{:}}}組進程活動可以給出組和組進程活動。.設自行車生產線上有一只箱子,其中有個位置(2),每個位置可存放一個車架或一個車輪;又設
有三個工人,其活動分別為:工人活動:{加工一個車架;車架工人活動:{加工一個車輪;車輪工人活動:{箱中取一車架;箱中
放入箱中;}() 放入箱中;}() 取二車輪;組裝為一臺車;}()試分別用信號燈及操作、管程、會合實現三個工人的合作,要求解中不含死鎖。一、用信號燈及操作實現三個工人的合作首先不考慮死鎖問題,工人及工人、工人及工人構成生產者及消費者關系,這兩對生產消費關系通過共同的緩沖區(qū)相聯(lián)系。從資源的角度來看,箱字中的空位置相當于工人和工人的資源,而車架和車輪相當于工人的資源。定義三個信號燈如下:;;;三位工人的活動分別為:工人活動:{加工一個車架;();工人活動:{加工一個車輪;();工人活動:{();箱中取一車架;車架放入箱中;();}() 車輪放入箱中;();}() 0;0;0:箱中取二車輪;();0;組裝為一臺車;}()分析上述解法易見,當工人推進速度較快時,箱中空位置可能完全被車架占滿或只留有一個存放車輪的位
置,而當此時工人同時取個車輪時將無法得到,而工人又無法將新加工的車輪放入箱中;當工人推進速度較快時,箱中空位置可能完全被車輪占滿,而當此時工人同取車架時將無法得到,而工人又無法將新加工的車架放入箱中。上述兩種情況都意味著死鎖。為防止死鎖的發(fā)生,箱中車架的數量不可超過,車輪的數量不可超過,這些限制可以用兩個信號燈來表達。;;如此,可以給出不含死鎖的完整解法如下:工人活動:{加工一個車架;();工人活動:{加工一個車輪;();工人活動:{();箱中取一車架;0;車架放入箱中;();}0 0;車輪放入箱中;();}0 0;0:0;0;箱中取二車輪;();0;0:0:組裝為一臺車;}()詳細描述還應考慮對箱子單元的描述以及訪問互斥問題。建議車架放在箱子的一端,車輪放在箱子的另一端,車架及車輪都采用后進先出的管理方式。,,口;工人活動:{加工一個車架;();工人活動:{加工一個車輪;();工人活動:{();()□;;0;0;()()口車架;;();();}() 0;()口車輪;;()();}() 0;0;0;0[][]00:0;0;0;組裝為一臺車;}().一座小橋(最多只能承重兩個人)橫跨南北兩岸,任意時刻同一方向只允許一人過橋,南側橋段和北側橋段較窄只能通過一人,橋中央一處寬敞,允許兩個人通過或歇息.試用信號燈和操作寫出南、北兩岸過橋的同步算法.t0{00;過北段橋;到橋中間00;過南段橋;到達南岸 0{00;過南段橋;到橋中間00;過北段橋;到達北0();} 0();}.某寺廟,有小和尚、老和尚若干.廟內有一水缸,由小和尚提水入缸,供老和尚飲用.水缸可容納桶水,
每次入水、取水僅為桶,不可同時進行。水取自同一井中,水井徑窄,每次只能容納一個水桶取水。設水桶個數為個,試用信號燈和操作給出老和尚和小和尚的活動。;表示缸中目前還能裝多少桶水,初始時能裝桶水;表示缸中有多少桶水,初始時缸中沒有水;表示有多少只空桶可用,初始時有只桶可用;用于實現對井的互斥操作;用
于實現對缸的互斥操作;用于實現對桶的互斥操作0{(){0:00;取一個桶;();;0;;0; ; 0{(){();0;0; ;0;0;;0;0;0; ;();();();}} 0;}}.設系統(tǒng)中有臺類型相同的打印機,依次編號為?.又設系統(tǒng)中有個使用打印機的進程,使用前申請,使用后釋放。每個進程有一個進程標識,用于區(qū)別不同的進程。每個進程還有一個優(yōu)先數,不同進程的優(yōu)先數各異。當有多個進程同時申請時,按照進程優(yōu)先數由高到低的次序實施分配。試用信號燈和操作實現對于打印機資源的管理,即要求編寫如下函數和過程:0函數(,):申請一臺打印機。參數為進程標識,其值為到的整數;為進程優(yōu)先數,其值為正整數;函數返回值為所申請到打印機的編號,其值為到的整數;0過程0:釋放一臺打印機。參數為所釋放打印機的編號,其值為到的整數。解: 口□表示可用打印機數表示第號打印機的狀態(tài)(?),表示占用,表示空閑*進程阻塞隊列用于對數組的互斥操作用于對阻塞隊列的互斥操作(){()([]?{[](0(){;}();}{()();將進程按其優(yōu)先(){()(){口□();}{()();將分配給隊首進程;下移:();}}數插入到等待隊列中;();}}.關于讀者寫者問題,有人給出如下改進解法,,;(初值均為);(初值為)讀者活動:()()()()()();{讀操作}()()00; 寫者活動:()();{寫操作}()();分析上述改進算法的調度效果.答:由于以及讀者和寫者對的操作,讀者和寫者都不會無限等待,因而算法不會出現餓死現象,是一個公平的解法。第五章死鎖及饑餓課后習題答案.下面關于死鎖問題的敘述哪些是正確的,哪些是錯誤的,說明原因. 0參及死鎖的所有進程都占有資源; ()參及死鎖的所有進程中至少有兩個進程占有資源; ()死鎖只發(fā)生在無關進程之間;()死鎖可發(fā)生在任意進程之間.答:說法()是錯誤的,應該是參及死鎖的所有進程都等待資源。說法()正確。參及死鎖的進程至少有兩個,設為,占有資源而等待資源,占有資源而等待資源。說法0錯誤。死鎖也可能發(fā)生在相關進程之間。說法0正確,死鎖既可能發(fā)生在相關進程之間,也可能發(fā)生在無關進程之間。即死鎖可發(fā)生在任意進程之間。. 試證明當每個資源類中僅有一個資源實例時,資源分配圖中的環(huán)路是死鎖的充要條件。證明:先證明充分條件:用反證法,假設每個資源類中僅有一個資源實例時,資源分配圖的環(huán)路是可約簡的,那么說明環(huán)路外至少有一個非孤立且沒有請求邊的進程節(jié)點占有一個資源類中的一個實例,而中的另外一個實例被環(huán)路中某個進程占有。說明中有兩個以上的資源實例,及前提矛盾。所以說,每個資源類中僅有一個資源實例時,資源分配圖的環(huán)路是不可約簡的,根據死鎖定理,得出結論每個資源類中僅有一個資源實例時,資源分配圖若存在環(huán)路就產生死鎖。再證明必要條件:若死鎖產生,則存在一個循環(huán)等待進程序列<……〉,進程正等待資源類中唯一的一個實例,而又被進程所占用;進程正等待資源類中唯一的一個實例,而又被進程所占用;……;進程正等待資源類中唯一的一個實例,而又被進程所占用。能看出,畫出的資源分配圖存在環(huán)路。
. 什么叫饑餓?什么叫餓死?什么叫活鎖?舉例說明之.答:在一個動態(tài)系統(tǒng)中,資源請求及釋放是經常性發(fā)生的進程行為.對于每類系統(tǒng)資源,操作系統(tǒng)需要確定一個分配策略,當多個進程同時申請某
類資源時,由分配策略確定資源分配給進程的次序。資源分配策略可能是公平的(),能保證請求者在有限
的時間內獲得所需資源;資源分配策略也可能是不公平的0,即不能保證等待時間上界的存在。在后一
種情況下,即使系統(tǒng)沒有發(fā)生死鎖,某些進程也可能會長時間等待.當等待時間給進程推進和響應帶來
明顯影響時,稱發(fā)生了進程饑餓(),當饑餓到一定程度的進程所賦予的任務即使完成也不再具有實際意
義時稱該進程被餓死()o在忙式等待條件下發(fā)生的饑餓,稱為活鎖.考慮一臺打印機分配的例子,當
有多個進程需要打印文件時,系統(tǒng)按照短文件優(yōu)先的策略排序,該策略具有平均等待時間短的優(yōu)點,
似乎非常合理,但當短文件打印任務源源不斷時,長文件的打印任務將被無限期地推遲,導致饑餓以至
餓死。. 死鎖及餓死之間有何相同點和不同點?答:餓死及死鎖有一定聯(lián)系:二者都是由于競爭資源而引起的,但又有明顯差別,主要表現在如下幾個方面:()從進程狀態(tài)考慮,死鎖進程都處于等待狀態(tài),忙式等待(處于運行或就緒狀態(tài))的進程并非處于等待狀態(tài),但卻可能被餓死;()死鎖進程等待永遠不會被釋放的資源,餓死進程等待會被釋放但卻不會分配給自己的資源,表現為等待時限沒有上界(排隊等待或忙式等待);0死鎖一定發(fā)生了循環(huán)等待,而餓死則不然。這也表明通過資源分配圖可以檢測死鎖存在及否,但卻不能檢測是否有進程餓死;()死鎖一定涉及多個進程,而饑餓或被餓死的進程可能只有一個。饑餓和餓死及資源分配策略()有關,因而防止饑餓及餓死可從公平性考慮,確保所有進程不被忽視,如分配算法。. 何謂銀行家算法的保守性?舉例說明之.答:銀行家算法的保守性是指銀行家算法只給出了進程需要資源的最大量,而所需資源的具體申請和釋放順序仍是未知的,因而銀行家只能往最壞處設想.例如:書中舉例頁。例。. 能否給出避免死鎖的充要性算法?為什么?答:目前關于避免死鎖的算法,如銀行家算法是充分性算法,即確保系統(tǒng)時刻處于安全狀態(tài),這是在系統(tǒng)已知每個進程所需資源最大量的條件下可以給出的最好結果。如果系統(tǒng)不僅知道每個進程所需資源的最大量,而且知道進程有關資源的活動序列,在這個更強的條件下,則可以給出避免死鎖的充要性算法(讀者可以證明),但其復雜度是很高(完全)的。而且由于程序中分支和循環(huán)的存在,事先給出進程有關資源的命令序列一般是不可能的。.設有一個T型路口,其中、、、處各可容納一輛車,車行方向如下圖所示,試找出死鎖并用有序分配法消除之.要求資源編號合理.解:()方向兩臺車分別位于和;方向一臺車位于;方向一臺車位于。()方向兩臺車分別位于和;方向一臺車位于;方向一臺車位于。設位置資源、、、的編號從低到高依次為、、,管理四個位置的信號量分別為,信號量的初值均為。車輛活動如下:t:直行();按序申請();駛入;:左轉();駛入;():駛入;():左轉();駛入;():駛入;()駛入;();駛出;(); ();駛入;():駛出;(); ();駛入;();駛出;();
.設系統(tǒng)中僅有一個資源類,其中共有個資源實例,使用此類資源的進程個數共有個,它們所需資源最大量總和為E,試證明發(fā)生死鎖的必要條件是£3.答:證明:假定發(fā)生死鎖,那么()()…(),(()表示第進程已分配的資源量)。()()…03。(()表示第進程還需要的資源量)所以,發(fā)生死鎖時,所有進程所需資源的總量3E。. 在銀行家算法中,若出現如下資源分配情況: :試問:()當前狀態(tài)是否安全? 。如果進程提出安全請求口(),系統(tǒng)能否將資源分配給它?說明原因.解:()當前狀態(tài)是安全狀態(tài)。運行安全性檢查算法如下: );; )尋找滿足如下條件的:口并且□?[]; 如果不存在,則轉步驟); ) [];[];轉步驟))如果對于所有,口,則系統(tǒng)處于安全狀態(tài),否則處于不安全狀態(tài)。令 (,,,)運行安全性檢測算法,口并且[]()<,則 口(,,,)(,,,)(,,,);口;口并且口(,,,)4則口(,,,)(,,,)[];□并且[(,,,)<,則 [];□并且口(,,,)<,則口)(,,,);[];□并且口(,,,)〈,則 )(,,,);[]; 可以找到一個安全進程序列<,,,它使,對于所有WW,因而可以斷言系統(tǒng)當前處于安全狀態(tài). 。運行TOC\o"1-5"\h\z銀行家算法,由于口(,,,)£[](,,,),因而請求合法。進一步,口(,,,)£(,,,),故該請求是可以滿足的。假設將資源分配給,則系統(tǒng)狀態(tài)變?yōu)椋? :: : : : 運行安全性檢測算法,(,,,),,此時所有£均不成立,結果[[均為,不存在安全進程序列,系統(tǒng)處于不安全狀態(tài)。系統(tǒng)將取消資源分配并恢復原來狀態(tài),進程等待。.某系統(tǒng)采用死鎖檢測手段發(fā)現死鎖,設系統(tǒng)中資源類集合為{,},資源類中共有個實例,資源類中共有個實例,資源類中共有個實例.又設系統(tǒng)中進程集合為{},某時刻系統(tǒng)狀態(tài)如下: :0在上述狀態(tài)下系統(tǒng)依次接受如下請求:□();[]();[]().給出系統(tǒng)狀態(tài)變化情況,并說明沒有死鎖.答:如果系統(tǒng)只是接受請求,但是沒有分配資源給進程,那么系統(tǒng)狀態(tài)變?yōu)椋?: :::: : 在該狀態(tài)下運行死鎖檢測算法,可以找到一個進程序列《〉,它使,對于所有W近,因而可以斷言系統(tǒng)當前沒有進入死鎖狀態(tài)。0在由()所確定的狀態(tài)下系統(tǒng)接收如下請求:[](),說明此時已發(fā)生死鎖,并找出參及死鎖的進程.答:設在()的狀態(tài)下系統(tǒng)接收如下請求:[]() , 則 系 統(tǒng) 狀 態(tài) 變?yōu)椋?: :::: : 在該狀態(tài)下運行死鎖檢測算法,找不到一個進程序列使,對于所有
WW,因為存在{{?,},使,因而可以斷言系統(tǒng)已經進入死鎖狀態(tài),進程卷入死鎖..設有個簡單資源:、、、。其申請命令分別為、、、、;釋放命令分別為、、、;又設系統(tǒng)中有、、三個進程,其活動分別為: 活動: 活動:活動: 試分析當、、并發(fā)執(zhí)行時,是否有發(fā)生死鎖的可能性,并說明原因。解:不會有發(fā)生死鎖的可能性。 在本題中,進程和都使用的資源集合是{},由于進程在申請之前已經釋放了,不存在占有并且申請的情況,所以進程和之間不滿足死鎖的四個必要條件,不會產生死鎖;進程和都使用的資源集合是{},進程和都是先申請資源,這兩個進程同時申請資源,那么只能有一個進程先獲得,另一個進程將因為得不到而阻塞,獲得的進程將進一步順利獲得資源和,從而運行結束,釋放資源和,喚醒另一個進程運行??梢?,進程和之間不會產生死鎖;進程和都使用的資源集合是{},由于進程在申請之前已經釋放了,不存在占有并且申請的情況,所以進程和之間不滿足死鎖的四個必要條件,不會產生死鎖。綜上所述,當、、并發(fā)執(zhí)行時,沒有發(fā)生死鎖的可能性。第六章存儲管理課后習題答案.考慮下述存儲管理方式中,進程空間和邏輯空間的編址情況:()界地址存儲管理方式,進程空間的首地址;()頁式存儲管理,進程空間的首地址;()段式存儲管理,進程空間各段的首地址;()段頁式存儲管理,進程空間各段的起始地址.答()界地址存儲管理方式,進程空間的首地址從開始編址;0頁式存儲管理,進程空間的首地址從開始編址,而邏輯空間劃分為若干個頁面,每個頁面的起始地址是邏輯頁號乘以頁面大?。唬ǎ┒问酱鎯芾恚M程空間各段的首地址從開始編址;()段頁式存儲管理,進程空間各段的起始地址從開始編址..對于如下存儲管理方式來說,進程地址空間各是幾維的?()頁式;O9()段頁式答。頁式的進程地址空間是一維的()段式的進程地址空間是二維的()段頁式的進程地址空間是二維的.在頁式存儲管理中,頁的劃分對用戶是否可見?在段式樣存儲管理中,段的劃分對用戶是否可見?在段頁式存儲管理中,段的劃分對用戶是否可見?段內頁的劃分對用戶是否可見?答:()在頁式存儲管理中,分頁對于用戶是透明的,一個進程由若干個頁構成,所有頁的長度相同;()在段式存儲管理中,分段對于用戶是可見的,一個進程由若干個段構成,各個段的長度可以不同,一個段恰好對應一個程序單位。()在段頁式存儲管理中,段的劃分對用戶是可見的,段內頁的劃分對用戶是透明的,一個段由若干個頁構成,所有頁的長度相同。.為什么空閑頁面鏈適合管理內存空間,而不適合管理外存空間?答:空閑頁面鏈是將所有的空閑頁面連成一個鏈,分配時可取鏈頭的頁面,去配時可將被釋放的頁面連入鏈頭。此種方法適用于內存頁面的分配,但對于外存頁面的分配因分配和去配均需執(zhí)行一次傳輸,速度較慢。特別是當要申請多個頁面時,需要進行多次傳輸,分配效率太低。
.在某些虛擬頁式存儲管理系統(tǒng)中,內存永遠保持一個空閑頁面,這樣做有什么好處?答:在內存沒有空閑頁架的情況下,需要按照置換算法淘汰一個內存頁架,然后讀入所缺頁面,缺頁進程一般需要等待兩次傳輸時間.若內存總保持一個空閑頁架,當發(fā)生頁故障時,所缺頁面可以被立即調入內存,缺頁進程只需等待一次傳輸時間。讀入后立即淘汰一個內存頁面,此時可能也需執(zhí)行一次傳輸,但對缺頁進程來說不需等待,因而提高了響應速度。.為何引入多級頁表?多級頁表是否影響速度?答:隨著內存空間和進程空間的快速增長,頁表越來越大,單級頁表的存放遇到困難,為此常將頁表分為多級存放,即引入多級頁表。多級頁表會降低地址映射的速度,但通過快表可以將效率保持在合理的范疇內。.及傳統(tǒng)頁表相比,倒置頁表有什么優(yōu)勢?答:傳統(tǒng)頁表是面向進程虛擬空間的,即對應進程的每個邏輯頁面設置一個表項,當進程的地址空間很大時,頁表需占用很多的存儲空間,造成浪費.及經典頁表不同,反置頁表是面向內存物理頁架的,即對應內存的每個物理架設置一個表項,表項的序號就是物理頁架號,表項的內容則為進程標識及邏輯頁號的有序對.系統(tǒng)只需設置一個反置頁表,為所有進程所共用..允許進程空間邏輯頁號不連續(xù)帶來的好處是什么?答:可以給同一進程內的多個線程預留足夠的??臻g,而又不浪費實際內存頁架..比較段式存儲管理及頁式存儲管理的優(yōu)點和缺點.答:頁式存儲管理優(yōu)缺點:()靜態(tài)等長存儲分配簡單,有效地解決了內存碎片問題;()共享和保護不夠方便。段式存儲管理優(yōu)缺點:0動態(tài)異長存儲分配復雜,存在碎片問題;()共享及保護方便;()可以實現動態(tài)鏈接和動態(tài)擴展。.舉例說明段長動態(tài)增長的實際意義.答:允許段長動態(tài)增長對于那些需要不斷增加或改變新數據或子程序的段來說很有好處。例如,分配給進程的棧空間大小,通常預先無法準確估計,若分配過少可能不夠用,分配過多則造成浪費。在棧可以動態(tài)增長的情況下,系統(tǒng)開始可以為進程分配一個基本長度的??臻g,這個長度浪費很小。若進程運行時發(fā)生棧溢出,通過中斷可以進行動態(tài)擴展。.在段式存儲管理中,段的長度可否大于內存的長度?在段頁式存儲管理中呢?答:在段式存儲管理中,段的長度不能大于內存的長度,因為一個獨立的段占用一段連續(xù)的內存空間,內存分配是以段為單位進行的,如果一個段的長度大于內存的長度,那么該段將無法調入內存。在段頁式存儲管理中,段的長度可以大于內存的長度。因為內存分配的單位是頁,一個段內邏輯上連續(xù)的頁面,可以分配到不連續(xù)的內存頁面中,不要求一個段的所有邏輯頁都進入內存。.共享段表的用途何在?答:共享段表的用途主要有如下兩個:()用來尋找共享段:根據進程首次訪問某段的名稱在共享段表中查找,可以得知該段是否已在內存;()確保一個共享段只有一組描述信息:共享段的地址、長度等信息在共享段表中僅記錄一次,防止在多個進程段表中重復登記所帶來的維護困難。共享段表用來實現段的共享和保護,該表中記錄所有共享段。多個進程共享同一段時,這些進程段表中的相應表目指向共享段表中的同一個表目..具有兩級頁表的頁式存儲管理及段頁式存儲管理有何差別?答:具有兩級頁表的頁式存儲管理的地址空間依然是一維的,頁的劃分對于進程來說是透明的。而段頁式存儲管理的地址空間是二維的,段的劃分用戶能感覺到。.何謂請調?何謂預調?為何在預調系統(tǒng)中必須輔以請調?答:..段的動態(tài)連接給共享帶來什么問題?如何解決?答:動態(tài)連接提高了系統(tǒng)的效率,但也帶來一些問題,主要是對于段共享的影響。代碼段共享的必要條件是該段在運行過程中不修改自身,即要求是“純代碼”(),而動態(tài)連接需要修改連接字,這及共享的要求相矛盾。解決這個問題的一種方法是將代碼段分為“純段”和“雜段”兩個部分,即將連接字等可修改的內容存放在“雜段”中,而將其它內容放在“純段”中?!半s段”不共享,“純段”可共享。.在虛擬段頁式存儲管理中,考慮段的共享及段長度的動態(tài)變化,連接中斷如何處理?答:由段名查本進程的段名一段號對照表及共享段表,經判斷可分為如下三種情形:()所有進程都未連接過(共享段表、段名段號對照表均無):查文件目錄找到該段;為該段建立頁表,將該段由文件全部讀入空間,部分讀入內存,填寫頁表;為該段分配段號,填寫段名段號對照表;如該段可共享,填寫共享段表,共享記數置;填寫段表;根據段號及段內地址形成無障礙指示位的一般間接地址。0其它進程連接過但本進程未連接過(共享段表有,段名段號對照表無):為該段分配段號;填寫段名段號對照表,填寫段表(指向共享段表),共享段表中共享記數加;根據段號及段內地址形成無障礙指示位的一般間接地址。()本進程已連接過(共享段表無,段名段號對照表有):根據段號及段內地址形成無障礙指示位的一般間接地址。這里,段內地址由兩部分構成,即邏輯頁號和頁內地址。第七章文件系統(tǒng).舉例說明何種文件長度是固定不變的,何種文件長度是動態(tài)變化的。答:某些系統(tǒng)可執(zhí)行程序,如、的長度通常是固定不變的;而用戶正在編輯的文本文件或源代碼文件的長度通常是動態(tài)變化的。.比較文件名、文件號、文件描述符之間的關系。答:文件名是文件的外部名字,通常是一個符號名(字符串),同一文件可以有多個文件名(如通過)。文件號是文件的內部名字,通常是一個整數,文件號及文件具有一對一的關系。文件描述符是文件打開時返回的整數(入口地址),對應用戶打開文件表(如中的)中的一個入口。同一文件可以被多個用戶同時打開,此時返回的文件描述符一般不同。同一文件也可以被同一用戶
多次打開,每次打開時返回的文件描述符一般也不同。.將文件控制塊被分為兩部分有何好處?此時目錄項中包含那些成分?答:將文件的劃分為次部和主部兩部分具有如下兩個主要的優(yōu)點:()提高查找速度:查找文件時,需用欲查找的文件名及文件目錄中的文件名字相比較。文件目錄是存于外存的,需要以塊為單位將其讀入內存。由于一個包括許多信息,一個外存塊中所能保存的個數較少,這樣查找速度較慢。將分為兩部分之后,文件目錄中僅保存的次部,一個外存塊中可容納較多的,從而大大地提高了文件的檢索速度。0實現文件連接:所謂連接就是給文件起多個名字,這些名字都是路徑名,可為不同的用戶所使用。次部僅包括一個文件名字和一個標識文件主部的文件號,主部則包括除文件名字之外的所有信息和一個標識該主部及多少個次部相對應的連接計數。當連接計數的值為時,表示一個空閑未用的主部。.文件在使用之前為何需要打開?多個進程共享同一文件時,其為何在內存中只能保持一個副本?答:由于文件目錄和文件一起存放在外存上,當存取文件時,必須先到外存中讀取文件目錄信息,從中得獲得文件的存放地址,然后再去存取文件。這樣一來,文件信息的存取將花費很多時間。如果將整個文件目錄放入內存,又要占用很大內存空間,不可取。所以,文件在使用之前需要打開,目的是將系統(tǒng)中當前使用的文件的有關信息復制到系統(tǒng)打開表、用戶打開文件表中,以建立用戶和這個文件的聯(lián)系。多個進程共享同一文件,即各自的用戶打開文件表目對應系統(tǒng)打開文件表中的同一入口處。在系統(tǒng)打開文件表的這一入口處的表目存放的唯一的主部的信息,即文件號、共享計數、修改標志。這樣做的好處是在內存中只有一個副本,當任何一個進程對文件的操作導致內容變化時,內存中的內容及時得到更新,當所有進程都不再需要該文件時,即當最后一個進程關閉該文件時,才將的內容回寫到外存上。這樣做可以減少交換次數,提高系統(tǒng)效率。若在系統(tǒng)打開文件表中又存在該文件的的另一副本,不但占用內存空間,另外無法更好實現多個進程共享同一文件。.使用文件描述符存取打開文件及直接使用文件名相比有何優(yōu)點?答:首先,文件名是一個字符串,操作速度慢且占空間大,而文件描述符為一整數,其處理效率明顯高于字符串。其次,文件被打開后其控制信息()被緩沖到內存系統(tǒng)空間,文件描述符作為用戶打開文件表中的入口地址直接及內存建立起聯(lián)系,而文件名無法做到這一點。.用戶打開文件表中包含那些內容?為何不能將其合并到系統(tǒng)打開表中?答:用戶打開文件表中包含以下內容:文件描述符 打開方式 讀寫指針 系統(tǒng)打開文件表入口由于文件是可共享的,多個進程可能會同時打開同一文件,而其打開方式可能是不同的,當前的讀寫位置通常也是不一樣的。如果將這些信息合并到系統(tǒng)打開文件表中,就會導致一個共享文件占用多個系統(tǒng)打開文件表表目,這些表目的大部分內容是重復的。當一個進程對文件的操作導致內容變化時,該進程關閉文件時就要將回寫到外存。增加了內外存?zhèn)鬏數拇螖担踩菀讓е聝热莸牟灰恢?。因此,通常將打開方式和讀寫指針記錄在另外一個表,即用戶打開文件表中。.說明對于如下文件操作命令,文件管理系統(tǒng)如何進行合法性檢查。。打開文件O讀寫文件()刪除文件答:()打開文件:根據打開方式、共享說明和用戶身份檢查訪問合法性;()讀寫文件:根據用戶打開文件表中所記錄的
打開方式和存取方式核查訪問的合法性;()刪除文件:根據共享說明和用戶身份檢查訪問合法性。.采用文件連接技術后,文件名及文件是否一對一?文件號及文件是否一對一?文件描述符及文件是否一對一?答:文件名及文件是多對一。文件號及文件是一對一。文件描述符及文件是多對一。.對于文件結構,回答下述順序探查法解決沖突方面的問題。()對于一個非空閑記錄來說,其鍵值的雜湊值()是否一定及該記錄地址相同?()當一記錄的沖突記數為時,該記錄是否一定空閑?()當一記錄空閑時,該記錄的沖突記數是否一定為?答()不一定,當前面記錄發(fā)生沖突時,可能在順序探查時占用本記錄。()不一定,可能存放沖突的記錄。()不一定,本記錄被刪除后,仍可能有其它記錄其()為本記錄入口地址。.何謂文件連接?如何實現文件連接?答:文件連接就是給文件起多個名字,這些名字都是路徑名,可為不同的用戶所使用。實現文件連接時,要根據已存在的文件路徑名查找目錄,得到被連接文件的文件號,將該文件號及欲連接的文件名字合起來構成一個新的目錄項,并填入到欲連接文件路徑第八章設備管理課后習題答案.簡略敘述操作的演變過程:查詢方式一中斷方式f通道方式,并分析對于多道程序設計所帶來的影響.答:操作最早為查詢方式,將待傳輸的數據放入寄存器并啟動設備,然后反復測試設備狀態(tài)寄存器直至完成。采用這種方式,處理機及設備之間是完全串行的。伴隨設備中斷處理機的能力,產生了中斷方式。在啟動設備后,可從事其它計算工作,設備及并行,當設備操作完成時,向發(fā)送中斷信號,處理機轉去進行相應處理,然后可能再次啟動設備傳輸。中斷使多道程序設計成為可能:一方面中斷使操作系統(tǒng)能夠獲得處理機控制權,另一方面通過中斷可以實現進程狀態(tài)的轉換。中斷使處理機及設備之間的并行成為可能,但操作通常以字節(jié)為單位,當設備很多時對處理機打擾很多,為此人們設計了專門處理傳輸的處理機一通道。通道具有自己的指令系統(tǒng),可以編寫通道程序,一個通道程序可以控制完成許多傳輸,只在通道程序結束時,才向處理機發(fā)生一次中斷。.通道及之間有何共同點?有何差別?答:相同點:都以內存為中心;支持塊傳輸。二者差別在于:通道控制器具有自己的指令系統(tǒng),一個通道程序可以控制完成任意復雜的傳輸,而并沒有指令系統(tǒng),一次只能完成一個數據塊傳輸。.下述設備的物理地址各是幾維的?為什么在操作之前通常使用一維地址?一維地址及多維地址之間的對應關系是由硬件確定的,還是由操作系統(tǒng)確定的?()磁盤組0磁帶()光盤答:0磁盤組的物理地址是三維的0磁帶的物理地址是一維的()光盤的物理地址是二維的。為了屏蔽設備的具體特性,在操作之前通常使用一維地址,一維地址及三維地址之間的對應關系通常由操作系統(tǒng)設計者來確定
.磁帶機為何不適合用作共享型設備?答:磁帶機屬于啟停型設備,即使用時開啟,不用時停止。用來記錄信息的磁帶一般很長,磁帶上塊號順序編址,塊的隨機定位涉及磁帶的機械運動,速度很慢,隨機訪問不連續(xù)的磁帶塊會造成較大的時間開銷,這決定磁帶屬于順序訪問設備。順序訪問設備不適合用作共享型設備。.在下述三種類型通道中,哪種類型支持通道程序的并發(fā)執(zhí)行? ()字節(jié)多路通道0數據選擇通道()數組多路通道答:()字節(jié)多路通道():通道中含有許多非分配型子通道,每個子通道所連接的設備以字節(jié)為單位,分時間地及通道交換數據,主要用于連接低速設備,通道程序可以并發(fā)執(zhí)行。()數組選擇通道():其所連的設備是以塊為單位及通道交換數據。用于連接多臺高速設備,但其中只有一個分配型子通道,在一段時間內只能執(zhí)行一道通道程序。()數組多路通道():所連外部設備以塊為單位及通道交換數據。用于連接多臺高速設備,允許幾個通道程序分時并行工作。.用戶申請獨占型設備為何不指定具體設備,而僅指定設備類別?答:.為何不允許用戶程序直接執(zhí)行設備驅動指令?答:0系統(tǒng)中的設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東滕州市八年級政治上冊 第1單元 讓愛駐我家 第2課 我們共有一個家教學實錄與檢測 魯教版
- 達州市通川區(qū)楊家溝煤業(yè)有限公司楊家溝煤礦礦山地質環(huán)境保護與土地復墾方案情況
- 四川化工職業(yè)技術學院
- 肝膿腫護理相關知識
- 【人教PEP版英語四年級下冊】期中測試卷6
- 人教版小學四年級語文下冊2024-2025學年度第二學期第一單元質量檢測試卷含參考答案
- 人教版小學四年級語文下冊2024-2025學年度第二學期第八單元質量檢測試卷
- 第5單元 第14課 新年賀卡-綜合制作-教學設計2023-2024學年清華大學版(2012)初中信息技術八年級上冊001
- 網絡安全運維專家簡歷
- 安徽省部分地市2024-2025學年高三下學期2月聯(lián)合考試物理試題(解析版)
- 2025年懷化職業(yè)技術學院單招職業(yè)技能測試題庫必考題
- 2025年第六屆(中小學組)國家版圖知識競賽測試題庫及答案
- 2025年中國床墊機械行業(yè)市場發(fā)展監(jiān)測及投資戰(zhàn)略咨詢報告
- C小學一起諾如病毒胃腸炎疫情的調查與處置課件
- 2025年鎵礦采選項目投資可行性研究分析報告
- 歐泰科-吊掛軟件使用教程
- 公安局網安大隊工作總結
- 2025年裝備制造創(chuàng)新中心北京石油機械有限公司招聘筆試參考題庫附帶答案詳解
- 教科版六年級下冊科學全冊教學設計教案
- 2025年哈爾濱鐵道職業(yè)技術學院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 病理學與病理生理學考試題
評論
0/150
提交評論