進程表與查看進程以及系統(tǒng)進程(11.2.1~11.2.4)

進程表###

Linux進程表就像一個數(shù)據(jù)結(jié)構(gòu),它把當(dāng)前加載在內(nèi)存中的所有進程的有關(guān)信息保存在一個表中。
其中包括:進程PID,進程的狀態(tài)、命令字符和其他一些ps命令輸出的各類信息。
操作系統(tǒng)通過繼承的PID對它們進行管理,這些PID是進程表的索引。
早期的進程表的長度是有限制的,所以支持同時運行的-進程也是有限的。早期的UNIX系統(tǒng)只能夠同時運行256個進程。最新的實現(xiàn)版本已大幅度放寬這一限制,可以同時運行的進程數(shù)可能只與用于建立進程表項的內(nèi)存容量有關(guān),而沒有具體的數(shù)字限制了。

查看進程###

ps 命令顯示我們正在運行的進程,其他用用戶正在運行的進程或者目前在系統(tǒng)上運行的所有進程。樣本:


顯示正在運行的進程樣本

TTY 一列顯示進程是從哪一個終端啟動的(這里是mac,??應(yīng)該是圖形界面啟動),TIME一列是進程目前為止所占用cpu時間,CMD一列顯示啟動進程所使用的命令。

默認(rèn)情況下,
ps程序只顯示與終端、主控制臺、串行口和偽終端保持連接的進程的信息。
其他的進程在運行時不需要通過終端與用戶進行通訊,它們通常都是一些系統(tǒng)進程,Linux用他們管理共享的資源??梢允褂胮s -a 查看所有進程,用-f顯示進程的完整信息。

11.2.3 系統(tǒng)進程


查看進程的狀態(tài)

STAT一列表明進程的當(dāng)前狀態(tài)。
STAT中常見的代碼:


STAT代碼
一個非常重要的命令

其他的系統(tǒng)里面可能顯示為:1 ? Ss 0.03 init [5]
一個進程一般是由父進程來進行啟動的,被父進程啟動的進程是子進程。linux啟動的時候會運行一個init程序,它的進程號為1?!究梢詫nit進程看作為進程的管理器,它是其他所有進程的祖先進程】所以,其他進程要么是被init進程啟動,要么是被init進程啟動的其他進程啟動的。
eg: 用戶登錄的處理過程。
init進程為每個用戶用來登錄的串行終端或撥號調(diào)制解調(diào)啟動一次getty程序。對應(yīng)的ps命令輸出如下:
9619 tty2 Ss+ 0:00 /sbin/mengetty tty2
getty 進程等待來自終端的操作,向用戶顯示熟悉的登錄提示符,然后把控制移交給登錄程序,登錄程序設(shè)置用戶環(huán)境,最后啟動一個shell。用戶退出系統(tǒng)時,init進程將再次啟動另外一個getty進程?。
啟動新進程等待它們結(jié)束的能力是整個系統(tǒng)的基礎(chǔ)。

11.2.4 進程調(diào)度


經(jīng)常會看到有這樣的一條

這表明進程2195處于運行狀態(tài)(R),正在運行的命令是ps ax。(也就是這個進程出現(xiàn)在自己的輸出結(jié)果中)[這個狀態(tài)指示符只表示已準(zhǔn)備好運行,并不意味它正在運行](在一臺但處理器的計算機上,同一時間只能有一個進程可以運行,其他進程處于等待狀態(tài),每個進程輪到的運行時間(時間片)是相當(dāng)短暫的),這就給我們一種多個程序在同時運行的假象。狀態(tài)R+只是表示這個程序是前臺任務(wù),它不是在等待其他進程結(jié)束或等待輸入輸出完成。這就是為什么我們可能在ps命令的輸出結(jié)果中可以看到兩個這樣的進程的愿意(另一個常見的標(biāo)記為正在運行的繼承是X顯示服務(wù)器)【一個x 服務(wù),一個是當(dāng)前自己的進程】???
????但是這里還是有點不是很懂?。。?/p>

Linux內(nèi)核決定了下一個時間片段該分配給哪一個進程,它的判斷依據(jù)是進程的優(yōu)先級(第4章講到)【優(yōu)先級高的進程運行的更加頻繁,低級的就沒有這么頻繁】
linux中的進程的運行時間不可能超過分配給他們的時間片段,Linux上是使用搶先式多任務(wù)處理,所以,任務(wù)的掛起和繼續(xù)運行是不需要彼此之間的協(xié)作。

(nice值的意思)
linux是一個多任務(wù)系統(tǒng),所以進程之間可能存在競爭統(tǒng)一資源的問題。這種情況下,執(zhí)行短期的突發(fā)性工作并暫停運行來等待輸入的程序,要比持續(xù)占用處理器進行計算或不斷輪詢系統(tǒng)來查看是否有新的輸入到達的程序更好。(√)表現(xiàn)良好的程序為nice程序,而且在某種意義上,這個nice是被計算出來的。
操作系統(tǒng)根據(jù)這個進程的nice值來決定它的優(yōu)先級,一個進程的nice值默認(rèn)是0并將根據(jù)這個程序的表現(xiàn)而不斷變化。(長期不間斷的運行的程序優(yōu)先級一般比較低,eg:暫停來等待輸入的程序會得到獎勵), 這樣就可以幫助與用戶進行交互的程序保持及時的響應(yīng)性。在程序等待用戶輸入程序的時候,系統(tǒng)會增加它的優(yōu)先級,這樣子,當(dāng)他準(zhǔn)備運行的時候,它就會有較高的優(yōu)先級而能夠優(yōu)先執(zhí)行。
[nice命令設(shè)置nice的值,是用renice命令調(diào)整他的值]若是,nice命令將進程的nice值增加10 ,就會降低該進程的優(yōu)先級。ps -l 或者-f查看nice值。


NI這一列就是nice值

若是使用下面命令啟動:
nice oclock &
它將會被分配到+10的nice值。


下面運行命令的結(jié)果

上圖可以查看到對應(yīng)的nice的值都會增加10,這個是時鐘程序就不會運行得那么頻繁了。狀態(tài)欄(S列)含有N表示這個進程的nice值已經(jīng)被修改了(不是默認(rèn)值了)
PPID 為父進程的ID,它是啟動這個進程的PID,如果原來的進程已經(jīng)不存在了,該欄就顯示為init進程的進程ID(PID=1)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,818評論 9 468
  • 又來到了一個老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個問題開始,來談?wù)劜?..
    tangsl閱讀 4,332評論 0 23
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,345評論 2 33
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 心靈把手:自媒體人了了原創(chuàng)情感分享類公眾號,讓你成為更對更好的那個人。 最近,因為工作繁重,導(dǎo)致之前的腰疾發(fā)作,和...
    心靈把手閱讀 352評論 0 0

友情鏈接更多精彩內(nèi)容