進程的概念,系統資源分配的單元


程序:所謂的程序,是硬盤上的一個可執行文件,是靜態的。

進程:一個程序運行起來后,代碼加上用到的資源稱之為進程,它是操作系統分配資源的基本單元。

windows上的進程

一個程序,對應進程可以有多個。

多任務不僅可以通過線程來實現,進程也是可以的。

進程的狀態

實際工作中,任務數往往大於 cpu 的核數,即一定有一些任務正在執行,而另外一些任務在等待 cpu 進行執行,因此導致了進程有不同的狀態。

進程的狀態

  • 就緒狀態:運行的條件都已經滿足,正在等在cpu執行。
  • 執行狀態:cpu正在執行其功能。
  • 等待狀態:等待某些條件滿足,例如一個程序sleep了,此時就處於等待態。

進程和線程的比較

  • 進程,能夠完成多任務,比如在一台電腦上能夠同時運行多個QQ。
  • 線程,能夠完成多任務,比如一個QQ中的多個聊天窗口。
定義的不同

進程是系統進行資源分配和調度的一個獨立單位。

線程是進程的一個實體,是 CPU 調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。

線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。

區別

一個程序至少有一個進程,一個進程至少有一個線程。

線程的划分尺度小於進程(資源比進程少),使得多線程程序的並發性高。

進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。

線程不能夠獨立執行,必須依存在進程中,進程可以理解為工廠中的一條流水線,而其中的線程就是這個流水線上的工人。

流水線上的工人

優缺點

線程和進程在使用上各有優缺點:線程執行開銷小,但不利於資源的管理和保護;而進程正相反。


編程的朝聖之路


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM