
- 作業系統教程
- 作業系統 - 首頁
- 作業系統 - 需求
- 作業系統 - 概述
- 作業系統 - 歷史
- 作業系統 - 組成部分
- 作業系統 - 結構
- 作業系統 - 架構
- 作業系統 - 服務
- 作業系統 - 屬性
- 作業系統 - 週轉時間 & 等待時間
- 作業系統程序
- 作業系統 - 程序
- 作業系統 - 程序排程
- 作業系統 - 排程演算法
- 先來先服務排程演算法 (FCFS)
- 最短作業優先排程演算法 (SJF)
- 輪轉排程演算法
- 最高響應比優先排程演算法 (HRRN)
- 優先順序排程演算法
- 多級反饋佇列排程
- 上下文切換
- 程序操作
- 彩票程序排程
- 預測 SJF 排程的突發時間
- 競爭條件漏洞
- 臨界區同步
- 互斥同步
- 程序控制塊 (PCB)
- 程序間通訊 (IPC)
- 搶佔式和非搶佔式排程
- 作業系統同步
- 程序同步
- 作業系統記憶體管理
- 作業系統 - 記憶體管理
- 作業系統 - 虛擬記憶體
- 作業系統儲存管理
- 作業系統 - 檔案系統
- 作業系統型別
- 作業系統 - 型別
- 作業系統雜項
- 作業系統 - 多執行緒
- 作業系統 - I/O 硬體
- 作業系統 - I/O 軟體
- 作業系統 - 安全
- 作業系統 - Linux
- 考試題庫及答案
- 考試題庫及答案
- 作業系統有用資源
- 作業系統 - 快速指南
- 作業系統 - 有用資源
- 作業系統 - 討論
作業系統 - 程序
程序
程序基本上是正在執行的程式。程序的執行必須以順序方式進行。
程序被定義為表示系統中要實現的基本工作單元的實體。
簡單來說,我們用文字檔案編寫計算機程式,當我們執行這個程式時,它就變成了一個程序,執行程式中提到的所有任務。
當程式載入到記憶體中併成為一個程序時,它可以分為四個部分——棧、堆、文字和資料。下圖顯示了主記憶體中程序的簡化佈局:

序號 | 組成部分及描述 |
---|---|
1 | 棧 程序棧包含臨時資料,例如方法/函式引數、返回地址和區域性變數。 |
2 | 堆 這是在程序執行時動態分配給程序的記憶體。 |
3 | 文字段 這包括由程式計數器的值和處理器的暫存器內容表示的當前活動。 |
4 | 資料段 此部分包含全域性變數和靜態變數。 |
程式
程式是一段程式碼,可以是一行或數百萬行。計算機程式通常由計算機程式設計師使用程式語言編寫。例如,這是一個用 C 程式語言編寫的簡單程式:
#include <stdio.h> int main() { printf("Hello, World! \n"); return 0; }
計算機程式是由一系列指令組成的,當計算機執行這些指令時,它將執行特定任務。當我們將程式與程序進行比較時,我們可以得出結論:程序是計算機程式的動態例項。
執行特定任務的計算機程式的一部分稱為演算法。計算機程式、庫和相關資料的集合稱為軟體。
程序生命週期
當程序執行時,它會經過不同的狀態。這些階段在不同的作業系統中可能有所不同,這些狀態的名稱也不是標準化的。
一般來說,程序一次只能處於以下五種狀態之一。
序號 | 狀態及描述 |
---|---|
1 |
啟動 這是第一次啟動/建立程序時的初始狀態。 |
2 |
就緒 程序正在等待分配給處理器。就緒程序正在等待作業系統為其分配處理器,以便它們可以執行。程序可能在啟動狀態之後進入此狀態,或者在執行時被排程程式中斷以將 CPU 分配給其他程序。 |
3 | 執行 一旦程序被作業系統排程程式分配給處理器,程序狀態將設定為執行,處理器將執行其指令。 |
4 | 等待 如果程序需要等待資源(例如等待使用者輸入或等待檔案可用),則程序將進入等待狀態。 |
5 | 終止或退出 一旦程序完成執行,或者被作業系統終止,它就會移動到終止狀態,在那裡它等待從主記憶體中刪除。 |

程序控制塊 (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 圖:

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