• 第三章 进程描述与控制


    toc

    一、进程

    进程的两个基本元素是程序代码和代码相关联的数据集。
    进程可以被表示为以下元素:

    1. 标识符:唯一标识
    2. 状态:运行状态
    3. 优先级: 相对于其他进程的优先级
    4. 程序计数器:指向即将被执行的指令的地址
    5. 内存指针:指向程序代码、进程相关数据、进程共享内存块的指针
    6. 上下文信息:进程执行时处理器寄存器中的数据
    7. I/O状态信息:包括显示的I/O请求列表,分配给进程的I/O设备列表,进程使用的文件列表等
    8. 记账信息:处理器使用的时间总和、使用的时钟总和、记账号等

    这些元素被存储在进程控制块(Processing Control Block,PCB)中,进程控制块由操作系统创建和管理。

    二、进程状态转换

    五状态模型


    进程状态间转换实现的排队规则:

    七状态模型

    • 运行态:进程正在执行。
    • 就绪态:进程在内存中并可以执行。
    • 阻塞态:进程在内存中并等待一个事件发生。
    • 阻塞/挂起态:进程在外存中并等待一个事件发生。
    • 就绪/挂起态:进程在外存中,一旦被载入内存就可以执行。
    • 新键态:新创建的进程,系统还未将此进程加入可执行进程组中。
    • 退出态:进程从可执行组中退出。
    • 进程处于以上状态时,其进程控制块都位于内存中。

    重要的状态间转换:

    • 阻塞——阻塞/挂起态:
      1. 内存中没有就绪进程(可能有运行态或阻塞态进程),至少一个阻塞进程被挂起以释放空间
      2. 运行进程或就绪进程因为性能需要更多空间,阻塞进程被挂起
    • 阻塞/挂起——就绪/挂起:
      等待的事件发生
    • 就绪/挂起——就绪:
      1. 内存中没有就绪进程,系统调入进程继续执行
      2. 就绪/挂起态的进程比就绪态进程优先级都高
    • 就绪——就绪/挂起:
      1. 空间告急的程度达到需要挂起就绪进程
      2. 高优先级阻塞态进程很快会就绪,低优先级就绪态进程可能被挂起
    • 运行-就绪:
      1. 时间片耗尽
      2. 被更高优先级进程抢占
      3. 自愿放弃

    三、进程描述

    操作系统是管理资源的实体,它控制计算机内部事件,为CPU调度和分派进程,为进程分配资源,相应用户程序的基本服务请求。
    图中有进程P1到Pn,P1正在运行,使用着CPU、控制着两个I/O、位于内存中;P2在内存中、控制着I/O,等待P1控制的I/O;Pn是挂起的,不在内存中。

    操作系统的控制结构

    操作系统维护着4种不同类型的表:内存、I/O、文件、进程

    内存表用于跟踪内(实)存和外存(虚拟内存),它必须包含的信息有:

    1. 分配给进程的内存
    2. 分配给进程的外存
    3. 内存块或虚拟内存块的任务保护属性
    4. 管理虚拟内存需要的信息

    I/O表用于管理系统中的I/O设备和通道,任何时刻I/O设备处于可用或已分配给某个进程这两种状态之一。如果是已分配,则记录I/O状态和传送的源以及目标内存单元。
    文件表提供关于文件是否存在、以及在外存中的位置、当前状态和其他属性。
    进程表用于管理和控制进程。

    进程控制结构

    进程映像:程序、数据、栈和进程控制块。

    如果系统要管理进程,则其进程映像必须至少有一部分在内存中,为执行该进程,整个进程映像载入内存中或至少载入虚拟内存中,即在任何时刻,进程映像的一部分可以在内存中,剩余部分可以在外存中。

    进程控制块

    进程控制块中的三类属性:

    1. 进程标识信息,每个进程都有一个唯一标识符,进程表中的项与唯一标识符存在对应关系
    2. 处理器状态信息,处理器寄存器内容,包括用户可见寄存器、控制寄存器、状态寄存器、栈指针、状态字寄存器
    3. 进程控制信息,系统控制和协调各种活动进程所需的额外信息



    进程控制块包含了系统所需的关于进程的所有信息,系统中的每个模块,比如涉及调度、资源分配、中断处理、性能监控和分析的模块,都可能读取和修改它。

    四、进程控制

    执行模式

    程序的执行模式可以分为用户态(非特权模式)和内核态(特权模式)。
    分两种执行模式是为了保护操作系统和重要的操作系统表不受用户程序干扰。
    当用户调用操作系统服务或中断触发系统例程的执行时,执行模式被设为内核态。当系统服务返回到用户进程时,执行模式被设置为用户态。
    执行模式实际是处理器的不同执行级别。

    进程的创建

    进程的创建过程:

    1. 给新进程分配唯一标识符
    2. 给进程(整个映像)分配空间
    3. 初始化进程控制块
    4. 分配到正确的调度队列
    5. 创建或扩充其他数据结构

    进程切换

    可能触发#进程切换#的条件:

    1. 发生系统中断,如时钟中断、I/O中断、缺页中断
    2. 发生陷阱,发生与进程无关的外部事件
    3. 发生系统调用,发生系统调用的进程通常被阻塞
      中断处理过程(发生中断一定引起模式切换,不一定引起进程切换)
    4. 设置PC指向中断处理程序开始处
    5. 从用户态切换为内核态,将被中断程序的上下文(控制块中处理器状态信息部分)保存到进程控制块中
    6. 处理中断,如果是时钟中断,处理器控制权将被分派器获得,并发生进程切换
      进程切换过程
    7. 保存上下文
    8. 更新进程控制块中的状态等信息
    9. 将进程控制块移动到相应队列(就绪队列、阻塞于事件i队列,就绪/挂起队列)
    10. 另一进程被选择执行
    11. 更新所选进程的进程控制块中的状态等信息
    12. 更新内存管理的数据结构
    13. 恢复所选进程最近一次退出运行状态时的上下文




    原创不易,转载请注明出处,谢谢
  • 相关阅读:
    Redis源码解析:28集群(四)手动故障转移、从节点迁移
    Redis源码解析:27集群(三)主从复制、故障转移
    Redis源码解析:26集群(二)键的分配与迁移
    centos 6.5 安装composer
    Centos安装php高版本
    CentOS快速搭建LAMP环境
    封装类似thinkphp连贯操作数据库的Db类(简单版)。
    php封装pdo操作数据的工具类
    php中使用mysqli和pdo扩展,测试mysql数据库的执行效率。
    php中使用mysqli和pdo扩展,测试连接mysql数据库的效率。
  • 原文地址:https://www.cnblogs.com/Keeping-Fit/p/14702137.html
Copyright © 2020-2023  润新知