程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 一個進程的創建與死亡

一個進程的創建與死亡

編輯:關於C語言

當下開發人員應用最多的兩大操作系統,linux & windows。

在程序開發中,進程與線程的概念,是一個好的程序員所必備的基礎知識。如果對這兩個概念沒有很好的理解與應用,想要成為一個優秀的開發人員是很難的。

應侯捷MFC快速入門中的概念,對有關進程的概念進行下述簡單的闡述。

 

執行一個應用程序,必然就產生一個進程(process)。

在windows最直接的程序執行的方式就是在shell中以鼠標雙擊某一個可執行文件圖標,執行起來的App進程其實是shell調用CreateProcess激活的。相應的在linux下,你可能更會選擇使用terminal的方式執行一個應用程序,現在linux完美的圖形化界面下,也同樣支持windows下這種執行方式。

其實兩種系統大體的執行方式都可以概括如下:

注:這裡針對windows下MFC的調用以及系統調用,linux沒有多大區別。

1、shell調用CreateProcess激活App.exe。

2、系統產生一個“進程核心對象”,計數值加1.

3、系統為此進程建立一個4GB地址空間。

4、加載器將必要的代碼加載到上述地址空間中,包括App.exe的程序、數據,以及所需的動態加載函數庫(DLLs)。

5、系統為此進程建立一個線程,稱為主線程(primary thread)。線程才是CPU時間的分配對象。

6、系統調用C runtime函數庫的Startup Code

7、Startup Code調用App程序的WinMain函數。

8、App程序開始運行。

9、使用者關閉App主窗口,使WinMain中的消息循環結束,於是WinMain結束。

10、回到Startup Code。

11、回到系統,系統調用ExitProcess技術進程。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved