首頁 >運維 >linux運維 >linux下什麼是進程

linux下什麼是進程

angryTom
angryTom原創
2019-11-06 14:49:373578瀏覽

linux下什麼是進程

linux下什麼是進程?

進程,通俗來說,就是進行中的程序,運行中的程序,又叫PCB(process control block)

在linux作業系統下描述進程的是一個名叫task_struct的結構體,那麼這個結構體包含哪些東西呢?

都知道程式要運行,肯定首先得將磁碟中對應的可執行檔載入到記憶體中,那麼我們怎麼知道它在記憶體中哪裡呢?這個時候就需要透過一個叫做進程標識符(pid)的東西來找到它。就像我們人一樣,有代表自己身分的東西,就是身分證。

找到了程式在哪裡之後,想要執行的話,一定得知道對應的程式碼及程式碼所依賴的資料吧,所以記憶體指標就誕生了。記憶體指標就是用來指向程式的程式碼及對應的資料的。此時程式便可以運作了。

但是由於進程眾多,而一般中央處理器CPU只有一個,要確保眾多進程的順利實現,就需要有一個進程間執行的先後順序,即優先級。有了優先權之後實現多進程就容易得多。

 但是值得注意的是,CPU並不是將一個進程執行完了才執行下一個哦,它會在一個程序執行了一段時間以後執行下一個進程,當下一個進程又執行了一段時間以後接著執行後續進程。此時就會出現一個問題,一個未執行完的程式當想要再次接著之前的地方執行該怎麼辦呢?不用擔心,我們會用「上下文」來保護現場。

前面又說到一個程序要被執行一段時間以後CPU才會接著執行下一個程序,那麼一個程序該執行多久才會讓出CPU呢?這裡我們用「記帳資訊」來記錄這個時間。

此外,進程在執行的時候又會出現許多狀態,如就緒狀態(R),可中斷睡眠狀態(S),不可中斷睡眠狀態(D)等等,所以結構體中還會記錄進程的狀態。當然還有I/O狀態訊息,即標準輸入,標準輸出,標準錯誤輸出。

綜上,一個描述進程的結構體task_struct中包含有以下部分:

● 標識符:用來記錄進程的id,即pid

● 記憶體指標:指向程式碼及相關資料等等

● 優先權;

● 上下文:儲存了該行程上次在CPU的執行現場

● 記帳資訊:記錄了一個程序何時應該讓出CPU

● 狀態:記錄進程的相關狀態

●  I/O狀態資訊;

● 訊號相關資訊

推薦:linux系統基礎教學

以上是linux下什麼是進程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn