进程控制块PCB
3.进程调度信息
在PCB中还存放了一些与进程调度和进程对换有关的 信息。
(1)进程状态。指明进程当前的状态,作为进 程调度和对换时的依据。
(2)进程优先级。用于描述进程使用处理机的 优先级别的一个整数,优先级高的进程优先获得 处理机。
(3)进程调度所需要的其他信息。(进程已等 待CPU的时间总和、进程已执行的时间总和)
挂起原语的执行过程:检查被挂起进程的状态;如果处于活动就 绪状态,就将它改为静止就绪;如果处于活动阻塞,则改为静 止阻塞。
进程的激过程
当发生激活事件后,系统利用激活原语Active()将指定进程激活。 激活原语先将进程从外存调入内存,然后检查进程的状态。
静止就绪 活动就绪
静止阻塞 活动阻塞
1.为使进程由活动就绪转变为静止就绪,应利用__ ⑴__原语;为使进程由执行状态变为阻塞状态, 应利用__⑵__原语;为使进程由静止就绪变为活 动就绪,应利用__⑶__原语;从阻塞状态变为就 绪状态应利用__⑷__原语。
三 进程的创建过程(creat)
1 申请空白的PCB
为新进程分配唯一的数字标识符,并从PCB集合中索取一个 空白的PCB 2 为新建立的进程分配资源 为新进程的程序和数据,以及用户栈分配必要的内存空间。 3 初始化程序控制块
初始化标识符信息。将系统中分配的标识符、父进程标识符填入新 PCB中。初始化处理机状态信息。是程序计数器指向程序的入口地址,栈 指针指向栈顶。
系统往往设置一些具有某特定功能的系统进程,每当这种 进程完成任务以后便把自己阻塞起来等待新任务的到来。 (发送进程)
二 进程阻塞过程
当有阻塞事件发生时,进程便调用阻塞原语block把自己阻 塞。 进入block后,应先立即停止执行,把进程控制块中的执 行状态改为阻塞状态,并把它插入阻塞队列。
三 进程唤醒过程
一、引起进程阻塞和唤醒的事件
1 请求系统服务 正在执行的程序请求操作系统服务,但是由于某种原因操
作系统没有立即满足该进程的要求,该进程只能转变为阻塞 状态来等待。
2 启动某操作 当进程启动某种操作后,如果该进程必须在该操作完成之
后才能继续执行,所有必须先使进程阻塞。
3 新数据尚未到达 4 无新工作可做
一 引起进程终止的事件 1 正常结束:计算机系统中,都有一个表示进程已经运行完成
的指示。(批处理,Holt。分时系统中,Logs Off) 2 异常结束
越界错误、保护错、特权指令错、 非法指令错、 运行超时、 等待超时 算术运算错、 I/O故障
3 外界干预 操作员或操作系统干预 父进程请求 父进程终止
执行指针 就绪队列指针 阻塞队列指针 空闲队列指针
PCB1
4
PCB2
3
PCB3
0
PCB4
8
PCB5
PCB6
7
PCB7
9
PCB8 0
PCB9
1
……
1、索引方式:
系统根据所有进程的状态,建立几张 索引表。例如:就绪索引表、阻塞索引表 的国内。并把各索引表在内存的首地址记 录在内存中的一些专用单元中。每个索引 表的表目中,记录具有相同状态的某个PCB 在PCB表中的地址。
3.3.5进程空间
任何一个进程,都有自己的地址空间,把该空间称为 进程空间或虚空间。
进程空间的大小只与处理机的位数有关。程序的执行 都在进程空间内进行。用户程序、进程的各种控制表格都 按一定的结构排列在进程空间里。
在Unix和Linux系统中,进程空间还被划分为用户空间 和系统空间两大部分
在进程空间被划分为两大部分后,用户程序在用户空 间内执行,操作系统内核程序在进程的系统空间内执行。
二 进程终止过程
1 根据被终止进程的标识符,从PCB集合中检索出该进程的 PCB,从中读出该进程的状态
2 若被终止进程处于执行态,应立即终止该进程的执行,并设 置调度标志为真(用于指示该进程被终止时应重新调度), 然后再选择一个进程,分配处理机给它。
3 如果该进程还有子孙进程,还应将它的所有子孙进程进行终 止,以防它们称为不可控的。
⑴-⑷:A. create B.suspend C.active D. block E.wakeup
通用寄存器。又称为用户可视寄存器,可被用户程 序访问,用于暂存信息。
指令寄存器。存放要访问的下一条指令的地址。 程序状态字PSW。其中含有状态信息。(条件码、
执行方式、中断屏蔽标志等) 用户栈指针。每个用户进程有一个或若干个与之相
关的系统栈,用于存放过程和系统调 用参数及调用地址。栈指针指向该栈
的栈顶。
OS内核:通常将一些与硬件紧密相关的模块(中断
处理程序),各种常用设备的驱动程序,以及运行 频率较高的模块(时钟管理、进程调度)都安排在 紧靠硬件的软件层次中,使它们常驻内存,以便提 高OS的运行效率,并对它们加以特殊的保护。我
们把这一部分称为OS内核。
3.4.2 OS内核的功能
一 支撑功能:中断处理、时钟管理、原语操作
当阻塞进程所期待的事件出现时。则调用唤醒原语 wakeup(),将等待事件的进程唤醒。
唤醒原语执行的过程是:首先把被阻塞进程从等待该事件的阻 塞队列中移出,将其PCB中的阻塞状态改为就绪状态,然后把 该进程插入到就绪队列中。
Block 和wakeup是一对作用刚好相反的原语。
入口 保存当前进程的CPU现场
后,就把这个作业装入内存,并分配必要的资源, 创建进程,插入就绪队列。 3 提供服务:运行中的用户向系统提出请求后,系统专门建立一 个进程为用户服务。(打印请求) 由操作系统核心(系统程序模块)创建 4 应用请求:应用进程的需要,由它自己创建一个新进程,使新 进程以并发运行方式完成特定任务。(输入数据并 将处理结果输出到表格上) 由父进程创建
一 进程图
进程图是用来描述进程家族关系的有向树。
A
B
C
D
E
F
G
H
I
J
K
L
M
子进程可以继承父进程的所有资源,当子进程被撤消时,应将从父进程 那里获得的资源归还给父进程。 撤消父进程时也必须同时撤消其所有的子进程。
二 引起创建进程的事件 1 用户登录:在分时系统中,用户在终端键入登录命令后,若
是合法用户,系统建立一个进程,并插入就绪队列。 2 作业调度:批处理系统中,作业调度程序调度到某个作业以
1.中断处理:中断处理是内核最基本的功能。操作系统的重要 活动最终都将依赖于中断(系统调用、键盘命令的输入、进 程调度)。通常内核只对中断进行“有限的处理”然后便转 交给有关进程继续处理。
2.时钟管理:OS中的许多活动都需要时钟管理,例如:在时间 片轮转调度中,每当时间片用完时,由时钟管理产生一个中 断信号,促使调度程序重新调度。
内部标识符:为了方便系统使用而设置的。在所有的OS 中,都为每一个进程赋予一个唯一的整数,作为内部标识符。 它通常就是一个进程的符号,为了描述进程的家族关系,还 应该设置父进程标识符以及子进程标识符。还可以设置用户 标识符,来指示该进程由哪个用户拥有。
2、处理机状态信息
处理机状态信息主要是由处理机各种寄存器中的 内容所组成。
执行指针
就绪索引表
就绪表指针 阻塞表指针
阻塞索引表
PCB1 PCB2 PCB3 PCB4 PCB5 PCB6 PCB7
按索引方式组织PCB
3.3.4进程上下文
进程上下文: 是进程执行活动全过程的静态描述。包
括计算机系统中与执行该进程有关的各种 寄存器的值、程序段在经过编译之后形成 的机器指令代码集、数据集及各种堆栈值 和PCB结构。可按一定的执行层次组合,如 用户级上下文、系统级上下文等。
4 将该进程所拥有的全部资源,或者归还给它的父进程,或者 归还给系统。
5 将被终止进程(PCB)从所在队列(链表)中移出,等待其 它程序来搜索信息。
出错处理
入口 查进程链表或进程家族
有此PCB吗?
有
该PCB有子进程吗?
有
无 释放该进程所占有的资源
释放该PCB结构本身
返回
3.4.5 进程的阻塞与唤醒
3.原语操作:
原语:系统状态下执行的某些具有特定功能的程序段称为原语。
机器指令级的 执行其间不允许中断
功能级的
作为原语的程序段不允许并发执行
(原语也是由若干条指令构成的,用于完成一定功能的过程)
原子操作:一个操作中的动作要么全做,要么全不做。
二 资源管理功能
1 进程管理:进程管理的全部或大部分功能都放在内核中。主要 因为这些模块的运行频率较高。
2 存储器管理:存储器管理软件的运行频率也较高,通常也将它 放在内核中。(内存分配与回收模块、内存保护与对换功能的 模块)
3 设备管理:各类驱动程序,缓冲管理等也都是存放在内存中的。 在操作系统中,通常把进程控制用程序段做成原语。用于
进程控制的原语有:创建原语、撤销原语、阻塞原语、唤醒原 语等。
3.4.3进程的创建
3.3.1进程控制块PCB
进程的静态描述:由三部分组成 PCB、有关程序段和该程序段对其进行操作的数
据结构集。 各部分的作用:
1 进程控制块:用于描述进程情况及控制进程运行所 需的全部信息。
2 程序段:是进程中能被进程调度程序在CPU上执行的 程序代码段。
3 数据段:一个进程的数据段,可以是进程对应的程 序加工处理的原始数据,也可以是程序执行后产生 的中间或最终数据。
3.3.2进程控制块中的信息
进程控制块中主要包括四个方面用于描述和控制进程运行 的信息。
1.进程标识符信息
进程标识符用于唯一的标识一个进程。一个进程通常有以 下两种标识符。
外部标识符。由创建者提供,通常是由字母、数字组成, 往往是用户(进程)访问该进程使用。外部标识符便于记忆, 如:计算进程、打印进程、发送进程、接收进程等。