第2章 进程管理

引入前趋图:
描述进程执行前后关系的图
在这里插入图片描述
程序顺序执行时的特征:

  1. 顺序性
    处理机的操作严格按程序规定顺序执行
  2. 封闭性
    程序一旦开始执行,其计算结果不受外界因素影响。
  3. 可再现性
    程序执行只要初始条件一样,不论如何停顿,重复执行多少次结果都一样。
    并发程序执行时的特征
    ①间断性(运行表现):
    多道 -> 程序并发执行-> 要共享系统的资源 -> 形成相互制约的关系
    ②失去封闭性:
    共享资源,资源状态由多道程序改变,程序运行失去封闭性。
    ③ 结果不可再现性:
    结果不确定,程序执行将没有任何意义。
    进程的特征
    ①结构性特征,进程的根本——PCB
    ②动态性
    ③并发性
    ④独立性
    ⑤异步性
    进程执行时的间断性,决定了其具有多种状态。把握各进程所属的状态对进程 控制至关重要。
    进程的三基态的转换
    在这里插入图片描述
    进程控制块PCB
    进程实体:代码段+数据段+PCB
    进程控制块定义
    存放进程的管理和控制信息的数据结构称为进程控制块。
    进程标识符信息
    每个进程都必须有一个唯一的标识符
    内部标示符:唯一的数字序号,方便系统使用
    外部标示符:方便用户使用,用户进程访问某进程时使用
    处理机状态信息
    主要由处理机的各种寄存器中的内容组成,被中断时这些信息要存放到PCB。
    通用寄存器:用户程序访问的,暂存信息;
    指令计数器:下一条指令地址;
    程序状态字PSW:一些状态信息;
    用户栈指针:每个用户进程都有的存放过程和系统调用参数及调用地址的一 组系统栈。
    进程调度信息
    进程状态;
    进程优先级;
    进程调度所需的其他信息:调度算法相关信息;
    事件:状态转换有关的事件
    进程控制信息
    程序和数据的地址(单个进程)
    数据所在的内外存地址
    进程同步和通信机制(多进程间)
    同步和通信机制的信号量、消息队列指针等
    资源清单
    链接指针(PCB的组织)
    本PCB所在队列的下一个进程PCB首地址。
    PCB信息的存放
    系统运行中有若干个程序的PCB,它们常驻内存的PCB区。
    采用的数据结构:PCB结构体,PCB链表或队列。
    进程控制
    进程控制的基本过程:
    ①进程的创建;
    ②进程的终止;
    ③进程的阻塞与唤醒;
    ④进程的挂起和激活。
    进程间的父子关系关系着资源的继承。创建和撤销进程时,其父、子进程要相应的被影响。
    进程的创建
    1)一个进程创建另一进程的事件
    用户登录:分时情况下用户的请求;
    作业调度:批处理中;
    提供服务:运行中的用户程序提出功能请求,要创建服务进程;
    应用请求:应用程序自己创建进程,完成特定功能的新进程。
    2)创建过程
    (1) 申请空白PCB;
    (2) 为新进程分配资源;
    主要是内存资源的处理
    (3) 初始化进程控制块;
    标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先 级等信息的填写。
    (4) 将新进程插入就绪队列。
    进程的终止
    1)引起进程终止的事件:
    ①正常结束
    ②异常结束
    ③外界干预
    2)终止过程:
    对上述事件,OS调用内核终止原语,执行下列过程:
    (1) 根据进程标示符,检索出该进程PCB,读其状态。
    *IF 执行态,立即终止该进程,置调度标志为真,指示重新进行调度。
    *IF 有子孙进程,亦应予以终止,以防成为不可控进程。
    (2) 归还全部资源至其父进程或系统。
    (3) 将该进程PCB从所在队列或链表中移出。
    3.进程的阻塞与唤醒
    1)引起进程阻塞和唤醒的事件:
    请求系统服务的满足情况;
    启动某种需等待(I/O)操作;
    合作需要的新数据尚未到达;
    执行某功能的进程暂时无新工作可做。
    2)阻塞和唤醒过程:
    (1)将PCB中的状态改为阻塞
    (2)该PCB加入到阻塞队列中
    (3)转进程调度,将处理机分配给另一进程
    (4)进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状 态。
    4.进程的挂起与激活
    (1)检查被挂起进程的状态,活动就绪则改为静止就绪,活动阻塞则改为静止阻塞
    (2)将该PCB复制到内存(方便检查)/外存(对换)指定区域
    (3)若挂起的进程是执行态,则需重新进行进程调度。
    进程同步的主要任务:
    使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
    临界区
    每个进程中访问临界资源的那段代码叫临界区。
    为了正确同步,对临界区的代码要增加控制。
    实现互斥的方法应符合如下每条原则:
    空闲让进:资源使用最基本原则
    忙则等待:保证互斥
    有限等待:合适时被唤醒防止死等
    让权等待:能主动释放CPU防止忙等
    信号量机制
    荷兰科学家Dijkstra(狄克斯特拉)提出的一种卓有成效的进程同步机制。
    1) 整型信号量
    最初的信号量机制,两个原子操作对一个共享整型量进行操作。
    ①信号量定义为一个整型量;
    ②根据初始情况赋相应的值;
    ③仅能通过两个原子操作来访问。
    2)记录型信号量
    整型信号量符合“有限等待”原则,但不符合“让权等待”原则。
    3)信号量的基本应用
    ①实现进程互斥
    ②实现进程间的前趋关系(有序)

