• Operating System Video Tutorials

作業系統 - 程序



程序

程序基本上是正在執行的程式。程序的執行必須以順序方式進行。

程序被定義為表示系統中要實現的基本工作單元的實體。

簡單來說,我們用文字檔案編寫計算機程式,當我們執行這個程式時,它就變成了一個程序,執行程式中提到的所有任務。

當程式載入到記憶體中併成為一個程序時,它可以分為四個部分——棧、堆、文字和資料。下圖顯示了主記憶體中程序的簡化佈局:

Process Components
序號 組成部分及描述
1

程序棧包含臨時資料,例如方法/函式引數、返回地址和區域性變數。

2

這是在程序執行時動態分配給程序的記憶體。

3

文字段

這包括由程式計數器的值和處理器的暫存器內容表示的當前活動。

4

資料段

此部分包含全域性變數和靜態變數。

程式

程式是一段程式碼,可以是一行或數百萬行。計算機程式通常由計算機程式設計師使用程式語言編寫。例如,這是一個用 C 程式語言編寫的簡單程式:

#include <stdio.h>

int main() {
   printf("Hello, World! \n");
   return 0;
}

計算機程式是由一系列指令組成的,當計算機執行這些指令時,它將執行特定任務。當我們將程式與程序進行比較時,我們可以得出結論:程序是計算機程式的動態例項。

執行特定任務的計算機程式的一部分稱為演算法。計算機程式、庫和相關資料的集合稱為軟體

程序生命週期

當程序執行時,它會經過不同的狀態。這些階段在不同的作業系統中可能有所不同,這些狀態的名稱也不是標準化的。

一般來說,程序一次只能處於以下五種狀態之一。

序號 狀態及描述
1

啟動

這是第一次啟動/建立程序時的初始狀態。

2

就緒

程序正在等待分配給處理器。就緒程序正在等待作業系統為其分配處理器,以便它們可以執行。程序可能在啟動狀態之後進入此狀態,或者在執行時被排程程式中斷以將 CPU 分配給其他程序。

3

執行

一旦程序被作業系統排程程式分配給處理器,程序狀態將設定為執行,處理器將執行其指令。

4

等待

如果程序需要等待資源(例如等待使用者輸入或等待檔案可用),則程序將進入等待狀態。

5

終止或退出

一旦程序完成執行,或者被作業系統終止,它就會移動到終止狀態,在那裡它等待從主記憶體中刪除。

Process States

程序控制塊 (PCB)

程序控制塊是作業系統為每個程序維護的資料結構。PCB 由一個整數程序 ID (PID) 標識。PCB 保留了跟蹤程序所需的所有資訊,如下表所示:

序號 資訊及描述
1

程序狀態

程序的當前狀態,即它是否就緒、執行、等待或其他狀態。

2

程序許可權

這是允許/不允許訪問系統資源所必需的。

3

程序 ID

作業系統中每個程序的唯一標識。

4

指標

指向父程序的指標。

5

程式計數器

程式計數器是指向此程序要執行的下一條指令的地址的指標。

6

CPU暫存器

程序需要儲存在執行狀態以執行的各種 CPU 暫存器。

7

CPU排程資訊

程序優先順序和其他排程資訊,這些資訊是排程程序所必需的。

8

記憶體管理資訊

這包括頁表、記憶體限制、段表(取決於作業系統使用的記憶體)的資訊。

9

計費資訊

這包括程序執行使用的 CPU 量、時間限制、執行 ID 等。

10

I/O 狀態資訊

這包括分配給程序的 I/O 裝置列表。

PCB 的架構完全取決於作業系統,並且可能在不同的作業系統中包含不同的資訊。這是一個簡化的 PCB 圖:

Process Control Block

在程序的整個生命週期中,都會為該程序維護 PCB,並且一旦程序終止,就會刪除 PCB。

廣告