unikernel
app和kernel在一起
共享address space
编译一个image一体运行
简单高效
安全性低 会选择架在虚拟化上处理安全性
三次迭代
框架协作过程
axhal -> axruntime->app
axhal,第一个组件,带boot
下一步是runtime
应用有了运行时服务环境
应用按照需求调用ulib库
调用功能
引导过程axhal
_start,真入口
上一个阶段是opensbi运行,传来两个参数
hardid识别cpu
dtb_ptr指针,就是设备树文件
尽早建立栈,逃离汇编
高级语言需要函数调用就得有栈,有sp
不支持nommu,一开始就初始化mmu
切换后地址空间变了,重置栈指针
进入rust->rust_entry
axruntime
rust_main
准备运行时环境
打印LOGO和基本信息
初始化日志log
提示信息,展示kernel栈的各个区域的范围和属性
如果多核要等一下副核都切换完毕才会往下走
进入main()
退出前清理
axstd对应rust std标准库
main
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