📄 体系结构.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 + -