《普通高等教育"十二五"規劃教材:計算機操作系統原理》為普通高等教育“十二五”規劃教材。《普通高等教育"十二五"規劃教材:計算機操作系統原理》全面、系統地介紹了操作系統的基礎原理和新技術,并以Linux系統為例介紹如何實現。《普通高等教育"十二五"規劃教材:計算機操作系統原理》共9章,主要內容包括操作系統的功能、發展、分類以及操作系統的特征和實現結構,操作系統的用戶界面,進程和線程的概念、進程的狀態與控制、進程的同步與互斥、進程的通信與死鎖,處理機調度,存儲管理,設備管理,文件系統管理,Linux操作系統原理,多核技術下操作系統的研究進程和關鍵問題。
書摘/試閱
2.選擇占有處理機的進程
進程調度的主要功能是按照一定的策略選擇一個處于就緒狀態的進程,使其獲得處理機執行。根據不同的系統設計目的,有不同的選擇策略,例如系統開銷較少的靜態優先級調度法,適合于分時系統的輪轉法和多級反饋輪轉法等。這些選擇策略決定了調度算法的性能。有關這些算法,將在第4.4節中描述。
3.進行進程上下文切換
當正在執行的進程由于某種原因要讓出處理機時,系統要做進程上下文切換,以使被調度選中的進程得以執行。被選中進程執行時,必須從上一次被中斷處開始執行,這就要恢復該進程的上下文和進行上下文切換,系統在做上下文切換時,首先要檢查是否可以做上下文切換(在有些情況下,上下文切換是不允許的,例如系統正在執行某個不允許中斷的原語時),然后系統要保留有關被切換進程的足夠信息,以便以后切換回該進程時,順利恢復該進程的執行。在系統保留了CPU現場之后,調度程序選擇一個新的處于就緒狀態的進程,并裝配成該進程的上下文,使CPU的控制權轉換到被選中進程中。
4.3.2進程調度的方式
進程調度的方式是指當某一個進程正在處理器上執行時,若有某個更為重要或緊迫的進程需要處理,即有優先權更高的進程進入就緒隊列,此時應如何分配處理器。通常有以下兩種進程調度方式。
1.非剝奪調度方式
非剝奪調度方式又稱非搶占方式,是指當一個進程正在處理器上執行時,即使有某個更為重要或緊迫的進程進入就緒隊列,仍然讓正在執行的進程繼續執行,直到該進程完成或發生某種事件而進入阻塞狀態時,才把處理器分配給更為重要或緊迫的進程。
在非剝奪調度方式下,一旦把CPU分配給一個進程,那么該進程就會保持CPU直到終止或轉換到等待狀態。這種方式的優點是實現簡單、系統開銷小,適用于大多數的批處理系統,但它不能用于分時系統和大多數的實時系統。
2.剝奪調度方式
剝奪調度方式又稱搶占方式,是指當一個進程正在處理器上執行時,若有某個更為重要或緊迫的進程需要使用處理器,則立即暫停正在執行的進程,將處理器分配給這個更為重要或緊迫的進程。
4.3.3進程調度的時機
進程調度發生在什么時機呢?這與引起進程調度的原因以及進程調度的方式有關。
引起進程調度的原因有以下6類。
(1)正在執行的進程執行完畢。這時如果不選擇新的就緒進程執行,將浪費處理機資源。
(2)執行中進程自己調用阻塞原語將自己阻塞起來進入阻塞狀態。
(3)執行中進程調用了P原語操作,從而因資源不足而被阻塞;或調用了V原語操作激活了等待資源的進程隊列。
(4)執行中進程提出I/O請求后被阻塞。
(5)在分時系統中時間片已經用完。