操作系统_Chapter3

第3章 进程描述和控制

  • 操作系统的多数需求都涉及进程:
    • 与普通计算机软件作用相同,是由处理器执行的一段程序或一组程序
    • 必须交替执行多个进程,在合理的响应时间范围内使处理器的利用率最大
    • 必须按照特定的策略给进程分配资源,同时避免死锁
    • 为有助于构建应用的进程间通信和用户进程创建提供支持

3.1 什么是进程

3.1.1 背景

  • 操作系统需要达到的目标:
    • 资源对多个应用程序可用
    • 处理器在多个程序间切换,保证所有程序都在执行中
    • 处理器和I/O设备得到充分利用

3.1.2 进程和进程控制块

  • 进程的几个定义:
    • 一个正在执行的程序
    • 一个正在计算机上执行的程序实例
    • 能分配给处理器并由处理器执行的实体
    • 由一组执行的指令、一个当前状态和一组相关的系统资源表征的活动单元
  • 进程=程序+执行,可由如下元素表征:
    • 标识符
    • 状态
    • 优先级
    • 程序计数器(PC)
    • 内存指针
    • 上下文数据
    • I/O状态信息
    • 记账信息(处理器时间总和、使用的时钟数总和等)
  • 进程控制块(process control block,PCB):保存上述列表信息,由操作系统创建和管理

3.2 进程状态

  • 列出为进程执行的指令序列,可描述单个进程的行为,这样的序列称为进程轨迹(trace)
  • 分派器(scheduler):使处理器切换进程

3.2.1 两状态进程模型

  • 进程被分为运行态和非运行态
  • 用排队图描述分派器的行为:当一个处于运行态的进程终止后,我们就要选一个处于非运行态的进程进入运行态

3.2.2 进程的创建和终止

  • 进程的创建:操作系统建立用于管理该进程的数据结构,并在内存中分配地址空间

  • 创建进程的原因:

    事件 说明
    新的批处理作业 磁带中的批处理作业控制流通常会提供给操作系统,当操作系统准备接收新工作时,将读取下一个作业控制命令
    交互登录 终端用户登录到系统
    为提供服务 操作系统创建一个进程,代表用户程序执行一个功能,使用户无需等待
    由现有进程派生 基于模块化的考虑或开发并行性,用户程序可以指示创建多个进程
  • 进程派生(process spawing):操作系统为另一个进程显式请求创建一个进程的动作。(原进程为父进程,被派生的进程为子进程)

  • 进程终止:操作系统发出一个服务请求,以终止发出请求的进程。

  • 导致进程终止的原因:

    1
    2
    3
    正常完成	超过时限	无可用内存	超出范围	保护错误
    算术错误 时间超出 I/O失败 无效指令 特权指令
    数据误用 操作员或操作系统干涉 父进程终止 父进程请求

3.2.3 五状态模型

  • 两状态的问题:存在一些处于非运行态但已就绪等待执行的进程,也存在一些处于阻塞态等待I/O操作结束的进程

  • 因此,若使用单个队列,分派器不能只考虑选择队列中最老的进程,而是扫描列表,查找未被阻塞且在队列中时间最长的进程

  • 办法:将非运行态分成两个状态:就绪态(ready)阻塞态(blocked)

  • 状态 说明
    运行态 进程正在执行
    就绪态 进程已准备好,只要有机会就开始执行
    阻塞/等待态 进程在某些事件发生前不能执行
    新建态 刚刚创建的进程,还未加入到可执行进程组(进程控制块已创建但还未加载到内存中的新进程)
    退出态 从可执行进程组释放出的进程(自身停止或被取消)

3.2.4 被挂起的进程

  • 交换:把内存中某个进程的一部分或全部移到磁盘中,当内存中不存在就绪态的进程时,操作系统就把被阻塞的进程换到磁盘中的挂起队列(suspend queue)

  • 挂起态(suspend):内存中所有进程都处于阻塞态时,操作系统可把其中的一个进程置为挂起态,并把它转移到磁盘,此时内存所释放的空间就可被调入的另一个进程使用

    • 就绪态:进程已在内存中并可以执行
    • 阻塞态:进程已在内存中并等待一个事件
    • 阻塞/挂起态:进程已在外存中并等待一个事件
    • 就绪/挂起态:进程已在外存中,但只要载入内存就可执行
  • 进程挂起的原因:

    事件 说明
    交换 操作系统需要释放足够的内存空间,以调入并执行处于就绪态的进程
    其他OS原因 操作系统可能挂起后台进程或工具程序进程,或挂起可能会导致问题的进程
    交互式用户请求 用户希望挂起一个程序的执行,以便调试或关联资源的使用
    定时 进程可被周期性地执行,并在等待下一个时间间隔时挂起
    父进程请求 父进程可能会希望挂起后代进程的执行,以检查或修改挂起的进程,或协调不同后代进程之间的行为

3.3 进程描述