无论生产者、消费者使用缓冲池时应保证互斥使用(互斥信号量mutex )
生产者和消费者间交叉有序:
有序的控制最根源在产品数量上。
设置两个信号量:
分别针对生产者、消费者设置不同的信号量,empty和full分别表示缓冲池中空缓冲池和满缓冲池(即产品)的数量。

每个程序中用于实现互斥的wait(mutex)和signal(mutex)必须成对地出现。
控制顺序的信号量empty和full的wait和signal操作,成对地出现在不同的进程中。
在每个程序中的多个wait操作顺序不能颠倒。且应先执行对资源信号量的wait操作,再执行对互斥信号量的wait操作,否则可能引起进程死锁。
模拟交替执行过程,检查控制是否正确。

经典的三个信号量问题
生产者—消费者问题
互斥、同步
哲学家就餐问题
互斥、死锁
读者——写者问题
有条件的互斥

读者与写者问题
读者间起作用:
Readcount变量,rmutex信号量
写者间起作用:
writecount变量,mutex信号量
读者与写者间起作用:
wmutex
S

黑白棋子问题

while(没结束){p(m);if (turn<>2)
下一黑子;
turn=2;
v(m)
}
白:
while(没结束){
p(m);
if (turn<>1)
下一白子;
turn=1;
v(m)
}

生产与销售问题
定义资源信号量Sab,Sba表示A、B各自允许生产的数量初始:Sab=m,Sba=n(注意Sab,Sba之间的关系,和始终是m+n。)

信号量机制的不足:
信号量的控制分布在多个进程中
正确性分析困难;
分散的P、V操作:易出错,使用不当可能导致死锁。
修改、维护困难:易读性差,任一修改都可能影响全局;测试期间发现错误困难,即使发现错误也不容易定位出错位置。

管程如何实现同步?
对共享变量互斥操作:
管程的特点直接实现了该要求,进程一次一个进入管程调用内部过程操作共享变量。
管程的互斥访问完全由编译程序在编译时自动添上,无须程序员关心,能保证正确。
操作的同步控制:
靠条件变量的操作管理实现。
进入管程但不能获取资源操作的过程将阻塞,并在满足条件时被唤醒执行。

管程的优点
保证进程互斥地访问共享变量,并方便地阻塞和唤醒进程。管程可以以函数库的形式实现。相比之下,管程比信号量好控制。
管程可增强模块的独立性:系统按资源管理的观点分解成若干模块,用数据表示抽象系统资源,使同步操作相对集中,从而增加了模块的相对独立性
引入管程可提高代码的可读性,便于修改和维护,正确性易于保证:采用集中式同步机制。一个操作系统或并发程序由若干个这样的模块所构成,一个模块通常较短,模块之间关系清晰。

进程通信的类型
a.基于共享数据结构
诸进程公用某些数据结构,借以实现诸进程间的信息交换。
b.基于共享存储区
在存储器中划出了一块共享存储区,诸进程可通过对共享存储区中数据的读或写来实现通信。

消息传递通信的实现方法
1)直接通信方式
发送进程利用OS所提供的发送命令(原语),直接把消息发送给目标进程。此时,发送进程和接收进程都以显式方式提供对方的标识符。通常利用系统通信命令(原语):
Send(Receiver, message);
Receive(Sender, message);
2)间接通信方式
基于共享数据结构的实体用来暂存发送给目标进程的消息;接收进程则从该实体中,取出对方发送给自己的消息。通常把这种实体称为信箱。

单机和网络环境下的高级进程通信广泛采用“消息传递”方式,需要考虑的问题:
通信链路的建立
消息格式
同步方式

利用进程实现的多道程序系统中
进程是一个可拥有资源的独立单位;
是一个可独立调度和分派资源的基本单位

用户级线程需借助某种形式的中间系统取得内核服务,用户程序复杂
运行时系统:管理和控制线程的函数/过程集合。
内核控制线程,轻型进程LWP。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值