操作系统笔记目录

操作系统笔记目录

注:

  1. 本内容是学习该课程做的笔记
  2. 根据自己的理解,进行了大量的更改(课程本身的课程顺序我认为太乱了,可能是便于讲课,但是完全不利于形成架构,因此我对每张的知识点重新进行排版,特别是三四五章,改动非常大,但是对我而言,更能够将所有的知识联系起来,也更好理解和记忆了)
  3. 本笔记用于学习,侵删


第一章 操作系统概述

  • 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.4 操作系统体系结构
    • 1.4.1 操作系统的内核
      • (1) 内核的位置 & 功能
      • (2) 大内核 & 微内核
      • (3) 五种分类
        • ① 分层结构
        • ② 模块化
        • ③ 外核
  • 1.5 操作系统引导
  • 1.6 虚拟机

第二章 进程与线程

  • 2.1 进程与线程
    • 2.1.1 进程的概念、组成和特征
      • (1) 进程的概念
      • (2) 进程的组成
        • ① PCB(进程控制块)
        • ② 程序单、数据段程序是如何运行的
      • (3) 进程的特征
    • 2.1.2 进程的状态与转换、组织方式
      • (1) 进程的状态
        • ① 创建态
        • ② 就绪态
        • ③ 运行态
        • ④ 阻塞态
        • ⑤ 终止态
      • (2) 进程状态的转换
      • (3) 进程的组织
        • ① 链接方式
        • ② 索引方式
    • 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.2 处理器调度
    • 2.2.1 调度的基本概念
    • 2.2.2 调度的三个层次
      • (1) 高级调度(作业调度)
      • (2) 低级调度(进程调度/处理机调度)
      • (3) 中级调度(内存调度)
      • 三种调度的联系 & 对比
    • 2.2.3 补充:进程的挂起态与七状态模型
    • 2.2.4 进程调度的时机、切换与过程
      • (1) 进程调度的时机
      • (2) 进程调度的方式
      • (3) 进程的切换与过程
    • 2.2.5 调度程序和闲逛进程
      • (1) 调度器(调度程序)
        • ① 功能
        • ② 调度时机
        • ③ 调度单位
      • (2) 闲逛进程
    • 2.2.6 调度算法的评价指标
      • (1) CPU利用率
      • (2) 系统吞吐量
      • (3) 周转时间
      • (4) 等待时间
      • (5) 响应时间
    • 2.6.7 调度算法(批处理)
      • (1) 先来先服务FCFS
        • 要点
        • 例题
      • (2) 短作业优先SJF
        • ① 非抢占式
        • ② 抢占式SRTN
        • 细节要点
      • FCFS VS SJF
      • (3) 高响应比优先HRRN
        • 要点例题
      • 比较 & 总结
    • 2.6.8 调度算法(交互式系统)
      • (1) 时间片轮转RR
        • 要点例题
      • (2) 优先级调度算法
        • 要点
        • ① 非抢占式
        • ② 抢占式补充
      • 比较前几种算法
      • (3) 多级反馈队列调度算法
        • 要点
        • 例题
        • 实际案例
      • 比较 & 总结
  • 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.4 死锁
    • 2.4.1 死锁的概念
      • (1) 什么是死锁
      • (2) 死锁、饥饿、死循环
    • 2.4.2 死锁的产生
      • (1) 死锁产生的必要条件
      • (2) 什么时候发生死锁
    • 2.4.3 死锁的处理策略
      • (1) 静态策略:预防死锁
        • ① 破坏互斥条件
        • ② 破坏不剥夺条件
        • ③ 破坏请求和保持条件
        • ④ 破坏循环等待条件
      • (2) 动态策略:避免死锁
        • ① 什么是安全序列
        • ② 安全序列、不安全状态和死锁的联系
        • ③ 银行家算法
      • (3) 死锁的检测和解除
        • ① 死锁的检测
        • ②死锁的解除

