组件化内核
组件化内核具有灵活,增量构造等优点。
组件化内核最启发我的是组件化可以用来快速构造应对不同场景的各种模式内核。
不同的功能组件,不同的内核特权级,不同的隔离要求…
组件化内核完全可以快速满足这些要求。
Unikernel
特点
单一特权级,简单高效。
实验
实验一
实验要点在于了解在不同层级下修改对应输出语句产生的变化,了解输出都来自于哪些层级。
实验二
该实验完成对std::hashmap的支持,通过查阅rust的std源码发现rust基于hashbrown。因此引入hashbrown作为hashmap。
实验三
本次实验完成Bump分配算法,此算法较为简单。重点在于实现对应trait。
练习四
该实验重点在于了解文件系统对应函数,调用对应函数即可。
Monolithic
实验
m_1
注册handle_page_fualt(), 通过aspace中的handle_page_fualt()来处理异常。
mmap
该实验是通过仿照linux来完成mmap:
1,阅读linux中的mmap,确定各参数意义:
2,分配内存buf,注意点为分配的空间需要4K对齐;
3,读取文件内容至buf
Hypervisor
特点
侧重于虚拟而非模拟,同时保持高效和安全
实验
h_1_0
按实验要求设置对应寄存器值,同时增加spec使guest运行下一条指令。
但不知为何,程序运行会经常卡死,代码未改动情况下运行结果不确定。
h_2_0
将pflash内容写入disk作为文件,与加载guest文件内容类似处理即可。
lab1
用户程序特征
该lab中的用户程序基本特征为申请n次倍增的内存,之后释放偶数次申请的内存,以此循环。
内存分配
1,由于物理内存大小为128m,初始即分配全部内存给内存分配器。
2,由于奇偶关系,将内存切分为两个区域。
3,由于倍增关系,将两个区域大小配置为2:1。