在本科期間學習過進程,網上也有很多關於進程的知識,但對於進程到底是什麼一直沒有讓我滿意的解答(以下截圖來自網路,感覺對進程理解有問題,說得也很虛)。 但今天找到這個博文感覺挺符合我的胃口:http://blog.csdn.net/yuqiang_ee_android/article/details/ ...
在本科期間學習過進程,網上也有很多關於進程的知識,但對於進程到底是什麼一直沒有讓我滿意的解答(以下截圖來自網路,感覺對進程理解有問題,說得也很虛)。
但今天找到這個博文感覺挺符合我的胃口:http://blog.csdn.net/yuqiang_ee_android/article/details/16889257
- 進程的本質
進程是Linux內核提供的一個環境(資源分配的基本單位),包括:
(1)進程式控制制塊(用於操作系統對進程的管理)。
(2)虛擬記憶體(分為好幾段:正文段、數據段、BBS段、堆棧段等等)。
(3)其他內核資源(打開的文件等等)。
- 進程和可執行文件的關係
前面說了,進程有正文段和數據段等,這些都是從磁碟上的可執行文件載入而來(可以通過size命令查看可執行文件分段信息)。
所以:可執行程式為進程提供必要的代碼和數據等。
- 進程和線程的關係
有很多關於 進程和線程的區別及聯繫 的文章,但大部分和我的理解不一樣。以下是我的個人理解。
(1)進程提供了環境,為誰提供?答案就是線程。進程提供資源,線程幹活。
(2)進程是資源分配的基本單位,線程是CPU調度的基本單位。(有人說線程是進程的實體,我不知該怎麼理解)
(3)進程創建後預設就有一個初始線程存在,以後在該進程中創建的線程都會共用進程提供的環境。