《操作系统原理与实现(Operating System Principles and Implementation)》教学大纲
制定时间:2025年 3 月
一、课程基本信息
(一)适用专业:
软件工程,软件工程(3+2),物联网工程,物联网工程(3+2),计算机科学与技术,计算机科学与技术(3+2),智能科学与技术,智能科学与技术(3+2)
(二)课程代码:
3ZN1052A
(三)学分/课内学时:
4学分/64学时
(四)课程类别:
专业教育
(五)课程性质:
(必修、选修)/(理论课)
(六)先修课程:
C语言程序设计及应用,计算机组成原理,数据结构
(七)后续课程:
操作系统原理与实现课程设计,软件工程项目综合实训,毕业设计
二、课程教学目标
操作系统原理与实现(Operating System Principles and Implementation )是计算机类专业的一门专业教育必修课程。学生通过本课程的学习能够获得计算机操作系统的基本概念、基本原理、基本技术和基本方法等方面的系统知识。学生对目前OS组件的重点实现技术进行单元案例剖析,通过实际来加强对理论的理解。课程注重理论与实践相结合,培养学生分析问题、解决问题、实际动手和软件阅读能力。通过融入思政元素,使得学生具有计算机系统开发人员所具备的专业能力、科学思维方法、工程伦理意识、精益求精的研究精神,同时具有振兴系统软件的责任担当。
课程目标及能力要求具体如下:
(一)具体目标
目标1:能够理解计算机操作系统中处理器管理、存储器管理、设备管理及文件管理的实现思想、实现技术及实现过程。能够理解国产操作系统的实现原理与其他操作系统的区别与优势。
(对应毕业要求指标点4.1) 目标2:具备分析各种操作系统的实现方法的优缺点和适用场景,能够应用操作系统中的原理方法解决实际操作系统开发或者其他软件开发中的问题,并为解决国产软件开发中的复杂问题打下基础。能够分析操作系统设计和实现的解决方案,能够通过代码实现或者修改操作系统的原理算法。具有精益求精的创新和研究精神,具有科技报国的家国情怀和使命担当。 (对应毕业要求指标点4.2)
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
4.研究:能够基于科学原理并能够基于科学原理对复杂软件工程问题用科学方法对其进行研究,包括建立软件模型,设计实验,分析与解释数据分析与解释数据,并通过信息综合得到合理有效的结论。 |
4.1 能够识别计算机软硬件系统组成并了解工作原理,了解计算机硬件、系统软件、网络等工作原理 |
目标1 |
操作系统概论,进程管理,调度,存储器管理,文件管理,I/O管理 |
平时作业 实验 试卷考核 |
4.研究:能够基于科学原理并能够基于科学原理对复杂软件工程问题用科学方法对其进行研究,包括建立软件模型,设计实验,分析与解释数据分析与解释数据,并通过信息综合得到合理有效的结论。 |
4.2 能够理解系统软件的设计思路和基本原理并能够运用相应原理采用科学方法解决具体问题理解操作系统、数据库管理系统等复杂软件系统的设计原理,并采用科学方法进行试验以解决具体复杂软件工程问题,具备初步工程研究能力 |
目标2 |
进程管理,调度,存储器管理,文件管理,I/O管理 |
平时作业 实验 试卷考核 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 课程目标 |
备注 |
1 |
操作系统概论 |
主要讲解计算机硬件基础知识,操作系统的重要概念,如中断,系统调用等,简单发展历史,操作系统的启动过程。 |
能够理解计算机硬件基础知识,操作系统的重要概念,如中断,系统调用等,简单发展历史,编译修改实现操作系统的启动过程。 |
10 |
线上自学、 讲授、 实操 |
目标1、目标2 |
|
2 |
内存管理 |
主要讲解基于分页机制的内存管理,连续内存分配算法,非连续内存分配算法,缺页中断服务例程,虚存管理中的页面置换算法和页换入换出机制,按需分页机制和写时复制机制,页粒度的页面置换策略和页换入换出的具体实现。 |
能够理解基于分页机制的内存管理,连续内存分配算法,非连续内存分配算法,缺页中断服务例程,虚存管理中的页面置换算法和页换入换出机制,按需分页机制和写时复制机制,页粒度的页面置换策略和页换入换出的具体实现。 |
12 |
线上自学、 讲授、 实操 |
目标1、目标2 |
|
3 |
进程管理与调度 |
主要讲解进程的概念,进程的状态转换,调度算法,线程的概念,线程的创建与调度算法等。 |
能够理解进程的特征;进程的基本状态及转换;进程的控制;同步机制及经典进程的同步问题;进程通信的类型。 理解:进程的定义,进程管理中的数据结构,。 了解:管程,进程通信的消息传递系统;线程掌握:作业与作业调度;进程调度算法(轮转调度算法,优先级调度算法,多队列调度算法);实时调度及实时调度算法;死锁的避免方法(系统安全状态,银行家算法)。理解:处理机调度的层次和调度算法的目标;理解多道批处理系统;进程调度的任务、机制和方式;最早截止时间优先EDF算法,最低松弛度优先LLF算法 了解:优先级倒置的含义,后果及解决方法 |
14 |
线上自学、 讲授、 实操、讨论、案例 |
目标1 目标2 |
|
4 |
进程通信与进程同步 |
主要讲解进程通信和进程同步的机制方法。 |
能够理解进程通信和进程同步的机制方法。能够动手修改实现进程同步。 |
10 |
线上自学、 讲授、 实操、讨论、案例 |
目标1 目标2 |
|
5 |
文件系统 |
主要讲解文件系统的概念:文件与文件系统、空闲块的管理、位示图、文件的操作与使用。文件类型、文件的逻辑结构、文件的物理结构、文件目 录管理、文件共享、文件保护。 |
能够理解文件系统的概念:文件与文件系统、空闲块的管理、位示图、文件的操作与使用。文件类型、文件的逻辑结构、文件的物理结构、文件目 录管理、文件共享、文件保护。动手修改或者扩展实现一个文件系统。 |
10 |
线上自学、 讲授、 实操、讨论、案例 |
目标1、 目标2 |
|
6 |
I/O系统 |
1)设备管理概述 2)I/O系统结构及控制方式3)中断技术 4)缓冲技术 5)通道技术 6)设备分配与设备处理 7)磁盘管理 8)虚拟设备/SPOOLing系统 |
I/O系统结构;设备分类;设备控制器;设备分配原则; 存储设备的物理结构。:I/O控制方式;缓冲技术;设备独立性;Spooling技术;磁盘的驱动调度算法:先来先服务、最短寻道时间优先、电梯调度、单向扫描等;信息优化分布。 能够修改扩展实现一个驱动程序。 |
8 |
线上自学、 讲授、 实操、讨论、案例 |
目标1、目标2 |
|
7 |
实验一 |
操作系统的启动 |
目的:加强操作系统的启动过程的理解,锻炼操作系统的开发初步能力 要求: 编译运行bootloader 用gdb调试bootloader观察栈信息,分析bootloader 屏幕显示字符串 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
|
实验二 |
中断处理过程 |
目的:加强操作系统的中断处理例程完成设备请求处理的方法的理解 要求: 1.实现初始化中断控制器 2.实现初始化中断门描述符表 3.实现外设的相关中断初始化 4.实现中断处理过程 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
8 |
实验三 |
模式切换 |
目的:加强操作系统的模式切换的理解 要求: 1.实现内核态到用户态的切换 2.实现用户态到内核态的切换 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
9 |
实验四 |
建立分页管理机制 |
目的:加强对分页管理机制的理解 要求: 1.实现物理内存的探测 2.实现分页内存管理 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
10 |
实验五 |
内存分配机制 |
目的:加强对内存分配算法的理解。 要求:实现slab算法。 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
11 |
实验六 |
虚拟内存管理功能 |
目的:加强对虚拟内存管理机制的理解。 要求:实现缺页异常处理、实现页面置换机制 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
12 |
实验七 |
创建并执行内核线程 |
目的:加强对线程的创建与执行过程的理解 要求:1.实现进程控制块 2.创建并执行内核线程 3.实现进程的创建与等待 4.实现系统调用 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
13 |
实验八 |
创建并执行用户线程 |
目的:充分理解用户线程的创建和执行过程 要求:1.实现用户线程的创建 实现线程的状态转变 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
14 |
实验九 |
进程调度 |
目的:加强对进程调度算法的理解与实现能力 要求:要求实现一种进程调度算法并编译运行 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
15 |
实验十 |
进程同步实验 |
目的:加强对进程同步和互斥的理解,学会使用信号量解决资源共享问题 要求:编程使用linux操作系统中的信号量机制模拟解决经典的进程同步问题。 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
16 |
实验十一 |
简单的二级文件系统 |
目标:能进行简单文件管理系统的设计和开发 要求: 1.实现基本的新建、读写、删除、修改等文件操作功能 2.对所开发的简单文件系统进行测试和演示。 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
17 |
实验十二 |
I/O设备驱动程序开发 |
目标:掌握I/O设备驱动程序的开发。 要求: 1.编写简单的设备驱动程序。 2.测试驱动程序的功能。 |
2 |
讲授 示范 实操 |
目标1 目标2 |
|
(二)教学方法
教师在开展教学时采用课堂教学与在线教学相结合的混合式教学模式。
1.课堂教学
课堂教学时,可采用讲授式教学法、案例式教学法、翻转教学等。
(1)讲授式教学法主要应用于基本概念和原理的教学,应注意深入浅出、抓核心知识点,了解学生的学习心理与学习习惯,围绕知识点特点进行教学设计。理论教学与实践相结合,引导学生运用操作系统中的原理及方法分析专业相关工程问题的思维方法和实践能力。
(2)案例式教学法主要应用于操作系统中原理和相关算法的教学,应注意实际系统中案例与操作系统原理方法的联系,应注意案例的选取和再设计,使其便于结合算法原理,使学生能理解原理和应用方法进行实践(如多线程编程等)。
(3)翻转教学法主要应用于重点难点内容。在此过程中让学生们在课前完成相应的线上教学视频观看,课中教师进行讲解,后期学生完成该内容的作业或实践。
2.在线教学
本课程采用线上线下混合式教学模式,除在课堂教学中采用上述教学方法,同时应利用“线上教学平台”在课前、课中、课后对学生进行教学支持。
教师应鼓励学生按照学习基础,充分利用线上教学资源进行基础性或深入性的学习。
教师还应注意在线学习数据的分析与反思,结合学生的实际情况和线上学习效果合理设计课堂教学内容,尽量不加重学生的学习负担。
混合式教学的教学效果除了通过平时作业、随堂测验、课堂互动、期末考试等进行检测外,还可通过线上作业、看视频测验、讨论互动、分组任务、答疑等方式进行检测。
2.实验教学
实验教学是操作系统原理课程中重要的实践环节,目的是培养学生运用操作系统原理及方法解决复杂软件工程问题的能力。课程必做实验12个,各实验按照实验指导书的要求学生独立完成,并提交实验报告。
鼓励学生结合自己的兴趣进行自主实验。
四、考核及成绩评定
(一)考核内容及成绩构成
(填写说明:对应课程目标设计考核内容、成绩评定方式、目标分值,以及目标达成度计算方法。课程考核成绩包括平时考核、期末考核两个部分。平时成绩可采用平时作业、课堂讨论、随堂测验、阶段测验、期中测验、实验、小论文、调研报告、平台训练等方式进行评定;期末成绩可采用上机考试、纸笔考试、答辩面试、大型作业等方式进行评定。注意,高支撑课程相应目标的考核分值应高)
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
目标1:掌握计算机操作系统的基本概念,基本类型,操作系统的管理目标和主要功能,操作系统与用户的接口方式,操作系统的结构设计等方面的基础知识。理解并掌握计算机操作系统中进程及处理器管理,存储器管理,设备管理及文件管理的实现思想,实现技术及实现过程 |
操作系统的特征,进程的描述与控制,进程同步,处理机调度与死锁,存储器管理,设备管理,文件管理 |
平时作业 |
5% |
50% |
A1 |
(A1∕50%×5%+B1∕50%×10%+C1∕50%×30%+D1∕100%×10%)÷55 |
进程的创建与同步,死锁的避免,存储器管理,页面置换算法 |
实验 |
10% |
50% |
B1 |
操作系统的特征,进程的描述与控制,进程同步,处理机调度与死锁,存储器管理,设备管理,文件管理的基本概念,原理,方法 |
期末考试 |
30% |
50% |
C1 |
操作系统的基本概念、原理及算法 |
期中考试 |
10% |
100% |
D1 |
目标2:了解操作系统实现时遇到的各种典型问题,并掌握该问题的解决策略及具体的实现算法,深入理解该策略及算法实现在实用操作系统中的应用及其局限。能够分析操作系统设计和实现的解决方案,通过阅读部分源代码提高代码阅读能力与代码编制与调试能力,撰写实验报告。 |
了解操作系统实现时遇到的各种典型问题 |
课堂讨论、随堂测验等 |
5% |
50% |
A2 |
(A2∕50%×5%+B2∕50%×10%+C2∕50%×30%)÷45 |
掌握该问题的解决策略及具体的实现算法,通过阅读部分源代码提高代码阅读能力与代码编制与调试能力 |
实验 |
10% |
50% |
B2 |
深入理解该策略及算法实现在实用操作系统中的应用及其局限 |
期末考试 |
30% |
50% |
C2 |
总评成绩(100%)=平时作业(10%)+实验(20%)+期中考试(10%)+期末考试(60%) |
100% |
—— |
—— |
|
(二)平时考核成绩评定
平时表现占总评分5%,根据线上学习情况评分。
作业:必做作业1次,支撑目标1,共占总评分5%。
实验:必做实验12次,支撑目标1、目标2,共占总评分20%,目标1占10%、目标2占10%。对应目标的评分标准如下:
对应目标 |
目标1:能够运用编程实现进程的创建与同步,死锁的避免,存储器管理,页面置换算法,顺利完成实验。 |
目标2:能够分析操作系统设计和实现的解决方案,通过阅读部分源代码提高代码阅读能力与代码编制与调试能力,撰写实验报告 |
考查点 |
实验操作 |
实验内容 |
实验报告 |
成绩比例 |
30% |
30% |
40% |
评分标准 |
100% 至 90% |
能够根据实验指导书完成实验。实验态度认真,操作能力强,操作、记录规范,沟通、协作很好。 |
实验记录全部完成无遗漏,内容丰富、图文并茂,绘图数量足够且正确,实验方案有自己独到的思路与见解。 |
有很强的总结实验和撰写报告的能力,实验报告内容完整、正确,有很好的分析与见解。文本表述清晰,书写工整,格式规范。 |
89.9% 至 80% |
能够根据实验指导书完成实验。实验态度认真,操作能力强,操作、记录规范,沟通、协作良好。 |
实验记录比较完整,内容比较丰富、图文并茂,手工绘图数量足够且基本正确,实验方案有自己的思路与见解。 |
有较强的总结实验和撰写报告的能力,实验报告内容完整、正确,有较好的分析与见解。文本表述较为清晰,书写比较工整,格式规范。 |
79.9 至 70% |
能够根据实验指导书完成实验。实验态度比较认真,操作能力较强,操作、记录规范,沟通、协作正常。 |
实验记录比较完整,内容比较丰富,手工绘图数量足够且基本正确。 |
有良好的总结实验和撰写报告的能力,实验报告内容较完整、正确,有自己的分析与见解。文本表述较为清晰,书写较为工整,格式较为规范。 |
69.9% 至 60% |
基本能够根据实验指导书完成实验。实验态度不太认真,操作能力一般,操作、记录基本规范,有沟通、协作。 |
实验记录基本完整,内容基本够,手工绘图数量基本够但有少量错误。 |
有一定的总结实验和撰写报告的能力,实验报告内容基本完整、正确,没有分析或见解。文本表述基本清晰,书写基本工整,格式基本规范。 |
59.9%至 0 |
动手操作能力差;操作、记录不规范,实验中不能与合作者进行沟通、协作,不能正确使用仪器设备。 |
实验记录未完成,内容不够,手工绘图数量不够、错误多。 |
总结实验和撰写报告的能力差,实验报告内容不完整、错误多。文本表述不清晰,书写潦草、格式不规范。 |
五、期末考试
期末考试(60%):闭卷笔试或者大作业,二选一。 (建议部分能力强的学生选择用全国大学生操作系统竞赛题目为题开展大作业替代闭卷考试,需要根据实验完成情况评判是否具有替代资格)
六、参考学习资料
1.教材类:
推荐教材1:《操作系统原理、实现与实践》,李治军等,高等教育出版社,2018年,第1版,ISBN:9787040492453
推荐教材2:陈波. (2023). 操作系统:原理与实现 . 清华大学出版社.
参考资料1:《操作系统原理及Linux内核分析》,李芳,刘晓春,李东海,清华大学出版社,2023年,第3版,ISBN:9787302631705
参考资料2:《计算机操作系统》(慕课版),汤小丹,王红玲,姜华等,人民邮电大学出版社,2021年,第1版,ISBN:97875115561152
参考资料3:《操作系统原理与实训教程》,范辉等,高等教育出版社,2015年,第3版,ISBN:9787040436921
参考资料4:Operating Systems:Three Easy Pieces,在线外文书籍,https://pages.cs.wisc.edu/~remzi/OSTEP/
2.工具:
(1) 编译工具链
GCC (GNU Compiler Collection):用于编译C代码为机器码。推荐版本:gcc-9 或更高版本。
Binutils:
包含汇编器(as)、链接器(ld)等工具,用于生成可执行文件。推荐版本:binutils-2.34 或更高版本。
(2) 虚拟机或模拟器
QEMU:
用于模拟运行x86架构的虚拟机环境。推荐版本:qemu-5.0 或更高版本。QEMU可以加载uCore内核镜像并运行实验。
(3) 调试工具
GDB (GNU Debugger):
用于调试内核代码。推荐版本:gdb-9.0 或更高版本。结合QEMU使用,可以进行远程调试。
(4) 版本控制工具
Git:
用于获取uCore的源代码仓库。推荐版本:git-2.25 或更高版本。
(5) 文本编辑器/IDE
推荐使用以下工具之一:
VS Code(Visual Studio Code):
配合C/C++插件,支持语法高亮、代码补全等功能。
Vim/Emacs:
轻量级文本编辑器,适合熟悉命令行操作的用户。
CLion:
JetBrains出品的集成开发环境,功能强大但占用资源较多。
(6)操作系统:
推荐Linux:Ubuntu或OpenEuler,Windows上需部署WSL
(7)其他工具:
Make、Bochs、KVM、PDF阅读工具和Office等工具
Ucore提供的工具清单:
https://github.com/chyyuu/ucore_os_docs/blob/master/lab0/lab0_ref_ucore-tools.md
3.在线资源:
(1)代码仓库
https://github.com/chyyuu/simple_os_book
https://gitcode.com/gh_mirrors/uc/ucore_os_lab
https://github.com/chyyuu
(2)文档:https://chyyuu.gitbooks.io/simple_os_book/content/
(3)相关在线视频:
https://space.bilibili.com/3493087097653404?spm_id_from=333.337.search-card.all.click
https://www.bilibili.com/video/av420953381?p=5&spm_id_from=333.788.videopod.episodes
https://www.bilibili.com/video/BV1P44y1Z7Nw/?spm_id_from=333.337.search-card.all.click