1. 程式人生 > >對Linux進程的理解

對Linux進程的理解

linux進程 初始 linux 網上 com 包括 http href title

在本科期間學習過進程,網上也有很多關於進程的知識,但對於進程到底是什麽一直沒有讓我滿意的解答(以下截圖來自網絡,感覺對進程理解有問題,說得也很虛)。

技術分享技術分享

但今天找到這個博文感覺挺符合我的胃口:http://blog.csdn.net/yuqiang_ee_android/article/details/16889257

  • 進程的本質

進程是Linux內核提供的一個環境(資源分配的基本單位),包括:

(1)進程控制塊(用於操作系統對進程的管理)。

(2)虛擬內存(分為好幾段:正文段、數據段、BBS段、堆棧段等等)。

技術分享

(3)其他內核資源(打開的文件等等)。

  • 進程和可執行文件的關系

前面說了,進程有正文段和數據段等,這些都是從磁盤上的可執行文件加載而來(可以通過size命令查看可執行文件分段信息)。

所以:可執行程序為進程提供必要的代碼和數據等。

  • 進程和線程的關系

有很多關於 進程和線程的區別及聯系 的文章,但大部分和我的理解不一樣。以下是我的個人理解。

(1)進程提供了環境,為誰提供?答案就是線程。進程提供資源,線程幹活。

(2)進程是資源分配的基本單位,線程是CPU調度的基本單位。(有人說線程是進程的實體,我不知該怎麽理解)

(3)進程創建後默認就有一個初始線程存在,以後在該進程中創建的線程都會共享進程提供的環境。

對Linux進程的理解