《操作系统原理课程设计》Curriculum Design of Operation System Principle教学大纲
制定时间:2025 年 3 月
一、课程基本信息
(一)适用专业:
软件工程,软件工程(3+2),物联网工程,物联网工程(3+2),计算机科学与技术,计算机科学与技术(3+2),智能科学与技术,智能科学与技术(3+2)
(二)课程代码:
3ZN1053A
(三)学分/课内学时:
1学分/16学时
(四)课程类别:
专业教育
(五)课程性质:
(必修)/(实践课)
(六)先修课程:
计算机科学导论,操作系统原理与实践,C语言程序设计及应用,数字逻辑与计算机组成,数据结构与算法,操作系统原理与实现
(七)后续课程:
(软件工程)创新实践环节,毕业设计
二、课程教学目标
《操作系统原理课程设计》是计算机类专业的实践类必修课程,是与《操作系统原理与实现》相配套的实践环节,旨在通过理论与实践相结合的方式,强化学生对操作系统核心模块的开发能力与应用能力。课程以成果导向教育(OBE)理念为指导,围绕进程管理、内存管理、文件系统等操作系统核心原理展开教学,要求学生通过设计与实现小型操作系统功能模块(如进程调度器、内存分配器),掌握操作系统开发的关键技术与工程方法。课程突出软件工程规范,强调模块化设计、版本控制等工程实践能力的培养,并通过团队协作完成综合性项目,提升学生的沟通协调与问题解决能力。课程深度融入思政元素,通过剖析国产操作系统(如OpenEuler)的技术突破与创新路径,培养学生的科技报国意识与民族自豪感;结合 “生产者 - 消费者问题” 等经典案例,引导学生思考资源分配的公平性与社会责任,强化网络安全与法律意识。课程通过项目开发全流程训练,使学生在掌握操作系统原理的同时,形成严谨的工程素养、系统思维与创新能力,为后续专业课程学习奠定坚实基础。
课程目标及能力要求具体如下:
(一)具体目标
目标1:学生能够基于OpenEuler开发环境与Linux 0.11内核源码,设计并实现操作系统核心模块的改进方案 (如调度算法优化、内存管理策略扩展等),并通过实验验证其功能与性能。 (对应毕业要求指标点4.1)
目标2:学生能够综合运用操作系统原理,解决多模块协同的复杂问题,并通过团队协作解决实际工程问题。(对应毕业要求指标点4.2)
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
4.研究:能够基于科学原理并能够基于科学原理对复杂软件工程问题用科学方法对其进行研究,包括建立软件模型,设计实验,分析与解释数据分析与解释数据,并通过信息综合得到合理有效的结论。 |
4.1 能够识别计算机软硬件系统组成并了解工作原理,了解计算机硬件、系统软件、网络等工作原理 |
目标1 |
模块1:实验环境搭建与系统引导 模块2:进程的描述与控制 模块3:内存管理与分配策略 |
实验过程 课程报告 |
4.研究:能够基于科学原理并能够基于科学原理对复杂软件工程问题用科学方法对其进行研究,包括建立软件模型,设计实验,分析与解释数据分析与解释数据,并通过信息综合得到合理有效的结论。 |
4.2 能够理解系统软件的设计思路和基本原理并能够运用相应原理采用科学方法解决具体问题理解操作系统、数据库管理系统等复杂软件系统的设计原理,并采用科学方法进行试验以解决具体复杂软件工程问题,具备初步工程研究能力 |
目标2 |
模块4:进程同步 模块5:文件系统 系统集成 |
实验过程 课程报告 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 课程目标 |
备注 |
1 |
模块1:实验环境搭建与系统引导 |
(1)OpenEuler开发环境配置与Linux 0.11源码编译 (2)实现MBR引导扇区与内核加载 |
学生能够独立搭建交叉编译环境;能够编写引导代码并观察系统启动流程 |
集中4学时 分散4学时 |
讲授 演示 实践 |
目标1 |
|
2 |
模块2:进程的描述与控制 |
(1)Linux 0.11进程创建与切换机制分析 (2)修改调度算法(如实现简单轮转调度) |
学生能从底层角度理解和描述进程的切换,并能够对调度器代码进行修改和验证 |
集中4学时 分散4学时 |
讲授 演示 实践 |
目标1 |
|
3 |
模块3:内存管理与分配策略 |
(1)物理内存管理(页表映射与伙伴系统) (2)简化版动态内存分配器设计 |
学生能够分析get_free_page()实现并扩展内存分配;学生能够实现简单的malloc()/free()原型函数 |
集中4学时 分散4学时 |
讲授 演示 实践 |
目标1 |
|
4 |
模块4:进程同步 |
信号量机制实现与哲学家就餐问题 |
学生能够理解并描述内核级信号量的实现原理,并能使用信号量在linux开发环境下解决哲学家进餐问题 |
集中4学时 分散4学时 |
讲授 演示 实践 |
目标2 |
|
5 |
模块5:文件系统 |
简单的MiniFS文件系统设计(支持创建/读写文件) |
学生能够部分实现或修改超级块、inode与目录结构的关键代码 |
集中4学时 |
讲授 演示 实践 |
目标2 |
|
6 |
系统集成 |
将学生自行开发或改进的模块进行集成 |
学生将具备模块集成及集成调试和测试能力,提交一个基本完整Linux内核。 |
分散4学时 |
实践 |
目标2 |
|
(二)
教学方法
在本课程中,结合OBE理念与工程教育需求,建议教师采用以下分层递进、虚实结合的教学方法体系,确保学生在16学时内掌握核心原理并完成实践目标。
1. 分层递进式任务驱动法
以“模块化实验+综合项目”为主线,建议将复杂内核功能分解为可操作的阶梯任务。在进程调度模块中,可要求学生通过注释Linux 0.11源码中的“schedule()”函数理解原始时间片轮转逻辑(基础层),逐步扩展为支持动态优先级调整的多级反馈队列(进阶层)。最终在所有模块完成后,全部整合至Linux0.11原码中进行联合调试和编译。这种设计符合认知规律,避免学生因代码量过大而丧失兴趣,同时通过“小步快走”的成就感维持学习动力。
2. 问题导向的逆向工程教学法
针对操作系统底层机制抽象性强的特点,采用“缺陷修复”与“功能增强”两类问题驱动模式。在内存管理实验中,可提供一个存在内存泄漏的简化版“malloc()”实现,要求学生通过调试工具定位问题并改进分配算法;在文件系统设计中,建议设置“数据块链表遍历效率低下”的缺陷场景,引导学生通过引入算法优化存储性能。此类方法通过真实问题激发探究欲望。
3. 可视化的融合教学
利用现代工具链增强实验的交互性与趣味性。可在系统引导实验中,通过“qemu+gdb”动态展示MBR加载过程,并要求学生修改引导代码实现彩色字符输出或进度条动画;在进程同步实验中,设计基于信号量机制的“哲学家就餐”模拟程序,通过日志输出与进程状态可视化工具观察死锁现象。
4. 协作式开源社区实践
借鉴GitHub协作模式,建议要求学生将实验代码(如改进的调度算法)提交至课程仓库,通过Pull Request进行代码评审,并遵循真实开源项目规范编写文档。建议引入“调度算法性能竞赛”机制,对学生的调度器实现进行公平性与吞吐量排名,培养学生的团队协作能力,通过竞争机制强化工程实践意识。
四、考核及成绩评定
(一)考核内容及成绩构成
(填写说明:对应课程目标设计考核内容、成绩评定方式、目标分值,以及目标达成度计算方法。课程考核成绩包括实验过程、课程报告三个部分。实验过程可考核学生对课程设计的参与程度,可采用阶段成果提交等方式进行评定,阶段成果要求学生提交每个模块的对应代码和运行结果数据;课程报告则是课程设计实施过程及最终集成成果的总体记录。注意,高支撑课程相应目标的考核分值应高)
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
目标1:学生能够基于OpenEuler开发环境与Linux 0.11内核源码,设计并实现操作系统核心模块的改进方案 (如调度算法优化、内存管理策略扩展等),并通过实验验证其功能与性能 |
实验环境搭建与系统引导;进程的描述与控制;内存管理与分配策略 |
实验过程 (平时) |
20% |
50% |
A1 |
(A1∕50%×20%+B1∕50%×30%)÷50 |
课程报告(期末) |
30% |
50% |
B1 |
目标2:学生能够综合运用操作系统原理,解决多模块协同的复杂问题,并通过团队协作解决实际工程问题。 |
解决进程同步复杂问题的能力 对文件系统的实现能力 各模块的集成能力 |
实验过程 (平时) |
20% |
50% |
A2 |
(A2∕50%×20%+B2∕50%×30%)÷50 |
课程报告(期末) |
30% |
50% |
B2 |
总评成绩(100%)=实验过程(40%)+课程报告(60%) |
100% |
—— |
—— |
|
(二)考核成绩评定
实验:必做实验模块6次,支撑目标1、目标2,共占总评分40%,目标1占20%、目标20占10%。对应目标的评分标准如下:
对应目标 |
目标1:学生能够基于OpenEuler开发环境与Linux 0.11内核源码,设计并实现操作系统核心模块的改进方案 (如调度算法优化、内存管理策略扩展等),并通过实验验证其功能与性能 |
目标2:学生能够综合运用操作系统原理,解决多模块协同的复杂问题,并通过团队协作解决实际工程问题。 |
考查点 |
基础知识应用能力 |
多模块整合与复杂问题解决能力 |
成绩比例 |
50% |
50% |
评分标准 |
100% 至 90% |
能够根据任务书完成课程设计任务。实验态度认真,操作能力强,操作、记录规范,沟通、协作很好。独立完成核心模块代码修改,代码注释完整,符合Linux内核规范。功能完全符合预期,性能指标达标。 |
实验记录全部完成无遗漏,内容丰富、图文并茂,绘图数量足够且正确,实验方案有自己独到的思路与见解;清晰描述多模块交互逻辑;团队分工明确,协作记录完整。系统可完整演示多模块协同。 |
89.9% 至 80% |
能够根据实验指导书完成实验。实验态度认真,操作能力强,操作、记录规范,沟通、协作良好。完成主要功能代码修改,次要功能有轻微缺陷。功能基本实现,次要性能未达标。 |
实验记录比较完整,内容比较丰富、图文并茂,手工绘图数量足够且基本正确,实验方案有自己的思路与见解;设计文档基本完整,协作记录较清晰。系统可演示主要功能,次要模块未集成。 |
79.9 至 70% |
能够根据实验指导书完成实验。实验态度比较认真,操作能力较强,操作、记录规范,沟通、协作正常。实现基础功能,但存在明显性能问题。功能部分实现,存在偶发错误。 |
实验记录比较完整,内容比较丰富,手工绘图数量足够且基本正确;设计文档简略,协作记录不完整。系统仅实现单一模块功能。 |
69.9% 至 60% |
基本能够根据实验指导书完成实验。实验态度不太认真,操作能力一般,操作、记录基本规范,有沟通、协作。仅完成代码框架,核心逻辑未验证。功能可演示但不稳定。 |
实验记录基本完整,内容基本够,手工绘图数量基本够但有少量错误;设计文档缺失关键部分,协作记录模糊。系统功能不完整,存在明显冲突。 |
59.9%至 0 |
动手操作能力差;操作、记录不规范,实验中不能与合作者进行沟通、协作,不能正确使用仪器设备。未完成代码修改或存在严重逻辑错误。功能无法验证或完全错误。 |
实验记录未完成,内容不够,手工绘图数量不够、错误多;无设计文档或完全未协作。系统无法运行。 |
五、参考学习资料
推荐教材1:《计算机操作系统》(慕课版),汤小丹,王红玲,姜华等,人民邮电大学出版社,2021年,第1版,ISBN:97875115561152
参考资料2:《操作系统原理及Linux内核分析》,李芳,刘晓春,李东海,清华大学出版社,2023年,第3版,ISBN:9787302631705
参考资料3:《操作系统原理、实现与实践》,李治军等,高等教育出版社,2018年,第1版,ISBN:9787040492453
参考资料4:《操作系统原理与实训教程》,范辉等,高等教育出版社,2015年,第3版,ISBN:9787040436921
参考资料5:《操作系统课程设计》,朱敏等,机械工业出版社,2021年,第2版,ISBN:9787111695721
参考资料5:《Linux 内核完全注释 20周年版》,赵炯,机械工业出版社,2023,ISBN:9787111740650