「每天五分鐘,備戰軟考-2」作業系統基本原理

操作系統是管理和控制計算機硬件和軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統軟件。注意,這裡說的裸機可以是物理機,也可以是虛擬機。隨著技術的發展,現在還出現了Docker容器技術,一個Docker容器實際上不一定需要具備完整的系統功能也能夠運行程序,其底層是通過宿主機的內核來與硬件進行交互的。

「每天五分鐘,備戰軟考-2」操作系統基本原理

處理機與進程管理

處理機(CPU)是計算機的核心資源,進程是在處理機上運行的最小獨立單位。從進程的觀點來看操作系統,實際上就是組織和協調用戶對處理機的爭奪使用,對進程進行管理和控制,最大限度發揮處理機的作用。

1.進程的概念。

程序是存儲在計算機上的代碼,進程是運行狀態的程序。進程發展經歷了順序程序和多道(併發)程序。

順序程序執行的特徵:

  • 順序性:每一操作必須在下一操作開始之前結束
  • 封閉性:程序運行時獨佔全機資源,資源的狀態(除初始狀態外)只有本程序才能改變,程序一旦執行,其結果不受外界影響
  • 可再現性:程序執行環境和初始條件相同,重複執行時,結果相同

多道程序執行的特徵:

  • 間斷性:程序併發運行時,共享系統資源,為完成同一任務相互合作,會形成相互制約關係,導致併發程序具有“執行-暫停-執行”這種間斷性的活動規律
  • 失去封閉性:程序併發執行時,資源狀態由多個程序改變,某程序執行時,會受到其他程序影響,失去封閉性
  • 不可再現性:失去封閉性,導致失去可再現性

進程的特徵:

  • 結構特徵:程序段、相關數據段和PCB三部分構成進程實體
  • 動態性:進程實體的一次執行過程,具有生命期,而程序是有序指令集合,是靜態的
  • 併發性:多個進程同時存於內存,在一段時間內同時運行
  • 獨立性:進程實體是一個能獨立運行、獨立分配資源和獨立接受調度的基本單位
  • 異步性:進程按各自獨立的、不可預知的速度向前推進

2.進程狀態

三態模型

「每天五分鐘,備戰軟考-2」操作系統基本原理

五態模型

「每天五分鐘,備戰軟考-2」操作系統基本原理

3.進程控制塊

進程實體由程序塊、進程控制塊(Process Control Block,PCB)和數據塊三部分組成。

程序塊描述進程要完成的任務,數據塊包括程序執行時所需要的數據和工作區,PCB包括進程的描述信息、控制信息、資源信息和CPU現場保護信息等,反映了進程的動態性。

PCB 可以被操作系統中的多個模塊讀或修改,如被調度程序、資源分配 程序、中斷處理程序以及監督和分析程序等讀或修改。OS是根據 PCB來對 併發執行的進程進行控制和管理,是操作系統中最重要的記錄型數據,Linux 系統中用 task_struct 數據,Windows系統使用執行體進程塊(EPROCESS)。

  • 進程標識符:包括內部標識符,操作系統為每一個進程賦予的唯一數字標識符,系統使用;外部標識符,由創建者提供,通常有字母與數字組成,往往是由用戶(進程)在訪問該進程時使用。描述進程的家族關係,設置父進程標識
  • 及子進程標識,還可設置用戶標識,以指示擁有該進程的用戶。
  • 處理機狀態(處理機狀態信息):主要是由處理機的各種寄存器中的內容組成的,處理機被中斷時,所有這些信息都必須保存在PCB中,以便在該進程重新執行時,能從斷點繼續執行。寄存器包括:通用寄存器、指令計數器、程序狀態字PSW、用戶棧指針。
  • 進程調度信息:與進程調度和轉換相關的信息包括:進程狀態、進程優先級、進程調度所需的其它信息(與進程調度算法有關)、事件,指進程由執行狀態轉變為阻塞狀態所等待發生的事件,即阻塞原因。
  • 進程控制信息:包括程序和數據的地址、進程同步和通信機制、資源清單:除CPU以外的、進程所需的全部資源及已經分配到該進程的資源、鏈接指針:了本進程(PCB)所在隊列中 的下一個進程的 PCB的首地址。

4.進程控制

進程控制的主要任務就是系統使用一些具有特定功能的程序端來創建、撤銷進程以及完成進程各狀態之間的轉換,從而達到多進程、高效率、併發的執行和協調,實現資源共享的目的。

進程控制主要通過操作原語實現,用於控制的原語包括:創建原語、阻塞原語、撤銷原語、喚醒原語、優先級原語和調度原語。

5.進程互斥與同步

這一部分幾乎每年必考

系統中某些資源可以供多個進程同時使用(如共享內存),有些資源則只允許一次被一個進程使用(如打印機),一次僅允許一個進程使用的資源稱為臨界資源(Critical Resource)。

進程互斥(Mutual Exclusion)就是指若干進程因相互搶奪獨佔型資源而產生的競爭制約關係。

進程同步(Synchronization)就是指為完成共同任務的併發進程基於某個條件來協調其活動,因為需要在某些位置上排定執行的先後次序而等待、傳遞信息或消息所產生的協作制約關係。

對於臨界資源(Critical Resource)的管理有四條原則:1、有空即進;2、無空則等;3、有限等待;4、讓權等待。

信號量可以有效的實現進程的同步與互斥

信號量(semaphore)的數據結構為一個值和一個指針,指針指向等待該信號量的下一個進程。信號量的值與相應資源的使用情況有關。當它的值大於0時,表示當前可用資源的數量;當它的值小於0時,其絕對值表示等待使用該資源的進程個數。注意,信號量的值僅能由PV操作來改變。

一般來說,信號量S >= 0時,S表示可用資源的數量。執行一次P操作意味著請求分配一個單位資源,因此S的值減1;當S < 0時,表示已經沒有可用資源,請求者必須等待別的進程釋放該類資源,它才能運行下去。而執行一個V操作意味著釋放一個單位資源,因此S的值加1;若S <= 0,表示有某些進程正在等待該資源,因此要喚醒一個等待狀態的進程,使之運行下去。

6.進程間通信與管理

進程間通信可以分為控制信息傳遞和大量數據傳遞。大量數據傳遞又叫做高級通信,分為有緩衝區的通信和無緩衝區的通信。

管程(monitor):代表共享資源的數據結構及併發進程在其上執行的一組進程就構成管程,管程被請求和釋放資源的進程鎖調用。

7.進程調度與死鎖

進程調度即處理器調度,又叫做上下文切換。可以通過下面的思維導圖瞭解。

死鎖是兩個以上的進程互相要求對方已經佔有的資源導致無法繼續運行下去的現象。產生死鎖的原因是:1、因為系統資源不足;2、進程運行推進的順序不合適;3、資源分配不當等。

「每天五分鐘,備戰軟考-2」操作系統基本原理

8.線程

進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。

線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。也有就緒、運行、阻塞三態。


分享到:


相關文章: