(一) 课程定位及学习目标
本课程是计算机科学与技术专业的“专业基础”课程中的专业核心课程,其课程定位如图所示: 图在计算机专业的定位
操作系统是计算机科学与技术专业的一门理论与实践并重的专业核心课程础课程。一般建议在专业基础课(特别是“计算机组成”)之后修读。其与“计算机体系结构”可以并行修读,是“编译原理”、“信息安全”等专业课程的前置课程,“计算机网络”也需要用到本课程知识点。如果学生还同时修读“汇编与接口”,则对深入理解本课程内容有更大帮助。
操作系统是计算机最基础的系统软件,与软件、硬件均密切关联,是所有软件中最复杂的。在计算机相关专业知识体系中,操作系统课程具有承上启下的重要作用。它既是对先行课程的总结和提高,提高学生对计算机系统的整体理解,为学生学习后续专业课程打下必要的知识基础,引导学生理解大型系统软件的基本结构、模型和算法,掌握各类系统的集成应用。
本课程是培养学生计算思维能力、算法分析及设计能力、大规模软件设计与实现能力,以及计算机软硬件系统的认知、分析、设计与应用能力的重要课程。
(二)可测量结果
1) 了解操作系统发展趋势和前沿技术。
2) 掌握操作系统概念、方法、策略、算法等,了解计算机程序是如何运行的。
3) 学会用操作系统提供的系统调用编写系统程序。
4) 掌握设计、开发操作系统的常用技术。
注:以上结果可以通过课程作业、综合性课程设计、以及笔试等环节测量。
三、课程要求
(一)授课方式与要求
授课方式:
a. 教师课堂授课、引导讨论,穿插实例分析、习题课、小测验。部分教师全英文授课。
b. 布置结合Linux内核的实验。
c. 结合网络教学,利用操作系统资源网站进行网上讨论、答疑,习题的布置、解答、提交、批阅,参考资料共享。
d. 期末闭卷考试。
课程要求:熟悉基本知识、培养思维和表达能力及合作精神、提高中外文计算机科学文献的阅读能力。
(二) 考试评分与建议
作业占10% ;平时课堂测验占10% ;实验验收(8次)占15%;实验报告占20%;期末闭卷考试占45%。
四、教学安排
第一次:操作系统结构和运行环境
教学内容:
(1) 课程导读;如何学习操作系统。
(2) 操作系统的定义、目标、功能,操作系统分类和发展历史。
(3) 处理器运行模式、特权级、中断、时钟、特权指令。
(4) 操作系统的各种结构。
(5) 操作系统启动和引导。
(6) 示例:Linux内核介绍及重建。
讲授要点:操作系统定义;解析CPU运行模式、特权指令、多道程序设计等概念;分析中断处理处理过程;操作系统的单(宏)内核结构、微内核结构、虚拟机结构。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第1章:p.3-18,第2章:p.47-62。
边干边学:Linux内核指导(第2版)。李善平,季江民等。浙江大学出版社。2008年4月。第9章:p.1-100,p.143-174。
深入理解计算机系统. Randal E.Bryant等著. 龚奕利等译. 机械工业出版社. 2011.8。第1、4章。
作业:书后习题1.4、1.17、2.12、2.14 。
实验1 Linux系统与环境(选做):学习Linux操作系统的操作环境,安装Linux系统,使用Linux shell基本命令。
实验2 重建Linux内核:在Linux操作系统环境下重新编译内核。实验主要内容:查找并且下载一份内核源代码,配置内核,编译内核和模块,配置启动文件。
第二次:操作系统服务和系统调用机制
教学内容:
(1) 操作系统为用户、进程和其他系统提供的服务。
(2) 操作系统提供的用户接口。
(3) 系统调用概念,系统调用分类。
(4) 实例分析:Linux系统调用实现机制。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第2章:p.34-47。
边干边学:Linux内核指导(第2版)。李善平,季江民等。浙江大学出版社。2008年4月。第10章:p.201-207。
讲授要点:操作系统提供的两大类接口;分析Linux系统调用实现机制。
作业:书后习题2.1、2.3、2.6。
实验3 创建Linux系统调用:在现有的系统中添加一个不用传递参数的系统调用。该系统调用的功能是实现遍历系统中的所有进程。实验主要内容:添加系统调用的名字,利用标准C库进行包装,添加系统调用号,在系统调用表中添加相应表项,sys_mysyscall的实现,编写用户态测试程序。
第三次:进程管理
教学内容:
(1) 进程概念,进程的状态与转换。
(2) 进程控制块,进程如何在内存中呈现。
(3) 实例分析:Linux的PCB。
(4) 进程操作(控制)。
(5) 实例分析:Linux的进程创建fork分析。
讲授要点:进程概念,进程状态和转换,分析Linux的进程控制块结构,Linux的进程创建过程。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第3章:p.71-84。
边干边学:Linux内核指导(第2版)。李善平,季江民等。浙江大学出版社。2008年4月。第11章:p.234-255。
作业:书后习题3.2、3.4,分析Linux内核的do_fork( )函数。
第四次:进程通信和线程管理
教学内容:
(1) 进程通信概念;Windows进程通信机制;POSIX进程通信机制,包括:共享存储系统、消息传递系统、管道通信。
(2) 线程概念;用户级线程和内核级线程;多线程模型;多线程引发的问题。
(3) 习题分析,内容:操作系统概述,进程管理,线程管理。
讲授要点:POSIX各种进程通信机制;线程概念,用户级线程和内核级线程,线程和进程的区别。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第3章:p.84-91,第4章:p.111-134。
边干边学:Linux内核指导(第2版)。李善平,季江民等。浙江大学出版社。2008年4月。第7章、第16章。
深入理解计算机系统. Randal E.Bryant等著. 龚奕利等译. 机械工业出版社. 2011.8。第12章。
作业:书后习题4.1、4.3、4.4、4.7、4.8。
实验4 创建进程和进程通信:使用Linux的系统调用编写进程创建和进程通信的程序,进一步理解、掌握操作系统进程概念,利用操作系统提供的进程通信机制实现进程之间的通信。
第五次:CPU调度
教学内容:
(1) CPU调度的基本概念,包括:CPU密集型进程、I/O密集型进程等概念;调度时机,抢占式调度和非抢占式调度,CPU分派程序。
(2) 调度的基本准则,CPU利用率、吞吐量、周转时间、等待时间、响应时间等概念。
(3) 典型调度算法:先来先服务调度算法,短作业(短任务、短进程、短线程)优先调度算法,优先级调度算法时间片轮转调度算法,高响应比优先调度算法,多级队列调度算法,多级反馈队列调度算法。
(4) 实例分析:Linux的进程调度。
讲授要点:抢占式调度和非抢占式调度;几种调度算法,计算周转时间、平均周转时间、等待时间等,饥饿现象;Linux的进程调度实例分析。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第5章:p.134-147,p.152-158。
深入理解Linux内核。DANINEL P.RBVET等著,陈莉君等译。中国电力出版社。2007年9月。第7章。
作业:书后习题5.4、5.5、5.7、5.10 。
第六次:进程同步(I)
教学内容:
(1) 进程同步与互斥的基本概念,包括:进程的并发性,竞争条件,临界区,临界资源;解决临界区满足的三个条件:互斥、空闲让进、有限等待。
(2) 临界区互斥软件实现方法:算法1(双进程),算法2(双进程),Peterson算法(双进程),Lamport面包房算法(N进程)。
(3) 临界区互斥硬件实现方法:硬件同步指令,利用同步指令解决临界区问题,TestAndSet指令,Swap指令。
讲授要点:进程的并发性概念,使用“有限缓冲区问题”例子来说明多进程并发执行的竞争条件;Peterson算法;利用硬件指令来解决临界区问题。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第6章:p.166-173。
作业:书后习题6.1、6.3、6.3、6.7。
第七次:进程同步(II)
教学内容:
(1) 信号量,wait()原语,signal()原语,信号量解决临界区问题,信号量应用于同步问题。
(2) 经典同步问题:生产者-消费者问题,读者-写者问题,哲学家进餐问题。
讲授要点:信号量定义;wait()操作,signal()操作;生产者-消费者问题,读者-写者问题;哲学家进餐问题。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第6章:p.173-176。
作业:书后习题6.9、6.11。
第八次:进程同步(III)
教学内容:
(1) 管程。
(2) Linux同步机制,Pthread线程库的同步机制。
(3) 期中小结;习题分析,内容:CPU调度、进程同步。
(4) 期中考试(测试)。
讲授重点:Pthread线程库的同步机制。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第6章:p.176-180,p.187-191,第4章:p.115-117。
深入理解计算机系统. Randal E.Bryant等著. 龚奕利等译. 机械工业出版社. 2011.8。第12章。
实验5 进程(线程)同步与互斥:使用Pthread API编写“生产者-消费者问题”程序,进一步理解、掌握操作系统线程概念和同步与互斥。实验主要内容:使用Linux的Pthread线程库编写实现“生产者-消费者问题”程序,利用Pthread API提供的信号量及互斥机制解决线程(进程)之间的同步与互斥问题。
第九次:死锁
教学内容:
(1) 死锁的概念:死锁定义,死锁示例,死锁模型;产生死锁4个必要条件:互斥、保持和等待、不可抢占、循环等待;资源分配图。
(2) 死锁处理策略。
(3) 死锁预防。
(4) 死锁避免:安全状态,Dijkstra银行家算法。
(5) 死锁检测和解除。
讲授要点:死锁定义;产生死锁4个必要条件;安全状态,Dijkstra银行家算法。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第7章:p.209-228。
作业:书后习题7.1、7.2、7.6、7.7、7.11。
第十次:内存管理基础
教学内容:
(1) 内存管理基本概念:源程序的常规处理流程,地址绑定,逻辑地址空间与物理地址空间;内存保护;MMU,动态加载,动态链接,交换,地址管理模型,模型指标。
(2) 交换与覆盖。
(3) 连续分配管理方式:单一连续分配算法,基地址寄存器,界限寄存器;动态分区管理,动态存储分配算法,外部碎片,内部碎片。
(4) 分页管理方式:页,页帧,页表,地址映射流程,硬件支持,页表实现,TLB,有效访问时间,页式管理的模型指标分析,页表结构,多级页表,哈希页表,反向页表。
讲授要点:地址绑定和逻辑地址概念,内存保护方法;基地址寄存器和界限寄存器作用,外部碎片和内部碎片概念,动态分区分配;分页存储管理。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第8章:p.235-260。
深入理解计算机系统. Randal E.Bryant等著. 龚奕利等译. 机械工业出版社. 2011.8。第6、7章。
作业:书后习题8.3、8.5、8.8、8.9 。
第十一次:内存管理和虚拟内存
教学内容:
(1) 分段管理方式:段,段表,地址映射流程,硬件支持,段式管理的模型指标分析,示例:Intel Pentium。
(2) 段页式管理方式。
(3) 虚拟内存基本概念,虚拟地址。
(4) 请求分页管理方式,请求调页实现思想,页表项的有效位,缺页处理流程。
(5) 实例分析:Linux的缺页中断处理。
讲授要点:分段管理方式;虚拟内存基本概念;请求分页管理方式;Linux的缺页中断处理。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第8章:p.260-266,第9章:p.270-280。
深入理解计算机系统. Randal E.Bryant等著. 龚奕利等译. 机械工业出版社. 2011.8。第9章。
作业:书后习题8.12、9.4、9.5、9.10;分析Linux内核缺页处理程序。
第十二次:虚拟内存
教学内容:
(1) 请求分页管理:页面置换发生时机,性能分析,COW,页面置换思想,引用串,先进先出置换算法(FIFO),Belady’s Anomaly,最佳置换算法(OPT),最近最少使用置换算法(LRU),时钟置换算法(CLOCK)。
(2) 页面分配策略。
(3) 抖动:抖动现象,工作集,工作集模型。
(4) 预调页、页大小、TLB范围、程序结构、I/O锁定。
(5) 习题分析,内容:存储管理
讲授要点:请求分页管理的性能分析;各种页面置换算法及缺页计算;工作集模型。
阅读材料:
Operating System Concepts (7th edition) (影印版). Abraham Silberschatz. 高等教育出版社. 2007年。第9章:p.280-311。
李善平,季江民等。边干边学:Linux内核指导(第2版)。浙江大学出版社。2008年4月。第14章:p.391-400。
深入理解计算机系统. Randal E.Bryant等著. 龚奕利等译. 机械工业出版社. 2011.8。第9章。
作业:书后习题9.13、9.14、9.18 。
实验6统计Linux内存缺页次数:通过自建变量并利用/proc文件系统,来统计自系统启动以来,系统的缺页次数。实验主要内容:修改内核且编写一个内核模块程序,统计操作系统自内核加载以后,累计发生的缺页次数,以及总运行时间。
第十三次:文件系统接口
教学内容:
(1) 文件系统基础:文件概念,文件属性,文件操作,文件类型,文件访问方式。
(2) 文件结构:顺序文件,索引文件,索引顺序文件。
(3) 目录:目录操作,文件控制块和索引节点,单级目录结构和两级目录结构,树形目录结构,图形目录结构。
(4) 文件共享:文件共享概念,共享方式,共享语义。
(5) 文件系统安装。
(6) 文件保护:访问类型,访问控制。
讲授要点:文件概念,文件属性;文件控制块和索引节点;文件访问方式;文件结构;树形目录结构;文件保护。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第10章:p.321-350。
作业:书后习题10.1、10.5、10.9 。
第十四次:文件系统实现
教学内容:
文件系统实现:文件系统层次结构,层次化文件系统管理,引导块,文件控制块,驻留内存的文件系统结构。虚拟文件系统。
目录实现技术。
文件分配方法: 连续分配方法,extent based system;链接分配方法,FAT文件系统;索引分配方法,二级索引。
空闲空间管理。
实例分析:Linux的ext2文件系统
讲授要点:文件系统基本概念,虚拟文件系统(以Linux的VFS结构为例);文件系统的逻辑结构和物理结构(文件分配方法);Linux的ext2文件系统。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第11章:p.353-371。
边干边学:Linux内核指导(第2版)。李善平,季江民等。浙江大学出版社。2008年4月。第18章:p.632-648。
作业:书后习题11.1、11.6、11.11;分页Linux内核sys_open()和sys_read()函数。
实验7 添加一个文件系统:添加一个类似于ext2的自定义文件系统myext2。实验主要内容:添加一个和ext2完全相同的文件系统myext2,修改myext2的magic number,修改文件系统操作。
第十五次:大容量存储器结构
教学内容:
(1) 大容量存储器结构:磁盘结构,传输时间,寻道时间,延迟时间,主机附属存储,网络附属存储NAS,存储区域网络SAN。
(2) 磁盘调度:调度时机,FCFS算法,SSTF算法,SCAN算法,C-SCAN算法,LOOK算法,C-LOOK算法。
(3) 磁盘管理:磁盘格式化,主引导块MBR。
(4) 交换空间管理。
(5) RAID结构。
(6) 习题分析,内容:文件系统和磁盘调度。
讲授要点:磁盘结构,磁盘调度算法,RAID结构。
阅读材料:
Operating System Concepts (7th edition) (影印版). Abraham Silberschatz.高等教育出版社.2007年。第12章:p.387-410。
作业:书后习题12.1、12.2、12.3、12.4、12.14 。
第十六次:I/O系统及复习
教学内容:
(1) I/O管理概述:I/O设备概念,I/O设备访问方式 端口,总线,I/O地址,轮询,中断,DMA。
(2) I/O应用接口:I/O设备类型,块设备,字符设备,网络设备,时钟与定时器。
(3) I/O内核子系统:I/O调度概念,高速缓存与缓冲区,设备分配与回收,假脱机技术(SPOOLing),出错处理,请求I/O的处理流程。
(4) 复习,习题分析。
讲授要点:I/O设备分类,设备驱动,操作系统把设备抽象成文件处理进行统一处理,缓冲区机制,假脱机技术。
阅读材料:
Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。第13章:p.425-448。
作业:书后习题13.3、13.7 。
实验8 选做题
(1)在Linux环境下,有一个经典的聊天程序talk。试分析其实现机理,对于talk程序的不足之处进行一些改进。
(2)用内核模块(Kernel Module)方法完成替换某一个系统调用。
(3)编写一个USB块设备驱动程序。
课时安排表:
章节名称(课程内容) 课内时数
操作系统结构和运行环境(第1章) 4
操作系统服务和系统调用机制(第2章),Linux系统调用机制 4
进程管理(第3章),Linux的PCB,Linux的进程创建fork分析 4
进程通信和线程管理(第4章) 4
CPU调度(第5章) 4
进程同步(6.1、6.2、6.3、6.4节) 4
进程同步(6.5、6.6节) 4
进程同步(6.7节),Linux同步机制,Pthread线程库 4
死锁(第7章) 4
内存管理基础(8.1、8.2、8.3、8.4、8.5节) 4
内存管理基础(8.6、8.7节),虚拟内存(9.1、9.2、9.3节),Linux的缺页中断处理 4
虚拟内存(9.4、9.5、9.6、9.7、9.8、9.9节) 4
文件系统接口(第10章) 4
文件系统实现(第11章),Linux的ext2文件系统 4
大容量存储器结构(第12章) 4
I/O系统(第13章) 4
五、参考教材及相关资料
教材:
1. Operating System Concepts (7th edition) (影印版).Abraham Silberschatz.高等教育出版社.2007年。
2. 边干边学:Linux内核指导(第2版)。李善平,季江民等。浙江大学出版社。2008年4月。
3. Operating Systems: Internals and Design Principles (7th Edition) .William Stalling. .Prentice Hall。2011年3月。
4. 深入理解Linux内核。DANINEL P.RBVET等著,陈莉君等译。中国电力出版社。2007年9月。
5. 深入理解计算机系统. Randal E.Bryant等著. 龚奕利等译. 机械工业出版社. 2011.8。
六、课程教学网址:
1.主网站:
2.课程练习:(仅供本校本课程教师和学生使用)