后续学习指引

正式实验题目列表

基础阶段

2024-exercises-stage-1

编号位置简介考察点难度
01src/exercise-01编写第一个 Makefile程序构建入门
02src/exercise-02编写第一个测试程序构建入门
03src/exercise-03使用 Makefile 静态链接程序程序构建入门
04src/exercise-04使用 Makefile 构建第一个静态链接库程序构建入门
05src/exercise-05使用 Makefile 构建第一个动态链接库程序构建入门
11src/exercise-11编写一个简单的 ld 文件并指定内存区域程序构建基础
12src/exercise-12编写一个简单的 ld 文件并指定 text 起始地址程序构建基础
13src/exercise-13编写一个简单的 ld 文件并指定自定义 symbol程序构建基础
14src/exercise-14编写一个简单的 ld 文件并指定自定义 section程序构建基础
20src/exercise-20合并两个任务队列数据结构基础
21src/exercise-21按组反转一个任务队列数据结构基础
30src/exercise-30编写一个内核模块打印 hello world内核模块入门
31src/exercise-31编写一个内核模块实现阶乘计算内核模块基础
32src/exercise-32编写一个内核模块实现字符串反转内核模块基础
33src/exercise-33编写一个内核模块实现平均数计算内核模块基础
34src/exercise-34编写一个内核模块实现线性查找内核模块基础
35src/exercise-35编写一个内核模块延时打印字符串内核模块入门
40src/exercise-40使用 RISC-V 内联汇编实现条件返回RISC-V 基础指令基础
41src/exercise-41使用 RISC-V 内联汇编实现最大公因数求解RISC-V 基础指令基础
42src/exercise-42使用 RISC-V 内联汇编实现数组元素查找RISC-V 基础指令中等

进阶阶段

2024-exercises-stage-2

编号位置简介考察点难度
22src/exercise-22矩阵相乘矩阵基础
23src/exercise-232D 卷积操作矩阵基础
24src/exercise-24矩阵的原地转置矩阵基础
25src/exercise-25包含 0 的行列进行矩阵置零矩阵基础
26src/exercise-26查找矩阵中第 K 个最小的元素矩阵基础
36src/exercise-36编写一个内核模块求最大值内核模块基础
37src/exercise-37编写一个内核模块启动一个定时器内核模块基础
38src/exercise-38编写一个内核模块创建一个虚拟字符设备内核模块中等
39src/exercise-39编写一个内核模块实现一个简单的文件操作函数内核模块中等
43src/exercise-43使用内联 RISCV 汇编实现计算斐波那契数列的第 n 个数RISC-V 基础指令RISC-V 基础指令中等
44src/exercise-44使用内联 RISCV 汇编实现整数数组求和RISC-V 基础指令中等
45src/exercise-45使用内联 RISCV 汇编实现查找整数数组最大值RISC-V 基础指令中等
46src/exercise-46使用内联 RISCV 汇编实现判断给定数组是否有序RISC-V 基础指令中等
47src/exercise-47使用内联 RISCV 汇编实现给定数组目标元素个数RISC-V 基础指令中等
50src/exercise-50模拟 FIFO 页面置换算法操作系统中等
51src/exercise-51模拟 LRU 页面置换算法操作系统中等
52src/exercise-52获取容器主机名操作系统基础
53src/exercise-53简单虚拟地址到物理地址的转换操作系统中等
54src/exercise-54模拟时间片轮转调度算法操作系统中等
55src/exercise-55模拟虚拟内存限制操作系统中等

学习指引

基础阶段

2024-exercises-stage-1

  1. Makefile 基础
    • 实验编号:01, 02, 03, 04, 05
    • 学习目标:掌握 Makefile 的基本使用,包括编写简单的 Makefile、静态和动态链接库的构建。
    • 学习步骤:
      • 阅读相关文档,了解 Makefile 的基本语法和结构。
      • 逐步完成每个实验,理解每个命令的作用。
      • 尝试修改 Makefile,观察构建结果的变化。
  2. 链接器脚本编写
    • 实验编号:11, 12, 13, 14
    • 学习目标:学习如何编写链接器脚本,指定内存区域、text 起始地址、自定义符号和节。
    • 学习步骤:
      • 理解链接器脚本的基本概念和作用。
      • 完成实验,注意观察链接结果与脚本的关系。
  3. 数据结构应用
    • 实验编号:20, 21
    • 学习目标:掌握基本的数据结构操作,如队列的合并和反转。
    • 学习步骤:
      • 复习队列的基本操作。
      • 实现代码,测试不同情况下的队列操作。
  4. 内核模块开发
    • 实验编号:30, 31, 32, 33, 34, 35
    • 学习目标:学习内核模块的基本开发流程,包括打印信息、实现简单算法等。
    • 学习步骤:
      • 了解内核模块的基本概念和开发环境配置。
      • 逐步完成每个实验,理解内核模块与用户态程序的区别。
  5. RISC-V 内联汇编
    • 实验编号:40, 41, 42
    • 学习目标:学习 RISC-V 内联汇编的基本使用,实现简单的算法。
    • 学习步骤:
      • 学习 RISC-V 指令集基础。
      • 编写汇编代码,理解汇编与 C 语言的交互。

进阶阶段

2024-exercises-stage-2

  1. 矩阵操作
    • 实验编号:22, 23, 24, 25, 26
    • 学习目标:深入理解矩阵操作,包括矩阵乘法、卷积、转置和元素查找。
    • 学习步骤:
      • 学习矩阵的基本数学性质。
      • 实现代码,优化算法性能。
  2. 内核模块高级应用
    • 实验编号:36, 37, 38, 39
    • 学习目标:学习内核模块的高级应用,如定时器、虚拟设备和文件操作。
    • 学习步骤:
      • 深入理解内核模块的工作原理。
      • 完成实验,注意安全性和稳定性。
  3. RISC-V 内联汇编高级应用
    • 实验编号:43, 44, 45, 46, 47
    • 学习目标:掌握 RISC-V 内联汇编的高级应用,实现复杂算法。
    • 学习步骤:
      • 深入学习 RISC-V 指令集。
      • 编写复杂的汇编代码,优化性能。
  4. 操作系统原理
    • 实验编号:50, 51, 52, 53, 54, 55
    • 学习目标:理解操作系统的基本原理,如页面置换算法、地址转换和调度算法。
    • 学习步骤:
      • 学习操作系统的基本概念和原理。
      • 实现模拟算法,理解操作系统的工作机制。