Skip to content

香港操作系统内核课程内容与编程要求

操作系统内核(Operating System Internals)是计算机科学硕士(MPhil/PhD)与部分授课型硕士(MSc)的硬核必修或选修方向。在香港高校里,这门课通常以”原理 + 编码”双轨推进——既要讲清楚进程调度、虚拟内存、文件系统、同步原语、I/O 子系统、虚拟化等模块的内部机理,也要让学生在真实内核或内核级模拟器上写代码。对内地读者来说,最常见的疑问不是”难不难”,而是”到底要写什么、用什么语言、要交哪些作业”。本文以香港主要高校(以港大、中科大(广州)、港中文、港科大、港城大、港理工等的公开大纲为参考)为例,梳理这门课的典型内容与编程要求,方便你提前判断是否适合自己。

各校每年大纲可能微调,建议以你意向院校最新课程手册为准。


一、课程定位与教学目标

这门课在港校通常名为 Advanced Operating Systems、Operating System Kernel、Systems Programming 或 OS Implementation,定位有三种典型:

无论哪种,授课目标都是一致的:让学生”看懂内核源码 + 能动手改内核代码”。考核一般包含期中/期末考试 + 实验作业 + 期末项目三部分,权重以实验为主(通常占总评 50%–70%)。


二、核心教学内容六大模块

1. 进程与线程管理

2. 同步与并发

3. 内存管理

4. 文件系统与 I/O

5. 中断、异常与系统调用

6. 虚拟化、安全与容器

部分课程还会把网络栈(TCP/IP 在内核中的实现、Netfilter)与性能分析工具(perf、ftrace、SystemTap)单列章节,作为期末项目素材。


三、典型实验作业长什么样

港校的 OS 内核课作业有较强的”传承性”,多数沿用以下经典项目:

1. 教学内核二次开发(最常见)

2. 系统编程小项目

3. 期末大项目(Capstone)

作业评分通常看正确性 + 通过测试集 + 代码可读性 + 实验报告四部分。实验报告常要求说明:你的设计权衡、为什么这样实现、用了哪些性能工具验证。


四、编程语言与工具门槛

这是内地同学最关心的”上手问题”,直接说结论:

维度 主流要求
核心语言 C(必需,占 80% 以上代码量)
汇编语言 x86-64 或 RISC-V 汇编(必修,理解上下文切换与中断)
可选语言 Rust(少数新派课程)、Python(评测脚本)、Shell(构建脚本)
构建工具 Makefile、CMake、gcc/clang 交叉编译链
调试工具 GDB、QEMU monitor、strace、perf、ftrace
版本控制 Git(强制)
实验平台 QEMU 模拟器 + Linux 主机环境,部分课程提供云端实验台

C 语言要掌握到什么程度?

不是”会写排序和链表”就行,而是要理解:

汇编要掌握到什么程度?

推荐的内地前置训练


五、考核方式与分数构成(以典型校为例)

组成部分 占比参考 形式
平时实验 40%–60% 4–6 个 lab,按周布置
期末项目 20%–35% 2–4 人组队,提交代码 + 报告 + 演示
期中考试 10%–20% 闭卷,理论 + 小段代码阅读
期末考试 0%–30% 部分课程以项目替代考试
课堂参与 5%–10% Office hour、讨论区答疑

港校普遍采用绝对评分尺度(A/A-/B+/…),不像英美体系按曲线砍人。这意味着只要你代码能跑通、报告写清楚,拿到 B+ 以上并不算难;但若卡在某个 lab 进度滞后,拖到期末会非常被动。


