【正文】
答:該系統(tǒng)顯然花費(fèi)了許多時(shí)間進(jìn)行分頁(yè),顯示過(guò)度分配的內(nèi)存,如果多級(jí)程序水平減少駐地進(jìn)程,將頁(yè)面錯(cuò)誤變少和提高 CPU 利用率。 問(wèn):什么是寫時(shí)拷貝功能,在什么情況下,有利于此功能?支持此功能的硬件是什么?答:當(dāng)兩個(gè)進(jìn)程正在訪問(wèn)同一套程序值(例如,代碼段的二進(jìn)制代碼)在寫保護(hù)的方式下,映射相應(yīng)的頁(yè)面到虛擬地址空間是有用的,當(dāng)寫操作進(jìn)行時(shí),拷貝必須允許兩個(gè)程序分別進(jìn)行不同的拷貝而不干擾對(duì)方。如果多個(gè)頁(yè)表映射在同個(gè)入口處,則橫穿名單相應(yīng)的哈希頁(yè)表可能導(dǎo)致負(fù)擔(dān)過(guò)重。當(dāng)一個(gè)程序需要擴(kuò)展它的堆或棧時(shí),它需要分配一個(gè)新的頁(yè),但是相關(guān)的頁(yè)表入口被提前分配了。因?yàn)椴僮飨到y(tǒng)控制這張表的內(nèi)容,只有在這些物理頁(yè)被分配到進(jìn)程中時(shí),它可以限制一個(gè)進(jìn)程的進(jìn)入。 按順序給出 5 個(gè)部分的內(nèi)存,分別是 100KB,500KB,200KB,300KB 和 600KB,用 firstfit,bestfit 和 worstfit 算法,能夠怎樣按順序分配進(jìn)程 212KB,417KB,112KB,426KB 和426KB?哪個(gè)算法充分利用了內(nèi)存空間?Answer: a. Firstfit:b. 212K is put in 500K partitionc. 417K is put in 600K partitiond. 112K is put in 288K partition (new partition 288K = 500K ? 212K)e. 426K must waitf. Bestfit:g. 212K is put in 300K partitionh. 417K is put in 500K partitioni. 112K is put in 200K partitionj. 426K is put in 600K partitionk. Worstfit:l. 212K is put in 600K partitionm. 417K is put in 500K partitionn. 112K is put in 388K partition o. 426K must waitBestfit: 算法充分利用了內(nèi)存空間。對(duì)于資源BAllocatedNeedP0,32P102P200P311P403在次序P2, P3, P1 , P0,P4下,各進(jìn)程可以被滿足。因?yàn)橛腥齻€(gè)進(jìn)程和四個(gè)資源,一個(gè)進(jìn)程就必須獲取兩個(gè)資源。(這種同步對(duì)象可能包括互斥體,信號(hào)量,條件變量等),我們可以通過(guò)增加第六個(gè)對(duì)象來(lái)防止死鎖。a. 證明這個(gè)例子中實(shí)際上包括了死鎖的四個(gè)必要條件。進(jìn)程需要一定數(shù)量的這種資源,一旦用完將釋放它們。如果這一進(jìn)程不會(huì)放棄此處理器,其他進(jìn)程就無(wú)法設(shè)置第一個(gè)進(jìn)程所要求的程序條件,從而不能繼續(xù)操作。假設(shè)signal語(yǔ)句只能作為一個(gè)管程中的最后一條語(yǔ)句出現(xiàn), 節(jié)所描述的實(shí)現(xiàn)?如果signal語(yǔ)句作為最后一條語(yǔ)句出現(xiàn),那么鎖會(huì)使發(fā)出信號(hào)的進(jìn)程轉(zhuǎn)化成接受信號(hào)的進(jìn)程。如果兩個(gè)收購(gòu)操作在信號(hào)量的值為 1 的信號(hào)量上執(zhí)行,而且這兩種操作不是自動(dòng)執(zhí)行的,那么這兩個(gè)操作在進(jìn)展中會(huì)遞減信號(hào)量的值,從而干擾互斥。 解釋為什么自旋鎖不適合在單處理器系統(tǒng),而經(jīng)常在多處理器系統(tǒng)下使用?答:自旋鎖不適合在單處理器系統(tǒng)是因?yàn)閺淖孕i中打破一個(gè)進(jìn)程的條件只有在執(zhí)行一個(gè)不同的進(jìn)程時(shí)才能獲得。我們保證沒(méi)有兩個(gè)進(jìn)程將同時(shí)進(jìn)入臨界區(qū)域。當(dāng)退出它的臨界區(qū)域,它可以設(shè)置轉(zhuǎn)向其他進(jìn)程的值。剩余區(qū)}while(1)。答:5.12考慮在Solaris操作系統(tǒng)中的為分時(shí)線程的調(diào)度算法:a:一個(gè)優(yōu)先權(quán)是10的線程的時(shí)間片是多少??jī)?yōu)先權(quán)是55的呢?b:假設(shè)優(yōu)先權(quán)是35的一個(gè)線程用它所有的時(shí)間片在沒(méi)有任何阻止的情況下,這調(diào)度算法將會(huì)分配給這個(gè)線程什么樣新的優(yōu)先權(quán)?c:假設(shè)一個(gè)優(yōu)先權(quán)是35的線程在時(shí)間片結(jié)束前阻止I/O操作。:這I/O限制任務(wù)會(huì)在使用完1毫秒時(shí)間片后進(jìn)行一次上下文切換。當(dāng) a==10毫秒時(shí),進(jìn)程最近的行為是給予更高的重量和過(guò)去的就能成相比。然而,當(dāng)一個(gè)內(nèi)核塊內(nèi)的內(nèi)核(因頁(yè)面錯(cuò)誤或同時(shí)援引系統(tǒng)調(diào)用)相應(yīng)的處理器將閑置。4.5一個(gè)采用多用戶線程的多線程方案在多進(jìn)程系統(tǒng)中能夠取得比在單處理器系統(tǒng)中更好的性能嗎?答:一個(gè)包括多用戶線程的多線程系統(tǒng)無(wú)法在多處理系統(tǒng)上同時(shí)使用不同的處理器。帶有定長(zhǎng)信息(256bytes),信息從發(fā)送者的地址空間被復(fù)制至接受進(jìn)程的地址空間。試想,如果一個(gè)遠(yuǎn)端程序在一個(gè)不支持這些語(yǔ)義的系統(tǒng)上從銀行賬戶中撤回投資的資金。Answer:綜合是令人欽佩的由于這種性能通過(guò)即時(shí)復(fù)雜化取得了成功。在模塊化內(nèi)核方法中沒(méi)有太多的限制,模式在哪方面是隨意援引彼此的是沒(méi)有任何約束的。Answer:Java程序的開(kāi)發(fā)是用來(lái)作為I/O獨(dú)立的平臺(tái)。用戶能夠利用由操作系統(tǒng)提供的系統(tǒng)調(diào)用接口開(kāi)發(fā)新的命令解釋器。例如,確保信息存儲(chǔ)中被分配和還未被分配的空間塊的數(shù)量和裝置中所有塊的數(shù)量的一致。說(shuō)明在哪些情況下用戶級(jí)程序不能夠提夠這些服務(wù)。:一種可以完成像記事本, 和網(wǎng)頁(yè)瀏覽等簡(jiǎn)單任務(wù)的小型計(jì)算機(jī)系統(tǒng)。它們可以被更遲地提交或獲得。如果一個(gè)組成部件中的數(shù)據(jù)值改變了,緩存中的這個(gè)數(shù)據(jù)也必須更新。當(dāng)設(shè)備完成此操作時(shí),就中斷 CPU 來(lái)說(shuō)明操作已經(jīng)完成。對(duì)于并行集群系統(tǒng),數(shù)據(jù)庫(kù)可以在兩個(gè)并行的主機(jī)上運(yùn)行。 試區(qū)分分布式系統(tǒng)(distribute system)的客戶機(jī)服務(wù)器(clientserver)模型與對(duì)等系統(tǒng)(peertopeer)模型Answer: 客戶機(jī)服務(wù)器(clientserver)模型可以由客戶機(jī)和服務(wù)器的角色被區(qū)分。當(dāng)作業(yè)足夠小,且能在個(gè)人計(jì)算機(jī)上合理的運(yùn)行時(shí),以及當(dāng)個(gè)人計(jì)算機(jī)的性能能夠充分的運(yùn)行程序來(lái)達(dá)到用戶的滿意時(shí),個(gè)人計(jì)算機(jī)是最好的。充分利用該系統(tǒng)可以對(duì)用戶的問(wèn)題產(chǎn)生影響。集群系統(tǒng)通過(guò)消息進(jìn)行通信,而多道程序系統(tǒng)是通過(guò)共享的存儲(chǔ)空間。如果服務(wù)器出現(xiàn)故障,進(jìn)行監(jiān)測(cè)的主機(jī)就會(huì)轉(zhuǎn)變成運(yùn)行這個(gè)數(shù)據(jù)庫(kù)的主機(jī)。(a)設(shè)備的 CPU 接口是怎樣與轉(zhuǎn)換器(transfer)協(xié)作的?(b)當(dāng)內(nèi)存操作完全時(shí),CPU 是怎么知道的?(c)當(dāng) DMA 控制器正在轉(zhuǎn)換數(shù)據(jù)時(shí),CPU 是被允許運(yùn)行其它程序的。緩存通過(guò)在個(gè)組成部件之間提供一個(gè)中間速度的緩沖區(qū)來(lái)解決轉(zhuǎn)換問(wèn)題。Answer:(a)一個(gè)寢室樓層:A LAN(b)一個(gè)大學(xué)校園: A LAN,possibly a WAN for a very large campuses.(c) 一個(gè)州:A WAN(d) 一個(gè)國(guó)家:A WAN 列出下列操作系統(tǒng)的基本特點(diǎn): Answer: :具有相似需求的作業(yè)被成批的集合起來(lái),并把它們作為一個(gè)整體通過(guò)一個(gè)操作員或自動(dòng)作業(yè)程序裝置運(yùn)行通過(guò)計(jì)算機(jī)。每個(gè)處理器都有它各自的本地存儲(chǔ)器。虛擬存儲(chǔ)器和文件系統(tǒng)就是由操作系統(tǒng)提供的這種新服務(wù)的實(shí)例。在硬件水平下,所有數(shù)據(jù)轉(zhuǎn)移都必須仔細(xì)檢查以確保數(shù)據(jù)在運(yùn)送中不會(huì)被破壞。但有些能夠被克服通過(guò)使用ioctl操作,這個(gè)操作為了進(jìn)程在設(shè)備上援引操作提供一個(gè)通用接口。沒(méi)有兩個(gè)系統(tǒng)的裝置是完全相同的,所以每一個(gè)裝置都想要把操作系統(tǒng)改為適合自己的。?什么方式與分層方法不同?Answer:模塊化內(nèi)核方法要求子系統(tǒng)通過(guò)創(chuàng)建的一般而言狹隘(從功能方面來(lái)說(shuō)是揭露外部模塊)的接口來(lái)相互作用。為了優(yōu)化系統(tǒng)調(diào)用的性能,內(nèi)核通過(guò)在內(nèi)核空間內(nèi)匯編程序來(lái)縮短系統(tǒng)調(diào)用在內(nèi)核必須經(jīng)過(guò)的途徑。描述不可取的情況下可能出現(xiàn)或者不執(zhí)行的”最多一次”或”到底一旦“語(yǔ)義。Java’s RMI 公司提供兩種發(fā)送,但引用傳遞一個(gè)參數(shù)需要聲明這個(gè)參數(shù)是一個(gè)遠(yuǎn)程對(duì)象。另一方面,當(dāng)頁(yè)面發(fā)生錯(cuò)誤時(shí),一個(gè)單一線程進(jìn)程將不能夠發(fā)揮有效性能。讓程序中的用戶線程數(shù)量多于系統(tǒng)中的處理器的數(shù)量,討論下列情況下的性能意義: b. 由程序分配的內(nèi)核線程的數(shù)量與處理器相同c. 由程序分配的內(nèi)核線程的數(shù)量大于處理器數(shù)量但少于用戶線程的數(shù)量答:當(dāng)內(nèi)核線程的數(shù)量少于處理器時(shí),一些處理器將仍然處于空閑狀態(tài)。I/O設(shè)備利用率的最大化可以通過(guò)盡可能調(diào)度已經(jīng)準(zhǔn)備好的I/O限制的任務(wù)。同時(shí),所有的進(jìn)程都是長(zhǎng)進(jìn)程。b. RR對(duì)所有的任務(wù)都是能夠相同的(給它們相同的CPU時(shí)間區(qū)間),所以,短任務(wù)可以很快的離開(kāi)系統(tǒng),只要它們可以先完成。 flag[i]=true。(2) 就緒的進(jìn)程,通過(guò)標(biāo)志,返回變量。證明這個(gè)算法滿足臨界區(qū)域問(wèn)題的三項(xiàng)要求。答:忙等待意味著一個(gè)進(jìn)程正在等待滿足一個(gè)沒(méi)有閑置處理器的嚴(yán)格循環(huán)的條件。如果系統(tǒng)道道了允許開(kāi)放式的插座連接的數(shù)量,相繼調(diào)用收購(gòu)方法將受阻直到一個(gè)現(xiàn)有的連線終止,釋放方法調(diào)用。如果隨后執(zhí)行wait操作,那么相關(guān)的線程就會(huì)被阻塞。在這種情況下,布爾條件可以傳達(dá)給運(yùn)行時(shí)系統(tǒng),該系統(tǒng)可以執(zhí)行檢查每一個(gè)它所需要的時(shí)間,以確定哪些線程被喚醒。分配一個(gè)新時(shí)間戳給已經(jīng)恢復(fù)到原值的事務(wù)有什么影響?對(duì)于新進(jìn)入系統(tǒng)進(jìn)程的事務(wù),其所賦予的時(shí)間戳是如何大于原先事務(wù)的時(shí)間戳的?在原先事務(wù)的訪問(wèn)變量改變后執(zhí)行事務(wù),那么相應(yīng)的事務(wù)也恢復(fù)到原先的值。 a. 確定數(shù)據(jù)參與競(jìng)爭(zhēng):可以利用的變量資源b. 當(dāng)競(jìng)爭(zhēng)的條件發(fā)生時(shí),確定代碼段的位置(或是區(qū)域):代碼使現(xiàn)有的資源遞減和代碼現(xiàn)有資源遞增的聲明可以放在競(jìng)爭(zhēng)的條件。死鎖可避免克服的條件方式如下:1 )允許同時(shí)分享筷子,2 )有哲學(xué)家放棄第一雙筷子如果他們無(wú)法獲得其他筷子,3 )允許筷子被強(qiáng)行拿走如果筷子已經(jīng)被一位哲學(xué)家了占有了很長(zhǎng)一段時(shí)間4 )實(shí)施編號(hào)筷子,總是獲得較低編號(hào)的筷子,之后才能獲得較高的編號(hào)的筷子。證明這個(gè)系統(tǒng)不會(huì)死鎖。試通過(guò)一個(gè)例子說(shuō)明對(duì)于每個(gè)資源類型,多資源類型的銀行家方案不能通過(guò)單一資源類型方案的單獨(dú)運(yùn)用來(lái)實(shí)現(xiàn)。連接編輯器是怎樣對(duì)內(nèi)存地址改變指令和數(shù)據(jù)的捆綁?從編譯器到連接編輯器,什么信息需要被通過(guò),而使內(nèi)存綁定連接編輯器作業(yè)比較容易?Answer:連接編輯器不得不將分解的符號(hào)地址替換為在最終的程序二進(jìn)制中,與變量相聯(lián)系的實(shí)際地址。在頁(yè)granularity,頁(yè)式分配也允許進(jìn)程共享代碼。這可能造成比進(jìn)程所需要的實(shí)際內(nèi)存大很多。第三個(gè)是現(xiàn)實(shí)的內(nèi)存裝載操作。答:假設(shè)頁(yè)面邊緣為 1024,移動(dòng)空間從資源區(qū) 800:1200 到目標(biāo)區(qū) 700:1100,假設(shè)當(dāng)頁(yè)表在 1024 邊緣發(fā)生故障訪問(wèn)錯(cuò)誤,這時(shí)候的位置 800:923 已覆蓋新的值,因此,重新啟動(dòng)區(qū)塊移動(dòng)指令會(huì)導(dǎo)致在 800:923 到 700:823 之間復(fù)制新的值,而這是不正確的。 問(wèn):在 VAX/VMS 系統(tǒng)對(duì)駐留頁(yè)采用先進(jìn)先出算法,在空閑幀給最近最少使用頁(yè)面,假設(shè)在空閑幀使用 LRU 算法,回答下列問(wèn)題,如何駐留頁(yè)面,空閑幀怎么樣分配給新要求頁(yè)表。,因?yàn)榇疟P的瓶頸是刪除更快的響應(yīng),和更多的磁盤容量,CPU 將會(huì)獲得更多的數(shù)據(jù)傳輸速度 將獲得更快的數(shù)據(jù)傳輸率,所以更多地被使用。 問(wèn):某個(gè)計(jì)算機(jī)給它的用戶提供了 232 的虛擬內(nèi)存空間,計(jì)算機(jī)有 214B 的物理內(nèi)存,虛擬內(nèi)存使用頁(yè)面大小為 4094B 的分頁(yè)機(jī)制實(shí)現(xiàn)。B.使用這樣復(fù)雜的地址轉(zhuǎn)換硬件對(duì)硬件系統(tǒng)有什么好處?C.這樣的地址轉(zhuǎn)換系統(tǒng)有沒(méi)有什么缺點(diǎn)?如果有,有哪些?如果沒(méi)有,為什么不是每個(gè)制造商都使用這種方案。當(dāng)頁(yè)表變的十分大時(shí),段式存儲(chǔ)是十分有用的。當(dāng)兩個(gè)或多個(gè)進(jìn)程需要交換數(shù)據(jù)時(shí),這是十分有用的。在下面的方案中,為了支持動(dòng)態(tài)內(nèi)存分配的要求是什么? Answer:a. 連續(xù)內(nèi)存分配:當(dāng)沒(méi)有足夠的空間給程序去擴(kuò)大它已分配的內(nèi)存空間時(shí),將要求重新分配整個(gè)程序。同時(shí),如果我們有多重資源類型,我們則必須使用多重資源類型的銀行家算法。證明只要系統(tǒng)符合下面兩個(gè)條件,就不會(huì)發(fā)生死鎖: 1 到 m 之間 m+nAnswer:使用 的術(shù)語(yǔ),可以有: a. _ni=1 Maxim+ n b. Maxi≥ 1 for all iProof: Needi= Maxi? Allocationi If there exists a deadlock state then:c. _ni=1 Allocationi= mUse a. to get:_ Needi+ _ Allocationi= _ Maxim+ nUse c. to get:_ Needi+ mm+ nRewrite to get:_ni=1 Needin //符號(hào)打不出來(lái),大家自己看答案這意味著存在一個(gè)Pi的進(jìn)程,其Needi==1,那么Pi進(jìn)程至少有一個(gè)資源可以釋放。這很可能不是一個(gè)好的解決辦法,因?yàn)樗a(chǎn)生過(guò)大的范圍?;コ獾臈l件是只有一輛車占據(jù)道路上的一個(gè)空間位置。如果所有的許可證都在使用,那么要求啟動(dòng)該應(yīng)用程序的申請(qǐng)被剝奪了。為什么這個(gè)限制是必需的?如果事務(wù)需要放棄,那么更新的數(shù)據(jù)項(xiàng)的值應(yīng)該要恢復(fù)到原來(lái)的值。b. 解釋為什么一般來(lái)說(shuō)這種結(jié)構(gòu)實(shí)現(xiàn)的效率不高。每個(gè)線程有一個(gè)和它的隊(duì)列進(jìn)入有關(guān)的信號(hào)量。 如果一個(gè)同步元是在一個(gè)用戶級(jí)程序中使用的,解釋在一個(gè)單處理器系統(tǒng)中為什么通過(guò)停止中斷去實(shí)現(xiàn)這個(gè)同步元是不適合的?答:如果一個(gè)用戶級(jí)程序具有停止中斷的能力,那么它能夠停止計(jì)時(shí)器中斷,防止上下文切換的發(fā)生,從而允許它使用處理器而不讓其他進(jìn)程執(zhí)行?,F(xiàn)在只有唯一的進(jìn)程將設(shè)置它的輪次變量到 cs 中,這個(gè)唯一的進(jìn)程就是其序號(hào)是最接近輪次的。假設(shè)兩個(gè)進(jìn)程想要進(jìn)入它們的責(zé)任所在的臨界區(qū)域。如果所有進(jìn)程都把他們的變量設(shè)置為真,只有一個(gè)會(huì)成功,那就是哪個(gè)進(jìn)程輪到的問(wèn)題了。假設(shè)最近進(jìn)程p1的CPU使用率是40個(gè),p2是18 ,p3是10。 4 個(gè) Gantt 圖分別演示用 FCFS、SJF、非搶占優(yōu)先級(jí)(數(shù)字小代表優(yōu)先級(jí)高)和RR(時(shí)間片=1)算法調(diào)度時(shí)進(jìn)程的執(zhí)行過(guò)程。第五章 CPU調(diào)度,區(qū)分I/0限制的程序和CPU限制的程序是重要的?答:I/0限制的程序有在運(yùn)行I/O操作前只運(yùn)行很少數(shù)量的計(jì)算機(jī)操作的性質(zhì)。,Linux沒(méi)有區(qū)分進(jìn)程和線程的能力。例如一個(gè)計(jì)算個(gè)人報(bào)酬的程序。然而,賬戶余額成其它賬戶信息的查詢,如