進程和線程基本概念的理解


#http://www.cnblogs.com/fuchongjundream/p/3829508.html


•進程(process):
狹義定義:進程就是一段程序的執行過程。
廣義定義:進程是一個具有獨立功能的程序關於某個數據集合的一次運行活動。他是操作系統動態執行的基本單元,在傳統的操作系統中,進程即是基本的分配單元,也是基本的執行單元。

1)進程是一個實體,每個進程都有自己的地址空間,一般情況下,包含文本區域、數據區域、堆棧
2)進程是執行中的程序,程序是一個沒有生命的實體,只有處理器賦予程序生命時,他才能成為一個活動的實體,我們稱之為進程
3)進程本身不會運行,是線程的容器。線程不能單獨執行,必須組成進程
4)一個程序至少有一個進程,一個進程至少有一個線程
5)對於操作系統來講,一個任務就是一個進程,比如打開一個瀏覽器就是啟動一個瀏覽器進程。打開一個記事本就是啟動一個記事本進程,打開2個記事本就是啟動2個記事本進程
6)有些進程還不止同時做一件事情。比如打開word,他可以同時進行打字、打印、拼音檢查等等,在一個進程內部,要同時干多件事情。


進程狀態:
1)就緒:獲取出CPU外的所有資源、只要處理器分配資源就可以馬上執行
2)運行:獲得處理器分配的資源,程序開始執行
3)阻塞:當程序條件不夠的時候,需要等待提交滿足的時候才能執行。



•線程:
1)一個進程中至少有一個線程,不然就沒有存在的意義
2)在一個進程內部,要同時干多件事情,就需要同時運行多個子任務,我們把進程內的這些子任務叫做線程
3)多線程就是為了同步完成多項任務(在單個程序中同時運行多個線程完成不同的任務和工作),不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率
4)一個簡單的比喻,多線程就像是火車上的每節車廂,而進程就是火車
5)線程是程序執行流的最小單元。一個標准的線程由當前的線程ID、當前指令指針、寄存器和堆棧組成
6)同一個進程中的多個線程之間可以並發執行


線程狀態:
1)就緒:指線程具備運行的所有條件,邏輯上可以運行,在等待處理機
2)運行:指線程占用處理機正在運行
3)阻塞:線程在等待一個事件,邏輯上不可執行


如果我們要同時執行多個任務怎么辦?
1)啟動多個進程,每個進程雖然只有一個線程,但是多個進程可以一塊執行多個任務
2)啟動一個進程,在一個進程內啟動多個線程,這樣多個線程也可以一塊執行多個任務


多任務:
1)一邊瀏覽網頁、一邊聽歌、一邊看電影;這就是多任務。

 


免責聲明!

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



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