Skip to content

3 讲 进程的描述与控制

937 个字 1 张图片 预计阅读时间 5 分钟 共被读过

1. 进程的定义和描述

程序顺序执行:计算机系统中只有一个程序在运行,该程序独占系统中的所有资源。一个程序执行完成之后另一个程序才能开始执行。 顺序执行是单道批处理系统的执行方式,也用于简单的单片机系统。

程序的并发执行:一定时间内,系统中有两个或两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定的。 引入并发执行的目的是为了提高资源利用率。

并发执行引发的问题:同步,互斥,作业调度,进程调度,内存管理。

进程 (Process) 是具有独立功能的程序在某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位,也称任务 (Task)

进程的组成:程序 + 数据 +PCB

进程控制块 (PCB, Process control block) 是操作系统为了管理进程而设置的一个专门的数据结构,记录进程的外部特征,描述进程的 运动变化过程。PCB 是系统感知进程存在的唯一标志,进程与 PCB 一一对应。

PCB 中的内容:

  1. 进程描述信息:
    1. 进程标识符 (process ID),唯一,通常是一个整数
    2. 进程名,通常基于可执行文件名
    3. 用户标识符 (user ID)
    4. 进程组 (process group)
  2. 进程控制信息:
    1. 当前状态
    2. 优先级 (priority)
    3. 代码执行入口地址
    4. 程序的外存地址
    5. 运行统计信息 ( 执行时间、页面调度 )
    6. 进程间同步和通信
    7. 阻塞原因
  3. 资源占用信息:
    1. 虚拟地址空间的现状
    2. 打开文件列表
  4. CPU 现场信息:
    1. 寄存器值 ( 通用、程序计数器 PC、状态 PSW,地址包括栈指针 )
    2. 指向赋予该进程的段 / 页表的指针

所有 PCB 组织在一起放在内存的固定区域构成 PCB 表,或称为进程表 (process table)PCB 表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度。

PCB 表的组织方式:

  1. 链接结构:同一状态的进程其 PCB 成一链表,多个状态对应多个不同的链表索引结构,如就绪链表、阻塞链表。
  2. 索引结构:同一状态的进程归入一个 index ( index 指向 PCB),多个状态对应多个不同的 index 表,如就绪索引表、阻塞索引表。

2. 进程的状态

进程的 3 种基本状态:运行,就绪,阻塞。

4 种状态转换:

  1. 运行 --> 阻塞:当一进程必须等待如下事件时:
    1. 对一资源的访问尚不能进行
    2. 初始化 I/O 且必须等待结果
    3. 等待某一进程提供输入 (IPC)
  2. 运行 --> 就绪:运行进程用完了时间片,或因为一高优先级进程进入就绪状态,运行进程被中断。
  3. 就绪 --> 运行:调度程序选择该进程运行。
  4. 阻塞 --> 就绪:所等待的事件发生。

ch3_img1

我们认为不存在另外两种情况“就绪 --> 阻塞”不可能发生,某些 OS 可能存在“阻塞 --> 运行”。

3. 进程控制

进程控制由具有特定功能的原语完成。

原语 (primitive):由若干条指令构成的“原子操作 (atomic operation)”过程,作为一个整体而不可分割——要么全都完成,要么全都不做。许多系统调用是原语,但并非系统调用都是原语。

包括:创建、撤销、阻塞、唤醒、挂起、激活。

4. Linux Windows 的进程

略。