MenuOS的构造
操作系统的两把宝剑:
中断上下文的切换——保存现场和恢复现场;
进程上下文的切换;
关键目录
- arch:与体系结构相关的子目录列表,存放CPU体系结构的相关代码;
- block:存放Linux存储系统中关于块设备管理的代码;
- crypto:存放常见的加密算法的C语言代码;
- Documentation:存放文档;
- firmware:固件;
- drivers:驱动目录,分门别类的存放Linux内核支持的所有硬件设备的驱动源代码;
- fs:file system,文件系统,列出Linux支持的各种文件系统的实现;
- init:initial初始化的意思,存放Linux内核启动时的初始化代码;
- include:头文件目录;
- ipc:进程间通信;
- kernel:内核,存放内核本身需要的核心代码;
- mm:memory management,内存管理;
- net:网络相关的代码;
实验
构建Linux系统MenuOS;
启动MenuOS;
断点查看
start_kernel;
rest_init;
总结
init_task(0号进程)决定了系统所有进程、线程的基因,在创建init进城后,调用cpu_idle()演变成了idle进程,执行一次调度后,init进程运行。kernel—init()1号内核线程负责执行内核的部分初始化工作及进行系统的配置,最后调用do_execve加载init程序,转为init进程。kthreadd进程由0号进程创建,始终运行在内核空间,负责所有内核线程的调度与管理。