第二章

1进程的创建

(1) 申请空白PCB

(2) 为新进程分配资源         主要是内存资源的处理

(3) 初始化进程控制块         标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。

(4) 将新进程插入就绪队列

2.进程的终止

正常结束

异常结束

    内存越界错误

保护错(权限错,如修改只读文件等)

非法指令(不存在的指令,程序异常转向而把数据当指令)

特权指令错(用户态程序试图执行只有OS可执行的指令)

运行超时、运算错、i/o故障等

外界干预

操作员或操作系统干预(死锁时,可人为结束) 父进程请求终止子进程 父进程终止,子孙进程也跟着终止

3.进程的阻塞与唤醒

1)引起进程阻塞和唤醒的事件   

请求系统服务的满足情况

启动某种需等待(I/O)操作

合作需要的新数据尚未到达

执行某功能的进程暂时无新工作可做(如发送数据进程)

2)阻塞和唤醒过程

由进程调用阻塞原语阻塞自己,是主动行为: (1)将PCB中的状态改为阻塞 (2)该PCB加入到阻塞队列中 (3)转进程调度,将处理机分配给另一进程 (4)进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状态。

4.进程的挂起与激活

关于调度

进程控制中,状态转换和调度密切相关。

运行态进程的改变必然产生调度行为

只要产生新就绪态进程,就需考虑调度策略

只要是采用抢占式调度,要检查新就绪进程是否可抢占CPU,引起新的调度

1.进程同步的基本概念

 使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。

互斥:在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,直到占用临界资源的进程退出临界区,我们称进程之间的这种相互制约关系为“互斥”。

同步:多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程同步关系。可理解为“有序”。

每个进程中访问临界资源的那段代码叫临界区。

进入区:对欲访问的临界资源进行检。若此刻未被访问,设正在访问的标志 临界区:访问临界资源的代码。 退出区:将正在访问的标志恢复为未被访问的标志 剩余区:其余部分

同步机制应遵循的规则

实现互斥的方法应符合如下每条原则

空闲让进:资源使用最基本原则

忙则等待:保证互斥

有限等待:合适时被唤醒防止死等

让权等待:能主动释放CPU防止忙等

信号量机制

1) 整型信号量

最初的信号量机制,两个原子操作对一个共享整型量进行操作。 信号量定义为一个整型量; 根据初始情况赋相应的值; 仅能通过两个原子操作来访问。

 

P操作  wait(S):                   While S<=0 do no-op;        

      S:=S-1; V操作  signal(S):                     S:=S+1;

2)记录型信号量

整型信号量符合“有限等待”原则

但整型信号量不符合“让权等待”原则

改进:条件不符时应能够主动放弃

新问题:放弃CPU的进程进入阻塞队列:因等待某信号量而放弃CPU的等待进程会有“若干”个,需将它们组织管理起来,并在合适的时候唤醒

信号量结构信息发生变化

不仅要有值的处理,还有队列的处理。

此时形成记录型数据结构,包括两部分:

整型变量value(代表资源数目) 进程链表L(链接所有等待进程):

代码描述: type  Semaphore=record   

 value:integer;   

 L:list  of  PCB; end;

操作:S.Value,S.L

P操作wait():     S.value = S.value - 1;     if  S.value < 0  then  block(S,L)

V操作signal():     S.value = S.value + 1;     if  S.value <= 0 then wakeup(S,L)

定义信号量semaphore代表可用资源实体的数量。又叫信号灯。 当≥0,代表可供并发进程使用的资源实体数 当<0,表示正在等待使用该资源的进程数。 建立一个信号量必须经过说明,包括 信号量所代表的意义 赋初值 建立相应的数据结构,以便指向等待使用临界区的进程。 除初值外,信号量的值仅能由标准原子操作P、V操作来改变。 PV操作是荷兰语通过和释放的意思

互斥信号量注意点:互斥信号量mutex初值为1;

每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间 必须成对使用P和V原语(在同一进程中),不能次序错误、重复或遗漏:

遗漏P原语则不能保证互斥访问

遗漏V原语则不能在使用临界资源之后将其释放(给其他等待的进程)

 

前趋关系:     并发执行的进程P1和P2中,分别有代码C1和C2,要求C1要在C2开始前完成; 为每对前趋关系设置一个同步信号量S12,并赋初值为0。则只有V操作所在进程获得cpu时能运行

控制同步顺序的注意点

信号量值为0的点是限制的关键所在;

成对使用P和V原语(在有先后关系的两个进程中),不能次序错误、重复或遗漏,否则同步顺序出错。

信号量题目做题一般方法:

分析问题,找出同步、互斥关系

根据资源设置信号量变量

写出代码过程,并注意P、V操作的位置 

检查代码,模拟机器运行,体验信号量的变化和程序运行过程是否正确。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值