




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE1.1在多道程序和分時環境中,多個用戶同時共享一個系統,這種情況導致多種安全問題。a.列出此類的問題b.在一個分時機器中,能否確保像在專用機器上一樣的安全度?并解釋之。Answer:a.竊取或者復制某用戶的程序或數據;沒有合理的預算來使用資源(CPU,內存,磁盤空間,外圍設備)b.應該不行,因為人類設計的任何保護機制都會不可避免的被另外的人所破譯,而且很自信的認為程序本身的實現是正確的是一件困難的事。1.2資源的利用問題在各種各樣的操作系統中出現。試例舉在下列的環境中哪種資源必須被嚴格的管理。(a)大型電腦或迷你電腦系統(b)與服務器相聯的工作站(c)手持電腦Answer:(a)大型電腦或迷你電腦系統:內存和CPU資源,外存,網絡帶寬(b)與服務器相聯的工作站:內存和CPU資源(c)手持電腦:功率消耗,內存資源1.3在什么情況下一個用戶使用一個分時系統比使用一臺個人計算機或單用戶工作站更好?Answer:當另外使用分時系統的用戶較少時,任務十分巨大,硬件速度很快,分時系統有意義。充分利用該系統可以對用戶的問題產生影響。比起個人電腦,問題可以被更快的解決。還有一種可能發生的情況是在同一時間有許多另外的用戶在同一時間使用資源。當作業足夠小,且能在個人計算機上合理的運行時,以及當個人計算機的性能能夠充分的運行程序來達到用戶的滿意時,個人計算機是最好的,。1.4在下面舉出的三個功能中,哪個功能在下列兩種環境下,(a)手持裝置(b)實時系統需要操作系統的支持?(a)批處理程序(b)虛擬存儲器(c)分時Answer:對于實時系統來說,操作系統需要以一種公平的方式支持虛擬存儲器和分時系統。對于手持系統,操作系統需要提供虛擬存儲器,但是不需要提供分時系統。批處理程序在兩種環境中都是非必需的。1.5描述對稱多處理(SMP)和非對稱多處理之間的區別。多處理系統的三個優點和一個缺點?Answer:SMP意味著所以處理器都對等,而且I/O可以在任何處理器上運行。非對稱多處理有一個主處理器控制系統,與剩下的處理器是隨從關系。主處理器為從處理器安排工作,而且I/O也只在主處理器上運行。多處理器系統能比單處理器系統節省資金,這是因為他們能共享外設,大容量存儲和電源供給。它們可以更快速的運行程序和增加可靠性。多處理器系統能比單處理器系統在軟、硬件上也更復雜(增加計算量、規模經濟、增加可靠性)1.6集群系統與多道程序系統的區別是什么?兩臺機器屬于一個集群來協作提供一個高可靠性的服務器的要求是什么?Answer:集群系統是由多個計算機耦合成單一系統并分布于整個集群來完成計算任務。另一方面,多道程序系統可以被看做是一個有多個CPU組成的單一的物理實體。集群系統的耦合度比多道程序系統的要低。集群系統通過消息進行通信,而多道程序系統是通過共享的存儲空間。為了兩臺處理器提供較高的可靠性服務,兩臺機器上的狀態必須被復制,并且要持續的更新。當一臺處理器出現故障時,另一臺處理器能夠接管故障處理的功能。1.7試區分分布式系統(distributesystem)的客戶機-服務器(client-server)模型與對等系統(peer-to-peer)模型Answer:客戶機-服務器(client-server)模型可以由客戶機和服務器的角色被區分。在這種模型下,客戶機向服務器發出請求,然后服務器滿足這種請求。對等系統(peer-to-peer)模型沒有這種嚴格的區分角色,。實際上,在系統中的所有結點被看做是對等的,而且這些結點既可以是客戶機也可以是服務器,或者兩這都是。也許一個結點從另一個對等結點上請求一個服務,或者,這個結點滿足在系統中的另一個結點的請求。比如,一個系統中的結點共享烹飪方法。在客戶機-服務器(client-server)模型下,所有方法都被存儲在服務器上。如果一個客戶機想要獲得烹飪方法,它必須向那臺服務器發出請求。在對等系統(peer-to-peer)模型下,一個結點可以向另外的結點請求指定的烹飪方法。存儲了這種烹飪方法的那個結點(或幾個結點)可以把烹飪的方法提供給發出請求的結點。注意每個對等結點既可以扮演客戶機(發出請求),也可以扮演服務器(提供請求)。1.8如果一個由兩個結點組成的集群系統正在運行一個數據庫,試描述集群軟件可以用哪兩種方法管理存取磁盤的數據,并說明每種方法的優點和缺點。Answer:兩種方法:非對稱集群系統(asymmetricclustering)和并行集群系統(parallelclustering).對于非對稱集群系統,一個主機運行這個數據庫,而其它主機只是監測這個數據庫。如果服務器出現故障,進行監測的主機就會轉變成運行這個數據庫的主機。這是提供適當的冗余。然而,它沒有利用具有潛在處理能力的主機。對于并行集群系統,數據庫可以在兩個并行的主機上運行。在并行集群系統上實現的困難是提供一些分布式鎖機制給共享磁盤上的文件。1.9網絡計算機是怎樣不同與傳統的個人計算機的?試取出一些使用網絡計算機的好處的方案。Answer:網絡計算機是基于一臺核心的計算機作為其服務器。同時,它也具有一個最小化的操作系統來管理這些資源。另一方面,個人計算機必須在不依賴于核心計算機的基礎上,能夠獨立提供所有被請求的功能。在行政花費太高以及共享導致更高效的使用資源的情景下是精確的,在這些環境中網絡計算機是理想的。1.10中斷(interupt)的目的是什么?陷阱(trap)與中斷的區別是什么?陷阱可以被用戶程序(userprogram)有意地的產生嗎?如果可以,那目的是什么?Answer:中斷是一種在系統內硬件產生的流量變化。中斷操作裝置是用來處理中斷請求;然后返回控制中斷的上下文和指令。陷阱是軟件產生的中斷。中斷可以被用來標志I/O的完成,從而排除設備投票站(devicepolling)的需要。陷阱可以被用來調用操作系統的程序或者捕捉到算術錯誤。1.11內存存儲是被用于高速的I/O設備,其目的是為了避免增加CPU的過度運行。(a)設備的CPU接口是怎樣與轉換器(transfer)協作的?(b)當內存操作完全時,CPU是怎么知道的?(c)當DMA控制器正在轉換數據時,CPU是被允許運行其它程序的。這種進程與用戶程序的運行沖突嗎?如果沖突的話,試描述可能引起哪種沖突?Answer:CPU可以通過寫數據到可以被設備獨立存儲的寄存器中來啟動DMA操作。當設備接收到來自CPU的命令時,啟動響應的操作。當設備完成此操作時,就中斷CPU來說明操作已經完成。設備和CPU都可以被內存同時訪問。內存控制器對這兩個實體以公平的方式給內存總線提供存取。CPU可能不能同時以很快的速度配給給內存操作,因為它必須去競爭設備而使得自己存取到內存總線中去。1.12一些計算機系統沒有在硬件中提供個人模式(privilegedmode)。對于這種計算機系統來說,可能構成安全的操作系統嗎?對可能和不可能兩種情況分別給出理由。Answer:一種類型處理器的操作系統需要在任何時候都被控制(或監測模式)。有兩種方法可以完成這個操作:a.所有用戶程序的軟件翻譯(像一些BASIC,Java,LISPsystems)。在軟件中,軟件解釋程序能夠提供硬件所不能提供的。b.要求所有程序都用高級語言編寫,以便于所以目標代碼都被編譯出來。編譯器將會產生硬件忽略的防護性檢查(in-line或功能調用)。1.13給出緩存(caches)十分有用的兩個理由。他們解決了什么問題?他們引起了什么問題?如果緩存可以被做成裝備想要緩存的容量(例如,緩存像磁盤那么大),為什么不把它做的那么大,其限制的原因是什么?Answer:當兩個或者更多的部件需要交換數據,以及組成部件以不同的速度完成轉換時,緩存是十分有用的。緩存通過在個組成部件之間提供一個中間速度的緩沖區來解決轉換問題。如果速度較快的設備在緩存中發現它所要的數據,它就不需要再等待速度較慢的設備了。緩存中的數據必須與組成部件中的要一致。如果一個組成部件中的數據值改變了,緩存中的這個數據也必須更新。在多進程系統中,當有不止一個進程可能進入同一個數據時,這就成了一個顯著的問題。一個組成部件將會被一個同等大小的組成部件所消除,但是只有當;(a)緩存和組成部件有相同狀態存儲能力(也就是,當斷電的時候,組成部件還能保存它的數據,緩存也一樣能保存它的數據),(b)緩存是可以負擔的起的,因為速度更快的存儲器意味著更高的價格。1.14試舉例說明在下列的進程環境中,快速緩沖貯存區的數據保持連貫性的問題是怎樣表明的?(a)單道程序系統(Single-processorsystems)(b)多道程序系統(Mulitiprocessorsystems)(c)分布式系統(Distributesystems)Answer:在單道程序系統(Single-processorsystems)中,當一個進程發布更新給快速緩沖貯存區的數據時,內存需要被更新。這些更新一種快速的或緩慢的方式執行。在多道程序系統(Mulitiprocessorsystems)中,不同的進程或許在它的本地存儲上存儲相同的內存位置。當更新發生時,其它存儲的位置需要使其無效或更新。在分布式系統(Distributesystems)中,快速存儲區數據的協調不是問題,然而,當客戶機存儲文件數據時,協調問題就會被提及。1.15試描述一個機器裝置為了阻止一個程序避免修改與其它程序有聯系的內存而執行內存保護。Answer:處理器可以追蹤哪個位置是與每個進程相聯系的以及限制進入一個程序的范圍的外面位置。信息與一個程序的內存范圍有關,它可以通過使用庫,限制寄存器和對每個進入內存的信息執行檢查來維持其本身。1.16哪種網絡結構最適合下列環境:(a)一個寢室樓層(b)一個大學校園(c)一個州(d)一個國家。Answer:(a)一個寢室樓層:ALAN(b)一個大學校園:ALAN,possiblyaWANforaverylargecampuses.(c)一個州:AWAN(d)一個國家:AWAN1.17列出下列操作系統的基本特點:a.批處理b.交互式c.分時d.實時e.網絡f.并行式g.分布式h.集群式i.手持式Answer:a.批處理:具有相似需求的作業被成批的集合起來,并把它們作為一個整體通過一個操作員或自動作業程序裝置運行通過計算機。通過緩沖區,線下操作,后臺和多道程序,運用嘗試保持CPU和I/O一直繁忙,從而使得性能被提高。批處理系統對于運行那些需要較少互動的大型作業十分適用。它們可以被更遲地提交或獲得。b.交互式:這種系統由許多短期交易構成,并且下一個交易的結果是無法預知的。從用戶提交到等待結果的響應時間應該是比較短的,通常為1秒左右。c.分時:這種系統使用CPU調度和多道程序來經濟的提供一個系統的人機通信功能。CPU從一個用戶快速切換到另一個用戶。以每個程序從終端機中讀取它的下一個控制卡,并且把輸出的信息正確快速的輸出到顯示器上來替代用soopledcardimages定義的作業。d.實時:經常用于專門的用途。這個系統從感應器上讀取數據,而且必須在嚴格的時間內做出響應以保證正確的性能。e.網絡:提供給操作系統一個特征,使得其進入網絡,比如;文件共享。f.并行式:每一個處理器都運行同一個操作系統的拷貝。這些拷貝通過系統總線進行通信。g.分布式:這種系統在幾個物理處理器中分布式計算,處理器不共享內存或時鐘。每個處理器都有它各自的本地存儲器。它們通過各種通信線路在進行通信,比如:一條高速的總線或一個本地的網絡。h.集群式:集群系統是由多個計算機耦合成單一系統并分布于整個集群來完成計算任務。i.手持式:一種可以完成像記事本,email和網頁瀏覽等簡單任務的小型計算機系統。手持系統與傳統的臺式機的區別是更小的內存和屏幕以及更慢的處理能力。1.18手持計算機中固有的折中屬性有哪些?Answer:手提電腦比傳統的臺式PC機要小的多。這是由于手提電腦比臺式PC機具有更小的內存,更小的屏幕,更慢的處理能力的結果。因為這些限制,大多數現在的手提只能完成基本的任務,比如:記事本,email和簡單的文字處理。然而,由于它們較小的外形,而十分便于攜帶,而且當它們具備無線上網時,就可以提供遠程的email通信和上網功能。2.1操作系統提供的服務和功能可以分為兩個類別。簡單的描述一下這兩個類別并討論他們的不同點。Answer:第一種操作系統提供的服務是用來保護在系統中同時運行的不同進程。進程只被允許獲得與它們地址空間有聯系的內存位置。同樣,進程不允許破壞和其他用戶有關的文件。一個進程同樣不允許在沒有操作系統的干預下直接進入設備。第二種服務由操作系統提供的服務是提供一種新的功能,而這種功能并不直接被底層的硬件支持。虛擬存儲器和文件系統就是由操作系統提供的這種新服務的實例。2.2列出操作系統提供的五項服務。說明每項服務如何給用戶提供便利。說明在哪些情況下用戶級程序不能夠提夠這些服務。Answer:a.文件執行.操作系統一個文件的目錄(或章節)裝入到內存并運行。一個用戶程序不能被信任,妥善分配CPU時間。b.I/O操作.磁盤,磁帶,串行線,和其他裝置必須在一個非常低的水平下進行通信。用戶只需要指定裝置和操作執行要求,然后該系統的要求轉換成裝置或控制器的具體命令.用戶級程序不能被信任只在他們應該獲得時獲得裝置和只使用那些未被使用的裝置。c.文件系統操作.在文件創建、刪除、分配和命名時有許多細節是用戶不能執行的。磁盤空間塊被文件所使用并被跟蹤。刪除一個文件需要清除這個文件的信息和釋放被分派給這個文件的空間。用戶程序不僅不能夠保證保護方法的有效實施,也不能夠被信任只會分配空閑的空間和在刪除文件是清空空間。d.通信.信息在系統間交換要求信息轉換成信息包,送到網絡控制器中,通過通信媒介進行傳播,并由目的地系統重新組裝。信息包調整和數據修改是一定會發生的。此外,用戶程序也許不能夠協調網絡裝置的取得,或者接收完全不同的其他進程的信息包。e.錯誤檢測.錯誤檢測在硬件和軟件水平下都會發生。在硬件水平下,所有數據轉移都必須仔細檢查以確保數據在運送中不會被破壞。在媒介中的所有數據都必須被檢查以確保他們在寫入媒介時沒有被改變。在軟件水平下,為了數據,媒介不需不間斷的被檢查。例如,確保信息存儲中被分配和還未被分配的空間塊的數量和裝置中所有塊的數量的一致。進程獨立經常有錯誤(例如,磁盤中數據的破壞),所以必須有一個統籌的程序(操作系統)來處理各種錯誤。同樣,錯誤經過操作系統的處理,在一個系統中程序不再需要包含匹配和改正所遇可能錯誤的代碼。2.3討論向操作系統傳遞參數的三個主要的方法。Answer:1.通過寄存器來傳遞參數2.寄存器傳遞參數塊的首地址3.參數通過程序存放或壓進堆棧中,并通過操作系統彈出堆棧。2.4描述你怎樣能夠統計到一個程序運行其不同部分代碼時,它的時間花費數量的數據圖表,并說明它的重要性。Answer:一個能夠發布定期計時器打斷和監控正在運行的命令或代碼段當中斷被進行時。一個滿意的配置文件,其中的代碼塊都應積極覆著被程序在代碼的不同的部分花費時間。一旦這個配置文件被獲得,程序員可以盡可能的優化那些消耗大量CPU資源的代碼段。2.5操作系統關于文件管理的五個主要活動是什么?Answer:1.創建和刪除文件2.創建和刪除目錄3.提供操作文件和目錄的原語的支持4.將文件映射到二級存儲器上5.在穩定(非易失的)的存儲媒介上備份文件。2.6在設備和文件操作上用相同的系統調用接口的好處與不足是什么?Answer:每一個設備都可以被得到只要它是一個在文件系統的文件。因此大多數內核通過文件接口處理設備,這樣相對容易,加一個新的設備通過執行硬件確定代碼來支持這種抽象的文件接口。因此,這種方式不僅有利于用戶程序代碼的發展,用戶程序代碼可以被寫入設備和文件用相同的方式,還有利于設備驅動程序代碼,設備驅動程序代碼可以書面支持規范定義的API.使用相同接口的缺點是很難獲得某些設備檔案存取的API范圍內的功能,因此,結果或者是丟失功能或者是丟失性能。但有些能夠被克服通過使用ioctl操作,這個操作為了進程在設備上援引操作提供一個通用接口。2.7命令解釋器的用途是什么?為什么它經常與內核是分開的?用戶有可能通過使用由操作系統提供的系統調用接口發展一個新的命令解釋器?Answer:命令解釋器從用戶或文件中讀取命令并執行,一般而言把他們轉化成系統調用。它通常是不屬于內核,因為命令解釋會有所變動。用戶能夠利用由操作系統提供的系統調用接口開發新的命令解釋器。這命令解釋器允許用戶創建、管理進程和確定它們通信的方法(例如通過管道和文件)。所有的功能都被用戶程序通過系統調用來使用,這個也可能有用戶開發一個新的命令行解釋。2.8通信的兩種模式是什么?這兩種模式的優點和缺點是什么?Answer:通信的兩種模式是1)共享內存,2)消息傳遞。這兩種模式的最基本的不同是在它們的性能上。一個內存共享塊是通過系統調用創建的。然而,一旦內存共享塊在兩個或更多的進程間建立,這些進程可以借助內存共享塊來通信,不再需要內核的協助。另一方面,當send()和receive()操作被調用時,信息傳遞通常包含系統調用。因此,因為內核是直接的包含在進程間通信的,一般而言,它的影響比內存共享小。然而,消息傳遞可以用作同步機制來處理通信進程間的行動。也就是說,send()和receive()段可以用來協調兩個通信進程的動作。另一方面,內存共享沒有提供這種同步機制的進程。2.9為什么要把機制和策略區分開來?Answer:機制和策略必須區分開來,來保證系統能夠被很容易的修改。沒有兩個系統的裝置是完全相同的,所以每一個裝置都想要把操作系統改為適合自己的。當機制和政策分開時,政策可以隨意的改變但機制還是不能改變。這種安排提供了一個更靈活的制度2.10為什么Java提供了從Java程序調用由C或C++編寫的本地方法的能力?舉出一個本地方法有用的例子。Answer:Java程序的開發是用來作為I/O獨立的平臺。因此,這種語言沒有提供途徑給許多特殊的系統資源,例如從I/O設備讀取。為了運行一個系統特定的I/O操作,你必須用一種支持這些特性的語言(例如C或C++)寫。記住一個Java程序調用由另外一種語言編寫的本地方法寫將不再結構中立。2.11有時獲得一個分層方法是有困難的如果操作系統的兩個部件相互依存。識別一個方案,在這個方案中并不非常清楚如何為兩個作用緊密相連的系統部件分層。Answer:虛擬內存子系統和存儲子系統通常是緊密耦合,并由于以下的相互作用需要精心設計的層次系統。許多系統允許文件被映射到一個執行進程的虛擬內存空間。另一方面,虛擬內存子系統通常使用存儲系統來提供當前不在內存中的頁。此外,在刷新磁盤之前,更新的文件有時會緩沖到物理內存,從而需要認真協調使用的內存之間的虛擬內存子系統和文件系統。2.12采用微內核方法來設計系統的主要優點是什么?在微內核中如何使客戶程序和系統服務相互作用?微內核方法的缺點是什么?Answer:優點主要包括以下幾點:a)增加一個新的服務不需要修改內核b)在用戶模式中比在內核模式中更安全、更易操作c)一個簡單的內核設計和功能一般導致一個更可靠的操作系統用戶程序和系統服務通過使用進程件的通信機制在微內核中相互作用,例如發送消息。這些消息由操作系統運送。微內核最主要的缺點是與進程間通信的過度聯系和為了保證用戶程序和系統服務相互作用而頻繁使用操作系統的消息傳遞功能。2.13模塊化內核方法的什么方式與分層方法相似?什么方式與分層方法不同?Answer:模塊化內核方法要求子系統通過創建的一般而言狹隘(從功能方面來說是揭露外部模塊)的接口來相互作用。分層內核方法在細節上與分層方法相似。但是,分層內核必須要是有嚴格排序的子系統,這樣的子系統在較低層次中不允許援引業務相應的上層子系統。在模塊化內核方法中沒有太多的限制,模式在哪方面是隨意援引彼此的是沒有任何約束的。2.14操作系統設計員采用虛擬機結構的主要優點是什么?對用戶來說主要有什么好處?Answer:系統是容易被調試的,此外,安全問題也是容易解決的。虛擬機同樣為運作體系提供了一個很好的平臺,因為許多不同的操作系統只可以在一個物理系統中運行。2.15為什么說一個JIT編譯器對執行一個Java程序是有用的?Answer:Java是一種解釋語言。這就意味著Java虛擬機一次解釋一個字節代碼。一般來說,絕大多數解釋環境是比運行本地二進制慢,因為解釋進程要求把每一個命令轉化為本地機器代碼。一個JIT編譯器把字節代碼轉換成本地機器代碼,第一次這種方法是偶然碰到的。這就意味著Java程序作為一個本地用途(當然,JIT的這種轉換過程是要花費時間的,但并沒有像字節代碼花費的這么多)是非常重要的一種運行方式。此外,JIT存儲器編譯代碼以便能夠在下一次需要時使用。一個是被JIT運行的而不是傳統的一般的解釋運行的Java程序是非??斓?。2.16在一個系統(例如VWware)中,來賓作業系統和主機操作系統的關系是什么?在選擇主機操作系統時哪些因素需要考慮?Answer:一個來賓作業系統提供它的服務通過映射到有主機操作系統提供的功能上。一個主要的事情需要被考慮,為了能夠支持與來賓作業系統相聯系的功能,選擇的主機操作系統,從系統調用接口而言,是否足夠一般。2.17實驗性的綜合操作系統在內核里有一個匯編器。為了優化系統調用的性能,內核通過在內核空間內匯編程序來縮短系統調用在內核必須經過的途徑。這是一種與分層設計相對立的方法,經過內核的途徑在這種設計中被延伸了,使操作系統的構造更加容易。分別從支持和反對的角度來綜合設計方式對討論這種內核設計和系統性能優化的影響。Answer:綜合是令人欽佩的由于這種性能通過即時復雜化取得了成功。不幸的是,由于代碼的流動很難在內核中調試問題。這種復雜化是系統的詳細的表現,讓綜合很難port(一個新的編譯器必須寫入每一種架構)。3.1論述短期,中期和長期調度之間的區別.Answer:a.短期調度:在內存作業中選擇就緒執行的作業,并為他們分配CPU。b.中期調度:作為一種中等程度的調度程序,尤其被用于分時系統,一個交換方案的實施,將部分運行程序移出內存,之后,從中斷處繼續執行。c.長期調度(作業調度程序):確定哪些作業調入內存以執行.它們主要的不同之處是它們的執行的頻率。短期調度必須經常調用一個新進程,由于在系統中,長期調度處理移動的作業時,并不頻繁被調用,可能在進程離開系統時才被喚起。3.2問:描述一下內核在兩個進程間進行上下文功換的動作.Answer:總的來說,操作系統必須保存正在運行的進程的狀態,恢復進程的狀態。保存進程的狀態主要包括CPU寄存器的值以及內存分配,上下文切換還必須執行一些確切體系結構的操作,包括刷新數據和指令緩存。(書中答案)進程關聯是由進程的PCB來表示的,它包括CPU寄存器的值和內存管理信息等。當發生上下文切換時,內核會將舊進程的關聯狀態保存在其PCB中,然后裝入經調度要執行的新進程的已保存的關聯狀態。3.3考慮RPC機制??紤]的RPC機制。描述不可取的情況下可能出現或者不執行的”最多一次”或”到底一旦“語義。說明在沒有這些保障的情況下,可能使用的一種機制。Answer:如果一個RPC機制無法支持無論是“最多一次”或“至少一次”的語義,那么RPC服務器不能保證遠端程序不會引起多個事件的發生。試想,如果一個遠端程序在一個不支持這些語義的系統上從銀行賬戶中撤回投資的資金。很可能一個單一調用的遠程過程會導致多種服務器的撤回。
如果一個系統不能支持這兩種語義,那么這樣一個系統只能安全提供遠程程序,這些遠程程序沒有改變數據,沒有提供時間敏感的結果,用我們的銀行賬戶做例,我們當然需要“最多一次”或“至少一次”的語義執行撤銷(或存款)。然而,賬戶余額成其它賬戶信息的查詢,如姓名,地址等,不需要這些語義。3.4圖表3.24里顯示的程序,說明A行將會輸出什么?Answer:當控制回到父進程時,它的值會保持在5,而子進程將更新并拷貝這個值。3.5問:下面設計的好處和壞處分別是什么?系統層次和用戶層次都要考慮到.A,對稱和非對稱通信B,自動和顯式緩沖C,復制發送和引用發送D,固定大小和可變大小消息Answer:A.對稱和非對稱通信:對稱通信的影響是它允許發送者和接收者之間有一個集合點。缺點是阻塞發送時,不需要集合點,而消息不能異步傳遞。因此,消息傳遞系統,往往提供兩種形式的同步。B.自動和顯式緩沖:自動緩沖提供了一個無限長度的隊列,從而保證了發送者在復制消息時不會遇到阻塞,如何提供自動緩存的規范,一個方案也許能保存足夠大的內存,但許多內存被浪費緩存明確指定緩沖區的大小。在這種狀況下,發送者不能在等待可用空間隊列中被阻塞。然而,緩沖明確的內存不太可能被浪費。C.復制發送和引用發送:復制發送不允許接收者改變參數的狀態,引用發送是允許的。引用發送允許的優點之一是它允許程序員寫一個分布式版本的一個集中的應用程序。Java’sRMI公司提供兩種發送,但引用傳遞一個參數需要聲明這個參數是一個遠程對象。D.固定大小和可變大小消息:涉及的太多是有關緩沖問題,帶有定長信息,一個擁有具體規模的緩沖課容納已知數量的信息緩沖能容納的可變信息數量是未知的??紤]Windows2000如何處理這種情況。帶有定長信息(<256bytes),信息從發送者的地址空間被復制至接受進程的地址空間。更大的信息(如變長信息)使用共享內存傳遞信息。第四章線程4.1舉兩個多線程程序設計的例子來說明多線程不比單線程方案提高性能答:1)任何形式的順序程序對線程來說都不是一個好的形式。例如一個計算個人報酬的程序。 2)另外一個例子是一個“空殼”程序,如C-shell和kornshell。這種程序必須密切檢測其本身的工作空間。如打開的文件、環境變量和當前工作目錄。4.2描述一下線程庫采取行動進行用戶級線程上下文切換的過程答:用戶線程之間的上下文切換和內核線程之間的相互轉換是非常相似的。但它依賴于線程庫和怎樣把用戶線程指給內核程序。一般來說,用戶線程之間的上下文切換涉及到用一個用戶程序的輕量級進程(LWP)和用另外一個線程來代替。這種行為通常涉及到寄存器的節約和釋放。4.3在哪些情況下使用多內核線程的多線程方案比單處理器系統的單個線程方案提供更好的性能。答:當一個內核線程的頁面發生錯誤時,另外的內核線程會用一種有效的方法被轉換成使用交錯時間。另一方面,當頁面發生錯誤時,一個單一線程進程將不能夠發揮有效性能。因此,在一個程序可能有頻繁的頁面錯誤或不得不等待其他系統的事件的情況下,多線程方案會有比單處理器系統更好的性能。4.4以下程序中的哪些組成部分在多線程程序中是被線程共享的?a.寄存值b.堆內存c.全局變量d.棧內存答:一個線程程序的線程共享堆內存和全局變量,但每個線程都有屬于自己的一組寄存值和棧內存。4.5一個采用多用戶線程的多線程方案在多進程系統中能夠取得比在單處理器系統中更好的性能嗎?答:一個包括多用戶線程的多線程系統無法在多處理系統上同時使用不同的處理器。操作系統只能看到一個單一的進程且不會調度在不同處理器上的不同進程的線程。因此,多處理器系統執行多個用戶線程是沒有性能優勢的。4.6就如4.5.2章節描述的那樣,Linux沒有區分進程和線程的能力。且Linux線程都是用相同的方法:允許一個任務與一組傳遞給clone()系統調用的標志的進程或線程。但許多操作系統,例如windowsXP和Solaris,對進程和線程都是一視同仁?;旧?,這種使用notation的系統,一個進程的數據結構包括一個指向屬于進程的不同線程的指針。區別建模過程和在內核中線程的兩種方法。答:一方面,進程和線程被視為相似實體的系統中,有些系統代碼可以簡化。例如,一個調度器可以在平等的基礎上考慮不同的進程和線程,且不需要特殊的代碼,在調度中審查有關線程的進程。另一方面,這種統一會使進程資源限制更加困難。相反,一些額外的復雜性被需要,用來確定哪個線程與哪個進程一致和執行重復的計數任務。4.7由4.11給出的程序使用了Pthread的應用程序編程接口(API),在程序的第c行和第p行分別會輸出什么?答:c行會輸出5,p行會輸出0.4.8考慮一個多處理器系統和用多線程對多線程模式編寫的多線程程序。讓程序中的用戶線程數量多于系統中的處理器的數量,討論下列情況下的性能意義:a.由程序分配的內核線程的數量比處理器少b.由程序分配的內核線程的數量與處理器相同c.由程序分配的內核線程的數量大于處理器數量但少于用戶線程的數量答:當內核線程的數量少于處理器時,一些處理器將仍然處于空閑狀態。因為,調度圖中只有內核線程的處理器,而不是用戶線程的處理器。當程序分配的內核線程的數量與處理器相同時,那么有可能所有處理器將同時使用。然而,當一個內核塊內的內核(因頁面錯誤或同時援引系統調用)相應的處理器將閑置。當由程序分配的內核線程的數量大于處理器數量時,封鎖一個內核線程并調出,換入另一個準備執行的內核線程。因此,增加多處理器系統的利用率。第五章CPU調度5.1為什么對調度來說,區分I/0限制的程序和CPU限制的程序是重要的?答:I/0限制的程序有在運行I/O操作前只運行很少數量的計算機操作的性質。這種程序一般來說不會使用很多的CPU。另一方面,CPU限制的程序利用整個的時間片,且不做任何阻礙I/O操作的工作。因此,通過給I/O限制的程序優先權和允許在CPU限制的程序之前運行,可以很好的利用計算機資源。5.2討論以下各對調度標準在某種背景下會有的沖突a.CPU利用率和響應時間b.平均周轉時間和最大等待時間c.I/O設備利用率和CPU利用率答:a.CPU利用率和響應時間:當經常性的上下文切換減少到最低時,CPU利用率增加。通過減少使用上下文切換程序來降低經常性的上下文切換。但這樣可能會導致進程響應時間的增加。b.平均周轉時間和最大等待時間:通過最先執行最短任務可以使平均周轉時間最短。然而,這種調度策略可能會使長時間運行的任務永遠得不到調度且會增加他們的等待時間。c.I/O設備利用率和CPU利用率:CPU利用率的最大化可以通過長時間運行CPU限制的任務和同時不實行上下文切換。I/O設備利用率的最大化可以通過盡可能調度已經準備好的I/O限制的任務。因此,導致上下文切換。5.3考慮指數平均公式來預測下一次CPU區間的長度,使用以下參數值會有什么影響?a.a=0和t=100毫秒b.a=0.99和t=10毫秒答:當a=0和t=100毫秒時,公式總是會預測下一次的CPU區間為100毫秒。當a=0.99和t=10毫秒時,進程最近的行為是給予更高的重量和過去的就能成相比。因此,調度算法幾乎是無記憶的,且簡單預測未來區間的長度為下一次的CPU執行的時間片。5.4考慮下列進程集,進程占用的CPU區間長度以毫秒來計算:進程進程區間時間優先級P1103P211P323P414P552假設在時刻0以進程P1,P2,P3,P4,P5的順序到達。 a.畫出4個Gantt圖分別演示用FCFS、SJF、非搶占優先級(數字小代表優先級高)和RR(時間片=1)算法調度時進程的執行過程。b.在a里每個進程在每種調度算法下的周轉時間是多少? c.在a里每個進程在每種調度算法下的等待時間是多少? d.在a里哪一種調度算法的平均等待時間對所有進程而言最?。看穑篴.甘特圖略b.周轉時間FCFSRRSJF非搶占優先級P110191916P211211P3137418P4144219P5191496c.等待時間FCFSRRSJF非搶占優先級P10996P210100P3115216P4133118P514942d.SJF5.5下面哪些算法會引起饑餓a.先來先服務b.最短工作優先調度c.輪換法調度d.優先級調度答:最短工作優先調度和優先級調度算法會引起饑餓5.6考慮RR調度算法的一個變種,在這個算法里,就緒隊列里的項是指向PCB的指針。 a.如果把兩個指針指向就緒隊列中的同一個進程,會有什么效果? b.這個方案的主要優點和缺點是什么? c.如何修改基本的RR調度算法,從而不用兩個指針達到同樣的效果?答.a.實際上,這個過程將會增加它的優先權,因為通過經常得到時間它能夠優先得以運行。b.優點是越重要的工作可以得到更多的時間。也就是說,優先級越高越先運行。然而,結果將由短任務來承擔。c.分配一個更長的時間給優先級越高的程序。換句話說,可能有兩個或多個時間片在RR調度中。5.7考慮一個運行十個I/O限制任務和一個CPU限制任務的系統。假設,I/O限制任務一次分配給一個I/O操作1毫秒的CPU計算,但每個I/O操作的完成需要10毫秒。同時,假設間接的上下文切換要0.1毫秒,所有的進程都是長進程。對一個RR調度來說,以下情況時CPU的利用率是多少:a.時間片是1毫秒b.時間片是10毫秒答:a.時間片是1毫秒:不論是哪個進程被調度,這個調度都會為每一次的上下文切換花費一個0.1毫秒的上下文切換。CPU的利用率是1/1.1*100=92%。b.時間片是10毫秒:這I/O限制任務會在使用完1毫秒時間片后進行一次上下文切換。這個時間片要求在所有的進程間都走一遍,因此,10*1.1+10.1(因為每個I/O限定任務執行為1毫秒,然后承擔上下文切換的任務,而CPU限制任務的執行10毫秒在承擔一個上下文切換之前)。因此,CPU的利用率是20、21.1*100=94%。5.8考慮一個實施多層次的隊列調度系統。什么策略能夠使一個計算機用戶使用由用戶進程分配的最大的CPU時間片。答:這個程序可以使分配給它的沒有被完全利用的CPU時間最大化。它可以使用分配給它的時間片中的絕大部分,但在時間片結束前放棄CPU,因此提高了與進程有關的優先級。5.9考慮下面的基于動態改變優先級的可搶占式優先權調度算法。大的優先權數代表高優先權。當一個進程在等待CPU時(在就緒隊列中,但未執行),優先權以α速率改變;當它運行時,優先權以速率β改變。所有的進程在進入就緒隊列時被給定優先權為0。參數α和β可以設定給許多不同的調度算法。 a.β>α>0時所得的是什么算法? b.α<β<0時所得的是什么算法?答:a.FCFSb.LIFO5.10解釋下面調度算法對短進程編程度上的區別:a.FCFSb.RRc.多級反饋隊列答:a.FCFS區別短任務是因為任何在長任務后到達的短任務都將會有很長的等待時間。b.RR對所有的任務都是能夠相同的(給它們相同的CPU時間區間),所以,短任務可以很快的離開系統,只要它們可以先完成。c.多級反饋隊列和RR調度算法相似——它們不會先選擇短任務。5.11用WindowXP的調度算法,下列什么是數字優先的線程。a.相對優先級的值為REALTIME_PRIORITY_CLASS的屬于實體優先類型的線程b.相對優先級的值為NORMAL_PRIORITY_CLASS的屬于NORMAL類型的線程c.相對優先級的值為HIGH_PRIORITY_CLASS的屬于ABOVE_NORMAL類型的線程答:a.26b.8c.145.12考慮在Solaris操作系統中的為分時線程的調度算法:a:一個優先權是10的線程的時間片是多少?優先權是55的呢?b:假設優先權是35的一個線程用它所有的時間片在沒有任何阻止的情況下,這調度算法將會分配給這個線程什么樣新的優先權?c:假設一個優先權是35的線程在時間片結束前阻止I/O操作。這調度算法將會分配給這個線程什么樣新的優先權?答:a:160和40b:35C:545.13傳統UNIX調度在優先數和優先級間成反比關系:數字越高,優先權越低。該調度進程利用下面的方程重新計算進程的優先權一次一秒:優先權=(最近CPU使用率/2)+基本數這里的基本數=60,最近的CPU使用率是指一個表明優先權從上一次重新計算后開始進程被CPU使用的情況。假設最近進程p1的CPU使用率是40個,p2是18,p3是10。當優先權重新計算后這三個進程的新的優先權是什么?在此信息的基礎上,傳統UNIX的調度會不會提高或降低CPU限制的進程的相對優先權?答:分配給這些進程的優先權分別是80,69和65.這調度降低了CPU限制的進程的相對優先權。第六章管程6.1第一個著名的正確解決了兩個進程的臨界區問題的軟件方法是Dekker設計的。兩個進程P0和P1共享以下變量:booleanflag[2];/*initiallyfalse*/intturn;進程Pi(i==0或1)和另一個進程Pj(j==0或1)的結構見圖7.27。證明這個算法滿足臨界區問題的所有三個要求。flag[i]=ture;flag[i]=ture;while(flag[j]){if(turn==j){flag[i]=false;while(turn==j);flag[i]=true;}}臨界區turn=j;flag[i]=false;剩余區do{}while(1);圖7.27Dekker算法中的進程Pi結構答:該算法滿足三個相互排斥條件。(1)相互排斥是為了確保使用的變量和標志是可變的。如果所有進程都把他們的變量設置為真,只有一個會成功,那就是哪個進程輪到的問題了。等待中的進程只能夠進入它的重要部分當其他進程在更新變量值時。6.1這兩個進程的臨界區域問題的最初的正確的軟件解決方案是由Dekker提出的。P0、P1兩個進程,具有以下共同的變量:booleanflag[2];/*initiallyfalse*/intturn;進程Pi(i==0or1)的結構在6.25中已經出現過;其他進程為Pj(j==1or0)。證明這個算法滿足關鍵問題的三個要求。答:這個算法滿足臨界區域的三個條件:(1)在標記和返回變量的使用中,互斥條件是保證的。如果兩個進程將它們的標識設為真,那么只有一個進程會成功進行,即輪到的那個進程。當另一個進程更新它的返回變量時,等待的那個進程只能進入它的臨界區域。(2)就緒的進程,通過標志,返回變量。這個算法沒有提供嚴格的交替。如果一個進程想要進入它們的臨界區域,它可以將它的標識設為真,然后進入它們的臨界區域。當退出它的臨界區域,它可以設置轉向其他進程的值。如果這個進程想要在其他進程之前再次進入它的臨界區域,它會重復這樣的進程:進入它的臨界區域,在退出時轉向另一個進程。(3)在雙T返回變量的使用過程中,界等待受阻。假設兩個進程想要進入它們的責任所在的臨界區域。它們都將它們的標志的值設為真;而只有輪到的那個線程可以執行;其他的線程處于等待狀態。如果界等待沒有受阻,當第一個進程重復“進入-退出”它的臨界區域這一過程。Dekker算法在一個進程中設置一個轉向另一個進程的值,從而保證另一個進程接下來進入它的臨界區域。6.2針對有n個進程在帶有較低時間限制的等待n-1個的輪次這樣一個臨界區域最早的解決該問題的正確方法是由艾森伯格和麥圭爾提出的。這些進程有以下的共同的變量:枚舉pstate{idle,wantin,incs};pstateflag[n];intturn;所有的枚舉標志被初始為空,輪次的最初值是無關緊要的(在0和n-1之間)。進程p的結構在6.26中有說明。證明這個算法滿足臨界區域問題的三項要求。答:a.互斥:注意到一個進程只有在下列條件滿足時才能進入臨界區域:沒有其他進程在CS中有設置的標識變量。這是由于進程在CS中設置自身的標識變量之前要先檢查其他進程的狀態。我們保證沒有兩個進程將同時進入臨界區域。b.有空讓進:考慮以下情況,當多進程同時在CS中設置它們的標識變量,然后檢查是否有其他進程在cs中設置標識變量。當這種情況發生時,所有的進程意識到這里存在進程競爭,在外層while(1)的循環下進入下一次迭代,重置它們的標識變量到want中?,F在只有唯一的進程將設置它的輪次變量到cs中,這個唯一的進程就是其序號是最接近輪次的。從這個角度來說,對于哪些序號次接近輪次的新的進程就能決定進入臨界區域,而且能同時在CS中設置它們的標識。隨后這些進程意識到這里存在競爭的進程,于是重新啟動進入臨界區域的進程。在每次迭代中,進程在cs中設置的序號值將變得更加接近輪次,最后我們得出以下結論:只有進程k在cs中設置它的標識,而其他哪些序號在輪次和k之間不能在cs中設置它們的標識。這個進程僅能進入臨界區域。c.有限等待:有限等待需要滿足以下事實:當進程k在打算進入臨界區域時,它的標識不再置為空閑。任何序號不在輪次和k之間的進程不能進入臨界區域。與此同時,所有序號落在輪次和k之間且又想要進入臨界區域的進程能夠進入臨界區域(這是基于系統一直在進步的事實),這個輪次值變得越來越接近k。最后,要么輪次變為k,要么沒有哪些序號在輪次和k之間的進程,這樣進程k就進入臨界區域了。6.3忙等待的含義是什么?在操作系統中還有哪些其他形式的等待?忙等待能完全避免嗎?給出你的答案。答:忙等待意味著一個進程正在等待滿足一個沒有閑置處理器的嚴格循環的條件。或者,一個進程通過放棄處理器來等待,在這種情況下的塊等待在將來某個適當的時間被喚醒。忙等待能夠避免,但是承擔這種開銷與讓一個進程處于沉睡狀態,當相應程序的狀態達到的時候進程又被喚醒有關。6.4解釋為什么自旋鎖不適合在單處理器系統,而經常在多處理器系統下使用?答:自旋鎖不適合在單處理器系統是因為從自旋鎖中打破一個進程的條件只有在執行一個不同的進程時才能獲得。如果這個進程沒有閑置處理器,其他進程不能夠得到這個機會去設定一個第一個進程進展需要的程序條件。在一個多處理器系統中,其他進程在其他處理器上執行,從而為了讓第一個進程從自旋鎖中釋放修改程序狀態。6.5如果一個同步元是在一個用戶級程序中使用的,解釋在一個單處理器系統中為什么通過停止中斷去實現這個同步元是不適合的?答:如果一個用戶級程序具有停止中斷的能力,那么它能夠停止計時器中斷,防止上下文切換的發生,從而允許它使用處理器而不讓其他進程執行。6.6解釋為什么在一個多處理器系統中中斷不適合同步元?答:由于只有在防止其他進程在一個中斷不能實現的處理器上執行來停止中斷,中斷在多處理器系統中是不夠的。在對于進程能在其他處理器上執行是沒有心智的,所以進程停止中斷不能保證互斥進入程序狀態。6.76.8服務器能夠設計成限制打開連接的數量。比如,一臺服務器可以在任何時候有n個插座連接。這n個連接一形成,服務器就不能接收再有進來的連接直到一個現有的連線釋放。解釋為什么信號量能夠通過服務器限制當前連線的數量而被使用。答:信號量初始化為允許開放式的插座連接的數量。當一個連接被接受,收購方法調用。當連接釋放時,釋放方法調用。如果系統道道了允許開放式的插座連接的數量,相繼調用收購方法將受阻直到一個現有的連線終止,釋放方法調用。6.9證明如果獲得和釋放的信號量操作沒有動態地執行,那么互斥會受干擾。答:收購操作自動遞減和信號量有關的值。如果兩個收購操作在信號量的值為1的信號量上執行,而且這兩種操作不是自動執行的,那么這兩個操作在進展中會遞減信號量的值,從而干擾互斥。6.10(程序,不用翻)(6.13)6.12證明管程和信號量是相當于它們能在執行相同類型的同步問題時使用答:在用下列方法使用信號量時,管程可以實施。每個條件變量是由一個隊列中的線程等待條件組成的。每個線程有一個和它的隊列進入有關的信號量。當線程表現出等待操作時,它創造一個心得信號量(初始化為0),附加信號量到和條件變量有關的隊列中,在新創造的信號量上執行阻塞信號遞減操作。6.15討論在讀者-作者問題中的公平和吞吐量的權衡問題。提出一種解決讀者-作者問題而不引起饑餓的方法答:在讀者-作者問題中吞吐量是由利益多的讀者增加的,而不是讓一個作家獨占式地獲得共同的價值觀。另一個方面,有利于讀者可能會導致饑餓的作者。在讀者-作者問題中的借能夠通過保持和等待進程有關的時間戳來避免。當作者完成他的任務,那么喚醒那些已經等了最長期限的進程。當讀者到達和注意到另一個讀者正在訪問數據庫,那么它只有在沒有等待的作者時才能進入臨界區域。這些限制保證公平。6.16管程的signal操作和信號量的signal操作有什么不同?管程的signal操作在以下情況下是不能繼續進行的:當執行signal操作并且無等待線程時,那么系統會忽略signal操作,認為signal操作沒有發生過。如果隨后執行wait操作,那么相關的線程就會被阻塞。然后在信號量中,即使沒有等待線程,每個signal操作都會是相應的信號量值增加。接下來的等待操作因為之前的信號量值的增加而馬上成功進行。6.17假設signal語句只能作為一個管程中的最后一條語句出現,可以怎樣簡化6.7節所描述的實現?如果signal語句作為最后一條語句出現,那么鎖會使發出信號的進程轉化成接受信號的進程。否則,發出信號的進程將解鎖,并且接受信號的進程則需要和其他進程共同操作獲得鎖從而使操作繼續下去。6.21假設將管程中的wait和signal操作替換成一個單一的構件await(B),這里B是一個普通的布爾表達式,進程執行直到B變成真用這種方法寫一個管程實現讀者—作者問題。解釋為什么一般來說這種結構實現的效率不高。要使這種實現達到高效率需要對await語句加上哪些限制?(提示,限制B的一般性,參見Kessels[1977].)讀者—作者問題可以進行以下修改,修改中產生了await聲明:讀者可以執行“await(activewriters==0&&waitingwriters==0)”來確保在進入臨界區域時沒有就緒的作者和等待的作者。作者可以執行“await(activewriters==0&&activereaders==0)”來確保互斥。在signal操作后,系統檢查滿足等待條件滿足的等待線程,檢查其中被喚醒的等待線程。這個要求相當復雜,并且可能需要用到交互的編譯器來評估在不同時間點下的條件??梢酝ㄟ^限制布爾條件,使布爾變量和其他部分分開作為獨立的程序變量(僅僅用來檢查是否相等的一個靜態值)。在這種情況下,布爾條件可以傳達給運行時系統,該系統可以執行檢查每一個它所需要的時間,以確定哪些線程被喚醒。6.23為什么Solaris、Linux和Windows2000都使用自旋鎖作為多處理器系統的同步機制而不作為單處理器系統的同步機制?Solaris,Linux和Windows2000中只有在多處理器系統才能使用自旋鎖作為一個同步機制。自旋鎖不適合單處理器的系統,因為打破了這一進程的自旋鎖只有通過執行不同的進程才可以得到。如果這一進程不會放棄此處理器,其他進程就無法設置第一個進程所要求的程序條件,從而不能繼續操作。在一個多處理器系統,其他進程執行其他處理器,從而修改程序狀態從自旋鎖中釋放第一個進程。6.24在基于日志的系統中可以給事務提供支持,在相應日志記錄寫到穩定存儲之前不能允許真正地更新數據項。為什么這個限制是必需的?如果事務需要放棄,那么更新的數據項的值應該要恢復到原來的值。這就需要原來值的數據在進行操作之前完成更新。6.25證明兩段鎖協議能確保沖突的串行執行。調度是指一個或多個事務的執行順序。一個串行調度是指每個事務執行的原子調度。如果一個調度由兩個不同的事務組成,通過連續的操作從這兩個事務中獲得相同的數據,并至少有一個write操作,然后有所謂的沖突。如果一個調度可以通過一系列非沖突操作的交換而轉化成串行調度,那么這個調度為是沖突可串行化。這兩階段加鎖協議確保沖突串行化,因為獨占鎖(這是用于寫操作)必須連續收購,不釋放任何鎖在獲?。ㄔ鲩L)的階段。其他事務希望獲得同樣的鎖必須等待第一個事務開始釋放鎖。通過要求任何鎖必須首先釋放所有鎖,從來避免潛在的沖突。6.26分配一個新時間戳給已經恢復到原值的事務有什么影響?對于新進入系統進程的事務,其所賦予的時間戳是如何大于原先事務的時間戳的?在原先事務的訪問變量改變后執行事務,那么相應的事務也恢復到原先的值。如果他們沒有執行此項操作(也就是說沒有重復的原先事務的訪問變量值),那么這些操作在適當的時候就不會受到約束。6.27假設數目有限的資源中的一個單一的資源型必須加以管理。進程需要一定數量的這種資源,一旦用完將釋放它們。例如,許多商業軟件包提供了一定數量的許可證,這表明一些應用程序可以同時運行.當應用程序啟動時,許可證的計數遞減。當申請終止,許可證計數遞增。如果所有的許可證都在使用,那么要求啟動該應用程序的申請被剝奪了。只有當現有的許可證持有人終止申請并切許可證已經返還,那么這種申請將被授予.下列程序段是用來管理一個數目有限的情況下的可用資源。最多的資源數量和一些可用的資源數量如下所示:#defineMAXRESOURCES5intavailableresources=MAXRESOURCES;Whenaprocesswishestoobtainanumberofresources,itinvokesthedecreasecount()function:/*decreaseavailableresourcesbycountresources*//*return0ifsufficientresourcesavailable,*//*otherwisereturn-1*/intdecreasecount(intcount){if(availableresources<count)return-1;else{availableresources-=count;return0;}}Whenaprocesswantstoreturnanumberofresources,itcallsthede-creasecount()function:/*increaseavailableresourcesbycount*/intincreasecount(intcount){availableresources+=count;return0;}前面的程序段將會產生一個競爭的條件。如下:確定數據參與競爭當競爭的條件發生時,確定代碼段的位置(或是區域)利用Java同步,確定競爭的條件,同時修改decreaseCount()以使一個線程在沒有足夠的現有的資源下阻塞。確定數據參與競爭:可以利用的變量資源當競爭的條件發生時,確定代碼段的位置(或是區域):代碼使現有的資源遞減和代碼現有資源遞增的聲明可以放在競爭的條件。使用信號量,確定競爭條件:使用信號量表示當前可用資源變量,并且用信號量遞增和信號量遞減的操作代替遞增和遞減的操作。
7.1假設有如圖7.1所示的交通死鎖。證明這個例子中實際上包括了死鎖的四個必要條件。給出一個簡單的規則用來在這個系統中避免死鎖。死鎖的四個必要條件:(1)互斥;(2)占有并等待;(3)非搶占;(4)循環等待?;コ獾臈l件是只有一輛車占據道路上的一個空間位置。占有并等待表示一輛車占據道路上的位置并且等待前進。一輛車不能從道路上當前的位置移動開(就是非搶占)。最后就是循環等待,因為每個車正等待著隨后的汽車向前發展。循環等待的條件也很容易從圖形中觀察到。一個簡單的避免這種的交通死鎖的規則是,汽車不得進入一個十字路口如果明確地規定,這樣就不會產生相交。7.2考慮如下的死鎖可能發生在哲學家進餐中,哲學家在同個時間獲得筷子。討論此種情況下死鎖的四個必要條件的設置。討論如何在消除其中任一條件來避免死鎖的發生。死鎖是可能的,因為哲學家進餐問題是以以下的方式滿足四個必要條件:1)相斥所需的筷子,2)哲學家守住的筷子在手,而他們等待其他筷子,3)沒有非搶占的筷子,一個筷子分配給一個哲學家不能被強行拿走,4)有可能循環等待。死鎖可避免克服的條件方式如下:1)允許同時分享筷子,2)有哲學家放棄第一雙筷子如果他們無法獲得其他筷子,3)允許筷子被強行拿走如果筷子已經被一位哲學家了占有了很長一段時間4)實施編號筷子,總是獲得較低編號的筷子,之后才能獲得較高的編號的筷子。7.3一種可能以防止死鎖的解決辦法是要有一個單一的,優先于任何其他資源的資源。例如,如果多個線程試圖訪問同步對象A?…E,那么就可能發生死鎖。(這種同步對象可能包括互斥體,信號量,條件變量等),我們可以通過增加第六個對象來防止死鎖。每當一個線程希望獲得同步鎖定給對象A???E,它必須首先獲得對象F的鎖.該解決方案被稱為遏制:對象A???E的鎖內載對象F的鎖。對比此方案的循環等待和Section7.4.4的循環等待。這很可能不是一個好的解決辦法,因為它產生過大的范圍。盡可能在狹隘的范圍內定義死鎖政策會更好。7.4對下列問題對比循環等待方法和死鎖避免方法(例如銀行家算法):a.運行費用b.系統的吞吐量死鎖避免方法往往會因為追蹤當前資源分配的成本從來增加了運行費用。然而死鎖避免方法比靜態地防止死鎖的形成方法允許更多地并發使用資源。從這個意義上說,死鎖避免方案可以增加系統的吞吐量。7.5在一個真實的計算機系統中,可用的資源和進程命令對資源的要求都不會持續很久是一致的長期(幾個月)。資源會損壞或被替換,新的進程會進入和離開系統,新的資源會被購買和添加到系統中。如果用銀行家算法控制死鎖,下面哪些變化是安全的(不會導致可能的死鎖),并且在什么情況下發生?增加可用資源(新的資源被添加到系統)減少可用資源(資源被從系統中永久性地移出)增加一個進程的Max(進程需要更多的資源,超過所允許給予的資源)減少一個進程的Max(進程不再需要那么多資源)增加進程的數量減少進程的數量增加可用資源(新的資源被添加到系統):這個可以在沒有任何問題的情況下安全地改變減少可用資源(資源被從系統中永久性地移出):這可能會影響到系統,并導致可能性死鎖因為系統的安全性假定其擁有一定數量的可用資源增加一個進程的Max(進程需要更多的資源,超過所允許給予的資源):這可能會影響到系統,并可能導致死鎖減少一個進程的Max(進程不再需要那么多資源):這個可以在沒有任何問題的情況下安全地改變增加進程的數量:如果允許分配資源給新進程,那么該系統并沒有進入一個不安全的狀態。減少進程的數量:這個可以在沒有任何問題的情況下安全地改變7.6假設系統中有四個相同類型的資源被三個進程共享。每個進程最多需要兩個資源。證明這個系統不會死鎖。假設該系統陷入死鎖。這意味著,每一個進程持有一個資源,并且正等待另一個資源。因為有三個進程和四個資源,一個進程就必須獲取兩個資源。這一進程并不需要更多的資源,因此當其完成時會返回其資源。7.7假設一個系統有m個資源被n個進程共享,進程每次只請求和釋放一個資源。證明只要系統符合下面兩個條件,就不會發生死鎖:a.每個進程需要資源的最大值在1到m之間b.所有進程需要資源的最大值的和小于m+nAnswer:使用Section7.6.2的術語,可以有:a._ni=1Maxi<m+nb.Maxi≥1foralliProof:Needi=Maxi?AllocationiIfthereexistsadeadlockstatethen:c._ni=1Allocationi=mUsea.toget:_Needi+_Allocationi=_Maxi<m+nUsec.toget:_Needi+m<m+nRewritetoget:_ni=1Needi<n//符號打不出來,大家自己看答案這意味著存在一個Pi的進程,其Needi=0.如果Maxi>=1,那么Pi進程至少有一個資源可以釋放。從而系統就不會進入死鎖狀態。7.8假設哲學家進餐問題中,筷子被擺放在桌子的中央,它們中的任何一雙都可以被哲學家使用。假如每次只能請求一根筷子,試描述一種在沒有引起死鎖的情況下,一個特殊的請求請求能否被滿足的簡單的規則,將筷子分配給哲學家。Answer:以下規則避免了死鎖:當一個哲學家發出一個需要第一根筷子的請求時,如果沒有別的哲學家有兩根筷子或者只留有一根筷子時,這個請求就不被允許。7.9與上一題目中所給的環境相同。假如現在每個哲學家請求三根筷子來吃飯,而且這種資源請求仍舊是分開發生的。試描述一種類似的在沒有引起死鎖的情況下,一個特殊的請求請求能否被滿足的簡單的規則,將筷子分配給哲學家。Answer:當一個哲學家發出一個需要第一根筷子的請求時,滿足其情況,如果1)那個哲學家已經有2根筷子,并且還有2根筷子剩余,2)那個哲學家已經有1根筷子,并且還有2根筷子剩余,3)最少有1根筷子剩余,并且最少有一個哲學家擁有3根筷子,4)那個哲學家沒有筷子,但有2根筷子剩余,并且最少存在另外一個擁有2根筷子的哲學家放下他的筷子。7.10我們可以通過把數組的維度減少到1,而從一般的銀行家算法中得到一個單一資源類型的銀行家算法。試通過一個例子說明對于每個資源類型,多資源類型的銀行家方案不能通過單一資源類型方案的單獨運用來實現。Answer:假設一個系統有資源A,B,C和進程P0,P1,P2,P3,P4,并按照下圖來分配ALLOCATIONABCP0,010P1,302P2302P3211P4002還需要下列資源的數量NeedABCP0743P1020P2600P3011P4431如果可利用的資源是(230),我們可以看到,進程P0請求(0,2,0)是不能被滿足的,因為它比Availiable少(210),從而導致沒有一個進程可以被完成。然而,如果我們把三種資源看做是三個獨立資源類型的銀行家算法,可以得到以下各表:對于資源AAllocatedNeedP0,07P130P236P320P404在次序P1,P3,P4,P2,P0下,各進程可以被滿足。對于資源BAllocatedNeedP0,32P102P200P311P403在次序P2,P3,P1,P0,P4下,各進程可以被滿足。對于資源CAllocatedNeedP0,03P120P220P311P421在次序P1,P2,P0,P3,P4下,各進程可以被滿足。我們可以看出,如果我們使用多重資源類型的銀行家算法,對于進程P0的請求(020)是無法滿足的,因為它使系統處于一個不安全的狀態,然而,如果我們使用單一資源類型的銀行家算法,把它們看做是三個分開的資源,這個請求是允許的。同時,如果我們有多重資源類型,我們則必須使用多重資源類型的銀行家算法。7.11考慮下面的一個系統在某一時刻的狀態:AllocationMaxAvailableABCDABCDABCDP0001200121520P110001750P213542356P306320652P400140656使用銀行家算法回答下面問題:a.Need矩陣的內容是怎樣的?b.系統是否處于安全狀態?c.如果從進程P1發出一個請求(0420),這個請求能否被滿足?Answer:a.Need矩陣的內容是P0(0000)P1(0750)P2(1002)P3(0020)P4(0640)。b..系統處于安全狀態,因為Available矩陣等于(1520),進程P0和P3都可以運行,當進程P3運行完時,它釋放它的資源,而允許其它進程運行。c.可以被滿足,滿足以后,Available矩陣等于(1100),當以次序P0,P2,P3,P1,P4運行時候,可以完成運行。7.12在死鎖檢測算法中,樂觀假設是什么?這種假設怎樣可以被違反?Answer:樂觀假設是在資源分配方面和進程請求資源的過程中,不存在任何形式的循環等待。如果在實際過程中,一個循環等待確實發生,這種假設可以被違反。8.1解釋內部碎片和外部碎片的區別?Answer:內部碎片是某一區域或某一頁中,未被占據其位置的作業所使用的區域。直到作業完成,釋放頁或區域,這個空間才能被系統所利用。8.2考慮下面產生二進制的過程。編譯器是用來為每個獨立單元產生目標代碼,連接編輯器是用來聯合各個部分的目標單元組成一個單一的程序二進制。連接編輯器是怎樣對內存地址改變指令和數據的捆綁?從編譯器到連接編輯器,什么信息需要被通過,而使內存綁定連接編輯器作業比較容易?Answer:連接編輯器不得不將分解的符號地址替換為在最終的程序二進制中,與變量相聯系的實際地址。為了完成這個,單元必須追蹤那些查閱到的未分解的符號指令。在連接期間,全部程序二進制中的每個單元會被分配到一序列的地址空間,當它完成時,對于未分解的符號關系,可以通過這個二進制輸出,當每個另外單元包含一系列需要修復的指令時,這個二進制可以在另外單元被修復。8.3按順序給出5個部分的內存,分別是100KB,500KB,200KB,300KB和600KB,用first-fit,best-fit和worst-fit算法,能夠怎樣按順序分配進程212KB,417KB,112KB,426KB和426KB?哪個算法充分利用了內存空間?Answer:a.First-fit:b.212Kisputin500Kpartitionc.417Kisputin600Kpartitiond.112Kisputin288Kpartition(newpartition288K=500K?212K)e.426Kmustwaitf.Best-fit:g.212Kisputin300Kpartitionh.417Kisputin500Kpartitioni.112Kisputin200Kpartitionj.426Kisputin600Kpartitionk.Worst-fit:l.212Kisputin600Kpartitionm.417Kisputin500Kpartitionn.112Kisputin388Kpartitiono.426KmustwaitBest-fit:算法充分利用了內存空間。8.4在運行過程中,許多系統允許程序分配更多的內存給它的地址空間。在程序堆中的數據分配是這種分配方式的一個實例。在下面的方案中,為了支持動態內存分配的要求是什么?a.連續內存分配b.純段式分配c.純頁式分配Answer:a.連續內存分配:當沒有足夠的空間給程序去擴大它已分配的內存空間時,將要求重新分配整個程序。b.純段式分配:當沒有足夠的空間給段去擴大它的已分配內存空間時,將要求重新分配整個段。c.純頁式分配:在沒有要求程序地址空間再分配的方案下,新頁增加的分配是可能的。8.5比較在主存組織方案中,連續內存分配,純段式分配和純頁式分配在下面問題中的關系。a.外部碎片b.內部碎片c.通過進程分享代碼的能力Answer:連續內存分配會產生外部碎片,因為地址空間是被連續分配
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年移動互聯網應用開發考試試題及答案
- 2025年數據科學與大數據技術課程考試試卷及答案
- 2025年農村經濟管理師資格考試試卷及答案
- 2025年美術教師專業技能考試試題及答案
- 2025年教育科技在課堂應用能力考核試卷及答案
- 2025年教師資格證考試卷及答案
- 2025年非洲文化與貿易研究生入學考試試卷及答案
- 2025年高層管理人員溝通技巧考核試題及答案
- 正規煤炭運輸合同
- 2024年度浙江省護師類之主管護師自我檢測試卷B卷附答案
- 金融公司干股協議書
- 2025益陽事業單位筆試真題
- 2025年初中地理學業水平考試(八年級)模擬卷【內蒙古專用】(含解析)
- 2025年江蘇南京河西新城區國有資產經營控股集團招聘筆試參考題庫含答案解析
- 《足外傷的護理》課件
- 大一信息技術考試試題及答案
- 泵站沉井施工方案
- 職業技術學院2024級藥膳與食療專業人才培養方案
- 固化地面承攬合同協議
- 2025物業社區文化建設方案物業社區文化活動方案2
- 高端寫字樓安全管理
評論
0/150
提交評論