資料介紹
7.1.1 進(jìn)程的基本概念
1.進(jìn)程的定義
進(jìn)程的概念首先是在20世紀(jì)60年代初期由MIT的Multics系統(tǒng)和IBM的TSS/360系統(tǒng)引入的。在40多年的發(fā)展中,人們對進(jìn)程有過各種各樣的定義。現(xiàn)列舉較為著名的幾種。
?。?)進(jìn)程是一個獨(dú)立的可調(diào)度的活動(E. Cohen,D. Jofferson)。
?。?)進(jìn)程是一個抽象實(shí)體,當(dāng)它執(zhí)行某個任務(wù)時,要分配和釋放各種資源(P. Denning)。
?。?)進(jìn)程是可以并行執(zhí)行的計算單位。(S. E. Madnick,J. T. Donovan)。
以上進(jìn)程的概念都不相同,但其本質(zhì)是一樣的。它指出了進(jìn)程是一個程序的一次執(zhí)行的過程,同時也是資源分配的最小單元。它和程序是有本質(zhì)區(qū)別的,程序是靜態(tài)的,它是一些保存在磁盤上的指令的有序集合,沒有任何執(zhí)行的概念;而進(jìn)程是一個動態(tài)的概念,它是程序執(zhí)行的過程,包括了動態(tài)創(chuàng)建、調(diào)度和消亡的整個過程。它是程序執(zhí)行和資源管理的最小單位。因此,對系統(tǒng)而言,當(dāng)用戶在系統(tǒng)中鍵入命令執(zhí)行一個程序的時候,它將啟動一個進(jìn)程。
2.進(jìn)程控制塊
進(jìn)程是Linux系統(tǒng)的基本調(diào)度和管理資源的單位,那么從系統(tǒng)的角度看如何描述并表示它的變化呢?在這里,是通過進(jìn)程控制塊來描述的。進(jìn)程控制塊包含了進(jìn)程的描述信息、控制信息以及資源信息,它是進(jìn)程的一個靜態(tài)描述。在Linux中,進(jìn)程控制塊中的每一項都是一個task_struct結(jié)構(gòu),它是在include/linux/sched.h中定義的。
3.進(jìn)程的標(biāo)識
在Linux中最主要的進(jìn)程標(biāo)識有進(jìn)程號(PID,Process Idenity Number)和它的父進(jìn)程號(PPID,parent process ID)。其中PID惟一地標(biāo)識一個進(jìn)程。PID和PPID都是非零的正整數(shù)。
在Linux中獲得當(dāng)前進(jìn)程的PID和PPID的系統(tǒng)調(diào)用函數(shù)為getpid()和getppid(),通常程序獲得當(dāng)前進(jìn)程的PID和PPID之后,可以將其寫入日志文件以做備份。getpid()和getppid()系統(tǒng)調(diào)用過程如下所示:
/* pid.c */
#include《stdio.h》
#include《unistd.h》
#include 《stdlib.h》
int main()
{
/*獲得當(dāng)前進(jìn)程的進(jìn)程ID和其父進(jìn)程ID*/
printf(“The PID of this process is %d\n”, getpid());
printf(“The PPID of this process is %d\n”, getppid());
}
使用arm-linux-gcc進(jìn)行交叉編譯,再將其下載到目標(biāo)板上運(yùn)行該程序,可以得到如下結(jié)果,該值在不同的系統(tǒng)上會有所不同:
$ 。/pid
The PID of this process is 78
THe PPID of this process is 36
另外,進(jìn)程標(biāo)識還有用戶和用戶組標(biāo)識、進(jìn)程時間、資源利用情況等,這里就不做一一介紹,感興趣的讀者可以參見W.Richard Stevens編著的《Advanced Programming in the UNIX Environmen》。
4.進(jìn)程運(yùn)行的狀態(tài)
進(jìn)程是程序的執(zhí)行過程,根據(jù)它的生命周期可以劃分成3種狀態(tài)。
n 執(zhí)行態(tài):該進(jìn)程正在運(yùn)行,即進(jìn)程正在占用CPU。
n 就緒態(tài):進(jìn)程已經(jīng)具備執(zhí)行的一切條件,正在等待分配CPU的處理時間片。
n 等待態(tài):進(jìn)程不能使用CPU,若等待事件發(fā)生(等待的資源分配到)則可將其喚醒。
它們之間轉(zhuǎn)換的關(guān)系如圖7.1所示。

