進(jìn)程和線程

參考文獻(xiàn):    
  https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread
  http://newsmth.net/nForum/#!article/CSArch/45612

進(jìn)程與線程


虛擬內(nèi)存和虛擬處理器是現(xiàn)代操作系統(tǒng)中最主要的兩種虛擬抽象。對于一個運行的程序,這兩者都提供了它獨占系統(tǒng)資源的的假象。虛擬內(nèi)存提供了程序從“內(nèi)存”到物理RAM或者磁盤存儲(swap space)上的無縫地址映射。而虛擬處理器則讓程序以為它們單獨享有一個處理器,而實際上多個程序是在多個處理器上多任務(wù)處理的。

進(jìn)程是內(nèi)存管理上的概念,線程是處理器管理上的概念。

進(jìn)程是對一個運行的程序的抽象,是內(nèi)存分配的最小單元,包括了 一個二進(jìn)制映像,虛擬內(nèi)存,內(nèi)核資源,上下文等等。線程是一個程序中最小的執(zhí)行單元,包括了邏輯處理器,棧,程序狀態(tài)。一個進(jìn)程可以包含一個或多個線程,因此,在一個進(jìn)程內(nèi)的多個線程共享一塊內(nèi)存地址空間。反過來,每個線程與不同的邏輯處理器相關(guān)聯(lián),是一個獨立的調(diào)度實體。
每個進(jìn)程有一個獨立的虛擬地址空間,OS會在頁表中有個總?cè)肟趤肀闅v追蹤這個進(jìn)程的地址空間,cpu電路里有tlb來加速查找。一個進(jìn)程里的多個線程就是多個執(zhí)行路徑,每個硬件單線程核心同一時刻只在執(zhí)行同一個線程里的多條代碼,每個硬件多線程核心同一時刻流水線里可能有多個線程的多條代碼在執(zhí)行。硬件多線程的目的就是充分將流水線填滿,因為某個線程里的指令可能很多時候填不滿流水線,比如訪存等待,跳轉(zhuǎn)排空等,此時由硬件自動載入另一個線程的指令利用這些空隙。cpu不管其正在執(zhí)行的線程屬于哪個進(jìn)程。調(diào)度器按照優(yōu)先級等規(guī)則輪番調(diào)度多個線程執(zhí)行。

線程的引入為編程提供了以下一些優(yōu)點:

  1. 編程抽象性:在很多問題中,我們都會將一個任務(wù)分成很多小塊,再把每個小塊安排給每一個執(zhí)行單元(線程)。很多編程模式都利用了這一點,如reactor(反應(yīng)器模式),thread-per-connection,線程池等。多線程給程序提供了更好的抽象性,但也有人認(rèn)為
  2. 并行性:多核CPU時代,線程提供了一個非常有效地實現(xiàn)真正意義上的并行的方式。線程是一個獨立的調(diào)度實體,并且擁有一個獨立的邏輯處理器,因此,多個線程(并不一定屬于同一個進(jìn)程)可以同時運行再多個邏輯處理器上,提高系統(tǒng)處理效率。
  3. I/O阻塞:當(dāng)I/O發(fā)生阻塞時,如果沒有線程,進(jìn)程會陷入長時間的等待。而在多線程程序內(nèi),等待的線程會進(jìn)入睡眠狀態(tài),而其它的線程可以繼續(xù)執(zhí)行。異步和非阻塞I/O模型也是這種問題的一種解決方式。
  4. 節(jié)約內(nèi)存:同一進(jìn)程內(nèi)的線程能高效地進(jìn)行內(nèi)存共享,相比于多進(jìn)程能有效地節(jié)約內(nèi)存空間。

多線程程序與多進(jìn)程程序的優(yōu)劣

  1. 線程比進(jìn)程更輕量級,創(chuàng)建和撤銷的代價小,內(nèi)存、資源占用小。
  2. 線程的切換代價要比進(jìn)程切換的代價小。
  3. 多線程再數(shù)據(jù)共享方面效率高很多,進(jìn)程間通信需要通過信號,套接字,文件,管道等方式進(jìn)行。反過來說,線程的數(shù)據(jù)共享也導(dǎo)致了在設(shè)計多線程程序時需要考慮同步鎖,死鎖等問題。
  4. 進(jìn)程間相互隔離,穩(wěn)定性更強(qiáng)。

用戶級線程和內(nèi)核線程的區(qū)別


內(nèi)核線程是在操作系統(tǒng)內(nèi)核中調(diào)度的,而用戶級線程是在用戶空間由程序本身進(jìn)行調(diào)度的。通常情況下是作為一種語言特性提供的,如Golang的routine。

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

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

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