linux系統編程之進程(一):進程與程序
-
本節目標:
- 什麼是程序
- 什麼是進程
- 進程數據結構
- 進程與程序區別與聯繫
-
一,什麼是程序?
-
二,什麼是進程?
- 從用戶的角度來看進程是程序的一次動態執行過程
- 從操作系統的核心來看,進程是操作系統分配的內存、CPU時間片等資源的基本單位。
- 進程是資源分配的最小單位
- 每一個進程都有自己獨立的地址空間與執行狀態。
- 像UNIX這樣的多任務操作系統能夠讓許多程序同時運行,每一個運行著的程序就構成了一個進程
-
三,進程數據結構
- 進程的靜態描述:由三部分組成:PCB、有關程序段和該程序段對其進行操作的數據結構集。
- 進程控制塊(PCB):用於描述進程情況及控制進程運行所需的全部信息,是操作系統用來感知進存在的一個重要數據結構。
- 代碼段:是進程中能被進程調度程序在CPU上執行的程序代碼段。
- 數據段:一個進程的數據段,可以是進程對應的程序加工處理的原始數據,也可以是程序執行後產生的中間或最終數據
進程=代碼段(編譯後形成的一些指令)+數據段(程序運行時需要的數據)+堆棧段(程序運行時動態分配的一些內存)+PCB(進程信息,狀態標識等)
-
數據段包括:
- 只讀數據段:常量
- 已初始化數據段:全局變量,靜態變量
- 位初始化數據段(bss)(0初始化段):未初始化的全局變量和靜態變量(實際上不分配內存,因為都為0,只有一些標記信息)
-
四,進程與程序區別與聯繫
- 進程是動態的,程序是靜態的
- 進程的生命週期是相對短暫的,而程序是永久的。
- 進程數據結構PCB
- 一個進程只能對應一個程序,一個程序可以對應多個進程。