3.3.1 操作系统的控制结构

  • 操作系统构造并维护四种信息表以掌握每个进程和资源的当前状态:内存、I/O、文件和进程
  • **内存表(memory table)**:用于跟踪内存和外存。包含以下信息:
    • 分配给进程的内存
    • 分配给进程的外存
    • 内存块或虚存块的任何保护属性
    • 管理虚存所需要的任何信息
  • I/O表:管理计算机系统中的I/O设备和通道:
  • 文件表(file table):提供关于文件是否存在、文件在外存中的位置、当前状态和其他属性的信息
  • 进程表(process tables):必须有对内存、I/O、文件的直接或间接引用

3.3.2 进程控制结构

  • 进程映像(process image):程序、数据、栈和属性(PCB)的集合

    元素 说明
    用户数据 可修改的部分,包括程序数据、用户栈区域和可修改的程序
    用户程序 待执行的程序
    每个进程有至少一个后进先出栈,用于保存参数、过程调用地址和系统调用地址
    进程控制块 操作系统控制进程所需的数据
  • 进程控制块信息分为三类:

    • 进程标识信息
    • 进程状态信息
    • 进程控制信息
  • 对所有操作系统中的进程标识符(process identification)来说,每个进程都分配了一个唯一的数字标识符,包括:

    • 该进程的标识符(Process ID)
    • 父进程的标识符
    • 用户标识符(User ID)
  • 处理器状态信息(processor state information)由处理器寄存器的内容组成,通常包括:

    • 用户可见寄存器:用户模式下执行时可访问的寄存器
    • 控制和状态寄存器:程序计数器、程序状态字(Program State Word,PSW)(通常包含条件码、状态信息)
    • 栈指针:指向栈顶
  • 进程控制信息(process control information)是操作系统控制和协调各种活动进程所需要的额外信息

    • 调度和状态信息:进程状态、优先级、调度相关信息、事件
    • 数据结构:进程可以以队列等结构链接到其他进程
    • 进程间通信
    • 进程特权
    • 存储管理
    • 资源所有权和使用情况
  • 进程控制块的作用:操作系统中最重要的数据结构。每个PCB都包含操作系统所需进程的所有信息

3.4 进程控制

3.4.1 执行模式

  • 用户模式(user model):非特权模式

  • 系统/控制/内核模式(kernel model):特权模式

  • 操作系统内核的典型功能:

    功能 具体
    进程管理 ①进程的创建和终止②进程的调度和分派③进程切换④进程同步和进程间通信的支持⑤管理进程控制块
    内存管理 ①为进程分配空间②交换③页和段管理
    I/O管理 ①缓冲器管理②为进程分配I/O通道和设备
    支持功能 ①中断处理②记账③监视

3.4.2 进程创建

  • 创建进程的步骤:
    1. 分配一个唯一的进程标识符
    2. 分配空间(包括进程映像中所有元素)
    3. 初始化PCB
    4. 设置正确的链接(放置就绪或就绪/挂起链表中)
    5. 创建或扩充其他数据结构

3.4.3 进程切换

  • 进程执行的中断机制:

    机制 原因 用途
    中断 来自当前执行指令的外部 对异步外部事件的反应
    陷阱 与当前执行指令相关 处理一个错误或一个异常条件
    系统调用 显式请求 调用操作系统函数
  • 中断:

    • 时钟中断:当前运行进程的执行时间超过最大允许切换时间段(时间片time slice)
      • 进程切换到就绪态,调入另一进程
    • I/O中断:是否发生I/O活动
      • 若I/O活动是一个或多个进程正在等待的事件,操作系统把所有阻塞态转换为就绪态
    • 内存失效:处理器遇到一个引用不在内存中的字的虚存地址,操作系统需要从外存把包含这一引用的内存块调入内存
      • 内存失效的进程进入阻塞态;操作系统切换进程,恢复另一进程的执行。等期望的块调入后,该进程置为就绪态
  • 陷阱(trap):操作系统确定错误或异常条件是否致命

    • 致命时,当前正运行进程置为退出态,并切换进程
  • 系统调用(supervisor call):系统调用时会将用户进程置为阻塞态

  • 中断发生后并不一定进行进程切换,只是保存处理器状态信息,在控制权返回给该程序时恢复这些信息。

  • 进程状态的变化:

    • 模式切换可在不改变运行态进程的状态下发生
    • 进程转换发生时,环境会发生实质性变化:
      1. 保存处理器上下文
      2. 更新当前处于运行态进程的PCB(包括状态转换、退出原因)
      3. 把该进程的PCB移到相应的队列
      4. 选择另一个进程执行
      5. 更新所选进程的PCB
      6. 更新内存管理数据结构
      7. 载入PC和其他寄存器先前的值

操作系统_Chapter3
http://example.com/2022/09/09/操作系统-Chapter3/
作者
hailey
发布于
2022年9月9日
许可协议