linux task struct棧結構說明

2021-09-22 22:45:59 字數 869 閱讀 9280

找到current是通過thread_info結構,那麼如何找到thread_info結構呢sp & ~thread_size

這麼看就比較清楚了 首先分配task_struct的時候申請thread_size對應的頁面數,所以task_struct的基位址的thread_size-1 位址都為0,這樣就可以根據sp(棧指標暫存器) 找到對應的task_struct結構。

最後再來解釋下task_struct的資料結構

task_struct的第乙個資料結構是state表示程序的狀態。

第二個資料結構是thread_info指標 資料結構,

struct thread_info ;
剩下的資料結構一般都是描述給這個程序分配的資源。

當建立task_truct的時候會分配thread_size個位元組的記憶體,一般為4k或者8k,task_struct肯定是使用不了的,剩下的部分就用來存放thread_info結構,這個結構描述了task_struct的執行緒上下文,並且剩下的部分用於該程序的核心棧空間

棧底為圖中bash+thread_size處,棧頂最小到thread_info資料的最底部。

kthread_end判斷是否棧底

資料結構 簡說棧的概念結構及實現

1.1棧的概念及結構 棧 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端 稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo last in first out 的原則。壓棧 棧的插入操作叫做進棧 壓棧 入棧,入資料在棧頂。出棧 棧的刪除操作叫做...

旭說資料結構之棧的小題目

1.定義棧的資料結構,要求新增乙個min 函式,能夠得到棧的最小元素。要求函式min push 及pop 函式的時間複雜度都是o 1 思考1 如果說我們給棧這個類新增乙個成員變數min,用來記錄棧中的最小值。1.假設第一次push進入元素1時,設定min 1 2.再次想讓2進棧時,先把2和min進行...

棧結構 順序棧 鏈棧

定義 棧是一種與線性表相似的線性結構。不同之處是當需要對節點做增刪操作時,只能操作棧頂的節點,因此具有先進後出 或者後進先出 的特點。按儲存結構的不同,可分為順序棧和鏈棧。棧結構的幾個屬性 adt stack elemtype為型別識別符號 資料關係 r 資料操作 1 stackseq initst...