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