IDT本质是在kernel中的一个数组,是中断向量id到中断描述符(也即中断服务程序起始地址)的映射。
我画了一个图,图解IDT处理流程。
» Read more: 设定IDT表以及中断处理函数编写
Archive for March, 2014
设定IDT表以及中断处理函数编写
March 26th, 2014异常控制流(读书笔记)
March 13th, 2014今天阅读了一下计算机对于异常处理的章节,我把一些有用的摘出来,方便以后回顾。
异常控制除了中断,还包括system call,我会一直向这篇文章中添加自己读书内容的。
» Read more: 异常控制流(读书笔记)
JOS虚拟页表的实现
March 10th, 2014之前我们建立了基本的物理页,下面我们建立系统的虚拟地址系统,也就是二级页表。
对于所有对内存的访问,地址都被解释成虚拟地址,并由MMU 执行过程。程序员的工作是设置和维护页目录和页表。
实现虚拟页表的关键在于页目录,页表中存的是物理地址,而页目录项,页表项本身地址是虚拟地址。
» Read more: JOS虚拟页表的实现
JOS的物理页表分配实现
March 4th, 2014最近将JOS的启动流程学习了一遍,细化了系统从real mode到32-bit的转变。
但是在系统真正要接管内存,分配真正页表之前,要有一个简单的页表将kernel code载入到内存中。
我们先使用一个static void i386_detect_memory(void) 函数来探测物理内存一共有多少pages,一个page为4K.
另外我们看一下JOS的memery map就可以发现我们做的工作,写这部分一定要有好的大局观。知道每部分初始化位于内存的哪个位置。