參考《linux核心完全剖析 --基於0.12核心》
linux-0.12目錄為修改過的源**,其中加入了中文注釋,修改部分**使其能在現在的環境下編譯,並且支援gdb除錯。
oslab為實驗目錄,切到oslab目錄下,執行該目錄下的run.sh
指令碼即可執行linux0.12作業系統。
1.1.1 方式一
可以選擇已建立好的docker映象作為實驗環境(人生苦短,我用容器)。
首先從docker hub中拉取映象;
docker pull ultraji/ubuntu-xfce-novnc:os_learn
執行容器,linux使用者可以通過掛載將本地專案目錄掛載到容器中,windows或mac使用者可以在容器內重新git clone乙份;
docker run -t -i -p 6080:6080 -v $
:$ ultraji/ubuntu-xfce-novnc:os_learn
預設不啟動vnc服務,執行/home/ubuntu
目錄下vnc_startup.sh
指令碼啟動vnc服務,就可以通過瀏覽器輸入http://localhost:6080/vnc.html
訪問容器內的桌面系統了。
1.1.2 方式二
ubuntu(64bit,>=14.04)的使用者也可以使用src/code
目錄下的一鍵環境搭建指令碼setup.sh。
該項目的oslab為實驗目錄,切到oslab目錄下,執行該目錄下的run.sh
指令碼即可執行linux0.12作業系統。
作業系統筆記
Linux0 12 記憶體定址
一 分段與分頁的比較 1.邏輯位址 分段機制 線性位址 分頁機制 實體地址 分段機制是必須有的,分頁機制可以沒有。如果沒有分頁機制,線性位址 實體地址 不同的分段機制和不同的分段機制可以隨意組合 線性位址和實體地址都是32位,是一維的 3.分段的原因 隔絕各個任務的 資料和堆疊區域的機制,使多個程式...
Linux0 12初始化程式
1.main 1 設定系統的根檔案裝置號以及一些記憶體全域性變數 2 所有方面的硬體初始化工作 陷阱門 塊裝置 字元裝置 tty 開機啟動時間 排程程式 硬碟 軟碟機 3 開中斷,切換到任務0中執行 4 切換到使用者模式 5 建立乙個用於init 的子程序 6 迴圈執行pause 2.init 1 ...
Linux0 12引導啟動程式
1.從系統加電起所執行程式的順序 rom bios bootsect.s setup.s head.s main.c 其中,head.s和main.c都屬於system模組 main屬於初始化程式,這裡不講 2.幾個程式的比較 程式名位置 語言rom bios rombootsect.s boot ...