操作系统启动过程
当bootloader通过读取硬盘扇区把ucore在系统加载到内存后,就转跳到ucore操作系统在内存中的入口位置(kern/init.c中的kern_init函数的起始地址),这样ucore就接管了整个控制权。当前的ucore功能很简单,只完成基本的内存管理和外设中断管理。ucore主要完成的工作包括:
- 初始化终端;
- 显示字符串;
- 显示堆栈中的多层函数调用关系;
- 切换到保护模式,启用分段机制;
- 初始化中断控制器,设置中断描述符表,初始化时钟中断,使能整个系统的中断机制;
- 执行while(1)死循环。
以后的实验中会大量涉及各个函数直接的调用关系,以及由于中断处理导致的异步现象,可能对大家实现操作系统和改正其中的错误有很大影响。而理解好函数调用关系的建立机制和中断处理机制,对后续实验会有很大帮助。下面就练习5涉及的函数栈调用关系和练习6中的中断机制的建立进行阐述。