操作系统——第二章笔记(三)

本文详细介绍了管程的概念,包括其组成、特点、同步实现方式,以及在解决生产者-消费者问题中的应用。管程能确保进程互斥访问共享变量,并简化同步控制,提高了代码的可读性和模块独立性。然而,管程在某些编程语言中的实现并不常见,可能带来额外的挑战。
摘要由CSDN通过智能技术生成

一.管程的组成
封装:
1.一组局部变量
2.对局部变量操作的一组过程
3.对局部变量进行初始化的语句。(联想面向对象中的类)
二.管程特点

  1. 任何进程只能通过调用管程提供的过程入口才能进入管程访问共享数据;就如同使用临界资源,就要先通过其信号量的申请。
    2.任何时刻,仅允许一个进程在管程中执行某个内部过程。
    三.管程如何实现同步?
    1.对共享变量互斥操作:管程的特点直接实现了该要求,进程一次一个进入管程调用内部过程操作共享变量;管程的互斥访问完全由编译程序在编译时自动添上,无须程序员关心,能保证正确。
    2.操作的同步控制:靠条件变量的操作管理实现。进入管程但不能获取资源操作的过程将阻塞,并在满足条件时被唤醒执行。
    示例:
type p_c=monitor
    var in,out,count: interger;
           buffer: array[0,…,n-1] of item
           x,y: condition;
procedure entry put(var product:item)
{ 
    if count>=n then x.wait;
    buffer[in]=product;
    in=in+1 mod n;
    count=count+1;
    y.signal;  
     }
procedure entry get(var product:item)
{  
   if count<=0 then y.wait;
    nextc=buffer[out];
    out=out-1 mod n;
    count=count-1;
    x.signal;	
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值