10.1 列出並簡單定義五種不同級別的同步粒度。
細粒度:單指令流中固有的並行;
中等粒度:在乙個單獨應用中的並行處理或多工處理;
粗粒度:在多道程式環境中併發程序的多處理;
非常粗粒度:在網路節點上進行分布處理,以形成乙個計算環境;
無約束粒度:多個無關程序。
10.2 列出並簡單定義執行緒排程的四種技術。
載入共享:程序不是分配到乙個特定的處理器,而是維護乙個就緒程序的全域性佇列,每個處理器只要空閒就從佇列中選擇乙個執行緒。這裡使用術語載入共享來區分這種策略和載入平衡方案,載入平衡是基於一種比較永久的分配方案分配工作的。
專用處理器分配:在程式執行過程中,每個程式被分配給一組處理器,處理器的數目與程式中的執行緒的數目相等。當程式終止是,處理器返回到總的處理器池中,可供分配給另乙個程式。
動態排程:在執行期間,程序中線程的數目可以改變。
10.3 列出並簡單定義三種版本的負載分配。
先來先服務(fcfs):當乙個作業到達時,它的所有執行緒都被連續地放置在共享佇列末尾。當乙個處理器變得空閒時,它選擇下乙個就緒執行緒執行,直到完成或阻塞。
最少執行緒數優先:共享就緒佇列被組織成乙個優先順序佇列,如果乙個作業包含的未排程執行緒數目最少,則給它指定最高的優先順序。具有同等優先順序的佇列按作業到達的順序排隊。和fcfs一樣,被排程的執行緒一直執行到完成或阻塞。
可搶占的最少執行緒數優先:最高的的優先順序給予包含的未被排程的執行緒數目最少的作業。剛到達的作業如果包含的執行緒數目少於正在執行的作業,它將搶占屬於這個被排程作業的執行緒。
10. 硬實時任務和軟實時任務有什麼區別?
硬實時任務指必須滿足最後期限的限制,否則會給系統帶來不可接受的破壞或者致命的錯誤。
軟實時任務也有乙個與之相關聯的最後期限,並希望能滿足這個期限的要求,但是這並不是強制的,即使超過了最後期限,排程和完成這個任務仍然是有意義的。
10.5 週期性實時任務和非週期性實時任務有什麼區別?
非週期任務有乙個必須結束或開始的最後期限,或者有乙個關於開始時間和結束時間的約束。而對於週期任務,這個要求描述成「每隔週期t一次」或「每隔t個單位」。
10.6 列出並簡單定義對實時作業系統的五方面的要求。
可確定性:在某中程度上是指它可以按固定的、預先確定的時間或時間間隔執行操作。
可響應性:它關注的是在知道中斷之後作業系統未中斷提供服務的時間
使用者控制:使用者應該能夠區分硬實時任務和軟實時任務,並且在每一類中確定相對優先順序。實時系統還允許使用者指定一些特性,例如使用分頁還是程序交換、哪乙個程序必須常駐主存、使用何種磁碟演算法、不同的優先順序的程序各有哪些許可權等。
可靠性 :可靠性必須提供這樣一種方式,以繼續滿足實時最後期限。
故障弱化操作:故障弱化操作指系統在故障時盡可能多的儲存其效能和資料的能力。
10.7
列出並簡單定義四類實時排程演算法。
靜態表驅動法:執行關於可行排程的靜態分析。分析的結果是乙個排程,它用於確定在執行時乙個任務何時必須開始執行。
靜態優先順序驅動搶占法:同樣,執行乙個靜態分析,但是沒有制定排程,而且用於給任務指定優先順序,使得可以使用傳統的優先順序驅動的搶占式排程器。
基於動態規劃排程法:在執行是動態地確定可行性,而不是在開始執行前離線的確定(靜態)。乙個到達的任務,只有當能夠滿足它的時間約束時,才可以被接受執行。可行性分析的結果是乙個排程或規劃,可用於確定何時分派這個任務。
動態盡力排程法:不執行可行性分析。系統試圖滿足所有的最後期限,並終止任何已經開始執行但錯過最後期限的程序。
10.8
關於乙個任務的哪些資訊在實時排程是非常有用?
啟動最後期限:任務必須開始的時間。
完成最後期限:任務必須完成的時間。典型的實時應用程式或者有啟動最後期限,或者有完成最後期限,但不會兩者都存在。
資源需求:任務在執行過程中所需的資源集合(處理器以外的資源)。
優先順序:度量任務的相對重要性。硬實時任務可能具有絕對的優先順序,因為如果錯過最後期限則會導致系統失敗。如果系統無論如何也要繼續執行,則硬實時任務和軟實時任務可以被指定相關的優先順序,以指導排程器。
子任務結構:乙個任務可以分解成乙個必須執行的子任務和乙個可選的子任務。只有必須執行的子任務擁有硬最後期限。
第十章 異常處理
異常即是乙個事件,該事件會在程式執行過程中發生,影響了程式的正常執行。一般情況下,在python無法正常處理程式時就會發生乙個異常。異常是python物件,表示乙個錯誤。當python指令碼發生異常時我們需要捕獲處理它,否則程式會終止執行。捕捉異常可以使用try except語句。try excep...
第十章 迭代器
迭代器 我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。...
第十章 異常處理下
try finally 語句無論是否發生異常都將執行最後的 以下例題中 finally 語句無論異常是否發生都會執行 例題 try runoob except assertionerror as error print error else try with open file.log as fil...