第四章—執行緒、對稱多處理和微核心【計算機作業系統】
4.1 表3.5列出了在一個沒有執行緒的作業系統中程序控制塊的基本元素。對於多執行緒系統,這些元素中那些可能屬於執行緒控制塊,那些可能屬於程序控制塊?
這對於不同的系統來說通常是不同的,但一般來說,程序是資源的所有者,而每個執行緒都有它自己的執行狀態。關於表3.5中的每一項的一些結論如下:程序標識:程序必須被標識,而程序中的每一個執行緒也必須有自己的ID。處理器狀態資訊:這些資訊通常只與程序有關。程序控制資訊:排程和狀態資訊主要處於執行緒級;資料結構在兩級都可出現;程序間通訊和執行緒間通訊都可以得到支援;特權在兩級都可以存在;儲存管理通常在程序級;資源資訊通常也在程序級。
4.2 請列出執行緒間的模式切換比程序間的模式切換開銷更低的原因。
包含的狀態資訊更少。
4.3 在程序概念中體現出的兩個獨立且無關的特點是什麼?
資源所有權和排程/執行。
4.4 給出在單使用者多處理系統中使用執行緒的四個例子。
前臺和後臺操作,非同步處理,加速執行和模組化程式結構。
4.5 哪些資源通常被一個程序中的所有執行緒共享?
例如地址空間,檔案資源,執行特權等。
4.6 列出使用者級執行緒優於核心級執行緒的三個優點。
1.由於所有執行緒管理資料結構都在一個程序的使用者地址空間中,執行緒切換不需要核心模式的特權,因此,程序不需要為了執行緒管理而切換到核心模式,這節省了在兩種模式間進行切換(從使用者模式到核心模式;從核心模式返回使用者模式)的開銷。
2.呼叫可以是應用程式專用的。一個應用程式可能傾向於簡單的輪詢排程演算法,而另一個應用程式可能傾向於基於優先順序的排程演算法。排程演算法可以去適應應用程式,而不會擾亂底層的作業系統排程器。
3.使用者級執行緒可以在任何作業系統中執行,不需要對底層核心進行修改以支援使用者級執行緒。執行緒庫是一組供所有應用程式共享的應用級軟體包。
4.7 列出使用者級執行緒相對於核心級執行緒的兩個缺點。
1.在典型的作業系統中,許多系統呼叫都會引起阻塞。因此,當用戶級執行緒執行一個系統呼叫時,不僅這個執行緒會被阻塞,程序中的所有執行緒都會被阻塞。
2.在純粹的使用者級程序策略中,一個多執行緒應用程式不能利用多處理技術。核心一次只把一個程序分配給一個處理器,因此一次程序中只能有一個執行緒可以執行。
4.8 定義jacketing。
Jacketing通過呼叫一個應用級的I/O例程來檢查I/O裝置的狀態,從而將一個產生阻塞的系統呼叫轉化為一個不產生阻塞的系統呼叫。
4.9 簡單定義圖4.8中列出的各種結構。
SIMD:一個機器指令控制許多處理部件步伐一致地同時執行。每個處理部件都有一個相關的資料儲存空間,因此,每條指令由不同的處理器在不同的資料集合上執行。
MIMD:一組處理器同時在不同的資料集上執行不同的指令序列。主/從:作業系統核心總是在某個特定的處理器上執行,其他處理器只用於執行使用者程式,還可能執行一些作業系統實用程式。
SMP:核心可以在任何處理器上執行,並且通常是每個處理器從可用的程序或執行緒池中進行各自的排程工作。叢集:每個處理器都有一個專用儲存器,而且每個處理部件都是一個獨立的計算機。
4.10 列出SMP作業系統的主要設計問題。
同時的併發程序或執行緒,排程,同步,儲存器管理,可靠性和容錯。
4.11 給出在典型的單體結構作業系統中可以找到且可能是微核心作業系統外部子系統中的服務和功能。
裝置驅動程式,檔案系統,虛存管理程式,視窗系統和安全服務。
4.12 列出並簡單解釋微核心設計相對於整體式設計的七個優點。
一致介面:程序不需要區分是核心級服務還是使用者級服務,因為所有服務都是通過訊息傳遞提供的。
可擴充套件性:允許增加新的服務以及在同一個功能區域中提供多個服務。
靈活性:不僅可以在作業系統中增加新功能,還可以刪減現有的功能,以產生一個更小、更有效的實現。
可移植性:所有或者至少大部分處理器專用程式碼都在微核心中。因此,當把系統移植到一個處理器上時只需要很少的變化,而且易於進行邏輯上的歸類。
可靠性:小的微核心可以被嚴格地測試,它使用少量的應用程式程式設計介面(API),這就為核心外部的作業系統服務產生高質量的程式碼提供了機會。
分散式系統支援:微核心通訊中訊息的方向性決定了它對分散式系統的支援。
面向物件作業系統環境:在微核心設計和作業系統模組化擴充套件的開發中都可以藉助面向物件方法的原理。
4.13 解釋微核心作業系統可能存在的效能缺點。
通過微核心構造和傳送資訊、接受應答並解碼所花費的時間比一次系統呼叫的時間要多。
4.14 列出即使在最小的微核心作業系統中也可以找到的三個功能。
低階儲存器管理,程序間通訊(IPC)以及I/O和中斷管理。
4.15 在微核心作業系統中,程序或執行緒間通訊的基本形式是什麼?
訊息。