Linux 0.11核心代碼筆記

來源:互聯網
上載者:User
  主存中頂部分配給ROM BIOS(256KB-2MB),640KB-1MB的空間留作其他用途.包括顯示緩衝區,ROM BIOS映射區...
  BIOS啟動過程:從記憶體的oxFFFFFFF0開始,這個地址有一條JMP命令跳到Flash ROM中的BIOS程式中執行,將其中的64KB代碼複製到記憶體oxF0000-ox100000作為ROM BIOS映射區,並從這裡開始進入實模式工作.
  CMOS(互補性氧化金屬半導體)儲存空間容量很小,用於儲存即時鐘資訊和系統硬體設定資訊.
  as86彙編編譯器用以編譯開機磁區程式bootsect.s和配置程式setup.s.其它原始碼由GNU as彙編和gcc編譯.
  處理器的系統寄存器包括標誌寄存器,記憶體管理寄存器(GDTR,IDTR,LDTR,TR),控制寄存器(CR0,CR1,CR2,CR3).
  段寄存器(CS,DS,ES,SS,FS,GS),EIP寄存器中存放段內位移地址,所以CS:[EIP]表示要執行的代碼邏輯地址.
  80x86將邏輯地址根據分段規則轉為線性地址,再將線性地址根據分頁規則轉為物理地址.
  rep表示在CX不為0的情況下,不斷迴圈.
  movw表示移動一個字
  jmpi go,INITSEG 表示間接跳轉.
  seg 取段地址
  ah=0x08    int 0x13  表示取磁碟機參數
  .word 0  表示定義值為0的變數
 

總結:ROM BIOS (0x7c00) ->bootsect.S移動到0X90000執行,setup.S移動到0x90200, System模組移動到0x10000 -> setup.S再執行->System模組移動到0x00000->執行head.S

main.c的主要功能:
1.讀取head.S執行後的系統配置參數,分配記憶體空間
2.trap_init()  設定陷阱門
3.blk_dev_init() 塊裝置初始化
4.chr_dev_init() 字元裝置初始化
5.tty_init()  tty初始化
6.time_init()  系統時間初始化
7.sched_init()  進程調度初始化
8.buffer_init()  緩衝區初始化
9.hd_init()    硬碟初始化
10.floppy_init() 磁碟片初始化
11.sti()  開啟中斷
12.move_to_user_mode()  轉到使用者模式
13.fork()  建立進程0,如果建立成功轉init()函數
14.init()函數中讀取硬碟資訊setup(***),開啟tty0,建立子進程用以開啟rc和sh,再建立子進程以setsid().
總結:main.c的主要工作是:分配記憶體->初始化->開啟中斷->轉到使用者模式(保護模式)->建立進程0,1以讀取硬碟資訊,開啟rc和sh.

//////////
asm.s的主要功能是:處理硬體中斷
C函數地址入棧->中斷返回地址與C函數地址交換入棧->寄存器入棧->出錯碼入棧->

trap.c的主要功能:初始化陷阱門,asm.s中的中斷處理在trap.c中,主要是顯示出錯的位置,寄存器...

////////////////////////
system_call.s

總結:system_call.s主要功能是實現系統調用,還包括時鐘中斷,硬碟中斷,磁碟片中斷,並行中斷,其它底層...
_syscall0宏調用system_call.s->system_call.s根據中斷號到sys.h中的system_call_table數組中找->找到後對應函數在sys.c中
所以添加使用者系統調用的步驟應該在sys.c中定義新函數->將新函式宣告到sys.h及unstd.h中->system_call.s中修改系統調用的總數(+1)

////////////
mktime.c的主要功能是計算從1970.1.1到開機時間所經過的秒數

////////////
sched.c 的主要功能是進程調度演算法,還有其它的一些程式,如軟碟機程式,sleep_on... , 根據從就緒狀況的進程中,選取signal->count最大的優先,同時重新計數全部的signal->count=signal->count/2+signal->priority

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.