本文原载于我的博客:https://ziyang.moe/article/csapplab0.html
前言
最近准备快速过一遍 CSAPP。
学 CSAPP 不做实验,就像四大名著不看红楼梦,说明这个人文学造诣和自我修养不足,他理解不了这种内在的阳春白雪的高雅艺术,他只能看到外表的辞藻堆砌,参不透其中深奥的精神内核,他整个人的层次就卡在这里了,只能度过一个相对失败的人生。
劝退 CSAPP 实验人的最大因素,就是 Linux 环境。本科时候做过一次,用的是 Vmware Workstation 虚拟机平台,安装 Ubuntu Desktop。虽然我个人倒是没遇到过什么问题,但是身边的人遇到过一下问题:
- 虚拟机安装错误
- Vmware 与 Hyper-v 不兼容
- 虚拟机无网络
- 虚拟机与宿主机共享文件夹不好使
- Ubuntu 中文输入法
- 其他玄学问题
另外,虚拟机的性能也是很难恭维,毕竟要从宿主机划出去一片内存,你永远不知道,是虚拟机先 OOM,还是宿主机先 OOM。
综上,我选择 WSL(Windows Subsystem for Linux,适用于 Windows 的 Linux 子系统)。推荐的操作系统是 Windows 10 Version 2004 以上,或者 Windows 11,以使用 WSL 2。低于此版本的 Windows,即使有 WSL 功能,也只是 WSL 1,使用翻译层将 Linux 系统调用转化成 Windows 系统调用,而 WSL 2 使用了一个轻量级的、无需维护的虚拟机,并在这个虚拟机中运行了一个完整的 Linux 内核。一个完整的 Linux 内核,对于 CSAPP 的实验至关重要。
什么,你问我 MacOS 怎么办,Intel 芯片的 MacBook 可以安装 VirtualBox、VMWare Fusion 或者 Parallel Desktop,并在其上安装 Linux 发行版,也可以使用 Docker。至于 m1 芯片的 MacBook,建议换电脑(不是开玩笑,m1 真的没法做实验)。
笑死,我发现我废话就真多。
安装 WSL 和 Ubuntu
Windows 安装 WSL 非常简单,只需要在一个有管理员权限的 PowerShell 中输入如下命令:
wsl --install -d Ubuntu
系统就会自动配置好所需的功能,并且自动下载 Ubuntu 的最新 LTS(截至本文写作时&#x