# peacesheep的心得体会

## 厌倦的CURD

大一的我刚学C语言和C++，我曾为自己写出一个GUI的程序而沾沾自喜。大一下，我接触到了前后端，在之后的时间里，我做的项目基本都在写网站，写前后端，并且我开发了例如收作业系统这样的个人兴趣项目并推广，我为自己写的网站能真正为同学们服务而感到快乐。

但是，网站再多无非也就那么几样，CURD写多了总感觉没啥意思。虽然之后我接触了容器、高并发等，自己设计出了单机上万的并发系统，但是总感觉写的这些都浮于表面，无法接触计算机底层知识。

上次在与导师沟通交流的时候，我曾说过我想自己写一个OS，导师对我的想法表示非常支持，也要感谢我的指导老师。


## champion yyds!

我的队友我们都管他叫champion，这不仅是谐音梗，更是一种顾名思义。对于开发OS，我只是有想法，但并没有付诸行动。幸好，我遇到了champion。champion是老OI选手，也是我的ACM队友，他对于底层的研究近乎痴迷，后来我们OS很多设计都是他做的。我们大二的时候我曾和他说过我的想法，我们当时就决定，大三的时候要一起参加这个OS比赛。

幸运的是，我们两个都没有放弃，到了大三，我们真的提交了报名表，真的开始了自己的OS开发之旅。

## 还是有点困难的

我们平时接触的OS的知识也不算少，但是从来没有实践过，当我们想要实践的时候，却发现学的东西和写的东西还是有点很大差距的。

我们写OS的前半个月都没有进展，原因在于：我们不知道如何启动我们的OS。我们知道代码怎么写，但是，如何把我们的代码放到开发板上，让他正确运行我们的代码，困扰了我们半个月。开发内存管理，我们知道什么几级页表寻址，计算题都会算，但是真正写起来还是遇到了一些问题。我知道伙伴系统是把伙伴合并，但是如何找到伙伴、怎样把伙伴合并到一起，之前并没有研究过。

当我们刚刚开发出了我们的物理内存管理的时候，已经有几只队伍102分满分了，这时候不仅是技术上的难，我们两个的心理也都承担着很大的压力。

## 总算是做出来了

一直到5月快结束的时候，我的心都很没有底，不敢确定我们是否能完成我们自己的OS，是否能进入决赛。虽然后者暂时无法确定，不过还好，我们在DDL最后的两天，终于写出了一个能运行的操作系统，成功的运行了初赛所有的测试用例。


## 收获还是很大的

这段时间我和champion几乎把全部心思都花在这个上面了，也许我们的OS她还有一些问题，但是对于我的收货确实非常大。我记得有一个学习效率分层图，效率最高的倒数第二层——就是实践。课本、网上的知识可以让我跟别人谈起OS侃侃而谈，但是，不真刀真枪写一个出来，永远无法完整的理解OS的每个部分。

如果能幸运的进入决赛，我们将继续全力以赴。





-----------------

By：PeaceSheep

2022.06.05