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