我無法在任何地方找到此信息。無論我看到什麼,我都會發現一些事情指的是一旦你點擊「主」(無論你的入口點是什麼),這將是程序參數和環境,但是我要找的是系統如何設置該堆棧與switch_to宏配合使用。任務切換到第一次時,它需要具有EFLAGS,EBP,GCC保存的寄存器以及由「tsk-> thread-> esp」指向的堆棧上schedule()函數的返回地址,但我無法弄清楚內核如何設置這個堆棧,因爲它讓GCC保存通用寄存器(使用內聯彙編的輸出參數)。進程創建時的Linux進程內核堆棧狀態是什麼?
我指的只是x86個人電腦。我正在爲我自己的小內核(我試圖)編寫Linux調度程序/進程系統進行研究,而且我無法理解我缺少的東西。我知道我失去了一些東西,因爲事實上,Slackware的我的電腦上運行的是印證了調度工作的事實:P
編輯:我似乎已經嚴重措辭這一點。我正在尋找有關如何設置任務內核堆棧而不是如何設置任務用戶任務的信息。更具體地說,tsk-> thread-> esp指向的堆棧以及「switch_to」切換到的堆棧。
看起來你這裏有兩個不同的問題 - 在進程init 1)堆棧的狀況; 2)內核'日程安排()'中的IRQ。您應該將這些問題中的一個作爲新問題發佈,並將其中的一個留在這裏;這樣你就可以在每個問題上得到專注的答案。在堆棧溢出中,爲每個問題啓動一個單獨的問題是非常好的。 – 2011-11-05 18:30:03
好吧,會做的!我已經閱讀了很長時間的答案/問題,但從未發佈!感謝您的提示:) 那麼,我會在大約5分鐘。我必須等待:P – Caleb1994