區(qū)別與聯(lián)系
- 線程是最小執(zhí)行單位
- 進程是最小資源分配單位,可看成是只有一個線程的進程
- 一個線程只能屬于一個進程,一個進程可以包含多個線程
- 線程也有pcb,同一個進程的不同線程的pcb中指向相同的三級頁表
- 進程擁有獨立的內(nèi)存單元,多個線程共享進程的內(nèi)存(資源分配給進程,同一進程中的多個線程共享代碼段(代碼和常量),數(shù)據(jù)段(全局變量和靜態(tài)變量),擴展段(堆存儲)。但是每個線程擁有自己的棧段,棧段又叫運行時段,用來存放所有局部變量和臨時變量。)
- 進程間不會相互影響 ;線程一個線程掛掉將導致整個進程掛掉
- 在進行進程切換時,涉及到整個當前進程CPU環(huán)境的保存以及新被調(diào)度運行的進程的CPU環(huán)境的設置。而線程切換只須保存和設置少量寄存器的內(nèi)容,并不涉及存儲器管理方面的操作
- 通信
- 線程通信直接讀寫進程數(shù)據(jù)段(如全局變量)來進行通信——需要進程同步和互斥手段的輔助
- 進程間通信:管道、系統(tǒng)IPC(包括消息隊列、信號量、信號、共享內(nèi)存等)、以及套接字socket
線程資源
線程共享資源
- 文件描述符
- 每種信號的處理方式
- 當前工作目錄
- 用戶ID和組ID
- 內(nèi)存地址空間 (.text/.data/.bss/heap/共享庫)
線程非共享資源
- 線程id
- 處理器現(xiàn)場和棧指針(內(nèi)核棧)
- 獨立的??臻g(用戶空間棧)
- errno變量
- 信號屏蔽字
- 調(diào)度優(yōu)先級
進程資源
???