圖7.1 進(jìn)程3種狀態(tài)的轉(zhuǎn)化關(guān)系
1.進(jìn)程的定義
進(jìn)程的概念首先是在20世紀(jì)60年代初期由MIT的Multics系統(tǒng)和IBM的TSS/360系統(tǒng)引入的。在40多年的發(fā)展中,人們對進(jìn)程有過各種各樣的定義。現(xiàn)列舉較為著名的幾種。
?。?)進(jìn)程是一個獨(dú)立的可調(diào)度的活動(E. Cohen,D. Jofferson)。
?。?)進(jìn)程是一個抽象實(shí)體,當(dāng)它執(zhí)行某個任務(wù)時,要分配和釋放各種資源(P. Denning)。
?。?)進(jìn)程是可以并行執(zhí)行的計算單位。(S. E. Madnick,J. T. Donovan)。
以上進(jìn)程的概念都不相同,但其本質(zhì)是一樣的。它指出了進(jìn)程是一個程序的一次執(zhí)行的過程,同時也是資源分配的最小單元。它和程序是有本質(zhì)區(qū)別的,程序是靜態(tài)的,它是一些保存在磁盤上的指令的有序集合,沒有任何執(zhí)行的概念;而進(jìn)程是一個動態(tài)的概念,它是程序執(zhí)行的過程,包括了動態(tài)創(chuàng)建、調(diào)度和消亡的整個過程。它是程序執(zhí)行和資源管理的最小單位。因此,對系統(tǒng)而言,當(dāng)用戶在系統(tǒng)中鍵入命令執(zhí)行一個程序的時候,它將啟動一個進(jìn)程。
2.進(jìn)程控制塊
進(jìn)程是Linux系統(tǒng)的基本調(diào)度和管理資源的單位,那么從系統(tǒng)的角度看如何描述并表示它的變化呢?在這里,是通過進(jìn)程控制塊來描述的。進(jìn)程控制塊包含了進(jìn)程的描述信息、控制信息以及資源信息,它是進(jìn)程的一個靜態(tài)描述。在Linux中,進(jìn)程控制塊中的每一項都是一個task_struct結(jié)構(gòu),它是在include/linux/sched.h中定義的。
3.進(jìn)程的標(biāo)識
在Linux中最主要的進(jìn)程標(biāo)識有進(jìn)程號(PID,Process Idenity Number)和它的父進(jìn)程號(PPID,parent process ID)。其中PID惟一地標(biāo)識一個進(jìn)程。PID和PPID都是非零的正整數(shù)。
在Linux中獲得當(dāng)前進(jìn)程的PID和PPID的系統(tǒng)調(diào)用函數(shù)為getpid()和getppid(),通常程序獲得當(dāng)前進(jìn)程的PID和PPID之后,可以將其寫入日志文件以做備份。getpid()和getppid()系統(tǒng)調(diào)用過程如下所示:
/* pid.c */
#include《stdio.h》
#include《unistd.h》
#include 《stdlib.h》
int main()
{
/*獲得當(dāng)前進(jìn)程的進(jìn)程ID和其父進(jìn)程ID*/
printf(“The PID of this process is %d\n”, getpid());
printf(“The PPID of this process is %d\n”, getppid());
}
使用arm-linux-gcc進(jìn)行交叉編譯,再將其下載到目標(biāo)板上運(yùn)行該程序,可以得到如下結(jié)果,該值在不同的系統(tǒng)上會有所不同:
$ 。/pid
The PID of this process is 78
THe PPID of this process is 36
另外,進(jìn)程標(biāo)識還有用戶和用戶組標(biāo)識、進(jìn)程時間、資源利用情況等,這里就不做一一介紹,感興趣的讀者可以參見W.Richard Stevens編著的《Advanced Programming in the UNIX Environmen》。
4.進(jìn)程運(yùn)行的狀態(tài)
進(jìn)程是程序的執(zhí)行過程,根據(jù)它的生命周期可以劃分成3種狀態(tài)。
n 執(zhí)行態(tài):該進(jìn)程正在運(yùn)行,即進(jìn)程正在占用CPU。
n 就緒態(tài):進(jìn)程已經(jīng)具備執(zhí)行的一切條件,正在等待分配CPU的處理時間片。
n 等待態(tài):進(jìn)程不能使用CPU,若等待事件發(fā)生(等待的資源分配到)則可將其喚醒。
它們之間轉(zhuǎn)換的關(guān)系如圖7.1所示。

