linux 进程简介
進(jìn)程相關(guān)知識(shí)簡介
進(jìn)程定義:
一個(gè)運(yùn)行中的程序即一個(gè)process
task struct:
內(nèi)核存儲(chǔ)進(jìn)程信息的固定格式稱為task struct,task struct記錄了例如該進(jìn)程內(nèi)存下一跳位置等信息。
task list:
多個(gè)task struct組成的鏈表
進(jìn)程的創(chuàng)建
內(nèi)核創(chuàng)建第一個(gè)進(jìn)程init,用來管理用戶控件所有進(jìn)程
所有用戶空間都有init或其父進(jìn)程創(chuàng)建
父進(jìn)程所指向的內(nèi)存即其子進(jìn)程所指向的進(jìn)程。待“成熟”后子進(jìn)程會(huì)復(fù)制一份父進(jìn)程的內(nèi)存空間中的數(shù)據(jù),創(chuàng)建屬于自己的內(nèi)存空間。這種機(jī)制被稱為fork,clone.
父進(jìn)程創(chuàng)建子進(jìn)程的目的:讓子進(jìn)程來完成指定任務(wù),完成后終止子進(jìn)程。
進(jìn)程的優(yōu)先級(jí):
0~99:實(shí)時(shí)優(yōu)先級(jí),越大優(yōu)先級(jí)越高
100~139:靜態(tài)優(yōu)先級(jí),越小優(yōu)先級(jí)越高
nice值:-20~+19
進(jìn)程的優(yōu)先級(jí)有什么作用?
內(nèi)核通過優(yōu)先級(jí)來判斷先后運(yùn)行的程序。相同優(yōu)先級(jí)的進(jìn)程被分到同一隊(duì)列(最多140個(gè)隊(duì)列),從而無論進(jìn)程有多少,內(nèi)核每次只需遍歷進(jìn)程隊(duì)列的首部,就可判定需運(yùn)行哪個(gè)隊(duì)列中的進(jìn)程。
每個(gè)優(yōu)先級(jí)隊(duì)列分為兩層分別是:已運(yùn)行過的隊(duì)列和未運(yùn)行過的進(jìn)程。
進(jìn)程內(nèi)存:
page frame:內(nèi)核將內(nèi)存分為若干份,每份4k即page frame。
進(jìn)程所占用的內(nèi)存都是經(jīng)過內(nèi)核將若干連續(xù)或間斷的page frame ,虛擬成的虛擬內(nèi)存。
linux進(jìn)程分類:根據(jù)進(jìn)程占用CPU高還是IO高可分為
CPU-Bound:cpu密集型
IO-Bound:IO密集型
linux進(jìn)程類型:
守護(hù)進(jìn)程:與終端無關(guān),在系統(tǒng)啟動(dòng)過程中啟動(dòng)的進(jìn)程
前臺(tái)進(jìn)程:與終端相關(guān),通過終端啟動(dòng)。
前臺(tái)進(jìn)程可以送往后臺(tái),以守護(hù)模式運(yùn)行。
linux進(jìn)程狀態(tài):
R:running:運(yùn)行態(tài)
S:interruptable:可中斷睡眠狀態(tài),大多數(shù)進(jìn)程處于此狀態(tài)。處于這個(gè)狀態(tài)的進(jìn)程因?yàn)榈却呈录陌l(fā)生(比如等待socket連接、等待信號(hào)量),而被掛起。
D:uninterruptable:不可終端睡眠狀態(tài),不可中斷,指的并不是CPU不響應(yīng)外部硬件的中斷,而是指進(jìn)程不響應(yīng)異步信號(hào)。該狀態(tài)存在的意義就在于,內(nèi)核的某些處理流程是不能被打斷的。
T:stopped:停止態(tài)
Z:zombie:僵死態(tài),子進(jìn)程終止后等待父進(jìn)程“收尸”,或其父進(jìn)程掛掉子進(jìn)程成為孤兒進(jìn)程。
linux進(jìn)程狀態(tài)詳情可參考:http://blog.csdn.net/shenwansangz/article/details/51981459
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/wxxjianchi/p/9557706.html
總結(jié)
以上是生活随笔為你收集整理的linux 进程简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会话(cookie的使用,路径和Sess
- 下一篇: Linux系统文件和目录管理