进程与线程的概念
文章目錄
- 1 進程與線程的概念
- 1.1 程序和進程的概念
- 1.2 線程的概念
- 1.3 深入理解進程和線程
1 進程與線程的概念
值得深思的問題:
- 什么是程序?
- 什么是進程?
- 程序和進程有什么關系?
1.1 程序和進程的概念
程序是計算機存儲系統中的文件數據:
- 源代碼:
- 文本文件,描述程序的行為和功能
- 可執行程序:
- 二進制文件,直接加載并執行
進程的概念:
- 廣義概念:
- 程序關于某個數據集合的一次運行活動。
- 狹義概念:
- 程序被加載到內存中執行后得到進程。
程序和進程的區別:
- 程序是硬盤中靜態的文件:
- 存儲系統中的一段二進制表示。
- 進程是內存中動態的運行實體:
- 數據段、代碼段、PC指針等。
程序和進程的聯系:
- 一個程序可能對應多個進程:
- 一個程序多次運行,每次運行產生一個進程。
- 一個進程可能包含多個程序:
- 一個程序依賴多個其它動態庫。
值得注意的地方:
- 在當代操作系統中,資源分配的基本單位是進程;而CPU調度執行的基本單位是線程!
1.2 線程的概念
線程的概念:
- 進程內的一個執行單元。
- 操作系統中一個可調度的實體。
- 進程中相對獨立的一個控制流序列。
- 執行時的現場數據和其他調度所需的信息。
再論main函數:
- C/C++程序被執行后從main函數開始運行,那么這中間經歷了什么樣的過程?
1.3 深入理解進程和線程
深入理解進程和線程:
- 進程中可以存在多個線程共享進程資源。
- 線程是被調度的執行單元,而進程不是調度單元。
- 線程不能脫離進程單獨存亡,只能依賴于進程運行。
- 線程有生命期,有誕生和死亡。
- 任意線程都可以創建其它新的線程。
參考資料:
總結