计算机操作系统复习笔记(二)进程的描述和控制

出版社:西安电子科技大学出版社
教材:计算机操作系统(第四版)
章节:二、进程的描述和控制

只写了考试部分…
在这里插入图片描述

信号量机制

1、整型信号量

经典的PV操作:
P(wait):申请资源
V(signal):释放资源

信号量的使用

  • 信号量定义为一个整型量;
  • 根据初始情况赋相应的值;
  • 仅能通过两个原子操作来访问;
  • P、V原语必须成对出现

注意:

  • 整型信号量符合“有限等待”原则;
    signal释放资源后,当CPU被分配给等待进程后,等待进程仍可继续执行,可以符合“有限等待”。
  • 但整型信号量不符合“让权等待”原则;
    整型信号量的wait操作,当s ≤0时,当前进程会占着CPU不断测试

2、记录型信号量

新增加了

  • 表示资源数目的整型变量value
    Value>0,表示当前可用资源的数量;
    Value≤0,其绝对值表示等待使用该资源的进程数,即在该信号量队列上排队的PCB的个数。
  • 一个进程链表指针list(链接所有等待进程)
    P(s)
    {    s.value = s.value -1;  
          if (s.value < 0) 
       	  block(s.L);
    } //P(s)

1)s.value初值表示某类资源数目;
2)s.value = s.value –1表示请求一个单位资源;
3)if (s.value < 0)表示该类资源分配完毕,请求进程调用block(s.L)自我阻塞

    V(s) 
    {   s.value = s.value +1;
         if (s.value <= 0) 
             wakeup(s.L)}  //V(s) 

1)s.value<0时,其绝对值表示阻塞进程的数目;
2)s.value = s.value +1表示释放一个单位的资源;
3)if (s.value <= 0)表示尚有阻塞进程,当前执行wakeup(s.L)唤醒阻塞的第一个进程

实现进程互斥

1)互斥信号量

为每类临界资源设置一互斥信号量s,s的初值s.value=1,表示
①临界资源可用
②可用资源有1个

为临界资源设置一个阻塞队列,因请求该临界资源而阻塞的进程挂入阻塞队列

P(s)测试临界资源是否可用V(s)释放临界资源,唤醒阻塞进程
s.value=1临界资源可用没有阻塞进程
s.value=0临界资源被占用唤醒最后一个阻塞的进程
s.value<0s.value的绝对值为因等待临界资源而阻塞的进程数目s.value的绝对值为因等待临界资源而阻塞的进程数目

2)互斥的实现

  • 将竞争该临界资源的各进程的临界区置于P(s)和V(s)之间
  • P(s)和V(s)必须成对出现在同一进程中
  • 用于独立进程对临界资源的互斥使用

资源请求

1)资源信号量

资源信号量实现对某类资源的请求和释放

初值s.value=n(n表示可用资源数目)
P操作:申请一个可用资源
V操作:释放一个可用资源

P(s)表示请求一个单位的资源:
s.value≥0:表示剩余资源数目
s.value<0: |s.value|表示因请求该资源而阻塞的进程数目

V(s)表示释放一个单位的资源:
s.value>0:表示可用资源数目,原进程继续执行
s.value≤0:|s.value|表示阻塞的进程数目,唤醒一个进程为其分配资源

2)同步信号量

初值s.value=0,表示同步事件尚未发生
P操作:测试同步事件是否发生
V操作:通知同步事件已经发生

同步事件发生后,由同步事件的执行者通过V(s)通知同步事件的等待者
同步事件的等待者在开始执行前,通过P(s)测试同步事件是否发生。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值