操作系統--精髓與設計原理(第八版)第四章復習題答案
4.1 表3.5列出了在一個沒有線程的操作系統中進程控制塊的基本元素。對於多線程系統,這些元素中哪些可能屬於線程控制塊,哪些可能屬於進程控制塊?
這對於不同的系統來說通常是不同的,但一般來說,進程是資源的所有者,而每個線程都有它自己的執行狀態。關於表3.5中的每一項的一些結論如下:
- 進程控制信息:調度和狀態信息主要處於線程級;數據結構在兩級都可出現;進程間通信和線程間通信都可以得到支持;特權在兩級都可以存在;存儲管理通常在進程級;資源信息通常也在進程級;
- 進程標識:進程必須被標識,而進程中的每一個線程也必須有自己的ID。
- 處理器狀態信息:這些信息通常只與進程有關。
4.2 請列出線程間的模式切換比進程間的模式切換開銷更低的原因。
包含的狀態信息更少。
4.3 在進程概念中體現出的兩個獨立且無關的特點是什么?
- 資源所有權: 進程包括存放進程映像的虛擬地址空間;回顧第3章的內容可知,進程映像是程序、數據、棧和進程控制塊中定義的屬性集。進程總具有對資源的控制權或所有權,這些資源包括內存、I/O通道、I/O設備和文件等。操作系統提供預防進程間發生不必要資源沖突的保護功能。
- 調度/執行:進程執行時采用一個或多程序(見圖1.5)的執行路徑(軌跡),不同進程的執行過程會交替進行。因此,進程具有執行態(運行、就緒等)和分配給其的優先級,是可被操作系統調度和分派的實體。
4.4 給出在單用戶多處理系統中使用線程的四個例子。
- 前台和后台操作
- 異步處理
- 加速執行
- 模塊化程序結構。
4.5 哪些資源通常被一個進程中的所有線程共享?
進程中的所有線程共享該進程的狀態和資源,例如地址空間,文件資源,執行特權等。
4.6 列出用戶級線程由於內核級線程的三個優點。
- 由於所有線程管理數據結構都在一個進程的用戶地址空間中,線程切換不需要內核級模式的特權,因此,進程不需要為了線程管理而切換到內核模式,這節省了在兩種模式間進行切換(從用戶模式到內核模式;從內核模式返回用戶模式)的開銷。
- 調用可以是應用程序專用的。一個應用程序可能傾向於就按單的輪詢調度算法,而另一個應用程序可能傾向於基於優先級的調度算法。調度算法可以去適應應用程序,而不會擾亂底層的操作系統調度器。
- 用戶級線程可以在任何操作系統中運行,不需要對底層內核進行修改以支持用戶級線程。線程庫是一組供所有應用程序共享的應用級軟件包。
4.7 列出用戶級線程相對於內核級線程的兩個缺點。
- 在典型的操作系統中,許多系統調用都會引起阻塞。因此,當用戶級線程執行一個系統調用時,不僅這個線程會被阻塞,進程中的所有線程都會被阻塞。
- 在純粹的用戶級進程策略中,一個多線程應用程序不能利用多處理器技術。內核一次只把一個進程分配給一個處理器,因此一次進程中只能有一個線程可以執行。
4.8 定義”套管“jacketing.
Jacketing通過調用一個應用級的I/O例程來檢查I/O設備的狀態,從而將一個產生阻塞的系統調用轉化為一個不產生阻塞的系統調用。