OS第二章王道练习题 2.3 同步与互斥

 同步关系:进程A放完了B才能往缓冲区读数据

 互斥关系:共享缓冲区的访问一定是互斥访问的

  • P、V操作是一种低级进程通信原语,它是不能被中断的
  • 可重入代码 (Reentry code)也叫纯代码 (Pure code)是一种允许多个进程同时访问的代码。 为了使各进程所执行的代码完全相同,故不允许任何进程对其进行修改。 程序在运行过程中可以被打断,并由开始处再次执行,并且在合理的范围内(多次重入,而不造成堆栈溢出等其他问题),程序可以在被打断处继续执行,且执行结果不受影响。 可重入最简单的理解就是任何变量都是局部变量。 可重入指函数在运行过程中,被中断打断后,待返回时仍然能够正常运行。  
    • 可重入代码:允许多个进程同时访问+只读+不能被修改+可共享
  •  

         这里临界区是指访问临界资源A的那段代码,有5个并发进程,共有5个操作共享变量A的代码段

  • 管程的组成部分:

        

monitor Demo{
    共享数据结构S;
    condition x;  //定义一个条件变量x
    init_code{}{...}
    take_away(){
        if(S<=0)  x.wait();  //资源不够,在条件变量x上阻塞等待
        资源足够,分配资源,做一系列相应处理;
        }
    give_back(){
    归还资源,做一系列相应处理;
    if(有进程在等待) x.signal();//唤醒一个阻塞进程
    }
}

 条件变量和信号量的比较:

  相同点:类似于信号量的P/V操作,可用于进程的阻塞/唤醒;

  不同点:条件变量没有值,仅实现了“排队等待”的功能,而“信号量”是有值的

                 n-1     n

  • 互斥信号量的初值都为1
    • 所谓互斥使用某临界资源,是指在某一个时间段只允许一个进程使用此资源。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值