<th id="jklfj"></th>
    <tbody id="jklfj"></tbody>
    <th id="jklfj"></th>
    <progress id="jklfj"></progress>
    <ol id="jklfj"><ruby id="jklfj"><u id="jklfj"></u></ruby></ol>
    <legend id="jklfj"></legend>

    操作系統 第三章,第四章,第九章課后習題整理 聯系客服

    第3章 進程描述和控制

    復習題:

    什么是指令跟蹤?

    答:指令跟蹤是指為該進程而執行的指令序列。 通常那些事件會導致創建一個進程?

    答:新的批處理作業;交互登錄;操作系統因為提供一項服務而創建;由現有的進程派生。(詳情請參考表3.1)

    對于圖3.6中的進程模型,請簡單定義每個狀態。

    答:運行態:該進程正在執行。就緒態:進程做好了準備,只要有機會就開始執行。阻塞態:進程在某些事件發生前不能執行,如I/O操作完成。新建態:剛剛創建的進程,操作系統還沒有把它加入到可執行進程組中。退出態:操作系統從可執行進程組中釋放出的進程,或者是因為它自身停止了,或者是因為某種原因被取消。

    搶占一個進程是什么意思?

    答:處理器為了執行另外的進程而終止當前正在執行的進程,這就叫進程搶占。

    什么是交換,其目的是什么? 答:交換是指把主存中某個進程的一部分或者全部內容轉移到磁盤。當主存中沒有處于就緒態的進程時,操作系統就把一個阻塞的進程換出到磁盤中的掛起隊列,從而使另一個進程可以進入主存執行。

    為什么圖3.9(b)中有兩個阻塞態?

    答:有兩個獨立的概念:進程是否在等待一個事件(阻塞與否)以及進程是否已經被換出主存(掛起與否)。為適應這種2*2的組合,需要兩個阻塞態和兩個掛起態。 列出掛起態進程的4個特點。

    答:1.進程不能立即執行。2.進程可能是或不是正在等待一個事件。如果是,阻塞條件不依賴于掛起條件,阻塞事件的發生不會使進程立即被執行。3.為了阻止進程執行,可以通過代理把這個進程置于掛起態,代理可以是進程自己,也可以是父進程或操作系統。4.除非代理顯式地命令系統進行狀態轉換,否則進程無法從這個狀態中轉移。 對于哪類實體,操作系統為了管理它而維護其信息表? 答:內存、I/O、文件和進程。 列出進程控制塊中的三類信息。

    答:進程標識,處理器狀態信息,進程控制信息。

    為什么需要兩種模式(用戶模式和內核模式)? 答:用戶模式下可以執行的指令和訪問的內存區域都受到限制。這是為了防止操作系統受到破壞或者修改。而在內核模式下則沒有這些限制,從而使它能夠完成其功能。 操作系統創建一個新進程所執行的步驟是什么?

    答:1.給新進程分配一個唯一的進程標識號。2.給進程分配空間。3.初始化進程控制塊。4.設置正確的連接。5.創建或擴充其他的數據結構。 中斷和陷阱有什么區別?

    答:中斷與當前正在運行的進程無關的某些類型的外部事件相關,如完成一次I/O操作。陷阱與當前正在運行的進程所產生的錯誤或異常條件相關,如非法的文件訪問。 舉出中斷的三個例子。

    答:時鐘終端,I/O終端,內存失效。

    模式切換和進程切換有什么區別?

    答:發生模式切換可以不改變當前正處于運行態的進程的狀態。發生進程切換時,一個正在執行的進程被中斷,操作系統指定另一個進程為運行態。進程切換需要保存更多的狀態信息。

    第四章 線程、對稱多處理和微內核

    復習題:

    表3.5列出了在一個沒有線程的操作系統中進程控制塊的基本元素。對于多線程系統,這些元素中那些可能屬于線程控制塊,那些可能屬于進程控制塊?

    答:這對于不同的系統來說通常是不同的,但一般來說,進程是資源的所有者,而每個線程都有它自己的執行狀態。關于表3.5中的每一項的一些結論如下:進程標識:進程必須被標識,而進程中的每一個線程也必須有自己的ID。處理器狀態信息:這些信息通常只與進程有關。進程控制信息:調度和狀態信息主要處于線程級;數據結構在兩級都可出現;進程間通信和線程間通信都可以得到支持;特權在兩級都可以存在;存儲管理通常在進程級;資源信息通常也在進程級。

    請列出線程間的模式切換比進程間的模式切換開銷更低的原因。 答:包含的狀態信息更少。

    在進程概念中體現出的兩個獨立且無關的特點是什么? 答:資源所有權和調度/執行。

    給出在單用戶多處理系統中使用線程的四個例子。

    答:前臺和后臺操作,異步處理,加速執行和模塊化程序結構。 哪些資源通常被一個進程中的所有線程共享? 答:例如地址空間,文件資源,執行特權等。 列出用戶級線程優于內核級線程的三個優點。

    答:1.由于所有線程管理數據結構都在一個進程的用戶地址空間中,線程切換不需要內核模式的特權,因此,進程不需要為了線程管理而切換到內核模式,這節省了在兩種模式間進行切換(從用戶模式到內核模式;從內核模式返回用戶模式)的開銷。2.調用可以是應用程序專用的。一個應用程序可能傾向于簡單的輪詢調度算法,而另一個應用程序可能傾向于基于優先級的調度算法。調度算法可以去適應應用程序,而不會擾亂底層的操作系統調度器。3.用戶級線程可以在任何操作系統中運行,不需要對底層內核進行修改以支持用戶級線程。線程庫是一組供所有應用程序共享的應用級軟件包。 列出用戶級線程相對于內核級線程的兩個缺點。

    答:1.在典型的操作系統中,許多系統調用都會引起阻塞。因此,當用戶級線程執行一個系統調用時,不僅這個線程會被阻塞,進程中的所有線程都會被阻塞。2.在純粹的用戶級進程策略中,一個多線程應用程序不能利用多處理技術。內核一次只把一個進程分配給一個處理器,因此一次進程中只能有一個線程可以執行。 定義jacketing。

    答:Jacketing通過調用一個應用級的I/O例程來檢查I/O設備的狀態,從而將一個產生阻塞的系統調用轉化為一個不產生阻塞的系統調用。

    簡單定義圖4.8中列出的各種結構。

    答:SIMD:一個機器指令控制許多處理部件步伐一致地同時執行。每個處理部件都有一個相關的數據存儲空間,因此,每條指令由不同的處理器在不同的數據集合上執行。MIMD:一組處理器同時在不同的數據集上執行不同的指令序列。主/從:操作系統內核總是在某個特定的處理器上運行,其他處理器只用于執行用戶程序,還可能執行一些操作系統實用程序。SMP:內核可以在任何處理器上執行,并且通常是每個處理器從可用的進程或線程池中進行各自的調度工作。集群:每個處理器都有一個專用存儲器,而且每個處理部件都是一個獨立的計算機。

    列出SMP操作系統的主要設計問題。

    答:同時的并發進程或線程,調度,同步,存儲器管理,可靠性和容錯。

    給出在典型的單體結構操作系統中可以找到且可能是微內核操作系統外部子系統中的服務和功能。

    答:設備驅動程序,文件系統,虛存管理程序,窗口系統和安全服務。 列出并簡單解釋微內核設計相對于整體式設計的七個優點。

    答:一致接口:進程不需要區分是內核級服務還是用戶級服務,因為所有服務都是通過消息傳遞提供的?蓴U展性:允許增加新的服務以及在同一個功能區域中提供多個服務。靈活性:不僅可以在操作系統中增加新功能,還可以刪減現有的功能,以產生一個更小、更有效的實現?梢浦残裕核谢蛘咧辽俅蟛糠痔幚砥鲗S么a都在微內核中。因此,當把系統移植到一個處理器上時只需要很少的變化,而且易于進行邏輯上的歸類?煽啃裕盒〉奈群丝梢员粐栏竦販y試,它使用少量的應用程序編程接口(API),這就為內核外部的操作系統服務產生高質量的代碼提供了機會。分布式系統支持:微內核通信中消息的方向性決定了它對分布式系統的支持。面向對象操作系統環境:在微內核設計和操作系統模塊化擴展的開發中都可以借助面向對象方法的原理。

    解釋微內核操作系統可能存在的性能缺點。

    答:通過微內核構造和發送信息、接受應答并解碼所花費的時間比一次系統調用的時間要多。 列出即使在最小的微內核操作系統中也可以找到的三個功能。 答:低級存儲器管理,進程間通信(IPC)以及I/O和中斷管理。 在微內核操作系統中,進程或線程間通信的基本形式是什么? 答:消息。

    習題:

    一個進程中的多個線程有以下兩個優點:(1)在一個已有進程中創建一個新線程比創建一個新進程所需的工作量少;(2)在同一個進程中的線程間的通信比較簡單。請問同一個進程中的兩個線程間的模式切換與不同進程中的兩個線程間的模式切換相比,所需的工作量是否要少?

    答:是的,因為兩個進程間的模式切換要儲存更多的狀態信息。 在比較用戶級線程和內核級線程時曾指出用戶級線程的一個缺點,即當一個用戶級線程執行系統調用時,不僅這個線程被阻塞,而且進程中的所有線程都被阻塞。請問這是為什么? 答:因為對于用戶級線程來說,一個進程的線程結構對操作系統是不可見的,而操作系統的調度是以進程為單位的。

    在OS/2中,其他操作系統中通用的進程概念被分成了三個獨立類型的實體:會話、進程和線程。一個會話是一組與用戶接口(鍵盤、顯示器、鼠標)相關聯的一個或多個進程。會話代表了一個交互式的用戶應用程序,如字處理程序或電子表格,這個概念使得PC用戶可以打開一個以上的應用程序,在屏幕上顯示一個或更多個窗口。操作系統必須知道哪個窗口,即哪個會話是活躍的,從而把鍵盤和鼠標的輸入傳遞個相應的會話。在任何時刻,只有一個會話在前臺模式,其他的會話都在后臺模式,鍵盤和鼠標的所有輸入都發送給前臺會話的一個進程。當一個會話在前臺模式時,執行視頻輸出的進程直接把它發送到硬件視頻緩沖區。當一個會話在后臺時,如果該會話的任何一個進程的任何一個線程正在執行并產生屏幕輸出,則這個輸出被送到邏輯視頻緩沖區;當這個會話返回前臺時,屏幕被更新,為新的前臺會話反映出邏輯視頻緩沖區中的當前內容。

    有一種方法可以把OS/2中與進程相關的概念的數目從3個減少到2個。刪去會話,把用戶接口(鍵盤、顯示器、鼠標)和進程關聯起來。這樣,在某一時刻,只有一個進程處于前臺模式。為了進一步地進行構造,進程可以被劃分成線程。 使用這種方法會喪失什么優點?

    如果繼續使用這種修改方法,應該在哪里分配資源(存儲器、文件等):在進程級還是線程級? 答:

    會話的使用非常適合個人計算機和工作站對交互式圖形接口的需求。它為明確圖形輸出和鍵盤/鼠標輸入應該被關聯到什么位置提供了一個統一的機制,減輕了操作系統的工作負擔。 應該和其他的進程/線程系統一樣,在進程級分配地址空間和文件。 考慮這樣一個環境,用戶級線程和內核級線程呈一對一的映射關系,并且允許進程中的一個或多個線程產生會引發阻塞的系統調用,而其他線程可以繼續運行。解釋為什么這個模型可以使多線程程序比在單處理器機器上的相應的單線程程序運行速度更快?

    答:問題在于機器會花費相當多的時間等待I/O操作的完成。在一個多線程程序中,可能一個內核級線程會產生引發阻塞的系統調用,而其他內核級線程可以繼續執行。而在單處理器機器上,進程則必須阻塞知道所有的系統調用都可以繼續運行。參考:[LEWI96]

    如果一個進程退出時,該進程的某些線程仍在運行,請問他們會繼續運行嗎?

    答:不會。當一個進程退出時,會帶走它的所有東西——內核級線程,進程結構,存儲空間——包括線程。參考:[LEWI96]

    OS/390主機操作系統圍繞著地址空間和任務的概念構造。粗略說來,一個地址空間對應于一個應用程序,并且或多或少地對應于其他操作系統中的一個進程;在一個地址空間中,可以產生一組任務,并且它們可以并發執行,這大致對應于多線程的概念。管理任務結構有兩個主要的數據結構。地址空間控制塊(ASCB)含有OS/390所需要的關于一個地址空間的信息,而不論該地址空間是否在執行。ASCB中的信息包括分派優先級、分配給該地址空間的實存和虛存、該地址空間中就緒的任務數以及是否每個都被換出。一個任務控制塊(TCB)標識一個正在執行的用戶程序,它含有在一個地址空間中管理該任務所需要的信息,包括處理器狀態信息、指向該任務所涉及到的程序的指針和任務執行結構。ASCB是在系統存儲器中保存的全局結構,而TCB是保存在各自的地址空間中的局部結構。請問把控制信息劃分成全局和局部兩部分有什么好處?

    答:關于一個地址空間的盡可能多的信息可以隨地址空間被換出,從而節約了主存。

    一個多處理系統有8個處理器和20個附加磁帶設備,F在有大量的作業提交給該系統,完成每個作業最多需要4個磁帶設備。假設每個作業開始運行時只需要3個磁帶設備,并且在很長時間內都只需要這3個設備,而只是在最后很短的一段時間內需要第4個設備以完成操作。同時還假設這類作業源源不斷。

    假設操作系統中的調度器只有當4個磁帶設備都可用時才開始一個作業。當作業開始時,4個設備立即被分配給它,并且直到作業完成時才被釋放。請問一次最多可以同時執行幾個作業?采用這種策略,最多有幾個磁帶設備可能是空閑的?最少有幾個?

    給出另外一種策略,要求其可以提高磁帶設備的利用率,并且同時可以避免系統死鎖。分析最多可以有幾個作業同時執行,可能出現的空閑設備的范圍是多少。 答:

    采用一個保守的策略,一次最多同時執行20/4=5個作業。由于分配各一個任務的磁帶設備最多同時只有一個空閑,所以在同一時刻最多有5個磁帶設備可能是空閑的。在最好的情況下沒有磁帶設備空閑。

    為了更好的利用磁設備,每個作業在最初只分配三個磁帶設備。第四個只有的需要的時候才分配。在這種策略中,最多可以有20/3=6個作業同時執行。最少的空閑設備數量為0,最多有2個。參考:Advanced Computer Architectrue,K.Hwang,1993.

    在描述Solaris用戶級線程狀態時,曾表明一個用戶級線程可能讓位于具有相同優先級的另一個線程。請問,如果有一個可運行的、具有更高優先級的線程,讓位函數是否還會導致讓