task struct到底是個神馬東西?

2021-07-13 05:46:58 字數 1073 閱讀 6546

上回我們說到了常用的作業系統程序排程演算法,學過作業系統的同學應該都知道作業系統的四大職能:程序管理、記憶體管理、裝置管理以及檔案系統的管理。

那麼最重要的職能之一:程序管理,是如何進行的呢?首先在要管理乙個程序的時候,我們需要知道某個程序的具體資訊,比如程序的pid、優先順序等等,所以我們就需要乙個結構體來儲存這些資訊,在linux中這個結構體就是task_struct,也就是我們平常所說的pcb(程序控制塊)。當我們用fork建立乙個子程序的時候,就會新產生乙個task_struct結構體,新建立的程序會從父程序**繼承一些資訊,所有的這些資訊就會被儲存在task_struct裡,因此了解task_struct的結構對於我們學習程序的的排程是非常關鍵的。

按照我們對程序的了解,可以推論出來乙個task_struct中大概包括以下資訊:

①識別符號:表示乙個程序的唯一識別符號,來區別其他程序

②狀態:任務狀態,退出**,退出訊號等

③並行:推進**,多個同時進行

④優先順序:(與許可權區別)

⑤硬體上下文:cpu在切換程序之前儲存當前程序的資訊,下次載入該程序的時候,又可以回到上次的狀態,該資訊儲存在pcb裡面,可因此pcb裡面應該儲存硬體上下文資訊

⑥i/o狀態:包括處理器時間的總和,使用時鐘數總和等

⑦記賬資訊:

⑧程式計數器:程式中即將要執行的下一條指令的位址,實際是乙個cpu 暫存器

⑨記憶體指標:程式**和程序相關資料的資訊指標,還有和其他程序共享的記憶體塊的指標,找到目標程式的**和資料。

開啟/include/linux/sched.h   找到task_struct   的定義

struct   task_struct
;
以上就是task_struct的大概資訊了,可能還有些地方我解釋的不夠詳細,歡迎各位小夥伴來補充~

REST,RESTful到底是個什麼?

0.rest不是 rest 這個單詞,而是幾個單詞縮寫。但即使那幾個單詞說出來,也無法理解在說什麼 不是要貶低人,是我自己也理解困難 1.rest描述的是在網路中client和server的一種互動形式 rest本身不實用,實用的是如何設計 restful api rest風格的網路介面 2.ser...

Webhook到底是個啥?

伺服器 jenkins servergit serverngrokgithub webhook 在配置jenkins實現前端自動化構建的過程中,對於自動化的過程理解很模糊,只是知道jenkins伺服器,git倉庫和後端應用伺服器這三個概念。答案就是 git webhook機制發出請求,告知jenki...

elemtype到底是個啥?

以前對這個東西的一知半解,今天有時間,查了多方面的資料,總結下 elemtype簡單來說就是 用來更好的替代,他也可以叫做別的名字,比如說 define elemtype int 寫程式,就可以用elemtype來進行替代int,若以後想要改elemtype所定義的資料型別為char,直接 defi...