Linux 0 11 核心筆記

2021-05-22 10:51:21 字數 571 閱讀 8461

<1> 任務0的堆疊問題

一直不明白schedule.c裡的task_union的stack和user_stack是什麼關係,head.s裡就設定了esp指向user_stack, 卻一直沒有用到task_union,直到看到init_task才明白,從進入保護模式到跳轉進使用者態都是用的user_stack這個棧,而任務0的tss中的esp0指向task_union的stack, 也就是當任務0再跳轉進核心態時才用task_union的棧。總結起來就是從進入保護模式到初始化完成,user_stack用作核心態棧,進入使用者態後user_stack用做使用者態棧,task_union的stack用做核心態棧。

<2> 核心態定址問題

核心**段和資料段基址為0, 段限長為16m,而且在head.s中所設定的前四個頁表與物理記憶體頁是一一對應的,所以在核心態可以直接定址16m記憶體(0.11版只支援16m記憶體),也即線性位址和實體地址相等。

<3>實體地址分配

<4>線性位址分配

每個任務佔64m的線性位址空間,任務0實際只用了0-64m的前640kb,因為段限長被設成了640kb。因為最多支援64個任務,所以總共使用了4g的線性位址空間。

Linux0 11核心筆記( )

c語言 彙編知識 嵌入式彙編 x86處理器和程式設計的相關知識和 unix作業系統設計 linus在最初開發linux作業系統時參考了minix作業系統 作業系統 設計與實現 一種基於訊息傳遞在核心各模組之間進行通訊 資訊交換 重要的五個支柱 unix作業系統 分時作業系統 minix作業系統 gn...

Linux 0 11核心編譯問題

弄了好長時間,只是可以用linux 0.11我的linux實驗室環境,使用bochs模擬,進入linux 0.11 cd cd src linux make 這樣就編譯成image了 mkdir a mkdir a boot mcopy image a boot 將映象檔案拷貝到啟動軟盤 修改men...

Linux 0 11核心編譯問題

弄了好長時間,只是可以用linux 0.11我的linux實驗室環境,使用bochs模擬,進入linux 0.11 cd cd src linux make 這樣就編譯成image了 mkdir a mkdir a boot mcopy image a boot 將映象檔案拷貝到啟動軟盤 修改men...