十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
linux中的進(jìn)程是什么?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

進(jìn)程,通俗來說,就是進(jìn)行中的程序,運行中的程序,又叫PCB(process control block)
在linux操作系統(tǒng)下描述進(jìn)程的是一個名叫task_struct的結(jié)構(gòu)體,那么這個結(jié)構(gòu)體中包含哪些東西呢?
都知道程序要運行,肯定首先得將磁盤中相應(yīng)的可執(zhí)行文件加載到內(nèi)存中,那么我們怎么知道它在內(nèi)存中哪兒呢?這個時候就需要通過一個叫做進(jìn)程標(biāo)識符(pid)的東西來找到它。就像我們?nèi)艘粯?,有代表自己身份的東西,即身份證。
找到了程序在哪兒之后,想要執(zhí)行的話,肯定得知道相應(yīng)的代碼及代碼依賴的數(shù)據(jù)吧,所以內(nèi)存指針就誕生了。內(nèi)存指針就是用來指向程序的代碼及相應(yīng)的數(shù)據(jù)的。此時程序便可以運行了。
但是由于進(jìn)程眾多,而一般中央處理器CPU只有一個,要想保證眾多進(jìn)程的順利實現(xiàn),就需要有一個進(jìn)程間執(zhí)行的先后順序,即優(yōu)先級。有了優(yōu)先級之后實現(xiàn)多進(jìn)程就容易得多。
但是值得注意的是,CPU并不是將一個進(jìn)程執(zhí)行完了才執(zhí)行下一個哦,它會在一個程序執(zhí)行了一段時間以后執(zhí)行下一個進(jìn)程,當(dāng)下一個進(jìn)程又執(zhí)行了一段時間以后接著執(zhí)行后續(xù)進(jìn)程。此時就會出現(xiàn)一個問題,一個未執(zhí)行完的程序當(dāng)想要再次接著之前的地方執(zhí)行該怎么辦呢?不用擔(dān)心,我們會用“上下文”來保護(hù)現(xiàn)場。
前面又說到一個程序要被執(zhí)行一段時間以后CPU才會接著執(zhí)行下一個程序,那么一個程序該執(zhí)行多長時間才會讓出CPU呢?這里我們用“記賬信息”來記錄這個時間。
此外,進(jìn)程在執(zhí)行的時候又會出現(xiàn)許多狀態(tài),如就緒狀態(tài)(R),可中斷睡眠狀態(tài)(S),不可中斷睡眠狀態(tài)(D)等等,所以結(jié)構(gòu)體中還會記錄進(jìn)程的狀態(tài)。當(dāng)然還有I/O狀態(tài)信息,即標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯誤輸出。
綜上,一個描述進(jìn)程的結(jié)構(gòu)體task_struct中包含有以下部分:
● 標(biāo)識符:用來記錄進(jìn)程的id,即pid
● 內(nèi)存指針:指向程序代碼及相關(guān)數(shù)據(jù)等等
● 優(yōu)先級;
● 上下文:保存了該進(jìn)程上次在CPU的執(zhí)行現(xiàn)場
● 記賬信息:記錄了一個進(jìn)程何時應(yīng)該讓出CPU
● 狀態(tài):記錄進(jìn)程的相關(guān)狀態(tài)
● I/O狀態(tài)信息;
● 信號相關(guān)信息
關(guān)于linux中的進(jìn)程是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。