操作系统笔记目录
操作系统笔记目录
注:
- 本内容是学习该课程做的笔记
- 根据自己的理解,进行了大量的更改(课程本身的课程顺序我认为太乱了,可能是便于讲课,但是完全不利于形成架构,因此我对每张的知识点重新进行排版,特别是三四五章,改动非常大,但是对我而言,更能够将所有的知识联系起来,也更好理解和记忆了)
- 本笔记用于学习,侵删
第一章 操作系统概述
- 1.1 操作系统的基本概念
- 1.1.1 操作系统的概念(定义)
- 1.1.2 操作系统的功能
- (1) 作为系统资源的管理者
- (2) 向上层提供方便易用的服务
- (3) 作为最接近硬件的层次
- 1.1.3 操作系统的特征
- (1) 并发
- (2) 共享
- (3) 虚拟
- (4) 异步
- 1.2 操作系统的发展与分类
- 1.2.1 手工输入阶段(此阶段无操作系统)
- 1.2.2 批处理阶段(操作系统开始出现)
- (1) 单道批处理系统
- (2) 多道批处理系统(操作系统正式诞生)
- 1.2.3 分时操作系统
- 1.2.4 实时操作系统
- 1.2.5 网络操作系统和分布式操作系统
- 1.2.6 个人计算机操作系统复习
- 1.3 操作系统的运行机制
- 1.3.1 处理器运行模式
- (1) 预备知识:程序是如何运行的
- (2) 内核程序 & 应用程序
- 特权指令 & 非特权指令
- (3) 内核态 & 用户态
- (4) 内核态和用户态的切换
- 1.3.2 中断和异常
- (1) 中断的作用
- (2) 中断的类型
- ① 内中断
- ② 外中断
- (3) 中断机制的基本原理
- 1.3.3 系统调用
- (1) 什么是系统调用
- (2) 系统调用 VS 库函数
- (3) 系统调用的必要性
- (4) 系统调用的功能
- (5) 系统调用的过程
- 1.3.1 处理器运行模式
- 1.4 操作系统体系结构
- 1.4.1 操作系统的内核
- (1) 内核的位置 & 功能
- (2) 大内核 & 微内核
- (3) 五种分类
- ① 分层结构
- ② 模块化
- ③ 外核
- 1.4.1 操作系统的内核
- 1.5 操作系统引导
- 1.6 虚拟机
第二章 进程与线程
- 2.1 进程与线程
- 2.1.1 进程的概念、组成和特征
- (1) 进程的概念
- (2) 进程的组成
- ① PCB(进程控制块)
- ② 程序单、数据段程序是如何运行的
- (3) 进程的特征
- 2.1.2 进程的状态与转换、组织方式
- (1) 进程的状态
- ① 创建态
- ② 就绪态
- ③ 运行态
- ④ 阻塞态
- ⑤ 终止态
- (2) 进程状态的转换
- (3) 进程的组织
- ① 链接方式
- ② 索引方式
- (1) 进程的状态
- 2.1.3 进程控制
- (1) 什么是进程控制
- (2) 如何实现进程控制
- ① 状态转换的要求(原子性)
- ② 如何实现原语的原子性
- (3) 进程控制相关的原语
- ① 创建原语
- ② 撤销原语
- ③ 阻塞原语和唤醒原语
- ④ 切换原语
- 总结
- 2.1.4 进程通信(IPC)
- 基本概念
- ① 什么是进程间通信IPC
- ② 为什么进程通信需要操作系统支持
- (1) 共享内存
- (2) 消息传递
- ① 直接通信方式
- ② 间接通信方式
- (3) 管道通信
- ① 管道 & 共享内存的区别
- ② 管道的注意事项
- 基本概念
- 2.1.5 线程的介绍
- (1) 为什么要引入线程
- (2) 线程的定义
- (3) 引入线程 VS 传统进程
- (4) 线程的属性
- 2.1.6 线程的实现方式
- (1) 用户级线程
- (2) 内核级线程
- 2.1.7 多线程模型
- (1) 分类
- (2) 处理器分配的基本单元
- 2.1.8 线程的状态转换、组织控制
- 2.1.1 进程的概念、组成和特征
- 2.2 处理器调度
- 2.2.1 调度的基本概念
- 2.2.2 调度的三个层次
- (1) 高级调度(作业调度)
- (2) 低级调度(进程调度/处理机调度)
- (3) 中级调度(内存调度)
- 三种调度的联系 & 对比
- 2.2.3 补充:进程的挂起态与七状态模型
- 2.2.4 进程调度的时机、切换与过程
- (1) 进程调度的时机
- (2) 进程调度的方式
- (3) 进程的切换与过程
- 2.2.5 调度程序和闲逛进程
- (1) 调度器(调度程序)
- ① 功能
- ② 调度时机
- ③ 调度单位
- (2) 闲逛进程
- (1) 调度器(调度程序)
- 2.2.6 调度算法的评价指标
- (1) CPU利用率
- (2) 系统吞吐量
- (3) 周转时间
- (4) 等待时间
- (5) 响应时间
- 2.6.7 调度算法(批处理)
- (1) 先来先服务FCFS
- 要点
- 例题
- (2) 短作业优先SJF
- ① 非抢占式
- ② 抢占式SRTN
- 细节要点
- FCFS VS SJF
- (3) 高响应比优先HRRN
- 要点例题
- 比较 & 总结
- (1) 先来先服务FCFS
- 2.6.8 调度算法(交互式系统)
- (1) 时间片轮转RR
- 要点例题
- (2) 优先级调度算法
- 要点
- ① 非抢占式
- ② 抢占式补充
- 比较前几种算法
- (3) 多级反馈队列调度算法
- 要点
- 例题
- 实际案例
- 比较 & 总结
- (1) 时间片轮转RR
- 2.3 同步与互斥
- 2.3.1 基本概念
- (1) 进程同步
- (2) 进程互斥
- ① 分类和定义
- ② 组成部分
- ③ 原则
- 2.3.2 进程互斥的软件实现方法
- (1) 单标志法
- (2) 双标志先检查法
- (3) 双标志后检查法
- (4) Peterson算法总结
- 2.3.3 进程互斥的硬件实现方法
- (1) 中断屏蔽方法
- (2) TestAndSet指令
- (3) swap指令
- 2.3.4 互斥锁
- 2.3.5 信号量
- (1) 整型信号量
- (2) 记录型信号量
- 2.3.6 用信号量实现进程同步、互斥、前驱
- (1) 信号量机制实现进程互斥
- (2) 信号量机制实现进程同步
- (3) 信号量机制实现前驱关系
- 2.3.7 经典同步问题
- (1) 生产者消费者问题
- 同步与互斥PV的顺序
- (2) 多生产者、多消费者问题
- 是否需要设置互斥变量
- (3) 吸烟者问题
- (4) 读者、写者问题
- (5) 哲学家进餐问题
- 2.3.8 管程
- (1) 为什么要引入管程
- (2) 管程的定义和基本特征
- (3) 拓展一:管程解解生产者消费者问题小结
- (4) Java中类似于管程的机制
- 2.3.1 基本概念
- 2.4 死锁
- 2.4.1 死锁的概念
- (1) 什么是死锁
- (2) 死锁、饥饿、死循环
- 2.4.2 死锁的产生
- (1) 死锁产生的必要条件
- (2) 什么时候发生死锁
- 2.4.3 死锁的处理策略
- (1) 静态策略:预防死锁
- ① 破坏互斥条件
- ② 破坏不剥夺条件
- ③ 破坏请求和保持条件
- ④ 破坏循环等待条件
- (2) 动态策略:避免死锁
- ① 什么是安全序列
- ② 安全序列、不安全状态和死锁的联系
- ③ 银行家算法
- (3) 死锁的检测和解除
- ① 死锁的检测
- ②死锁的解除
- (1) 静态策略:预防死锁
- 2.4.1 死锁的概念
第三章 内存管理
- 3.1 内存的基本知识
- 3.1.1 内存的定义和作用
- (1) 内存编址 & 存储单元
- (2) 常用的数量单位
- 3.1.2 进程运行的基本原理
- (1) 指令的工作原理
- (2) 逻辑地址 & 物理地址
- (3) 从写程序到程序运行的流程
- (4) 链接的三种方式
- 3.1.1 内存的定义和作用
- 3.2 内存管理的要求
- 3.3 内存保护(连续分配管理方式)
- 3.3.1 设置上下线寄存器
- 3.3.2 重定位+界地址寄存区
- 3.4 地址转换(连续分配管理方式)
- 3.4.1 绝对装入
- 3.4.2 可重定位装入(静态重定位)
- 3.4.3 动态运行时装入(动态重定位)
- 3.5 内存空间的扩充(覆盖&交换)
- 3.5.1 覆盖技术
- (1) 技术思想
- (2) 缺点
- 3.5.2 交换技术
- (1) 技术思想
- (2) 相关问题覆盖 VS 交换
- 3.5.1 覆盖技术
- 3.6 内存空间的分配与回收(连续分配)
- 3.6.1 单一连续分配
- (1) 思路
- (2) 优缺点
- 3.6.2 固定分区分配
- (1) 思路
- (2) 记录分区结构
- (3) 优缺点
- 3.6.3 动态分区分配
- (1) 思路
- (2) 空闲分区数据结构
- (3) 动态分区分配算法
- ① 首次适应算法
- ② 最佳适应算法
- ③ 最坏适应算法
- ④ 临近适应算法比较
- (4) 分配回收方法
- ① 分配
- ② 回收
- (5) 内外部碎片 & 拼凑
- 3.6.4 小结
- 3.6.1 单一连续分配
- 3.7 内存空间的分配与回收(非连续分配)
- 3.7.1 基本分页存储管理
- (1) 分页思想
- (2) 映射记录——页表
- (3) 页表项的字节数
- 3.7.2 基本分段存储管理
- (1) 分段思想
- (2) 映射记录——段表分页 VS 分段
- 3.7.3 段页式管理方式
- (1) 分页、分段的优缺点分析
- (2) 段页式管理思想
- (3) 逻辑地址结构
- (4) 段表、页表
- 3.7.1 基本分页存储管理
- 3.8 地址转换 & 内存保护 (非连续分配)
- 3.8.1 基本分页存储管理地址转换
- (1) 逻辑地址→物理地址
- ① 计算方式补充:页面大小为2的整数幂
- ② 逻辑地址结构
- (2) 基本地址变换机构
- 补充:再看页表项的大小
- (3) 具有块表的地址变换机构
- ① 什么是快表(TLB)
- ② 快表地址变换
- ③ 局部性原理
- 基本 VS 有快表
- (4) 二级页表
- ① 单级页表存在的问题
- ② 解决页表连续存放问题
- ③ 解决页表常驻的问题
- ④ 注意
- (1) 逻辑地址→物理地址
- 3.8.2 基本分段存储管理地址转换
- 分段 VS 分页
- 3.8.3 段页式存储管理
- 3.8.1 基本分页存储管理地址转换
- 3.9 内存空间的扩充(虚拟内存)
- 3.9.1 虚拟内存的基本概念
- (1) 传统存储管理方式的特征、缺点
- (2) 局部性原理
- (3) 虚拟内存的定义和特征
- (4) 虚拟内存技术的实现
- 3.9.2 请求分页管理方式
- (1) 页表结构
- (2) 缺页中断机构
- (3) 地址转换机构
- (4) 页面置换算法
- ① 最佳置换算法OPT
- ② 先进先出置换算法FIFO
- ③ 最近最久未使用置换算法LRU
- ④ 时钟置换算法NRU
- ⑤ 改进型的时钟置换算法比较
- (5) 页面分配策略
- ① 驻留集
- ② 页面分配、置换策略
- ③ 调入页面的时机
- ④ 从何处调入页面
- ⑤ 抖动(颠簸)现象
- ⑥ 工作集
- 3.9.3 内存映射文件
- 传统的文件访问方式
- (1) 内存映射文件访问方式
- (2) 共享文件
- 3.9.4 虚拟存储器性能影响因素(没讲)
- 3.9.5 地址翻译(没讲)
- 3.9.1 虚拟内存的基本概念
第四章 文件(外存)管理
- 4.1 文件介绍
- 4.1.1 文件的属性
- 4.2 用户接口(文件的基本操作)
- 4.2.1 创建文件
- 4.2.2 删除文件
- 4.2.3 打开文件
- 4.2.4 关闭文件
- 4.2.5 读文件
- 4.7.6 写文件
- 4.3 文件目录系统(文件的管理)
- 4.3.1 文件控制块
- (1) 文件目录和FCB
- (2) 对目录的操作
- 4.3.2 目录结构
- (1) 单级目录结构
- (2) 两级目录结构
- (3) 多级目录结构(树形目录结构)
- (4) 无环图目录结构
- 4.3.3 索引节点(对FCB的瘦身)
- 4.3.4 文件共享
- (1) 基于索引节点的共享方式(硬链接)
- (2) 基于符号链的共享方式(软链接)
- 4.3.1 文件控制块
- 4.4 存取控制模块(文件保护)
- 4.4.1 口令保护
- 4.4.2 加密保护
- 4.4.3 访问控制
- (1) 操作系统实例
- ① linux
- ② Windows
- (1) 操作系统实例
- 4.5 逻辑文件系统与文件信息缓冲区(文件的逻辑结构)
- 4.5.1 文件的逻辑结构
- (1) 文件的分类
- (2) 无结构文件逻辑结构
- (3) 有结构文件逻辑结构
- ① 顺序文件
- ② 索引文件
- ③ 索引顺序文件
- ④ 多级索引顺序文件
- 4.5.2 文件信息缓冲区
- 4.5.1 文件的逻辑结构
- 4.6 物理文件系统(文件的物理结构/文件的分配方式)
- 4.6.1 文件块 & 磁盘块
- 4.6.2 文件分配方式
- (1) 连续分配
- (2) 链接分配
- ① 隐式链接
- ② 显示链接
- (3) 索引分配
- ① 索引分配原理
- ② 链接方案索引表
- ③ 多层索引索引表
- ④ 混合索引索引表总结
- (4) 比较逻辑结构VS物理结构
- 4.5.1 逻辑结构(从用户视角看)
- 4.5.2 物理结构(从操作系统视角看)
- 4.7 辅助分配模块(存储空间管理)
- 4.7.1 存储空间的划分与初始化
- 4.7.2 存储空间管理
- (1) 空闲表法
- (2) 空闲链表法
- ① 空闲链表法
- ② 空闲盘块法
- (3) 位示图法
- (4) 成组链接法
- 4.8 设备管理模块(磁盘管理)
- 4.8.1 磁盘的结构
- (1) 磁盘、磁道和扇区
- (2) 盘面、柱面
- (3) 磁盘的地址编码
- 4.8.2 磁盘的操作
- (1) 读写磁盘数据
- (2) 磁盘初始化
- (3) 引导块 & 开机流程
- (4) 坏块的管理
- 4.8.3 磁盘的分类
- (1) 根据磁头可否移动
- (2) 根据盘片可否更换
- 4.8.4 减少磁盘延迟
- (1) 一次磁/盘读写操作需要的时间
- (2) 降低寻道时间—磁盘调度算法
- ① 先来先服务算法FCFS
- ② 最短寻找时间优先SSTF
- ③ 扫描算法SCAN
- ④ LOOK调度算法
- ⑤ 循环扫描算法C-SCAN
- ⑥ C-LOOK调度算法
- (3) 降低延迟时间—扇区编号
- ① 交替编号错位命名
- 4.8.5 固态硬盘
- (1) 机械硬盘 VS 固态硬盘
- (2) 固态硬盘的结构
- (3) 读写性能特性
- (4) 与机械硬盘相比的特点
- (5) 磨损均衡技术
- 4.8.1 磁盘的结构
- 4.9 总结:文件系统的层次结构
- 4.10 文件系统的全局结构(布局)
- 4.10.1 磁盘的结构
- 4.10.2 文件系统在内存中的位置
- 4.11 虚拟文件系统
- 4.11.1 普通的文件系统
- 4.11.2 虚拟文件系统
- 4.12 文件系统挂载
第五章 设备管理
- 5.1 I/O设备介绍
- 5.1.1 I/O设备的概念
- 5.1.2 设备的分类
- (1) 按使用特性分类
- (2) 按传输速率分类
- (3) 按信息交换的单位分
- 5.2 I/O控制方式
- 5.2.1 程序直接控制方式(轮询)
- 5.2.2 中断驱动方式
- 5.2.3 DMA方式
- 5.2.4 通道控制方式
- 5.2.5 比较
- 5.3 I/O设备硬件(I/O控制器)
- 5.3.1 机械部件
- 5.3.2 电子部件(I/O控制器)
- (1) I/O控制器的功能
- (2) I/O控制器的组成
- (3) I/O寄存器的编址
- 5.4 I/O软件层次(概述)
- 5.4.1 软件层次结构
- 5.4.2 用户层软件
- 5.4.3 I/O核心子系统
- 5.5 I/O软件层次(用户层软件)
- 5.5.1 假脱机技术
- (1) 脱机技术的产生
- (2) 假脱机技术(SPOOLing)
- (3) 共享打印机原理分析
- 5.5.1 假脱机技术
- 5.6 I/O软件层次(设备独立性软件)
- 5.6.1 设备的分配与回收
- (1) 设备分配时应考虑的因素
- (2) 静态分配和动态分配
- (3) 设备分配管理中的数据结构
- 5.6.2 缓冲区管理
- (1) 缓冲区的定义和作用
- (2) 缓冲区分类
- ① 单缓冲
- ② 双缓冲
- 单、双缓冲通信时的区别
- ③ 循环缓冲区
- ④ 缓冲池
- 5.6.3 物理逻辑映射
- 5.6.1 设备的分配与回收
- 5.7 I/O软件层次(各层接口)
- 5.7.1 输入输出应用程序接口
- 5.7.2 设备驱动程序接口
- 5.8 I/O软件层次(设备驱动程序)
- 5.9 I/O软件层次(中断处理程序)