1.mem_init(),内存初始化mem_map[]数组,4k一个单位
2.trap_init(),用于初始化硬件异常处理中断向量(陷阱门),并设置允许中断信号的到来
什么是中断门?
中断门是x86的一种指向(code,data,stack)段描述符的一种特殊的段描述符,也就是system segment,而code,data,stack则为user segment. 当中断产生的时候,中断向量在IDT表中获得中断门,然后根据中断门中对应的segment selector定位获得GDT或LDT中的code segment,获得中断服务历程的entry地址。
中断门和陷阱门的区别
通过中断门的转移和通过陷阱门的转移之间的差别只是对IF标志的处理。对于中断门,在转移过程中把IF置为0,使得在处理程序执行期间屏蔽掉INTR中断(当然,在中断处理程序中可以人为设置IF标志打开中断,以使得在处理程序执行期间允许响应可屏蔽中断);对于陷阱门,在转移过程中保持IF位不变,即如果IF位原来是1,那么通过陷阱门转移到处理程序之后仍允许INTR中断。因此,中断门最适宜于处理中断,而陷阱门适宜于处理异常。
备注:按照是否可以 被屏蔽,可将中断分为两大类:不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断。典型的非屏蔽中断源的例子是电源掉电,一旦出现,必须立即无条件地响应,否则进行其他任何工作都是没有意义的。
3.blk_dev_init(),设置请求项数组request[i]中每一个.dev=-1表示空闲,.next=null表示请求项队列为空