从0开始做PA-Day01

By ten of hearts

PA是南京大学计算机系统基础课程的Project Assignment, 在这个特殊的作业里, 我们要利用软件模拟硬件功能, 从0开始搭建一个简单的计算机系统.

由于智能科学与技术学院天才般的课程设计, 我要在这个寒假中完成2024版本的PA, 并在此记录过程中的趣事, 以供他人参考和我自己留念. 当然由于PA再怎么说也是一个课程作业, 我也需要尊重老师们的要求, 不会在这些记录中过多描述实现方面的细节.

环境准备

鉴于整个PA都要求在Linux系统中完成, 且我本人也比较懒, 我选择了最简单的方案 – WSL2(Ubuntu 22.04 发行版).

在开始写代码之前, 我们需要装一些必备的开发工具. 众所周知, 在Linux系统中, 可以使用包管理器非常方便地下载安装软件. 然而, Ubuntu的包管理器apt需要sudo权限才能运行, 而讲义中的下载安装代码却十分可恶地没用加上sudo, 且写在了多行, 这也就意味着我们必须要将每个包复制一遍.

Unacceptable!

因此我将需要下载的包复制到了文件file中, 并且使用bash script进行数据处理, 直接提取出需要下载的包名列表并下载. 我将我使用的代码贴在下方.

cat file | sed -E 's/^apt-get install (.*) *# .*$/\1/' | paste -s -d " " | xargs sudo apt-get install

比一个一个复制快多了呢(doge). 但是若不这么做的话用CLI干嘛

还有一件趣事是在配置环境的过程中发生的, 在配置ccache的过程中, 我在.bashrc中添加环境变量时误将环境变量搞没了(这里解释了原因), 由于错误是发生在.bashrc中的, 因此简单地重启并不能解决问题, 而且由于环境变量全部没了, 这也就导致我甚至不能直接使用vim去修改.bashrc.

解决这个问题后, 重启WSL, 发现无法正确将windows中的路径转化. 只需要在pwsh中运行

wsl --shutdown

后再重新打开wsl即可解决问题.

一些思考

虽然今天才开始做, 但是我已经能感受到PA中凝聚了多少位老师和学长的智慧. 这份作业已经脱离了简单地介绍如何搭建计算机系统, 更是蕴含了学习任何一门CS课程都应该有的精神 – 探索和折腾.

借用jyy老师的话作为结尾: 蒋老师能不能来教我们OS:(

我们都是活生生的人, 从小就被不由自主地教导用最小的付出获得最大的得到, 经常会忘记我们究竟要的是什么. 我承认我完美主义, 但我想每个人心中都有那一份求知的渴望和对真理的向往, “大学”的灵魂也就在于超越世俗, 超越时代的纯真和理想 – 我们不是要讨好企业的毕业生, 而是要寻找改变世界的力量.

Tags: work cs