第二章 进程的描述与

进程与PCB要点
1.分析程序执行顺序、以及并发的特征
2.进程的概念、特征与状态
3.进程控制块及其组织
程序执行顺序
(1)引入前驱图
(2)程序顺序执行时的特征
顺序性、封闭性、可再现性
并发程序执行时的特征
(1)间断性
多道 -> 程序并发执行-> 要共享系统的资源 -> 形成相互制约的关系(交替执行)
(2)失去封闭性
共享资源->环境受影响。程序运行受其他程序的影响。
(3)结果不可再现性
得到的结果不相同
!间断性>失去封闭性>不可再现性
!多道程序在间断性运行中的“相互影响”造成了失去封闭性。解决这里的矛盾,就要合理调控“相互影响”
进程的概念、特征与状态
(1)进程的概念
程序:程序段 + 数据段(按事先设计的功能和性能要求执行的指令序列。 )
进程实体:程序段 + 数据段 + 控制块PCB(并发时用于程序控制和资源管理的各种信息)
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
(2)进程的特征
1.结构性特征,进程的根本——PCB
2.动态性
进程实质上是进程实体的一次有生命期的执行过程。程序只是静态的一组有序指令,进程最基本特征。
3.并发性
多个进程实体同存于内存中,在一段时间内同时运行。有PCB的程序才能并发。
4.独立性
5.异步性
区别进程与程序
动与静
永久与暂时
结构
进程与程序的对应关系
可否并发
进程的状态转化
(1)与进程执行相关的各种共享资源有:CPU、存储器、I/O设备、时间片
(2)进程的三种基本状态:就绪状态(Ready)运行状态(Running) 阻塞状态(Blocked)
(3)转换图
在这里插入图片描述
挂起状态
在这里插入图片描述
创建状态、终止状态
各种状态下的进程队列
(1)单处理机系统,执行态的进程只有一个;
(2)就绪态、阻塞态的进程可有多个。一般讲它们分别排称一个队列,称就绪队列、阻塞队列。
(3)阻塞队列有的会根据不同原因再排成多个队列。
进程控制块是进程存在的唯一标志:
进程创建时,PCB建立并伴随进程运行的全过程,直到进程撤消而撤消。
进程控制信息
1.程序和数据的地址(单个进程)数据所在的内外存地址
2.进程同步和通信机制(多进程间)同步和通信机制的信号量、消息队列指针等
3.资源清单
4.链接指针(PCB的组织)本PCB所在队列的下一个进程PCB首地址。
PCB信息的存放
系统运行中有若干个程序的PCB,它们常驻内存的PCB区。
采用的数据结构:PCB结构体,PCB链表或队列
PCB的组织方式
链接方式
同一状态的PCB,依靠链接指针链接成队列。就绪队列;若干个阻塞队列;空白队列(PCB区的空PCB块)
索引方式
同状态的PCB同样集中记录,但以索引表的方式记录PCB的地址。用专门的单元记录各索引表的首地址
组织方式必须的指针
1.执行指针2.空闲指针3.阻塞指针4.就绪指针

进程控制与同步要点
操作系统通过PCB进行进程创建、终止、阻塞的过程如何;
如何理解进程同步的含义;
控制同步的关键在哪里。
进程控制的基本过程:
进程的创建
进程的终止
进程的阻塞与唤醒
进程的挂起和激活
进程的创建
(1) 申请空白PCB
(2) 为新进程分配资源 主要是内存资源的处理
(3) 初始化进程控制块,标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。
(4) 将新进程插入就绪队列
进程的终止
正常结束 异常结束 外界干预
(1) 根据进程标示符,检索出该进程PCB,读其状态。
*IF 执行态,立即终止该进程,置调度标志为真,指示重新进行调度。
*IF 有子孙进程,亦应予以终止,以防成为不可控进程。
(2) 归还全部资源至其父进程或系统。
(3) 将该进程PCB从所在队列或链表中移出。
进程的阻塞与唤醒
1)引起进程阻塞和唤醒的事件
请求系统服务的满足情况
启动某种需等待(I/O)操作
合作需要的新数据尚未到达
执行某功能的进程暂时无新工作可做(如发送数据进程)
2)阻塞和唤醒过程
(1)将PCB中的状态改为阻塞
(2)该PCB加入到阻塞队列中
(3)转进程调度,将处理机分配给另一进程
(4)进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状态。
阻塞与唤醒原语作用相反,成对使用
进程的挂起与激活
挂起原语将指定进程或阻塞进程挂起。
(1)检查被挂起进程的状态,活动就绪则改为静止就绪,活动阻塞则改为静止阻塞
(2)将该PCB复制到内存(方便检查)/外存(对换)指定区域
(3)*若挂起的进程是执行态,则需重新进行进程调度。
激活原语的执行过程
若挂起进程在外存上,将其调入内存
检查进程状态,若处于静止就绪,则改为活动就绪,若处于静止阻塞,则改为活动阻塞
调度
进程控制中,状态转换和调度密切相关。
运行态进程的改变必然产生调度行为
只要产生新就绪态进程,就需考虑调度策略
只要是采用抢占式调度,要检查新就绪进程是否可抢占CPU,引起新的调度。
控制并发
基本控制
进程、PCB、状态、基本控制过程
合理控制

  • 控制进程的相互影响,得到可再现的正确结果 *
    进程同步
    1)进程同步的主要任务:
    使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
    两种制约关系:间接相互制约关系(互斥)、直接相互制约关系(有序)
    2)临界资源
    一次仅允许一个进程使用的资源
    3)临界区
    进入区:对欲访问的临界资源进行检。若此刻未被访问,设正在访问的标志
    临界区:访问临界资源的代码。
    退出区:将正在访问的标志恢复为未被访问的标志
    剩余区:其余部分
    4)同步机制应遵循的规则
    空闲让进:资源使用最基本原则
    忙则等待:保证互斥
    有限等待:合适时被唤醒防止死等
    让权等待:能主动释放CPU防止忙等
    同步控制的关键
    主要涉及”判断”和”修改标志”操作
    不应被打断(原语,OS核心态运行)
    硬件同步机制
    1.关中断
    进入锁测试前关闭中断,直到完成锁测试并上锁后才能打开中断。进程在临界区执行期间,系统不响应中断,从而不引发调度。
    2.Test-and-Set指令
    3.利用Swap指令实现进程互斥

信号量机制
在这里插入图片描述

互斥信号量注意点
互斥信号量mutex初值为1;
每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间
必须成对使用P和V原语(在同一进程中),不能次序错误、重复或遗漏:
遗漏P原语则不能保证互斥访问
遗漏V原语则不能在使用临界资源之后将其释放(给其他等待的进程);
控制同步顺序的注意点
信号量值为0的点是限制的关键所在;
成对使用P和V原语(在有先后关系的两个进程中),不能次序错误、重复或遗漏,否则同步顺序出错。

猜你喜欢

转载自blog.csdn.net/Evanism_8/article/details/82861557