操作系统是计算机系统中负责管理各种软硬件资源的核心系统软件,为应用软件运行提供良好的环境。掌握操作系统的基本原理及其核心技术是研究型大学计算机专业本科毕业生的基本要求。 本课程是计算机专业核心课,以主流操作系统为实例,以教学操作系统ucore为实验环境,讲授操作系统的概念、基本原理和实现技术,为学生从事操作系统软件研究和开发,以及充分利用操作系统功能进行应用软件研究和开发打下扎实的基础。
Overview
Syllabus
- 第零讲 在线教学环境准备
- 0.1 Piazza讨论区
- 0.2 在线实验平台
- 0.2在线实验平台
- 0.3在线实验平台(最新)
- 第一讲 操作系统概述
- 1.1 课程概述
- 1.2 教学安排
- 1.3 什么是操作系统
- 1.4 为什么学习操作系统,如何学习操作系统
- 1.5 操作系统实例
- 1.6 操作系统的演变
- 1.7 操作系统结构
- 第二讲 实验零 操作系统实验环境准备
- 2.1 前言和国内外现状
- 2.2 OS实验目标
- 2.3 8个OS实验概述
- 2.4 实验环境搭建
- 2.5 x86-32硬件介绍
- 2.6 ucore部分编程技巧
- 2.7 演示实验操作过程
- 第三讲 启动、中断、异常和系统调用
- 3.1 BIOS
- 3.2 系统启动流程
- 3.3 中断、异常和系统调用比较
- 3.4 系统调用
- 3.5 系统调用示例
- 3.6 ucore+系统调用代码
- 第四讲 实验一 bootloader启动ucore os
- 4.1 启动顺序
- 4.2 C函数调用的实现
- 4.3 GCC内联汇编
- 4.4 x86中断处理过程
- 4.5 练习一
- 4.6 练习二
- 4.7 练习三
- 4.8 练习四 练习五
- 4.9 练习六
- 第五讲 物理内存管理: 连续内存分配
- 5.1 计算机体系结构和内存层次
- 5.2 地址空间和地址生成
- 5.3 连续内存分配
- 5.4 碎片整理
- 5.5 伙伴系统
- 第六讲 物理内存管理: 非连续内存分配
- 6.1 非连续内存分配的需求背景
- 6.2 段式存储管理
- 6.3 页式存储管理
- 6.4 页表概述
- 6.5 快表和多级页表
- 6.6 反置页表
- 6.7 段页式存储管理
- 第七讲 实验二 物理内存管理
- 7.1 了解x86保护模式中的特权级
- 7.2 了解特权级切换过程
- 7.3 了解段/页表
- 7.4 了解UCORE建立段/页表
- 7.5 演示lab2实验环节
- 第八讲 虚拟存储概念
- 8.1 虚拟存储的需求背景
- 8.2 覆盖和交换
- 8.3 局部性原理
- 8.4 虚拟存储概念
- 8.5 虚拟页式存储
- 8.6 缺页异常
- 第九讲 页面置换算法
- 9.1 页面置换算法的概念
- 9.2 最优算法、先进先出算法和最近最久未使用算法
- 9.3 时钟置换算法和最不常用算法
- 9.4 Belady现象和局部置换算法比较
- 9.5 工作集置换算法
- 9.6 缺页率置换算法
- 9.7 抖动和负载控制
- 第十讲 实验三 虚拟内存管理
- 10.1 实验目标:虚存管理
- 10.2 回顾历史和了解当下
- 10.3 处理流程、关键数据结构和功能
- 10.4 页访问异常
- 10.5 页换入换出机制
- 第十一讲 进程和线程
- 11.1 进程的概念
- 11.2 进程控制块
- 11.3 进程状态
- 11.4 三状态进程模型
- 11.5 挂起进程模型
- 11.6 线程的概念
- 11.7 用户线程
- 11.8 内核线程
- 第十二讲 进程控制
- 12.1 进程切换
- 12.2 进程创建
- 12.3 进程加载
- 12.4 进程等待与退出
- 第十三讲 实验四 内核线程管理
- 13.1 总体介绍
- 13.2 关键数据结构
- 13.3 执行流程
- 13.4 实际操作
- 第十四讲 实验五 用户进程管理
- 14.1 总体介绍
- 14.2 进程的内存布局
- 14.3 执行ELF格式的二进制代码-do_execve的实现
- 14.4 执行ELF格式的二进制代码-load_icode的实现
- 14.5 进程复制
- 14.6 内存管理的copy-on-write机制
- 第十五讲 处理机调度
- 15.1 处理机调度概念
- 15.2 调度准则
- 15.3 先来先服务、短进程优先和最高响应比优先调度算法
- 15.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架
- 15.5 实时调度和多处理器调度
- 15.6 优先级反置
- 第十六讲 实验六 调度器
- 16.1 总体介绍和调度过程
- 16.2 调度算法支撑框架
- 16.3 时间片轮转调度算法
- 16.4 Stride调度算法
- 第十七讲 同步互斥
- 17.1 背景
- 17.2 现实生活中的同步问题
- 17.3 临界区和禁用硬件中断同步方法
- 17.4 基于软件的同步方法
- 17.5 高级抽象的同步方法
- 第十八讲 信号量与管程
- 18.1 信号量
- 18.2 信号量使用
- 18.3 管程
- 18.4 哲学家就餐问题
- 18.5 读者-写者问题
- 第十九讲 实验七 同步互斥
- 19.1 总体介绍
- 19.2 底层支撑
- 19.3 信号量设计实现
- 19.4 管程和条件变量设计实现
- 19.5 哲学家就餐问题
- 第二十讲 死锁和进程通信
- 20.1 死锁概念
- 20.2 死锁处理方法
- 20.3 银行家算法
- 20.4 死锁检测
- 20.5 进程通信概念
- 20.6 信号和管道
- 20.7 消息队列和共享内存
- 第二十一讲 文件系统
- 21.1 文件系统和文件
- 21.2 文件描述符
- 21.3 目录、文件别名和文件系统种类
- 21.4 虚拟文件系统
- 21.5 文件缓存和打开文件
- 21.6 文件分配
- 21.7 空闲空间管理和冗余磁盘阵列RAID
- 第二十二讲 实验八 文件系统
- 22.1 总体介绍
- 22.2 ucore 文件系统架构
- 22.3 Simple File System分析
- 22.4 Virtual File System分析
- 22.5 I/O设备接口分析
- 22.6 执行流程分析
- 第二十三讲 I/O子系统
- 23.1 I/O特点
- 23.2 I/O结构
- 23.3 I/O数据传输
- 23.4 磁盘调度
- 23.5 磁盘缓存
- html
- html
- 期末考试
Taught by
Yong Xiang and Yu Chen