圖7.1 進(jìn)程3種狀態(tài)的轉(zhuǎn)化關(guān)系
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式linux查看服務(wù)進(jìn)程,通過proc查看進(jìn)程資源
- 進(jìn)程控制塊,信號集是什么資料下載
- Linux教程之進(jìn)程的概念和進(jìn)程管理命令的使用 2次下載
- linux進(jìn)程的深入理解 2次下載
- Linux進(jìn)程調(diào)度的原理解析 1次下載
- 進(jìn)程控制開發(fā)之編寫多進(jìn)程程序?qū)嶒灲馕?/a> 0次下載
- 進(jìn)程間通信之Linux下進(jìn)程間通信概述 0次下載
- 進(jìn)程間通信之:管道 0次下載
- Linux守護(hù)進(jìn)程詳解 0次下載
- Linux進(jìn)程控制編程 0次下載
- Linux源碼分析系列的進(jìn)程 32次下載
- LINUX進(jìn)程源代碼分析 44次下載
- 利用Hook技術(shù)實(shí)現(xiàn)進(jìn)程控制
- Linux 2.6進(jìn)程調(diào)度
- Linux進(jìn)程管理 0次下載
- Linux用戶身份與進(jìn)程權(quán)限詳解 403次閱讀
- Linux中進(jìn)程、線程和協(xié)程的基礎(chǔ)概念 933次閱讀
- Linux系統(tǒng)開發(fā)中進(jìn)程與線程的基本原理 890次閱讀
- 如何在Linux終止僵尸進(jìn)程 2102次閱讀
- 如何在Linux使用ps/pstree/top命令查看進(jìn)程 1871次閱讀
- 進(jìn)程在Linux上是怎么實(shí)現(xiàn)的 1443次閱讀
- Linux進(jìn)程間通信方法之管道 1997次閱讀
- Linux:測試進(jìn)程占用的虛擬內(nèi)存大小 2904次閱讀
- 虛擬機(jī):linux 進(jìn)程的最大線程個數(shù) 2782次閱讀
- Linux進(jìn)程調(diào)度時機(jī)概念分析 2812次閱讀
- Linux進(jìn)程管理:什么是進(jìn)程?進(jìn)程的生命周期 8034次閱讀
- 什么是僵尸進(jìn)程_Linux僵尸進(jìn)程可以被“殺死”嗎? 4699次閱讀
- Linux進(jìn)程的概念及進(jìn)程通信的應(yīng)用場景 6729次閱讀
- Linux進(jìn)程的睡眠和喚醒 4376次閱讀
- 基于Linux進(jìn)程管理的詳細(xì)剖析 3756次閱讀
下載排行
本周
- 1EMC電路設(shè)計工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
- 2AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數(shù)據(jù)手冊
- 1.19 MB | 1次下載 | 免費(fèi)
- 3低壓降肖特基整流管SR340L數(shù)據(jù)手冊
- 0.78 MB | 1次下載 | 免費(fèi)
- 4ZX8002E 觸摸調(diào)光LED集成IC數(shù)據(jù)手冊
- 2.27 MB | 次下載 | 免費(fèi)
- 5SOD-323塑料封裝ESD保護(hù)二極管SD05T系列規(guī)格書
- 1.07 MB | 次下載 | 免費(fèi)
- 6SOT-23塑料封裝ESD保護(hù)二極管SMxx Series系列規(guī)格書
- 0.93 MB | 次下載 | 免費(fèi)
- 7高效率整流二極管HER151 THRU HER158數(shù)據(jù)手冊
- 0.54 MB | 次下載 | 免費(fèi)
- 8低壓降肖特基整流管SL22 THRU SL210數(shù)據(jù)手冊
- 1.03 MB | 次下載 | 免費(fèi)
本月
- 1三相逆變主電路的原理圖和PCB資料合集免費(fèi)下載
- 27.35 MB | 111次下載 | 1 積分
- 2運(yùn)算放大器基本電路中文資料
- 1.30 MB | 16次下載 | 免費(fèi)
- 3蘋果iphone 11電路原理圖
- 4.98 MB | 11次下載 | 5 積分
- 4TL494工業(yè)用開關(guān)電源原理圖資料
- 0.22 MB | 10次下載 | 1 積分
- 5常用電子元器件介紹
- 3.21 MB | 8次下載 | 免費(fèi)
- 6QW2893應(yīng)急燈專用檢測芯片
- 590.40 KB | 4次下載 | 免費(fèi)
- 7相關(guān)協(xié)議信號總結(jié)
- 0.94 MB | 4次下載 | 免費(fèi)
- 8EMC電路設(shè)計工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935130次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183344次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論