diff --git a/index.rst b/index.rst index 85b54bf..cc52873 100644 --- a/index.rst +++ b/index.rst @@ -2,6 +2,10 @@ Linux 内核教学 ============= +.. meta:: + :description: 本 Linux 内核教学文档介绍了一系列与 Linux 内核相关的课程和实验。课程侧重于理论和内核探索,实验则着重于设备驱动程序的主题。本文档内容基于布加勒斯特理工大学的“操作系统 2”课程。文档可以通过 Docker 容器或直接在主机上构建。该文档包含入门介绍、系统调用、进程管理、中断机制、SMP、地址空间、内存管理、文件系统、调试、网络、体系结构、虚拟化等 Linux 内核相关的多个专题。 + :keywords: Linux, 内核, 内核编程, 操作系统, 设备驱动程序, 文件系统, 进程管理, 虚拟化 + 本文档包含一系列 Linux 内核主题的课程和实验。课程侧重于理论和 Linux 内核探索。 实验侧重于设备驱动程序主题,文档风格类似“howto”。每个主题分两部分: diff --git a/info/chinese-localization-info.rst b/info/chinese-localization-info.rst index a094990..e5df207 100644 --- a/info/chinese-localization-info.rst +++ b/info/chinese-localization-info.rst @@ -2,6 +2,10 @@ 中文翻译介绍 ================= +.. meta:: + :description: 介绍中文版 Linux Kernel Labs 课程文档的背景、目的和特点 + :keywords: Linux, 内核, 课程, 中文翻译, 实验环境, 反馈建议 + 本教程译自 Linux kernel Labs 课程,原英文课程网址是 https://linux-kernel-labs.github.io/refs/heads/master,Github 仓库位于 https://github.com/linux-kernel-labs/ 。 我对其课程内容进行了简体中文翻译,一方面帮助了别人,另一方面自己也学习了一遍 Linux 内核底层。英文原版仓库是把文档和实验环境代码放在同一个仓库里,我为了方便文档编辑,将其抽离到了 `docs-linux-kernel-labs-zh-cn 仓库 `__ 里。 diff --git a/info/contributing.rst b/info/contributing.rst index 405b4fc..aef99e2 100644 --- a/info/contributing.rst +++ b/info/contributing.rst @@ -2,6 +2,10 @@ 向 Linux 内核实验项目做贡献 =========================== +.. meta:: + :description: 介绍如何为 Linux 内核实验项目做出贡献的指南,包括如何 fork 仓库、创建拉取请求以及修改拉取请求等步骤 + :keywords: Linux, 内核, 实验, 贡献, fork, pull request, GitHub + ``Linux 内核实验`` 是一个开放的平台。你可以通过对文档、练习或基础设施的贡献来帮助它变得更好。无论是对错别字的修正还是在文档中添加新的部分,所有的贡献我们都欢迎。 所有需要进行贡献的信息都可以在 `Linux 内核实验 Linux 仓库 `_ 中找到。如果要改变任何东西,你需要从你自己的 fork 创建一个拉取请求(``Pull Request``,``PR``)到这个仓库。PR 将由团队成员进行审核,并在解决任何可能的问题后合并。 diff --git a/info/extra-vm.rst b/info/extra-vm.rst index cfa92c7..778290d 100644 --- a/info/extra-vm.rst +++ b/info/extra-vm.rst @@ -2,6 +2,12 @@ 自定义虚拟机配置 =============== +.. meta:: + :description: 介绍如何在 QEMU 虚拟机上自定义虚拟机配置,包括使用 SSH 连接、连接调试器到内核、重建内核镜像、以及使用 Docker 容器运行实验环境。 + :keywords: Yocto, QEMU, 虚拟机, SSH, 调试器, 内核, Docker + +这个元信息描述了文件的主要内容,包括如何在 QEMU 虚拟机上自定义 Yocto 虚拟机配置,如何使用 SSH 连接、连接调试器到内核、重建内核镜像、以及如何使用 Docker 容器运行实验环境。关键词涵盖了这些主要的主题。 + 通过 SSH 连接到虚拟机 -------------------- QEMU 虚拟机的默认 Yocto 镜像(core-image-minimal-qemu)仅提供了运行内核和内核模块所需要的最小功能。要使用额外的功能,例如 SSH 连接,需要一个更完整的镜像,例如 core-image-sato-dev-qemu。 diff --git a/info/vm.rst b/info/vm.rst index d50b400..0f548d9 100644 --- a/info/vm.rst +++ b/info/vm.rst @@ -4,6 +4,10 @@ 推荐配置 ===================== +.. meta:: + :description: 介绍在基于 QEMU 虚拟机上运行 Linux 内核的操作步骤和要求。包括虚拟机所需软件包、启动虚拟机以及连接到虚拟机的具体方法。 + :keywords: Linux, QEMU, 虚拟机, 内核编程, 操作系统实验 + 要搭建一个功能齐全的环境,最简单的方式是遵循 `这个仓库 `__ 中列出的步骤。 ========= diff --git a/labs/arm_kernel_development.rst b/labs/arm_kernel_development.rst index 5c74a62..0b47c25 100644 --- a/labs/arm_kernel_development.rst +++ b/labs/arm_kernel_development.rst @@ -3,7 +3,8 @@ ARM 内核开发 ========================= .. meta:: - :description: 初步了解片上系统(SoC);熟悉使用 ARM 作为支持架构的嵌入式世界;理解什么是板级支持包(BSP);使用 i.MX6UL 平台作为示例,编译和引导 ARM 内核;熟悉使用设备树进行硬件描述 + :description: 本文介绍了 ARM 架构的片上系统(SoC)以及 ARM 内核开发的基础知识。包括使用 i.MX6UL 平台作为示例,编译和引导 ARM 内核的操作步骤,同时也介绍了板级支持软件包(BSP)和交叉编译器的概念。 + :keywords: ARM, 内核开发, SoC, i.MX6UL, Linux 内核, 编译, 交叉编译, BSP 实验目标 ============== diff --git a/labs/block_device_drivers.rst b/labs/block_device_drivers.rst index 54e7b46..47a4079 100644 --- a/labs/block_device_drivers.rst +++ b/labs/block_device_drivers.rst @@ -3,7 +3,8 @@ ==================== .. meta:: - :description: 了解 Linux 中 I/O 子系统的行为,在块设备的结构和函数上进行实际操作,通过解决练习,掌握块设备的 API 使用基础技能 + :description: 介绍 Linux 内核中块设备驱动程序的基本概念和编程接口 + :keywords: Linux, 内核, 块设备, 驱动程序, 注册, 磁盘, gendisk, alloc_disk, add_disk, del_gendisk 实验目标 ============== diff --git a/labs/deferred_work.rst b/labs/deferred_work.rst index 194c590..9edf5b1 100644 --- a/labs/deferred_work.rst +++ b/labs/deferred_work.rst @@ -3,8 +3,8 @@ ============= .. meta:: - :description: 理解延迟工作(即在稍后时间执行的代码),实现使用延迟工作的常见任务,理解延迟工作的同步特性 - :keywords: softirq, tasklet, struct tasklet_struct, 下半部处理程序, jiffies, HZ, timer, struct timer_list, spin_lock_bh, spin_unlock_bh, workqueue, struct work_struct, 内核线程, events/x + :description: 介绍了 Linux 内核中的延迟工作机制,包括软中断(softirq)、任务(tasklet)、定时器(timer)和工作队列等。它解释了这些机制的目的、特性和用法,为读者提供了对内核延迟工作的全面理解。 + :keywords: Linux 内核, 内核编程, softirq, tasklet, timer, workqueue, 延迟工作 实验目标 ============== diff --git a/labs/device_drivers.rst b/labs/device_drivers.rst index ef11ce9..401f831 100644 --- a/labs/device_drivers.rst +++ b/labs/device_drivers.rst @@ -3,8 +3,8 @@ ======================== .. meta:: - :description: 理解字符设备驱动程序背后的概念,理解可以在字符设备上执行的各种操作,使用等待队列进行工作 - :keywords: 内核, 内核编程, Linux, cscope, LXR, gdb, addr2line, dump_stack + :description: 介绍了字符设备驱动程序的概念和实现,包括设备文件、设备驱动程序的分类、主次设备号、以及实现字符设备驱动程序所需的重要数据结构。 + :keywords: 字符设备, 设备驱动程序, 主设备号, 次设备号, cdev, file_operations 实验目标 ===================== diff --git a/labs/device_model.rst b/labs/device_model.rst index d108f5f..0946314 100644 --- a/labs/device_model.rst +++ b/labs/device_model.rst @@ -2,6 +2,10 @@ Linux 设备模型 ================== +.. meta:: + :description: 介绍 Linux 设备模型的概念和相关机制,包括即插即用、sysfs 虚拟文件系统等 + :keywords: Linux, 设备模型, 即插即用, sysfs, 设备, 总线, 驱动程序 + 概述 ======== diff --git a/labs/filesystems_part1.rst b/labs/filesystems_part1.rst index bd64e27..f0589d9 100644 --- a/labs/filesystems_part1.rst +++ b/labs/filesystems_part1.rst @@ -3,7 +3,8 @@ ============================ .. meta:: - :description: 了解 Linux 中虚拟文件系统(VFS)的知识,理解有关“inode”、“dentry”、“文件”、“超级块”和数据块的概念,理解在 VFS 内挂载文件系统的过程了解各种文件系统类型,并理解具有物理支持(在磁盘上)和没有物理支持的文件系统之间的区别 + :description: 介绍 Linux 虚拟文件系统(VFS)的基本概念,包括文件系统模型、挂载过程、常见的文件系统类型以及有关注册和注销文件系统的内容。 + :keywords: Linux, 虚拟文件系统, VFS, inode, dentry, 超级块, 文件系统, 挂载 实验目标 ============== diff --git a/labs/filesystems_part2.rst b/labs/filesystems_part2.rst index ca35f2d..aca28ee 100644 --- a/labs/filesystems_part2.rst +++ b/labs/filesystems_part2.rst @@ -3,7 +3,8 @@ ============================ .. meta:: - :description: 提高对 inode、file 和 dentry 的了解,了解如何在 VFS(虚拟文件系统)中添加对常规文件和目录的支持,了解文件系统的内部实现 + :description: 介绍文件系统驱动程序的实现细节,包括 inode、file 和 dentry 数据结构,以及如何在 VFS 中添加对常规文件和目录的支持,并介绍文件系统的内部实现。 + :keywords: 文件系统, inode, dentry, VFS, 文件系统实现 实验目标 ============== diff --git a/labs/interrupts.rst b/labs/interrupts.rst index afef4e3..d2b1862 100644 --- a/labs/interrupts.rst +++ b/labs/interrupts.rst @@ -3,8 +3,8 @@ I/O 访问和中断 ========================== .. meta:: - :description: 与外围设备进行通信,实现中断处理程序,将中断与进程上下文同步 - :keywords: IRQ, I/O 端口, I/O 地址, 基地址, UART, request_region, release_region, inb, outb + :description: 介绍 Linux 内核中 I/O 访问和中断机制的基本概念和相关 API 的使用 + :keywords: Linux 内核, 中断, I/O 端口, 设备驱动, request_region, release_region, inb, outb 实验目标 ============== diff --git a/labs/kernel_api.rst b/labs/kernel_api.rst index 3d9a18e..1881fe2 100644 --- a/labs/kernel_api.rst +++ b/labs/kernel_api.rst @@ -3,7 +3,8 @@ ======== .. meta:: - :description: 熟悉基本的 Linux 内核 API,描述内存分配机制,描述锁定(locking)机制 + :description: 介绍 Linux 内核 API 的基本概念和函数,包括内存访问、执行上下文、锁定机制等内容。 + :keywords: Linux, 内核, API, 内存分配, 锁定, 可抢占性, 内核编程 实验目标 ======== diff --git a/labs/kernel_modules.rst b/labs/kernel_modules.rst index 2b0d169..9560490 100644 --- a/labs/kernel_modules.rst +++ b/labs/kernel_modules.rst @@ -3,7 +3,8 @@ ======== .. meta:: - :description: 创建简单的模块,描述内核模块编译的过程,展示如何在内核中使用模块,简单的内核调试方法 + :description: 这个文档介绍了 Linux 内核模块的基本概念、编译和使用方法。包括创建简单内核模块、内核模块编译过程、如何在内核中使用模块以及一些简单的内核调试方法。 + :keywords: 内核, 内核模块, 内核编程, Linux, 编译, Makefile, Kbuild 实验目标 ======== diff --git a/labs/kernel_profiling.rst b/labs/kernel_profiling.rst index afe10aa..d3a93ad 100644 --- a/labs/kernel_profiling.rst +++ b/labs/kernel_profiling.rst @@ -3,7 +3,8 @@ ================ .. meta:: - :description: 熟悉 Linux 内核分析的基础知识,理解基本的分析工具,学习分析方法和良好实践 + :description: 介绍 Linux 内核分析的基础知识、常用分析工具以及分析方法和良好实践 + :keywords: 内核分析, Linux, perf, ps, htop, lsof, 内核调试 实验目标 ============== diff --git a/labs/memory_mapping.rst b/labs/memory_mapping.rst index 1eff106..a22808b 100644 --- a/labs/memory_mapping.rst +++ b/labs/memory_mapping.rst @@ -3,8 +3,8 @@ ============== .. meta:: - :description: 理解地址空间映射机制,了解与内存管理相关的重要结构 - :keywords: mmap, struct page, struct vm_area_struct, struct vm_struct, remap_pfn_range, SetPageReserved, ClearPageReserved + :description: 介绍 Linux 内核中内存映射机制的基本概念和相关数据结构 + :keywords: 内核编程, Linux, 内存管理, 地址空间, mmap, page, vm_area_struct, remap_pfn_range 实验目标 ============== diff --git a/labs/networking.rst b/labs/networking.rst index bf49277..6d37ad0 100644 --- a/labs/networking.rst +++ b/labs/networking.rst @@ -3,7 +3,8 @@ ============================ .. meta:: - :description: 理解 Linux 内核网络架构,掌握使用数据包(packet)过滤器或防火墙进行 IP 数据包管理,熟悉在 Linux 内核级别使用套接字的方法 + :description: 介绍 Linux 内核网络子系统的架构和编程,包括网络编程在用户空间和内核空间的实现,以及网络数据包的处理机制 + :keywords: Linux, 内核, 网络编程, 套接字, TCP/IP, 数据包, sk_buff, socket 实验目标 ============== diff --git a/lectures/address-space.rst b/lectures/address-space.rst index 22e6537..c8f920d 100644 --- a/lectures/address-space.rst +++ b/lectures/address-space.rst @@ -2,6 +2,10 @@ 地址空间 ================= +.. meta:: + :description: 介绍了 x86 架构下的内存管理单元(MMU)的工作机制,包括分段和分页,以及在 Linux 操作系统中是如何使用分段机制的。 + :keywords: 地址空间, MMU, 分段, 分页, 选择器, 段描述符, Linux, 线程本地存储 + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/arch.rst b/lectures/arch.rst index 2064e4b..89ea815 100644 --- a/lectures/arch.rst +++ b/lectures/arch.rst @@ -2,6 +2,10 @@ 体系结构层 ================== +.. meta:: + :description: 这篇文档介绍了 Linux 内核的体系结构层,包括内核的引导过程、内存管理、MMU 管理、线程管理、时间管理、中断和异常管理、系统调用以及平台驱动程序等内容。 + :keywords: Linux 内核, 体系结构, 引导, 内存管理, MMU, 线程管理, 时间管理, 中断, 异常, 系统调用, 平台驱动程序 + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/debugging.rst b/lectures/debugging.rst index bdfb7d2..86a0195 100644 --- a/lectures/debugging.rst +++ b/lectures/debugging.rst @@ -2,6 +2,10 @@ 调试 ========= +.. meta:: + :description: 介绍了 Linux 内核的调试方法,包括解码 oops 和 panic 错误信息、列表调试、内存调试、锁调试以及性能分析等内容,为内核开发人员提供了实用的调试技巧。 + :keywords: Linux 内核, 调试, oops, panic, 内存调试, 锁调试, 性能分析 + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/fs.rst b/lectures/fs.rst index 9de0c8b..718a51e 100644 --- a/lectures/fs.rst +++ b/lectures/fs.rst @@ -2,6 +2,10 @@ 文件系统管理 ===================== +.. meta:: + :description: 介绍了文件系统的基本概念和管理,包括文件系统的抽象、操作以及 Linux 中的虚拟文件系统(VFS)。 + :keywords: 文件系统, 超级块, 索引节点, 目录项, VFS, Linux 内核 + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/interrupts.rst b/lectures/interrupts.rst index 8c8d067..40e0dbf 100644 --- a/lectures/interrupts.rst +++ b/lectures/interrupts.rst @@ -2,6 +2,10 @@ 中断 ========= +.. meta:: + :description: 介绍 x86 架构中的中断和异常机制,包括同步中断(异常)和异步中断,可屏蔽中断和不可屏蔽中断,以及可编程中断控制器(PIC)的工作原理。 + :keywords: 中断, 异常, PIC, 可屏蔽中断, 不可屏蔽中断, x86 架构 + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/intro.rst b/lectures/intro.rst index c0b5993..95b5ee4 100644 --- a/lectures/intro.rst +++ b/lectures/intro.rst @@ -2,6 +2,10 @@ 介绍 ============ +.. meta:: + :description: 这个文档介绍了操作系统基础知识,包括操作系统的基本概念、架构以及内核设计模式等。 + :keywords: 操作系统, 内核, 用户模式, 内核模式, 单体内核, 微内核 + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/memory-management.rst b/lectures/memory-management.rst index 48dd9fa..74abe63 100644 --- a/lectures/memory-management.rst +++ b/lectures/memory-management.rst @@ -2,6 +2,10 @@ 内存管理 ================= +.. meta:: + :description: 介绍了 Linux 内核中的物理内存管理、虚拟内存管理、页面分配、伙伴算法、SLAB 分配器等内容。 + :keywords: Linux 内核, 内存管理, 物理内存, 虚拟内存, 页面分配, 伙伴算法, SLAB 分配器 + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/networking.rst b/lectures/networking.rst index bc699b0..603f921 100644 --- a/lectures/networking.rst +++ b/lectures/networking.rst @@ -2,6 +2,12 @@ 网络管理 ================== +.. meta:: + :description: 本文介绍了网络管理的相关概念和实现,包括套接字实现、路由实现、网络设备接口以及硬件和软件加速技术等内容。 + :keywords: 网络管理, 套接字实现, 路由实现, 网络设备接口, 硬件和软件加速 + +这个元信息描述了这个文档的内容和关键词,希望对您有帮助。如果还有其他需要补充的地方,请告诉我。 + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/processes.rst b/lectures/processes.rst index c8d2520..ebc31ed 100644 --- a/lectures/processes.rst +++ b/lectures/processes.rst @@ -2,6 +2,10 @@ 进程 ==== +.. meta:: + :description: 介绍操作系统中进程和线程的概念,包括进程资源、进程控制块 task_struct,以及如何使用调试器检查进程信息 + :keywords: 进程, 线程, 调试, task_struct, /proc, pahole, gdb, lx-ps + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/smp.rst b/lectures/smp.rst index c1839f6..c9bb11f 100644 --- a/lectures/smp.rst +++ b/lectures/smp.rst @@ -2,6 +2,10 @@ 对称多处理 ========================== +.. meta:: + :description: 介绍了对称多处理(SMP)在 Linux 内核中的相关概念和同步机制,包括内核并发源、原子操作、自旋锁、缓存抖动、进程和中断上下文同步、互斥锁、内存排序和 RCU 等内容。 + :keywords: Linux内核, 对称多处理, 同步, 原子操作, 自旋锁, 互斥锁, 内存排序, RCU + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/syscalls.rst b/lectures/syscalls.rst index bc239cd..57f6df9 100644 --- a/lectures/syscalls.rst +++ b/lectures/syscalls.rst @@ -2,6 +2,10 @@ 系统调用 ======= +.. meta:: + :description: 介绍了 Linux 系统调用的实现机制,包括系统调用的基本概念、系统调用在内核中的处理流程,以及使用虚拟机和 gdb 工具对系统调用进行调试和分析。 + :keywords: Linux, 系统调用, 内核, 中断, 用户空间, 内核空间, gdb + `查看幻灯片 `_ .. slideconf:: diff --git a/lectures/virt.rst b/lectures/virt.rst index 61cfecb..6f7b20e 100644 --- a/lectures/virt.rst +++ b/lectures/virt.rst @@ -2,6 +2,10 @@ 虚拟化 ============== +.. meta:: + :description: 介绍了虚拟化的基本概念,包括模拟(emulation)、经典虚拟化、软件虚拟化、MMU 虚拟化、影子页表、延迟影子同步、I/O 仿真、部分虚拟化以及 Intel VT-x 等内容,给出了相关的原理和实现细节。这对于理解操作系统中虚拟化技术的基础知识很有帮助。 + :keywords: 虚拟化, 模拟, 经典虚拟化, 软件虚拟化, MMU 虚拟化, 影子页表, 延迟影子同步, I/O 仿真, 部分虚拟化, Intel VT-x + `查看幻灯片 `_ .. slideconf:: diff --git a/so2/assign-collaboration.rst b/so2/assign-collaboration.rst index 6f51cff..a30eb33 100644 --- a/so2/assign-collaboration.rst +++ b/so2/assign-collaboration.rst @@ -2,6 +2,10 @@ 合作 ============= +.. meta:: + :description: 提供了一个团队合作的指南,帮助学生完成操作系统 2 的编程任务。它涵盖了使用版本控制系统、编写提交消息、拆分任务、代码审查等方方面面。 + :keywords: 合作, 版本控制, 提交消息, 任务拆分, 代码审查 + 在开源世界中,合作是至关重要的,我们鼓励你选择一个团队合作伙伴来共同完成选定的任务。 以下是一个简单的指南,帮助你入门: diff --git a/so2/assign0-kernel-api.rst b/so2/assign0-kernel-api.rst index 442730d..7b97ec3 100644 --- a/so2/assign0-kernel-api.rst +++ b/so2/assign0-kernel-api.rst @@ -2,6 +2,10 @@ 作业 0——内核 API ========================= +.. meta:: + :description: 介绍了课程作业 0,要求学生实现一个内核模块来操作内核链表 API。文档包括作业目标、实现要求、测试和提交说明、以及一些编程资源和技巧。 + :keywords: 内核模块, 内核 API, 链表, procfs, 静态分析 + - 截止日期: :command:`周一,2024 年 3 月 25 日,23:59` 作业目标 diff --git a/so2/assign1-kprobe-based-tracer.rst b/so2/assign1-kprobe-based-tracer.rst index 0d1561e..d02b614 100644 --- a/so2/assign1-kprobe-based-tracer.rst +++ b/so2/assign1-kprobe-based-tracer.rst @@ -2,6 +2,10 @@ 作业 1——基于 Kprobe 的跟踪器 ================================== +.. meta:: + :description: 介绍操作系统 2 课程的第一个实验任务,内容包括用 kprobe 机制实现一个内核层面的监视器, 监控内核常见的函数调用情况。 + :keywords: 内核编程, Linux, kprobe, kretprobe, 进程监控, 内存监控, 锁监控, procfs + - 截止日期: :command:`周一,2024 年 4 月 8 日,23:59` 作业目标 diff --git a/so2/assign2-driver-uart.rst b/so2/assign2-driver-uart.rst index aa67dc2..86311dc 100644 --- a/so2/assign2-driver-uart.rst +++ b/so2/assign2-driver-uart.rst @@ -2,6 +2,10 @@ 作业 2——驱动 UART ========================== +.. meta:: + :description: 介绍操作系统 2 课程中的作业 2——驱动 UART 的目标和要求,包括实现细节、测试等内容。 + :keywords: 操作系统, 内核编程, Linux, UART 驱动, 内核模块, 设备驱动程序 + - 截止日期: :command:`2023 年 4 月 30 日,23:00` - 此作业为个人完成 diff --git a/so2/assign3-software-raid.rst b/so2/assign3-software-raid.rst index 6d041c7..f7ae4d2 100644 --- a/so2/assign3-software-raid.rst +++ b/so2/assign3-software-raid.rst @@ -2,6 +2,10 @@ 作业 3——软件 RAID =========================== +.. meta:: + :description: 本文介绍了一个软件 RAID 实现的编程作业,包括作业要求、实现细节和测试说明。它旨在帮助学生深入了解 I/O 子系统、使用 bio 结构、处理块/磁盘设备等相关技能。 + :keywords: 软件 RAID, 内核编程, Linux, bio, 块设备, CRC, 错误恢复 + - 截止日期: :command:`周一,2023 年 5 月 15 日,23:00` - 本作业可以由团队(最多 2 人)完成。只需由其中一人提交作业,并在 README 文件中列出学生的姓名。 diff --git a/so2/assign4-transport-protocol.rst b/so2/assign4-transport-protocol.rst index 93cad6d..032839b 100644 --- a/so2/assign4-transport-protocol.rst +++ b/so2/assign4-transport-protocol.rst @@ -2,6 +2,10 @@ 作业 4——SO2 传输协议 ===================================== +.. meta:: + :description: 这个实验文档介绍了操作系统 2 课程中的第 4 个实验任务,内容包括 I/O 访问和中断机制 + :keywords: SO2, 操作系统 2, I/O, 中断, Linux 内核 + - 截止日期: :command:`星期一,2023 年 5 月 29 日,23:00` - 这个作业可以由团队完成(最多 2 人)。只需其中一人提交作业,学生姓名应列在 README 文件中。 diff --git a/so2/assign7-kvm-vmm.rst b/so2/assign7-kvm-vmm.rst index 41fba18..a790e74 100644 --- a/so2/assign7-kvm-vmm.rst +++ b/so2/assign7-kvm-vmm.rst @@ -2,6 +2,10 @@ 作业 7——使用 KVM 的 SO2 虚拟机管理器 ===================================================== +.. meta:: + :description: 介绍 Linux 操作系统 2(SO2)课程中的作业 7,要求学生使用 KVM API 开发一个简单的虚拟机管理器。包括虚拟机初始化、虚拟 CPU 初始化和虚拟机运行三个部分。 + :keywords: KVM, VMM, 虚拟机, 虚拟 CPU, 实模式, 长模式, Linux, 系统编程 + - 截止日期: :command:`2023 年 5 月 29 日,23:00` - 这个作业可以由团队完成(最多 2 人)。只需由其中一人提交作业,并在 README 文件中列出学生的姓名。 diff --git a/so2/grading.rst b/so2/grading.rst index 9d034dd..1a04389 100644 --- a/so2/grading.rst +++ b/so2/grading.rst @@ -2,6 +2,10 @@ SO2——基本规则和评分 =============================== +.. meta:: + :description: 介绍操作系统 2 课程的基本规则和评分标准,包括实验室、作业提交、作业演示和抄袭处罚等内容 + :keywords: 操作系统 2, 实验室, 作业提交, 作业演示, 抄袭处罚 + 基本规则 =============