六、选课与学习节奏建议

  1. 先看大纲里的”前置课程”。操作系统、数据结构、计算机组成原理、计算机网络是常见门槛。缺哪门课,需要在开学前自补。
  2. 提前搭好实验环境。QEMU + RISC-V 工具链是 xv6 主流;OS161 多用 MIPS 工具链。建议在大纲发布当天就把工具链装好。
  3. 找搭档而不是搭便车。港校实验通常允许 2 人合作,组队前可在课程 Slack/微信群提前接触。
  4. 每周固定 Office Hour 时间。授课型 TA 一般每周 2 次答疑,提前整理问题效率最高。
  5. 不要把 lab 拖到最后一周。内核代码一旦写崩,调试时间以天计;尤其涉及并发与内存的部分,几乎无法”赶出来”。
  6. 做好版本管理。每周一个 tag,期末项目分手时不会乱。
  7. 英文报告先用中文草稿。术语可参考 OS Three Easy Pieces 与《Operating System Concepts》(恐龙书)的中英对照表。

七、对内地申请者的常见提醒


结语

操作系统内核课在港校更像一门”工程写作课”——你要把论文里的算法、教材里的机制,翻译成能在 QEMU 上跑起来的 C/汇编代码。课程内容并不神秘:C 是骨架、汇编是关节、并发与内存管理是肌肉、文件系统与设备是皮肤;真正决定成绩的是每周的实验节奏与对工具链的熟悉度。

如果你正在评估”是否值得为一门课专程来港”,或者想了解香港高校的师资方向、奖学金制度、生活成本与申请时间线,可以到 香港大全 查看更多香港相关指南,里面整理了从入学申请到抵港生活的全流程资料。

常见问答

香港操作系统内核课到底要写什么代码?必须改真实内核吗?

课程通常以教学内核(xv6、OS161、NACHOS、JOS、rCore 等)为载体,学生在这些内核上补完系统调用、调度器、内存管理、文件系统等模块,而非直接改 Linux 上游内核。也有部分课程走”系统编程”路线,围绕 Linux 系统调用、文件系统、网络栈做工程型项目,具体形式因校而异,以你意向院校最新课程手册为准。

这门课对 C 语言的要求有多高?只会做链表题够不够?

远远不够。文章明确指出,C 是必需语言,占代码量 80% 以上,需要熟悉 volatile、restrict、_Atomic 等语义、手动内存管理、内存对齐、内核编码风格(不用 libc、注释密度高等)。指针、函数指针、头文件依赖、链接顺序都是基础门槛,建议开学前按 CSAPP 第 7–10 章实验自补。

汇编语言要学到什么程度?完全没接触过怎么办?

需要能理解 x86-64 或 RISC-V 汇编层面的上下文切换、系统调用入口与中断返回机制,并能用汇编写出简单的 context switch stub 等片段。文章推荐的入门路径是先读完《Operating Systems: Three Easy Pieces》并跑通 MIT 6.S081 的 lab 0–4,再视进度补《Linux Kernel Development》阅读笔记。

平时实验、期末项目、考试分别占多少分?哪个最容易挂?

按文章整理,平时实验一般占 40%–60%、期末项目 20%–35%、期中考试 10%–20%、期末考试 0%–30%、课堂参与 5%–10%,实验权重最高。港校采用绝对评分尺度(A/A-/B+/…),不按曲线砍人,所以代码能跑通、报告写清楚,拿到 B+ 以上并不算难;但若某个 lab 进度滞后拖到期末,并发与内存相关模块几乎无法”赶出来”,是常见挂科点。

本科不是 CS 专业,能直接选这门课吗?

有可能,但需要看具体院校政策。文章提到,本科非 CS 但有较强编程与系统背景者,部分课程允许先修背景课再上内核课;建议在选课前直接邮件询问目标院系,并提前评估自己是否补齐操作系统、数据结构、计算机组成原理、计算机网络这几门常见前置课。

港校 OS 内核课允许组队吗?组队有什么坑要避?

多数港校实验允许 2 人合作,期末 Capstone 通常 2–4 人组队,提交代码 + 报告 + 演示。文章提醒”找搭档而不是搭便车”,建议在课程 Slack/微信群提前接触彼此,并做好每周一个 tag 的版本管理,避免期末分手时仓库混乱;同时注意港校对抄袭、代码搬运(包括 GitHub 公开仓库)的处理非常严格,开学前需签署学术诚信声明。

延伸阅读