您好,登錄后才能下訂單哦!
linux中的進程是什么?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
進程,通俗來說,就是進行中的程序,運行中的程序,又叫PCB(process control block)
在linux操作系統(tǒng)下描述進程的是一個名叫task_struct的結(jié)構(gòu)體,那么這個結(jié)構(gòu)體中包含哪些東西呢?
都知道程序要運行,肯定首先得將磁盤中相應(yīng)的可執(zhí)行文件加載到內(nèi)存中,那么我們怎么知道它在內(nèi)存中哪兒呢?這個時候就需要通過一個叫做進程標識符(pid)的東西來找到它。就像我們?nèi)艘粯?,有代表自己身份的東西,即身份證。
找到了程序在哪兒之后,想要執(zhí)行的話,肯定得知道相應(yīng)的代碼及代碼依賴的數(shù)據(jù)吧,所以內(nèi)存指針就誕生了。內(nèi)存指針就是用來指向程序的代碼及相應(yīng)的數(shù)據(jù)的。此時程序便可以運行了。
但是由于進程眾多,而一般中央處理器CPU只有一個,要想保證眾多進程的順利實現(xiàn),就需要有一個進程間執(zhí)行的先后順序,即優(yōu)先級。有了優(yōu)先級之后實現(xiàn)多進程就容易得多。
但是值得注意的是,CPU并不是將一個進程執(zhí)行完了才執(zhí)行下一個哦,它會在一個程序執(zhí)行了一段時間以后執(zhí)行下一個進程,當下一個進程又執(zhí)行了一段時間以后接著執(zhí)行后續(xù)進程。此時就會出現(xiàn)一個問題,一個未執(zhí)行完的程序當想要再次接著之前的地方執(zhí)行該怎么辦呢?不用擔心,我們會用“上下文”來保護現(xiàn)場。
前面又說到一個程序要被執(zhí)行一段時間以后CPU才會接著執(zhí)行下一個程序,那么一個程序該執(zhí)行多長時間才會讓出CPU呢?這里我們用“記賬信息”來記錄這個時間。
此外,進程在執(zhí)行的時候又會出現(xiàn)許多狀態(tài),如就緒狀態(tài)(R),可中斷睡眠狀態(tài)(S),不可中斷睡眠狀態(tài)(D)等等,所以結(jié)構(gòu)體中還會記錄進程的狀態(tài)。當然還有I/O狀態(tài)信息,即標準輸入,標準輸出,標準錯誤輸出。
綜上,一個描述進程的結(jié)構(gòu)體task_struct中包含有以下部分:
● 標識符:用來記錄進程的id,即pid
● 內(nèi)存指針:指向程序代碼及相關(guān)數(shù)據(jù)等等
● 優(yōu)先級;
● 上下文:保存了該進程上次在CPU的執(zhí)行現(xiàn)場
● 記賬信息:記錄了一個進程何時應(yīng)該讓出CPU
● 狀態(tài):記錄進程的相關(guān)狀態(tài)
● I/O狀態(tài)信息;
● 信號相關(guān)信息
關(guān)于linux中的進程是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。