Aero操作系统概览
运行Aero操作系统,及其启动过程分析。
一 运行Aero
1 | git clone https://github.com/Andy-Python-Programmer/aero.git |
二 启动过程
从src/.cargo/kernel.ld
可见,arch_aero_main()
是入口。
对x86_64架构,arch_aero_main()
在src/aero_kernel/src/arch/x86_64/mod.rs
。本函数的作用是完成与架构相关的初始化。本函数执行完成后会调用aero_main()
。
aero_main()
在src/aero_kernel/src/main.rs
。本函数仅初始化必需的服务,其它的初始化工作由kernel_main_thread()
来完成。调度进程会调度kernel_main_thread()
执行。
fs::init().unwrap()
用于加载文件系统。- 加载计时器。
- 加载调度进程。
kernel_main_thread()
在src/aero_kernel/src/main.rs
。
- 加载内核模块。
- 加载PCI驱动程序。
- 执行
fs::block::launch().unwrap();
- 执行
userland::run().unwrap();