main.c代码阅读

main.c 代码阅读

main.c文件里面就一个函数,也就是main函数,它主要的功能是对各个模块进行初始化工作,然后运行调度器。代码如下图所示:
main.c代码阅读第13行用来判断当前cpu是主cpu还是从cpu,如果是主cpu,那么将执行一系列的初始化动作,依次是14行的控制台初始化,15行的打印模块初始化,19和20行创建内核页表,21行打开分页机制,22行创建进程表,接下来的两行是设置系统中断向量和系统中断初始化,接下来是设备中断初始化,27和28行是磁盘节点和磁盘缓冲初始化,29行是文件系统初始化,30是磁盘初始化,接着是创建第一个用户进程,__sync_synchronize是gcc提供的原子操作,保证内存访问的操作都是原子操作。最后是设置初始化完成标志。
如果是从cpu,首先等待主cpu初始化完成标志,然后打开分页功能,设置系统和设备的中断初始化。
最后不管是主cpu还是从cpu,都开始执行进程调度函数。接下来的章节会详细分析各个模块的代码实现。谢谢!