CPU管理

1.进程调度算法

  • 先来先服务算法
    按照进程进入就绪队列的先后次序选择可以占用处理器的进程。该算法很少单独使用,通常会配合其他算法一起使用
  • 优先数调度算法
    每一个进程都有一个优先数,进程调度总是让具有最高优先数的进程先使用处理器。对于相同优先数的进程,可以按照先来先服务次序分配处理器。
    优先数的分配有两种:静态法和动态法。
    静态法:根据进程的静态特性,在进程开始执行之前就确定它们的优先数,执行后不能改变。确定原则是根据进程类型来给予不同的优先数。系统进程>用户进程,交互式作业进程>批处理作业进程等
    动态法:根据进程的动态和静态特性结合起来,确定进程的优先数,并随着进程执行不断变化。确定原则可根据进程占有CPU时间长短及就绪进程等待CPU时间长短来决定。
  • 时间片轮转调度算法
    让就绪进程按先后次序排成队列,每次选择第一个进程占用CPU,但规定只能使用一个时间片。
  • 多级反馈队列调度算法
    设置多个队列,每个队列给予不同的优先权。第一个队列优先权最高,逐个降低。优先权越高的队列,每个进程的执行时间片规定得越小。一个新进程进入内存后,首先将它放入第一队列末尾,按照先来先服务原则等待调度。等到它执行完一个时间片后,若完成就撤离系统;否则放入下一个队列末尾。当第1~(i-1)队列为空时,才会调度第i队列。在为第i队列服务时,有新进场进入优先权较高的队列时,新进场将抢占CPU。
2.信号量与PV操作
并发进程执行时,会出现多个进程共同使用同一个变量的情况。与共享变量有关的程序段称为“临界区”,共享变量所代表的资源称为“临界资源”,多个并发进程涉及相同共享变量的那些程序段成为“相关临界区”。
为避免错误使用变量值,共享资源的使用必须互斥进行。PV操作可以实现进程的互斥。
信号量:信号量S是一个整数,当S>=0时,表示可供使用的资源实体数;S<0时,|S|表示正在等待资源的进程数。
公用信号量:联系一组并发进程,初值常为1,用于进程互斥。
私有信号量:仅允许拥有此信号量的进程执行P操作,而其他进程可在其上施行V操作。初值常为0或正整数,多用于进程同步。
P操作:P(S)
procedure P(S)
begin:
S=S-1;
if(S<0)
then W(S)
V操作:V(S)
procedure V(S)
begin:
S=S+1
if(S<=0)
then R(S)
注:W(S)表示将调用P(S)进程置成“等待信号量S”的状态。R(S)表示释放一个“等待信号量S”的进程。
(1)进程互斥
设S=1。进入临界区前P操作,退出临界区后V操作。
(2)进程同步(p个生产者,q个消费者问题)
调用P操作测试信号是否到达,V操作发送信息。设SP=n,SG=0,S=1。SP表示物品是否可以存入大小为n的缓冲器中,SG表示缓冲器中是否有物品。
B:array[0..n-1] //缓冲器
SP=n,SG=0,k=0,t=0,S=1
procedure produce
begin
L1: [produce a product]
P(SP);
P(S);
B[k]=product
k=(k+1)%n
V(SG);
goto L1;

procedure consumer
begin
L2:P(SG)
P(S);
[take a product from B[t] ];
t=(t+1)%n;
V(SP);
[consume];
goto L2;
一般来说,用于同步的信号量上的P操作先于互斥信号量上的P操作。


3.死锁
(1)发生死锁必定同时满足四个条件:互斥条件,占有且等待,不剥夺条件,循环等待条件。但满足四个条件不一定发生死锁。
(2)死锁的预防:
a.静态分配策略:一个进程必须在执行前就申请它要的全部资源,而且直到它所要的资源都得到满足才执行。
b.层次分配策略:资源被分成多个层次,一个进程得到某一层的一个资源后,它只能再申请较高一层的资源;当一个进程要释放某层资源时,必须先释放所占用的较高层的资源;当一个进程获得某一层的一个资源,它想再申请该层的另一个资源,必须先释放该层中已占用的资源。
(3)死锁的避免:
如果系统能保证所有的进程在有限的时间内得到需要的全部资源,则称系统处于安全状态;否则为不安全状态。系统处于安全状态不会发送死锁,处于不安全状态可能发送死锁。
a.银行家算法:
1)当一个用户对资金的最大需求量不超过银行家现有的资金时可接纳该用户
2)用户可以分期贷款,但贷款的总数不能超过最大需求量
3)当银行家现有的资金不能满足用户的尚需贷款数时,对用户的贷款可推迟支付,但能使用户在有限时间内得到贷款
4)当用户得到所需的全部资金后,一定能在有限时间内归还所有资金
进程每次请求资源时,若尚需的最大资源量不超过系统现存的资源数,同时该进程已占有的资源数与申请资源数之和不超过该进程对资源的最大需求量时,允许分配。当进程初次申请时,若该进程最大需求量不超过系统现有资源,按当前申请量分配资源。
(4)死锁的检测:
a.进程——资源分配图:描述进程和资源间申请和分配关系的有向图。每一个资源类(R)用一个方框表示,方框中黑点表示各个资源,进程(P)用一个圆圈表示。用有向边P->R为请求边,表示进程P申请资源R中的一个资源但不能得到满足而处于等待R的状态;R->P为分配边,表示R的一个资源已被P占用。发送死锁图中一定出现环路,出现环路不一定发送死锁。
b.死锁检测步骤:
1)无环路,则没有死锁
2)有环路,每个资源类仅有一个资源,则发送死锁
3)有环路,某些资源类有多个资源,找到一个既不阻塞又非独立的进程,资源分配图可以简化,则没有死锁。
(5)死锁的解除:
a.重启
b.撤销涉及死锁的所有进程
c.逐个撤销设计死锁的进程,回收其资源直至死锁解除
d.抢夺资源


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值