linux系統編程之進程(一):進程基本概述

來源:互聯網
上載者:User

一、什麼是進程

從使用者的角度來看進程是程式的一次執行過程。
從作業系統的核心來看,進程是作業系統分配的記憶體、CPU時間片等資源的基本單位。
進程是資源分派的最小單位。
每一個進程都有自己獨立的地址空間與執行狀態。
像UNIX這樣的多任務作業系統能夠讓許多程式同時運行,每一個運行著的程式就構成了一個進程。


二、進程資料結構

進程的靜態描述:由三部分組成:PCB、有關程式段和該程式段對其進行操作的資料結構集。
進程式控制制塊:用於描述進程情況及控制進程運行所需的全部資訊。
程式碼片段:是進程中能被進程發送器在CPU上執行的程式碼段。
資料區段:一個進程的資料區段,可以是進程對應的程式加工處理的未經處理資料,也可以是程式執行後產生的中間或最終資料

堆棧段:程式運行時需要在這裡做資料運算,儲存臨時資料,開闢函數棧等。在Linux下,棧是高地址往低地址增長的。


三、進程與程式

進程是動態,程式是靜態。
進程的生命週期是相對短暫的,而程式是永久的。
進程資料結構PCB。
一個進程只能對應一個程式,一個程式可以對應多個進程。


四、進程狀態變遷

運行狀態(TASK_RUNNING)
可中斷睡眠狀態(TASK_INTERRUPTIBLE)
不可中斷睡眠狀態(TASK_UNINTERRUPTIBLE)
暫停狀態(TASK_STOPPED)
僵死狀態(TASK_ZOMBIE)


五、進程式控制制塊

進程描述資訊

進程標識符用於唯一的標識一個進程。

進程式控制制資訊

進程目前狀態
進程優先順序
程式開始地址
各種計時資訊
通訊資訊

資源資訊

佔用記憶體大小及管理用資料結構指標
交換區相關資訊
I/O裝置號、緩衝、裝置相關的數結構
檔案系統相關指標

現場保護資訊

寄存器
PC
程式狀態字PSW
棧指標


六、進程標識

每個進程都會分配到一個獨一無二的數字編號,我們稱之為“進程標識”(process identifier),或者就直接叫它PID.
是一個正整數,取值範圍從2到32768
當一個進程被啟動時,它會順序挑選下一個未使用的編號數字做為自己的PID
數字1一般為特殊進程init保留的


七、進程的建立

不同的作業系統所提供的進程建立原語的名稱和格式不盡相同,但執行建立進程原語後,作業系統所做的工作卻大致相同,都包括以下幾點:
給新建立的進程分配一個內部標識,在核心中建立進程結構。
複製父進程的環境
為進程分配資源, 包括進程映像所需要的所有元素(程式、資料、使用者棧等),
複製父進程地址空間的內容到該進程地址空間中。
置該進程的狀態為就緒,插入就緒隊列。


八、進程的銷毀

進程終止時作業系統做以下工作:
關閉非強制中斷:因為進程即將終止而不再處理任何訊號;
回收資源:釋放進程分配的所有資源,如關閉所有已開啟檔案,釋放進程相應的資料結構等;
寫記帳資訊:將進程在運行過程中所產生的記帳資料(其中包括進程運行時的各種統計資訊)記錄到一個全域記帳檔案中;
置該進程為僵死狀態:向父進程發送子進程死的訊號(SIGCHLD),將終止資訊status送到指定的儲存單元中;
轉進程調度:因為此時CPU已經被釋放,需要由進程調度進行CPU再分配。


九、終止進程的5種方法

從main函數return返回
調用exit(C庫函數)
調用_exit(系統調用)
調用abort(產生SIGABRT訊號,異常終止)
由訊號終止(如ctrl+c 產生的 SIGINT訊號)

需要注意的是main函數返回會調用exit;exit會調用_exit; exit會調用fflush,但_exit不會調用fflush。


atexit可以註冊終止處理常式,ANSI C規定最多可以註冊32個終止處理常式。終止處理常式的調用與註冊次序相反

int atexit(void (*function)(void));


參考:《APUE》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.