?? 體系結構.txt
字號:
/*
* 文檔記錄了對于理解系統最重要的線索.
*
*/
5.boot 目錄
fsector.s 軟驅啟動記錄,自舉到0x90000
setup.s 由fsector.s 加載到 0x10000,長2048 字節, 其后是以head.s 開始的內核.
kernel/head.s 內核被setup.s 裝載到 0x100000 (1M).
boot/setup 目錄是 setup.s 需要的各個文件,如內存探測等.
/////////////////////////////////////////////////////////////////////////
//
// 下面這些文件基本上是進一步工作的基礎. 沒有更基礎的了
//
include/
ctype.h isdigital 等支持字符解析的宏
linkage.h asmlinkage, extern "C" 的封裝
stdarg.h 多參數函數支持
stddef.h NULL offsetof
limits.h 空文件
///////////
posix_types.h 空文件, 包含stddef.h 和 i386目錄下同名文件
string.h 空文件, 包含i386 目錄下同名文件
types.h 各種數據類型的別名
include/i386
div64.h 64bit 除法運算 , vsprintf 有直接使用
////////////
posix_types.h __kernel_xxxx_t 定義, 間接包含
string.h string 庫, 間接使用
types.h 類型定義, 間接使用
kernel/
ctype.c 對應于ctype.h 的數組
kprintf.c kprintf 實現
vsprintf.c vsprintf 實現
//
//
////////////////////////////////////////////////////////////////////////
4. 移植的kbdriver.c kbd.h 構成鍵盤驅動.
自己的 kbd.c 是比此驅動更低級的支持.
3. 下列文件構成一個輕量級的printf 風格的支持
doprintf.c _printf.h
stdarg.h string.h _null.h _size_t.h _va_list.h
2. 下劃線
如果一個函數以下劃線開始, 則函數應該是一下情況之一:
a) 該函數是一個硬件特性的第一級封裝, 如
_gate_fill
b) 該函數是本模塊提供給其他模塊的接口如
_fill_int_gate _irq_reg _enirq_8259 _init_8259
1. 中斷處理
a) arch.h arch.s archlib.c 構成cpu 的抽象層.
b) 流程:
int 產生--> 中斷門gate(0x20--0x2f) ---> arch.s 預設的處理函數 -->
調用用戶中斷處理函數irq_table-->irq handler
0. kernel.h 是內核最基本的頭文件, 現階段包含所有模塊的接口聲明.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -