速通

操作系统的基本特征包括:

  • 并发: 两个或多个事件在同一时间间隔内发生
  • 共享: 资源共享
  • 虚拟: 让每个进程感觉拥有自己独立的 CPU/内存空间/外设
  • 异步: 操作系统以不可预知的速度执行着

操作系统的功能:

  • 处理机管理
  • 存储管理
  • 文件管理
  • 设备管理

中断和系统调用

  • 中断
    • 硬件中断, 外部设备产生
    • 软件中断, 程序性故障或特殊指令
      • 系统调用时软件中断的一种

绪论

操作系统的功能:

  1. 处理机管理
  2. 存储器管理
  3. 设备管理
  4. 文件管理
  5. 用户接口

操作系统的发展

  1. 串行处理

    无操作系统

  2. 简单批处理系统

    内存保护, 定时器, 中断; 用户模式, 内核模式

  3. 多道批处理系统

    平均周转时间长; 多道性, 调度性, 无序性, 无交互能力

  4. 分时系统

  5. 实时系统

操作系统基本特征

  1. 并发性

    最重要的特征

  2. 共享性

  3. 异步性

  4. 虚拟性

进程和线程

  • 进程是资源分配的基本单位

    进程是程序的一次执行, PCB 是进程存在的唯一标志

  • 线程是 CPU 调度的基本单位, 同一进程下所有线程共享该进程的资源

  • 进程间的通信方式

    • 低级通信方式: PV 操作
    • 高级通信方式:
      1. 共享存储
      2. 消息传递
      3. 管道通信

进程由哪几种状态:

  1. 就绪态: 获得了除了处理机以外的一切资源
  2. 运行态: 进程正在运行, 只有就绪状态的进程才能被调度程序选中
  3. 阻塞态: 等待. 一个进程从运行态变为阻塞态是主动的行为, 从阻塞态变成就绪态是被动的行为

处理机的调度策略

  • 高级调度: 将外存作业调入内存, 排在就绪队列中
  • 中级调度: 将就绪的程序挂起
  • 低级调度: 决定执行哪个就绪进程

调度算法

  1. FCFS: 先到先服务调度算法, 不可剥夺
  2. SJF: 最短作业有限调度算法
  3. 优先级调度算法
  4. 时间片轮转调度算法
  5. 多级反馈队列调度算法

文件系统是如何组织的?

  • 文件控制块 FCB
    • 知道一个文件的 FCB, 就知道文件存放在哪
  • 文件的逻辑组织
    • 无结构文件 (流式文件)
    • 有结构文件 (记录式文件)

死锁的定义: 进程 A 需要进程 B 正在使用的资源, 进程 B 需要进程 A 正在使用的资源.

死锁的条件

  1. 互斥
  2. 不可剥夺
  3. 请求并保持
  4. 循环等待

进程

进程: 具有独立功能的程序在一个数据集合上的一次动态执行过程

  1. 动态性
  2. 并发性
  3. 独立性
  4. 异步性
  5. 结构化

进程是资源申请和系统调度的基本单位

进程的组成

  • 程序
  • 数据
  • PCB(进程控制块)

进程状态图

进程状态图

操作系统的功能

  1. 资源管理

    进程管理, 存储管理, I/O 设备管理

  2. 支撑功能

    中断处理, 时钟管理, 记账功能

进程控制块

进程控制块 PCB

模式切换: 系统模式和用户模式间的相互转换

  • 模式切换的原因: 系统调用或中断
  • 模式切换是否必然导致进程切换? 不一定, 如 I/O 中断不一定伴随进程切换
  • 进程切换一定伴随模式切换

进程的创建

  1. 申请空白 PCB
  2. 为新进程分配资源 (内存, 文件)
  3. 初始化 PCB 数据结构
  4. 将新进程插入就绪队列

何时发生进程切换

  1. 时钟中断
  2. IO 中断
  3. 内存失效
  4. 陷阱
  5. 系统调用

fork

  • 父进程返回子进程的 pid, 子进程返回 0, 失败返回-1
  • 父子进程间的运行顺序不一定

线程

  • 两个基本属性
    1. 拥有资源的基本单位
    2. 调度 / 执行的基本单位
  • 进程是拥有资源和独立运行的基本单位; 线程是系统独立调度和分派的基本单位

调度

  1. 长程调度

    将外存作业调入内存, 新创建的进程排在就绪队列上

  2. 中程调度

    进程挂起, 挂起进程就绪

  3. 短程调度

    决定就绪队列中哪个获得处理器

IO 管理与磁盘调度

虚拟内存技术

讲作业分多次调入内存, 可以使用分页式, 分段式, 段页式存储管理

页表的三种形式

分页式

内存分为若干个物理块, 由一个页表来维护映射关系

  • 优点
    1. 解决了碎片问题
    2. 便于管理
  • 缺点
    1. 页表的开销大
    2. 共享不便, 保护不便

分段式

地址空间被分为若干个段, 每个段的长度不同, 可以动态改变

  • 优点
    1. 分段对程序员可见, 方便组织程序和数据, 便于模块化程序设计
    2. 便于保护和共享
  • 缺点
    • 进程全部装入内存

段页式

作业地址空间先分为几个几个逻辑段, 每个段有自己的段号, 每段分成若干固定大小的页

高级语言的源代码转化为进程的 3 个基本步骤

  1. 编译: 程序被编译为多个目标模块
  2. 链接: 链接程序将编译后的目标模块链接一起形成装入模块
  3. 装入: 装入程序将装入模块装入物理内存

页面置换算法

  1. OPT 最优置换算法:理想情况, 换出未来最长时间不再用的页面
  2. FIFO 先进先出算法
  3. LRU 最近最久未使用算法: 换出历史最长时间不再用的页面
  4. 简单 Clock 算法

内存分配技术

  • 单一连续分配
  • 固定分区分配
  • 动态分区分配
  • 可重定位分区分配

单一连续分配

内存空间分成系统区和用户区, 用户区分配给一个进程

分区管理

将内存微分大小相等或不等的分区, 每个应用进程占用一个分区

固定分区

动态分区

内存分配算法

最先适配算法 (FF)

按分区地址排序, 从头查找, 找到符合要求的第一个分区

循环最先适配法

从上次分配的分区起中查找

最佳适配算法

找能放下的最小分区

最差适配算法

找能放下的最大分区

文件系统