1. 進程
概念:進程是指一個具有一定獨立功能的程序在一個數據集合上的一次動態執行過程,進程是資源分配的基本單位。
組成:包含了正在運行的一個程序的所有狀態信息。
特點:
- 動態性:可動態地創建、結束進程。
- 併發性:進程可以被獨立調度並佔用處理機執行。
- 獨立性:不同進程的工作不互相影響。
- 制約性:因訪問共享數據/資源或進程間同步而產生制約。
進程與程序的聯繫:
- 進程是操作系統處於執行狀態程序的抽象:程序=文件(靜態的可執行文件);進程=執行中的程序=程序+執行狀態。
- 同一個程序的多次執行過程對應爲不同進程。
- 進程執行需要資源:內存、CPU。
進程的狀態轉換:
運行狀態(Running):正在處理機上運行。
就緒狀態(Ready):進程獲得了除處理機之外的所需資源,得到處理機即可運行。
阻塞狀態(Blocked):進程正在等待某一事件的出現而暫停運行。
2. 線程
線程是進程的一部分,描述指令流執行狀態。它是進程中的指令執行流的最小單元,是 CPU 調度的基本單位。
3. 進程和線程的關係
- 進程是資源分配的單位,線程是 CPU 調度單位。
- 進程擁有一個完整的資源平臺,而線程只獨享指令流執行的必要資源,如寄存器和棧。
- 線程能減少併發執行的時間和空間開銷:線程的創建時間比進程短、線程的終止時間比進程短、同一進程內的線程切換時間比進程短、由於同一進程的各線程間共享內存和文件資源,可不通過內核直接通信。