操作系统之进程管理

进程的基本概念

  • 程序在并发环境中的执行过程。
  • 进程是进程实体的运行过程,是系统进行资源分配调度的基本单位。

程序顺序执行的特征

  • 顺序性: 处理机的操作严格按照程序所规定的顺序执行,即每一个操作必须在下一个操作之前结束。
  • 封闭性: 程序在封闭环境下执行,结果不受外界因素影响。
  • 可在现性: 只要环境和初始条件相同,程序重复执行时总得到相同的结果。

程序并发执行的特征

  • 间断性: 共享、合作、制约导致:执行-暂停-执行
  • 失去封闭性: 资源状态由多程序该变
  • 不可再现性: 相同环境和初始条件。

进程的特征

  • 结构特征


    image
    • 进程控制块

      • PCB是OS中最重要的记录型结构。
      • OS用PCB对并发进程进行管理和控制。
      • PCB是进程存在的唯一标志。
      • PCB常驻内存。
      • OS专门开辟PCB区将所有的PCK组织成若干个链表或队列。
    • PCB中的信息

      • 1.进程标识符
        • a.内部标识符:进程唯一的数字编号,给 OS 使用
        • b.外部标识符:由字母、数字组成,给用户使用。
      • 2.处理机状态
        • 处理机中的主要的寄存器
          • 1.通过寄存器 8-32个,暂存信息用。
          • 2.指令计数器 要访问的下一条指令地址。
          • 3.程序状态字PSW条件码、执行方式、中断屏蔽标志。
          • 4.用户栈指针,用户进程拥有的系统栈,存放过程和系统调用参数及调用地址。
      • 3.进程调度信息
        • 进程状态
        • 进程优先级
        • 与调度算法有关信息
        • 事件 如阻塞原因
      • 4.进程控制信息
        • 程序和数据地址
        • 进程同步和通信机制
        • 资源清单: 除CPU之外的所需资源与已经分配资源清单。
        • 连接指针:本进程PCB所在队列的下一个地址。
    • PCB的组织方式

      • a.链接方式: 把统一状态的PCB,用其中的连接字链接成一个队列。如:就绪队列、阻塞队列(根据不同阻塞原因)、空白队列。

        image

        指针就是地址,每个地址后面的数字代表PCB的标号。

      • b.索引方式: 建立就绪索引表、阻塞索引表等。把索引表在内存的首地址放在内存的专用单元中。

        image
      • c.线性方式

  • 动态性

    • 进程最基本的特征是动态性
    • 进程的生命周期:进程由创建而产生,由调度而执行,由撤销而消亡的过程。
  • 并发性: 多个进程同在内存中,且能在一段时间内同时运行。

  • 独立性: 进程是一个能独立运行、独立分配资源、独立接受调度的基本单位。

  • 异步性: 进程按各自独立的、不可预知的速度向前推进。

进程和程序的关系(非常重要)

  • 1.进程是一个动态概念,程序是一个静态概念。

  • 2.进程具有并发特征,程序没有(程序全部是顺序的)。

  • 3.进程是竞争资源的基本单位。

  • 4.一个程序对应多个进程,一个进程为多个程序服务。

进程的三种基本状态

  • 1.就绪状态

    • 进程已经分配了除了处理机以外的所有必要资源,只要再获得处理机就能够执行的状态。
    • 这样的进程可能有多个,通常排成一个队列,称就绪队列
    • 新产生的进程都是就绪状态。
  • 2.执行状态

    • 已经获得CPU,正在运行。
    • 单处理机系统只有一个进程处于执行状态。多处理机系统则有多个处于执行状态。
    • 例如: 在一个拥有5个处理机的计算机系统中,最多有几个进程处于执行状态。 答案是5个。
  • 3.堵塞状态

    • 正在执行的进程由于发生某事件而暂时无法继续执行时,放弃处理机而进入的状态,又称等待状态(堵塞状态)
    • 引起堵塞的事件:请求I/O,申请缓存。
    • 所有进入堵塞状态的进程都是自愿的。

进程的基本状态转换

image

三种状态四种转换

挂起状态

  • 挂起状态是三种基本状态细分出来。

  • 引入原因:

    • 1.终端用户请求
    • 2.父进程请求
    • 3.负荷调节需求
    • 4.操作系统的需
  • 挂起状态的转换

    • 挂起状态 === 静止状态
    • 非挂起状态 === 活动状态
image
  • 有挂起状态的进程状态图
image

进程的创建

  • 原语CREAT() 按下述步骤创建一个新进程:

    • 1.申请空白PCB
    • 2.为新进程分配资源
    • 3.初始化进程控制块
    • 4.将新进程插入就绪队列
  • 什么是原语

原语 是一段机器指令(程序)构成。执行原子性操作(要么执行完毕,要么不执行)。

  • 进程管理中最基本功能是进程控制

  • 进程控制任务: 进程的创建、终止、进程状态的转变等。

  • 进程控制一般由OS内核来实现。

  • 引起创建进程的事件


    image
  • 引起进程终止的事件


    image
  • 进程的终止过程

    • 从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
    • 若处于执行状态,终止该进程的执行,并置调度标志为真,重新调度。
    • 若有子孙进程,将所有子孙进程终止。
    • 将进程全部资源归还其父进程或系统。
    • 将其PCB从所在队列(或链表)中移出
  • 引起阻塞和唤醒的事件

    • 1.请求系统服务
    • 2.启动某种操作
    • 3.新数据尚到
    • 4.无新工作可做
  • 由阻塞原语BLOCK完成


    image
  • 由唤醒原语WAKEUP完成


    image
  • 注意

    • BLOCK和WAKEUP是一队作用相反的原语。
    • 如果在某进程中调用了阻塞原语,则必须在与之相合作的另一进程中或其他相关的进程中,安排唤醒原语,以能唤醒阻塞进程;否则,被阻塞进程将会因不能被唤醒而长久地处于阻塞状态,从而再无机会继续运行。

PCB的初始化

  • 1.初始化标识信息
  • 2.初始化处理机状态信息
  • 3.初始化处理机控制信息

进程的挂起

挂起原语:SUSPEND()

挂起原语的执行过程:

检查被挂起进程的状态,若处于活动`就绪状态`,改为`静止就绪`;若处于`活动阻塞状态`,则改为`静止阻塞`;若`正在执行`,则转向`调度程序`重新调度

有挂起状态的进程状态图

image

进程的激活状态图

image

进程的两种制约关系

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。