| unikernel
|
| app和kernel在一起
|
| 共享address space
|
| 编译一个image一体运行
|
|
| 简单高效
|
|
| 安全性低
|
会选择架在虚拟化上处理安全性
|
| 三次迭代
|
|
| 框架协作过程
|
|
|
| axhal,第一个组件,带boot
|
| 下一步是runtime
|
| 应用有了运行时服务环境
|
| 应用按照需求调用ulib库
|
| 调用功能
|
|
|
|
| 引导过程axhal
|
|
|
上一个阶段是opensbi运行,传来两个参数
| hardid识别cpu
|
| dtb_ptr指针,就是设备树文件
|
|
| 尽早建立栈,逃离汇编
|
| 高级语言需要函数调用就得有栈,有sp
|
| 不支持nommu,一开始就初始化mmu
|
| 切换后地址空间变了,重置栈指针
|
| 进入rust->rust_entry
|
|
| axruntime
|
|
|
| 准备运行时环境
|
| 打印LOGO和基本信息
|
| 初始化日志log
|
| 提示信息,展示kernel栈的各个区域的范围和属性
|
| 如果多核要等一下副核都切换完毕才会往下走
|
| 进入main()
|
| 退出前清理
|
|
| axstd对应rust std标准库
|
|
|
| arceos_api是跟编译语言有关的,这里不止想支持rust还有c
|
| riscv64使用put char调用的是sbi的支持打印
|
|
| 通过features组织组件
|
| axfeat是features缩写
|
| 3个来源的设置会汇集到axfeat
|
|
3个来源
| App: Cargo.toml可以定义features
|
| 传递具体环境变量,比如LOG=info
|
| 通用环境变量,FEATURES
|
|
|
|
|
Generated
2025-05-05 04:17:35 +0000
25bcfca-dirty
2025-05-04 14:47:56 +0000