應用程序:能夠被操做系統執行的一組指令和參數的集合,是靜態的,並存儲在磁盤空間中;異步
進程:在操做系統中在運行程序後,處於運行狀態的程序,是應用程序的一個執行過程,同時也是操做系統分配內存,cpu等系統資源的基本單位;函數
線程:進程中能夠共享進程資源的一個執行單位;spa
一個應用程序能夠對應多個進程,一個進程中能夠有多個執行線程;操作系統
系統操做進程的方式主要是:建立進程,終止進程,已經控制進程間的通訊和同步;線程
進程的建立過程:隊列
1. 複製父進程的環境配置;進程
2. 在內核中創建進程結構;內存
3. 將建立好的進程結構放入到進程列表中;資源
4. 系統分配資源給此進程;同步
5. 複製父進程的內存映射信息;
6. 管理文件描述符和鏈接點;
7. 通知父進程;
進程的終止方式:
1. 從main函數返回;
2. 調用exit或者_exit函數;
3. 調用abort函數;
4. 被信號終止;
進程在終止時,系統會釋放進程擁有的資源,包括內存,內核結構等。
進程間的通訊方式:
1. 管道:內核爲兩個進程創建的通訊通道,一端只能寫數據,一個端只能讀數據,完成通訊;
2. 共享內存:多個進程共享一段內存,並對內存進行操做來完成通訊;
3. 消息隊列:內核中的一個鏈表,發送方進程將消息發送到內核中,內核將消息放入鏈表,等待接收方進程發送請求消息,收到請求消息後,內核將消息從鏈表上取下,交給接收方,完成通訊,此過長徹底是異步的;
4. 信號量:一個共享的數值,主要用於進程間的同步和對共享資源的保護;
進程和線程:
線程是進程的一個執行單位,屬於進程的一部分;
進程是操做系統分配資源的基本單位,系統只爲線程分配cpu資源,其餘系統資源只能共享進程的系統資源,線程是執行的基本單位;
系統經過進程控制表PCB調度線程,並經過線程控制表TCB對線程進行調度;