进程的同步和互斥

1. 进程的同步

  我们把异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。具有同步关系的一组并发进程称为合作进程,合作进程间互相发送的信号称为消息或事件。

以下为简单示例:
在这里插入图片描述



2. 进程的互斥

  两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥· 也就是说,一个进程正在访问临界资源,另一个要访问该资源的进程必须等待。

以下为简单示例:
在这里插入图片描述



3. 进程间制约关系

  在多道程序环境下,系统中各进程以不可预测的速度向前推进,进程的异步性会给系统造成混乱,造成了结果的不可再现性。为防止这种现象,异步的进程间推进受到二种限制:

(1)资源共享关系
  多进程共享资源,例如各进程争用一台计算机,这时各进程使用这台打印机时有一定的限制。如各进程随意使用打印机,会造成打印机结果交织在一起难以区分。所以必须由系统统一分配,每次只允许一个进程使用一段时间打印机,等该进程使用完毕后再将打印机分配给其它进程。这种使用原则称为互斥使用。 互斥关系是一种间接制约关系。

(2)相互合作关系
  在某些进程之间还存在合作关系,例如一个程序的输入、计算、打印三个程序段作为三个进程并发执行,由于这三个进程间存在着相互合作的关系,即先输入再计算、最后再打印的关系,所以这三个进程在并发执行时推进序列受到限制,要保证其合作关系正确,进程间这种关系称为同步关系。同步关系是一种直接制约关系。




结束语:我们可以用热情去感染他人,同样也可以让热情感染我们。多与那些对生命充满活力、机警而又相当清醒的人交往,会激发出你热情的火花的。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您介绍一下交通信号灯的模拟实现。 交通信号灯是通过信号量机制、进程同步互斥机制来实现的。在模拟交通信号灯时,需要模拟三种不同的状态:红灯、绿灯和黄灯。 首先,我们需要创建一个进程来控制交通信号灯的状态。在进程中,我们可以使用信号量机制来控制红灯、绿灯和黄灯的时间间隔。例如,我们可以创建三个信号量,分别表示红灯、绿灯和黄灯。在进程中,我们可以使用P操作(等待信号量)和V操作(释放信号量)来控制信号灯的状态。 当进程启动时,首先将红灯的信号量设置为1,绿灯和黄灯的信号量设置为0。然后我们可以使用一个while循环来模拟交通信号灯的运行。在循环中,我们可以使用P操作来等待红灯的信号量,这样可以确保红灯亮起来。然后我们可以使用V操作来释放红灯的信号量,将绿灯的信号量设置为1,这样绿灯就可以亮起来。然后我们可以使用一个sleep函数来让绿灯保持亮起来的时间。当绿灯亮起来的时间到了之后,我们可以使用V操作来释放绿灯的信号量,将黄灯的信号量设置为1,这样黄灯就可以亮起来。然后我们可以再次使用一个sleep函数来让黄灯保持亮起来的时间。当黄灯亮起来的时间到了之后,我们可以使用V操作来释放黄灯的信号量,将红灯的信号量设置为1,这样红灯就又可以亮起来,然后循环就继续了。 在这个过程中,我们需要使用互斥机制来确保只有一个进程可以修改信号量的值。这可以通过使用互斥锁来实现。例如,在设置信号量的值时,我们可以使用一个互斥锁来确保只有一个进程可以修改信号量的值。 这就是交通信号灯的模拟实现。通过模拟交通信号灯,我们可以更好地了解信号量机制、进程同步互斥机制的实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天界程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值