OS161 原始碼閱讀-1

來源:互聯網
上載者:User

/kern/arch/mips/mips/start.s

系統開始引導於此。
22-25    為了gdb的方便,留了20位元組作為stack frame
27-57    由注釋得知,系統初始時,將一個引導字串放到a0中,並且將核心載入到0x80001000(物理地址0x00001000)中。
         80000000將會是exception handler。_end是連結完成後,kernel的結束位址。
59-64    將a0中的bootstring拷貝到_end後面,即將bootstring追加到kernel後面。
66-71    計算出bootstring的長度,並且加上NULL的一個位元組
74-76    計算出以bootstring尾部的地址後面第一個頁首的地址
78       再增加一頁的空間(4k),留作第一個堆棧的空間,此地址便為棧頂地址
80-83    將計算好的stack top地址附給sp,並且將其儲存到curkstack(當前核心堆棧地址),和firstfree(第一空餘的頁面地址)
         此處需要注意的是,這兩個地址不衝突。堆棧將地址向下減,firstfree向上加,是兩個方向。
85-97    至此bootstring儲存在s0裡面。依舊是為了gdb準備了20位元組的stack frame。
103-108  將uTLB的exception handler拷貝到0x80000000
110-115  將exception handler拷貝到0x80000080
118-122  針對mips系統,清除instruction的cache
124-128  初始TLB
154-155  設定狀態寄存器,將interrupt寄存器enable
158-162  開始執行kmain()。(不解bootstring雖然在s0,但是為什麼在jal kmain後才將move a0,s0呢?)
166-176  kmain是不會返回的,如果返回了,那一定出錯了,就執行panic。

/kern/main/main.c

kmain(bootstring)

161      執行boot()進行OS必要的初始化
163      menu(bootstring)

boot()

64-71    列印版本資訊
73       記憶體初始化
74       調度器初始化
75       線程初始化
76       檔案系統初始化
77       裝置初始化
78       虛擬記憶體初始化
79       kprintf初始化
82       檔案系統設定引導檔案系統emu0,(此時忽略錯誤,因為事實上emu0不存在)
88-89    比較userptr_t的類型是否和char*一樣

shutdown()

102      清理bootfs
103      清理curdir(目前的目錄)
104      解除所有裝置的綁定
106      禁用所有中斷
108      停止scheduler
109      線程終止

sys_reboot(int code)

124-131  判斷入口參數合法性
133      調用shutdown()終止系統
136-139  如果是RB_HALT,就執行md_halt();
140-143  如果是RB_REBOOT,md_reboot();
144-147  如果是RB_POWEROFF,就執行md_poweroff();
150-151  這三個函數都是不可能返回的函數,如果返回了,一定是reboot行為失敗了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.