一、進程的描述
1、進程的靜態描述
一個進程是一個程序對某個數據集的執行過程,是分配資源的基本單位。如何從處理機的活動角度,如何識別程序執行活動的進程?系統中描述進程存在和能夠反映其變化的物理實體,即進程的靜態描述------進程控制塊(PCB)、有關程序段和該程序段對其進行操作的數據結構集。
a)進程控制塊包含進程的描述信息,控制信息以及資源信息,是進程動態特征的集中反映。系統根據PCB感知進程的存在,通過PCB中所包含的各項變量的變化掌握進程所處的狀態,以達到控制進程活動的目的。進程的PCB是系統感知進程的唯一實體,幾乎所有的多道操作系統中,一個進程的PCB結構都是全部或者部分常駐內存的。包括描述信息,控制信息,資源信息以及CPU現場保護結構。
b)進程的程序部分描述進程所要完成的功能。數據結構集是程序在執行時必不可少的工作區和操作對象。兩者一般存放在外存中,直到該進程執行時在調入內存。
1.1、進程上下文
a)進程上下文實際上是進程執行過程中順序關聯的靜態描述。進程上下文是一個與進程切換和處理機狀態發生交換有關的概念。操作系統需要直到和記憶進程已經執行到什么地方或者新的進程將從何處執行。還有調用子程序的情況,執行后從何處繼續執行,存放在什么地方等都需要記憶。
已執行過的進程的指令和數據在相關寄存器與堆棧中的內容稱為上文;正在執行的指令和數據在相關寄存器與堆棧中的內容稱為正文;待執行的指令和數據在相關寄存器與堆棧中的內容稱為下文。
不發生進程調度時,進程上下文的改變都是在同一進程內進行的。
b)進程上下文的切換
進程上下文切換發生在不同的進程之間而不是同一進程內。
切換過程一般包含3部分,並涉及3個進程。一、保存被切換進程的正文部分(或當前狀態)至有關區,如PCB中;二、操作系統進程中有關調度和資源分配程序執行,並選取新進程;三、將被選中進程的原來被保存的正文部分從有關存儲區中取出,並送至有關寄存器與堆棧中,激活被選中進程執行。
為提高系統執行效率,有的計算機在設計時采用多組寄存器技術。
1.2、進程空間與大小
任一進程都有一個自己的地址空間,該空間被稱為進程空間或虛空間。
進程空間的大小只與處理機的位數有關,如:32為處理機的進程空間大小為232 。
二、進程狀態及其轉換
一個進程至少有五個狀態:初始狀態、執行狀態、等待狀態、就緒狀態和終止狀態。
一個進程在並發執行中,由於資源共享和競爭,有時處於執行狀態;有時,進程則因等待某件事件的發生而處於等待狀態;另外,當一個處於等待狀態的進程因等待事件發生喚醒后,又因不可能立即得到處理機而進入就緒狀態,處於就緒狀態的進程已經得到除CPU之外的其他資源,只要由調度得到處理機,便可立即執行;進程剛被創建時,由於其他進程正占有處理機而得不到執行,只能處於初始狀態;進程在執行結束以后,將退出執行而被終止,這時進程處於終止狀態。
三、進程控制
進程控制就是系統使用一些具有特定功能的程序段來創建、撤銷進程以及完成進程各狀態間的轉換,從而達到多進程高效率並發執行和協調、實現資源共享的目的。
1、原語
一般,把系統態下執行某些具有特定功能的程序段稱為原語。
原語分為兩類:一類是機器指令級的,其特點是執行期間不允許中斷。二、功能級的,其特點是作為原語的程序段不允許並發執行。
2、進程創建與撤銷
2.1 進程創建的方式有:
a)由系統程序模塊統一創建。由系統統一創建的進程之間是平等的,它們之間一般不存在資源繼承關系。
b)由父進程控制。父進程與父進程創建的進程之間存在隸屬關系,且構成樹形結構的家族關系。屬於某個家族的一個進程可以繼承其父進程所擁有的資源。
折兩種方式都必須調用創建原語來實現。
2.2 進程撤銷
導致進程撤銷的有:
a)該進程已完成所要求的功能二正常終止;
b)由於某中錯誤導致非正常終止;
c)祖先進程要求撤銷某個子進程。
這里要注意的是:如果被撤銷的進程有自己的子進程,則撤銷原語先撤銷其子進程的PCB結構並釋放子進程所占用的資源以后,再撤銷當前進程的PCB結構並釋放其資源。(撤銷原語首先要檢查PCB進程鏈或進程家族,尋找所要撤銷的進程是否存在)。
2.3 進程的阻塞與喚醒
實現進程的執行狀態到等待狀態---阻塞原語;由等待狀態到就緒狀態----喚醒原語
阻塞原語在一個進程期待某一事件發生,但是發生條件尚不具備時,該進程自己調用來阻塞自己。(其中過程要保護該進程的CPU現場,轉進程調度程序選擇新的就緒進程投入運行,否則,處理機將會出現空轉而浪費資源)。
當等待隊列中的進程所等待的事件發生時,等待該事件的所有進程都將被喚醒。(不能自己喚醒自己)
喚醒方式有兩種:由系統進程喚醒;由事件發生進程喚醒。