课程名称:操作系统原理授课时数:32学时
面向对象:计算机科学与技术专业
预修课程要求:C/C++程序设计语言、数据结构
一、课程介绍
操作系统是一门理论与实践并重的专业核心课程。本课程的主要任务是帮助学生理解操作系统在计算机系统中的作用和地位,掌握、运用操作系统在进行计算机软硬件资源管理时常用的概念、方法、算法、技术等。操作系统原理课程内容包括操作系统概述、进程管理、存储管理、文件系统管理、I/O系统管理,以及现代操作系统相关方向的发展趋势。通过完成操作系统的实验环节,使学生了解操作系统的一般性体系结构,了解相关方向的发展趋势,掌握开发一个操作系统的实用技术。通过本课程的学习培养学生计算思维能力、算法分析及设计能力、大规模软件设计与实现能力,以及计算机软硬件系统的认知、分析、设计与应用能力。
二、教学目标
(一)课程定位及学习目标
操作系统是计算机科学与技术专业的一门理论与实践并重的专业核心课程。一般建议在专业基础课(特别是“计算机组成”)之后修读。其与“计算机体系结构”可以并行修读,是“编译原理”、“信息安全”等专业课程的前置课程,“计算机网络”后半部分也需要用到本课程知识点。如果学生还同时修读“汇编与接口”,则对深入理解本课程内容有更大帮助。
操作系统是计算机最基础的系统软件,与软件、硬件均密切关联,是所有软件中最复杂的。在计算机相关专业知识体系中,操作系统课程具有承上启下的重要作用。它既是对先行课程的总结和提高,提高学生对计算机系统的整体理解,为学生学习后续专业课程打下必要的知识基础,引导学生理解大型系统软件的基本结构、模型和算法,掌握各类系统的集成应用。
本课程是培养学生计算思维能力、算法分析及设计能力、大规模软件设计与实现能力,以及计算机软硬件系统的认知、分析、设计与应用能力的重要课程。
(二)可测量结果
1.了解操作系统发展趋势和前沿技术。
2.掌握操作系统概念、方法、策略、算法等。
3.了解计算机程序是如何运行的。
4.初步学会用操作系统提供的系统调用编写程序。
三、课程考核
1.课程成绩评定:
(1)平时作业:20%
(2)在线学习:5%
(3)期末考试:75%
2.考试形式
闭卷带A4复习专用纸一张,复习纸需随试卷上交。
四、教学安排
1.讲课安排
课程模块
教学单元
知识点
课时数
操作系统概述
课程导读
0.5
操作系统概述
处理器运行模式,特权级,中断,时钟,特权指令,多道程序设计,系统调用,操作系统接口
1
操作系统结构
宏内核结构,微内核结构,虚拟机结构
0.5
进程管理
进程概念
进程,进程状态,进程控制块
0.5
进程操作,进程通信
进程创建,进程通信方式
0.5
线程
线程,用户级线程,内核级线程,多线程模型
1
CPU调度
CPU利用率,CPU密集型,I/O密集型,调度时机,抢占式调度,CPU分派程序,调度准则,FCFS算法,SJF算法,最高响应比优先法,优先级算法,多级队列调度算法,多级反馈队列调度算法
1
示例:Linux的进程调度算法
2
进程同步
临界区问题
进程的并发性,竞争条件,临界区,临界资源;互斥,空闲让进,有限等待
1
临界区互斥软件实现方法
算法1(双进程),算法2(双进程),Peterson算法(双进程)
1
临界区互斥硬件实现方法
硬件同步指令,利用同步指令解决临界区问题,TestAndSet指令,Swap指令。
1
信号量
原语操作,wait()原语,signal()原语,信号量定义,信号量解决临界区问题,信号量应用于同步问题
1
经典同步问题
有限缓冲问题,读者-写者问题,哲学家就餐问题
2
死锁
死锁的概念
死锁定义,死锁示例,死锁模型;产生死锁4个必要条件:互斥、保持和等待、不可抢占、循环等待;资源分配图;死锁处理策略。
1
死锁预防
死锁预防
0.5
死锁避免
安全状态,Dijkstra银行家算法。
1
死锁检测和恢复
死锁检测和算法,死锁恢复
0.5
内存管理
内存管理基本概念
源程序的常规处理流程,地址绑定,逻辑地址,物理地址,MMU,动态加载,动态链接;交换;单一连续分配算法,基地址寄存器,界限寄存器;动态分区管理,动态存储分配算法,外部碎片,内部碎片。
1.5
页式存储管理
页,页帧,页表,地址映射流程,硬件支持,页表实现,TLB,有效访问时间,页式管理的模型指标分析,多层页表,哈希页表,反向页表
2
段式存储管理
段,段表,地址映射流程,硬件支持,段式管理的模型指标分析
0.5
虚拟存储
虚拟存储思想
虚拟内存基本概念,虚拟地址。
0.5
按需调页
实现思想,页表项的有效位,缺页处理流程
0.5
页面置换
请求调页实现思想,页表项的有效位,缺页处理流程,页面置换发生时机,性能分析,COW;页面置换思想,引用串,先进先出置换算法(FIFO),Belady’s Anomaly,最佳置换算法(OPT),最近最少使用置换算法(LRU),时钟置换算法(CLOCK)
2
页帧分配和系统抖动
页帧分配策略;抖动现象,工作集,工作集模型
0.5
示例:Linux存储管理
1
文件系统
文件系统基本概念
文件,文件结构,文件属性,文件操作,文件类型,文件访问方式
0.5
目录、文件共享和保护
目录,目录操作,目录结构;文件共享,文件保护,访问控制
0.5
文件系统实现
层次化文件系统管理,引导块,文件控制块,驻留内存的文件系统结构,虚拟文件系统,目录实现技术
0.5
外存分配方法
连续、链接、索引分配方法,空闲空间管理
1
示例:Linux文件系统
1
大容量存储器
大容量存储系统
磁盘结构,传输时间,寻道时间,延迟时间,主机附属存储,网络附属存储NAS,存储区域网络SAN
0.5
磁盘调度
调度时机,FCFS算法,SSTF算法,SCAN算法,C-SCAN算法,LOOK算法,C-LOOK算法
1
磁盘管理
磁盘格式化,主引导块MBR,RAID
0.5
I/O系统
I/O设备访问方式
端口,总线,I/O地址,轮询,中断,DMA
0.5
I/O设备类型
块设备,字符设备,网络设备
0.5
操作系统内核的I/O子系统
内核I/O子系统的体系结构,假脱机技术SPOOLING
0.5
复习
0.5
2.实验安排
序号
实验项目
名称
实验内容
学时分配
每组人数
1
Linux系统与环境
学习Linux操作系统的操作环境,安装Linux系统,使用Linux shell基本命令。
2
1
2
创建进程和进程通信
使用Linux的系统调用和Pthread线程库编写进程创建和进程通信的程序,进一步理解、掌握操作系统进程、线程概念,利用操作系统提供的进程通信机制实现进程之间的通信,利用信号量解决进程之间的同步与互斥。
4
1
3
重建Linux内核
在Linux操作系统环境下重新编译内核。实验主要内容:查找并且下载一份内核源代码,配置内核,编译内核和模块,配置启动文件。
2
1
4
创建Linux系统调用
在现有的系统中添加一个不用传递参数的系统调用。该系统调用的功能是实现遍历系统中的所有进程。实验主要内容:添加系统调用的名字,利用标准C库进行包装,添加系统调用号,在系统调用表中添加相应表项,sys_mysyscall的实现,编写用户态测试程序。
2
1
5
创建Linux文件系统
添加一个类似于ext2的自定义文件系统myext2。实验主要内容:添加一个和ext2完全相同的文件系统myext2,修改myext2的magic number,修改文件系统操作
4
1
6
创建Linux内核模块
编写一个内核模块helloworld。当用insmod命令加载模块后,会显示Hello World!。此模块与Linux内核模块机制兼容,可以用lsmod命令显示模块信息,可以用rmmod命令删除该模块。
2
1
五、参考教材及相关资料
教材:
[1]操作系统概念(翻译版,第7版).Abraham Silberschatz等著.郑扣根译.高等教育出版社.2010.1。
参考资料:
[1]边干边学:Linux内核指导(第2版)。李善平,季江民,尹康凯。浙江大学出版社。2008年4月。
[2]深入理解计算机系统. Randal E.Bryant等著.龚奕利等译.机械工业出版社. 2011.8。
[3]计算机操作系统教程.张尧学、史美林、张高.清华大学出版社2006.10.
[4]操作系统考研辅导.季江民等.清华大学出版社. 2010.10
六、课程教学网址: