2 进程

type
status
date
slug
summary
tags
category
icon
password

2.1 进程的定义

并发:同时出发,交替执行(区分并行)
先保存执行现场,后切换执行现场
进程的定义
  • 一个正在执行的程序(Program)
  • 一个正在计算机中运行的程序实例(Instance)
  • 能分配给处理器并由处理器执行的一个实体(Entity)
  • 由一个顺序执行的代码段、一个当前状态和一组相关系统资源所刻画的活动单元(Unit)
进程的5个基本特征
  1. 动态性:动态特性表现在它因创建而产生,由调度而执行,因得不到资源而暂停执行,最后因完成或撤销而消亡(进程生命周期)
  1. 并发性 :引入进程的目的就是为了使多个程序并发执行,以提高资源利用率(主要是CPU)
  1. 独立性:进程是一个程序运行的基本单位,也是系统进行资源分配和调度的基本单位
  1. 异步性:进程以各自独立的、不可预知的速度向前推进。
  1. 交互性:进程在运行过程中,可能会与其它进程发生直接或间接的相互作用

2.1 进程的状态

  1. 就绪状态:在某时刻,进程已获得除处理机以外的所有资源,一旦分到了处理机就可以立即执行
  1. 运行状态:进程已经获得必要资源,并占有处理机运行
  1. 阻塞状态:正在执行的进程,由于发生某事件而暂时无法执行下去
进程三状态变迁图
notion image
阻塞态:等待某个资源可用(不包括CPU)或等待I/O完成,即使CPU空闲,该进程也不能运行。
notion image
进程五状态变迁图
notion image
  1. 新建状态:至少建立PCB,但进程相关的其他内容可能未调入主存(例如:Linux的写时复制 Copy on Write 技术)
  1. 退出状态:进程已经终止,但资源等待父进程或系统回收
进程创建的原因:新的批处理作业、交互登录、为提供服务而由操作系统创建、由现有进程派生
进程终止的原因:正常完成、超过时限、无可用内存、超出范围、保护错误、算术错误、时间超出、I/O失败、无效指令、特权指令、数据误用、操作员或操作系统干涉、父进程终止、父进程请求
进程队列:为了管理和调度进程,操作系统将具有相同属性或特征的进程保存到队列数据结构中,通常以链表队列形式实现,元素是PCB
notion image
notion image
进程七状态变迁图
notion image
挂起状态:引入主存↔外存的交换机制
挂起进程的特点:
  • 该进程不能立即执行。
  • 该进程可能在也可能不在等待一个事件。若等待一个事件,那么阻塞条件不依赖挂起条件,阻塞事件的发生不会使进程立即执行。
  • 为阻止进程执行,可以通过代理使其置于挂起状态,代理可以是进程自己,也可以是父进程或操作系统。
  • 除了代理显示地命令系统进行状态转换,否则该进程无法从这一状态转移。
进程挂起的原因:
  • 交换:操作系统需要释放足够的内存空间
  • 其它OS原因:进程有问题或工具进程
  • 交互式用户请求
  • 定时:周期性执行
  • 父进程的请求:编程的需要

2.3 进程的描述

操作系统为单个进程建立“进程映像”:
  • 一段可执行的程序(代码)
  • 程序所需的相关数据(变量、 栈、堆、缓冲区等)
  • 记录程序执行的上下文环境或运行时信息
为了管理进程和资源,操作系统构造并维护其管理和维护的每个实体的信息表:内存表、I/O表、文件表、进程表
进程控制块PCB(Process Control Block)是一个线性的数据结构,用来描述和记录进程的动态变化信息,是进程的灵魂
系统创建一个进程,就是由系统为某个程序设置一个PCB;进程执行完成时,由系统收回其PCB,该进程便消亡了。
PCB是进程存在的唯一标志,它记录了程序执行的上下文环境,通过PCB可以访问到进程的所有信息
notion image
notion image

课堂练习

notion image
C “可能”
notion image
BDDCA
notion image
A
notion image
B
notion image
D
notion image
A

2.4 进程的控制

执行模式

执行模式:特权模式(系统模式、内核模式、控制模式)、非特权模式(用户模式)
在特权模式下,软件将完全控制处理器,及其所有指令、寄存器和内存,保护操作系统或操作系统表(如PCB)不被用户程序干扰
当调用一个操作系统的服务或中断来触发系统例程的执行时,执行模式将被置为内核模式。
当从系统服务返回到用户进程时,执行模式将被置为用户模式

进程创建

进程创建:创建原语,为被创建进程形成一个PCB,并填入相应的初始值
终端用户登录系统、作业调度、系统提供服务、用户程序的应用请求
  1. 为新进程分配一个唯一的进程标识符
  1. 为进程分配空间
  1. 再根据父进程所提供的参数将子进程的PCB初始化
  1. 将此PCB插入就绪队列(或就绪挂起/新建队列)
  1. 创建或扩充其它数据结构

进程切换

进程切换:可在操作系统从当前运行的进程中获得控制权的任何时刻发生(中断、陷阱、系统调用)
  1. 保存处理器上下文
  1. 更新当前处于运行态的进程的进程控制块,修改状态,记录退出运行态的原因,更新记账信息等
  1. 把进程的PCB移动到相应的队列
  1. 选择另一个进程(调度问题)
  1. 更新内存管理数据结构
  1. 恢复选中进程的运行现场

进程撤销

进程撤销/终止:一个进程在完成其任务后,应予以撤销,以便及时释放其所占用的各类资源,可以指定撤销某个进程或某进程及其子孙进程
notion image
  1. 先从PCB集合中找到被撤销进程的PCB
  1. 若被撤销进程正处于运行状态,则应立即停止该进程的执行,设置调度标志,以便进程撤销后将处理机分给其他进程
  1. 对后一种撤销策略,若被撤销进程有子孙进程,还应将该进程的子孙进程予以撤销
  1. 对于被撤销进程所占有的资源,或者归还给父进程,或者归还给系统
  1. 最后撤销它的PCB

进程的阻塞和唤醒

进程的阻塞和唤醒:阻塞原语(执行态→阻塞态)、唤醒原语(阻塞态→就绪态)
  1. 由于该进程正处于执行状态,故应先中断处理机和保存该进程的CPU现场
  1. 然后将该进程插入到等待该事件的队列中
  1. 再从就绪进程队列中选择一个进程投入运行
一个进程由运行状态转变为阻塞状态,是该进程自己调用阻塞原语去完成的(主动)
而进程由阻塞状态到就绪状态,是另一个发现者进程(或中断服务程序)或OS调用唤醒原语实现的(被动)

2.5 操作系统的执行

  1. 无进程内核
  1. 操作系统例程在用户进程内运行
  1. 基于进程的操作系统:操作系统例程作为分离的进程执行

期末真题

2024秋

一、关于进程,回答下列问题。(8分)
1)若进程状态包含创建态、就绪态、阻塞态、运行态、终止态五种状态,列出一个进程可以从运行态切换到哪些状态,并分别给出一种可能的原因。可以画图说明。(2分)
2)什么是进程切换?结合课内实验,给出主要过程。(3分)
3)结合Linux系统实验,说明内核初始化完成后,如何跳到用户模式下运行。(3分)

2020春

一、关于进程,回答下列问题(8分)
1)操作系统进程控制块通常保存哪些信息?进程控制块有什么作用?(3分)
2)简述操作系统在进程切换时所需要做的工作?(3分)
3)模式切换与进程切换的区别(2分)

2014

一.进程状态
1)解释三种进程状态的概念:运行、就绪、阻塞。
2)三种能引发先从运行到阻塞,再从阻塞到就绪的行为。
3)如果让你定义一种状态,你会定义一种什么状态(除上述三种),为什么。
Loading...