之前也曾做过os的实验,但是当时所用脚手架代码太多,掩盖了许多底层细节——尤其是内存空间相关的。所以决定做一下rcore,复习os相关知识。
可能因为有相关基础,rcore前四个lab都没怎么费力,只有最后一个lab理解上花了点功夫。究其原因,是因为当时学银行家算法时就没有理解他是怎么运作的。带着先入为主的错误的观点来看实验要求,就感觉百思不得其解了。
我最初以为银行家算法是静态对一个程序进行分析以判断该程序是否会产生死锁的——但实际上银行家算法也可以用于“动态申请🔒时,如果判断可能死锁,就返回错误值”的情况。(实际上对于图灵完备的语言,静态分析反而没办法判断是否会产生死锁)
此外从 rcore 中学到的东西有:
- 文件系统的多层设计
- os如何分配和填写页表
- 具体如何实现线程和进程