進程與線程

區(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)先級

進程資源

???

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容