基于 Intel 80386 的汇编语言,80836是32位
中断(Interrupt):
- 外设中断(Device Interrupt)、
- 陷阱中断(Trap Interrupt)
- 故障中断(Fault Interrupt,也称为 exception,异常)
ucore 的运行环境可以是真实的 X86 计算机,不过考虑到调试和开发的方便,我们可采用 X86 模拟器,比如 QEMU、 BOCHS 等,或 X86 虚拟运行环境,比如 VirtualBox、 VMware Player等。 ucore 的开发环境主要是 GCC 中的 gcc、 gas、 ld 和 MAKE 等工具,也可采用集成了这些工具的 IDE 开发环境 Eclipse-CDT。
开发步骤:
1) 启动操作系统的 bootloader,用于了解操作系统启动前的状态和要做的准备工作,了解运行操作系统的硬件支持,操作系统如何加载到内存中,理解两类中断“外
设中断”,“陷阱中断”,内核态和用户态的区别;
2) 内存管理子系统,用于理解 x86 分段/分页模式,了解操作系统如何管理物理内存
和虚存、页表管理、一类中断-“故障中断”、缺页故障处理、基于页的内存替换;
3) 进程管理子系统,用于了解进程创建、执行、切换和结束的动态管理过程,了解在用户态通过系统调用得到内核态的内核服务的过程;
4) 处理器调度子系统,用于理解操作系统的调度过程和调度算法;
5) 同步互斥子系统,用于了解同步互斥的具体实现以及对系统性能的影响,研究死锁产生的原因,以及如何避免死锁;
6) 进程间通信子系统:用于了解进程间如何进行信息交换和共享;
7) 文件系统,了解文件系统的具体实现,与进程管理等的关系,了解缓存对操作系统IO 访问的性能改进,了解虚拟文件系统(VFS)、 buffer cache 和 disk driver 之间的关系。
8) 网络协议栈(选做):了解网卡驱动、 TCP/IP 协议栈实现和 Web 应用。
80386 有四种运行模式:
- 实模式
- 保护模式
- SMM 模式
- 虚拟 8086 模式
分段机制启动、分页机制未启动:逻辑地址->段机制处理->线性地址=物理地址
分段机制和分页机制都启动:逻辑地址->段机制处理->线性地址->页机制处理->物理地址
Intel80836结构:
General Register(通用寄存器):
EAX:累加器
EBX:基址寄存器
ECX:计数器
EDX:数据寄存器
ESI:源地址指针寄存器
EDI:目的地址指针寄存器
EBP:基址指针寄存器
ESP:堆栈指针寄存器
Segment Register(段寄存器,也称 Segment Selector,段选择符,段选择子):
CS:代码段(Code Segment)
DS:数据段(Data Segment)
ES:附加数据段(Extra Segment)
SS:堆栈段(Stack Segment)
FS:附加段
GS 附加段
Instruction Pointer(指令指针寄存器):
Flag Register(标志寄存器):