第三章 内存管理

  • 3.1 内存的基本知识
    • 3.1.1 内存的定义和作用
      • (1) 内存编址 & 存储单元
      • (2) 常用的数量单位
    • 3.1.2 进程运行的基本原理
      • (1) 指令的工作原理
      • (2) 逻辑地址 & 物理地址
      • (3) 从写程序到程序运行的流程
      • (4) 链接的三种方式
  • 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.6 内存空间的分配与回收(连续分配)
    • 3.6.1 单一连续分配
      • (1) 思路
      • (2) 优缺点
    • 3.6.2 固定分区分配
      • (1) 思路
      • (2) 记录分区结构
      • (3) 优缺点
    • 3.6.3 动态分区分配
      • (1) 思路
      • (2) 空闲分区数据结构
      • (3) 动态分区分配算法
        • ① 首次适应算法
        • ② 最佳适应算法
        • ③ 最坏适应算法
        • ④ 临近适应算法比较
      • (4) 分配回收方法
        • ① 分配
        • ② 回收
      • (5) 内外部碎片 & 拼凑
    • 3.6.4 小结
  • 3.7 内存空间的分配与回收(非连续分配)
    • 3.7.1 基本分页存储管理
      • (1) 分页思想
      • (2) 映射记录——页表
      • (3) 页表项的字节数
    • 3.7.2 基本分段存储管理
      • (1) 分段思想
      • (2) 映射记录——段表分页 VS 分段
    • 3.7.3 段页式管理方式
      • (1) 分页、分段的优缺点分析
      • (2) 段页式管理思想
      • (3) 逻辑地址结构
      • (4) 段表、页表
  • 3.8 地址转换 & 内存保护 (非连续分配)
    • 3.8.1 基本分页存储管理地址转换
      • (1) 逻辑地址→物理地址
        • ① 计算方式补充:页面大小为2的整数幂
        • ② 逻辑地址结构
      • (2) 基本地址变换机构
      • 补充:再看页表项的大小
      • (3) 具有块表的地址变换机构
        • ① 什么是快表(TLB)
        • ② 快表地址变换
        • ③ 局部性原理
      • 基本 VS 有快表
      • (4) 二级页表
        • ① 单级页表存在的问题
        • ② 解决页表连续存放问题
        • ③ 解决页表常驻的问题
        • ④ 注意
    • 3.8.2 基本分段存储管理地址转换
    • 分段 VS 分页
    • 3.8.3 段页式存储管理
  • 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 地址翻译(没讲)

第四章 文件(外存)管理

  • 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.4 存取控制模块(文件保护)
    • 4.4.1 口令保护
    • 4.4.2 加密保护
    • 4.4.3 访问控制
      • (1) 操作系统实例
        • ① linux
        • ② Windows
  • 4.5 逻辑文件系统与文件信息缓冲区(文件的逻辑结构)
    • 4.5.1 文件的逻辑结构
      • (1) 文件的分类
      • (2) 无结构文件逻辑结构
      • (3) 有结构文件逻辑结构
        • ① 顺序文件
        • ② 索引文件
        • ③ 索引顺序文件
        • ④ 多级索引顺序文件
    • 4.5.2 文件信息缓冲区
  • 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.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.6 I/O软件层次(设备独立性软件)
    • 5.6.1 设备的分配与回收
      • (1) 设备分配时应考虑的因素
      • (2) 静态分配和动态分配
      • (3) 设备分配管理中的数据结构
    • 5.6.2 缓冲区管理
      • (1) 缓冲区的定义和作用
      • (2) 缓冲区分类
        • ① 单缓冲
        • ② 双缓冲
        • 单、双缓冲通信时的区别
        • ③ 循环缓冲区
        • ④ 缓冲池
    • 5.6.3 物理逻辑映射
  • 5.7 I/O软件层次(各层接口)
    • 5.7.1 输入输出应用程序接口
    • 5.7.2 设备驱动程序接口
  • 5.8 I/O软件层次(设备驱动程序)
  • 5.9 I/O软件层次(中断处理程序)
posted @ 2023-08-17 10:32  Crispy·Candy  阅读(57)  评论(0编辑  收藏  举报