linux中的進程和線程

應用程序:能夠被操做系統執行的一組指令和參數的集合,是靜態的,並存儲在磁盤空間中;異步

進程:在操做系統中在運行程序後,處於運行狀態的程序,是應用程序的一個執行過程,同時也是操做系統分配內存,cpu等系統資源的基本單位;函數

線程:進程中能夠共享進程資源的一個執行單位;spa

一個應用程序能夠對應多個進程,一個進程中能夠有多個執行線程;操作系統

 

系統操做進程的方式主要是:建立進程,終止進程,已經控制進程間的通訊和同步;線程

進程的建立過程:隊列

  1. 複製父進程的環境配置;進程

  2. 在內核中創建進程結構;內存

  3. 將建立好的進程結構放入到進程列表中;資源

  4. 系統分配資源給此進程;同步

  5. 複製父進程的內存映射信息;

  6. 管理文件描述符和鏈接點;

  7. 通知父進程;

進程的終止方式:

  1. 從main函數返回;

  2. 調用exit或者_exit函數;

  3. 調用abort函數;

  4. 被信號終止;

進程在終止時,系統會釋放進程擁有的資源,包括內存,內核結構等。

進程間的通訊方式:

  1. 管道:內核爲兩個進程創建的通訊通道,一端只能寫數據,一個端只能讀數據,完成通訊;

  2. 共享內存:多個進程共享一段內存,並對內存進行操做來完成通訊;

  3. 消息隊列:內核中的一個鏈表,發送方進程將消息發送到內核中,內核將消息放入鏈表,等待接收方進程發送請求消息,收到請求消息後,內核將消息從鏈表上取下,交給接收方,完成通訊,此過長徹底是異步的;

  4. 信號量:一個共享的數值,主要用於進程間的同步和對共享資源的保護;

 

進程和線程:

  線程是進程的一個執行單位,屬於進程的一部分;

  進程是操做系統分配資源的基本單位,系統只爲線程分配cpu資源,其餘系統資源只能共享進程的系統資源,線程是執行的基本單位;

  系統經過進程控制表PCB調度線程,並經過線程控制表TCB對線程進行調度;

相關文章
相關標籤/搜索