簡介
程式狀態字是用來記錄程式狀態信息的一個或多個字 。通常存放在特定的暫存器或存儲單元中。當前程式狀態字指當前程式狀態的有關信息。通過當前程式狀態字可以知道當前程式狀態是執行狀態、阻塞狀態或就緒狀態,這對了解程式的運行狀況是十分重要的。
進程控制塊
為了描述和控制進程的運行,系統為每個進程定義了一個數據結構——進程控制塊PCB(Process Control Block),它是進程實體的一部分,是作業系統中最重要的記錄型數據結構。PCB 中記錄了作業系統所需的、用於描述進程的當前情況以及控制進程運行的全部信息。進程控制塊的作用是使一個在多道程式環境下不能獨立運行的程式(含數據),成為一個能獨立運行的基本單位,一個能與其它進程並發執行的進程。或者說,OS 是根據 PCB 來對並發執行的進程進行控制和管理的。在進程控制塊中,主要包括下述四方面的信息。
進程標識符
進程標識符用於惟一地標識一個進程。一個進程通常有兩種標識符:
(1) 內部標識符。 在所有的作業系統中, 都為每一個進程賦予了一個惟一的數字標識符,它通常是一個進程的序號。設定內部標識符主要是為了方便系統使用。
(2) 外部標識符。它由創建者提供,通常是由字母、數字組成,往往是由用戶(進程)在訪問該進程時使用。為了描述進程的家族關係,還應設定父進程標識及子進程標識。此外,還可設定用戶標識,以指示擁有該進程的用戶。
處理機狀態
處理機狀態信息主要是由處理機的各種暫存器中的內容組成的。處理機在運行時,許多信息都放在暫存器中。當處理機被中斷時,所有這些信息都必須保存在 PCB 中,以便在該進程重新執行時,能從斷點繼續執行。這些暫存器包括:① 通用暫存器,又稱為用戶可視暫存器,它們是用戶程式可以訪問的,用於暫存信息,在大多數處理機中,有 8~32 個通用暫存器,在 RISC 結構的計算機中可超過 100 個;② 指令計數器,其中存放了要訪問的下一條指令的地址;③ 程式狀態字 PSW,其中含有狀態信息,如條件碼、執行方式、中斷禁止標誌等;④ 用戶棧指針,指每個用戶進程都有一個或若干個與之相關的系統棧,用於存放過程和系統調用參數及調用地址,棧指針指向該棧的棧頂 。
進程調度信息
在 PCB 中還存放一些與進程調度和進程對換有關的信息,包括:① 進程狀態,指明進程的當前狀態,作為進程調度和對換時的依據;② 進程優先權,用於描述進程使用處理機的優先權別的一個整數, 優先權高的進程應優先獲得處理機; ③ 進程調度所需的其它信息,它們與所採用的進程調度算法有關,比如,進程已等待 CPU 的時間總和、進程已執行的時間總和等;④ 事件,指進程由執行狀態轉變為阻塞狀態所等待發生的事件,即阻塞原因。
進程控制信息
進程控制信息包括:① 程式和數據的地址,指進程的程式和數據所在的記憶體或外存地(首)址,以便再調度到該進程執行時,能從 PCB 中找到其程式和數據;② 進程同步和通信機制,指實現進程同步和進程通信時必需的機制,如訊息佇列指針、信號量等,它們可能全部或部分地放在 PCB 中;③ 資源清單,即一張列出了除 CPU 以外的、進程所需的全部資源及已經分配到該進程的資源的清單;④ 連結指針,它給出了本進程(PCB)所在佇列中的下一個進程的 PCB 的首地址。
程式狀態字暫存器
程式狀態字(Program Status Word,PSW)用來表征當前運算的狀態及程式的工作方式。
程式狀態字暫存器用來保存由算術/邏輯指令運行或測試的結果所建立起來的各種條件碼內容,如運算結果進/借位標誌(C)、運算結果溢出標誌(O)、運算結果為零標誌(Z)、運算結果為負標誌(N)、運算結果符號標誌(S)等,這些標誌位通常用1位觸發器來保存。
除此之外,程式狀態字暫存器還用來保存中斷和系統工作狀態等信息,以便CPU和系統及時了解機器運行狀態和程式運行狀態。
因此,程式狀態字暫存器是一個保存各種狀態條件標誌的暫存器。