并发性:互斥和同步

·概述

并发包括很多设计问题,其中有通信、资源共享和竞争、多个进程活动的同步以及分配给进程的处理器时间等。

并发会在以下三种不同的上下文中出现:多个应用程序,结构化应用程序,操作系统结构。


与并发相关的关键术语


·进程的交互

进程间的资源竞争
当并发进程竞争使用同一资源时,它们之间会发生冲突。
竞争进程面临三个控制问题:
1. 互斥:竞争进程仅可以访问一个临界资源(一次仅有一个进程可以访问临界资源),并发机制必须满足一次只有一个进程可以访问临界资源这个规则。

2.死锁:如果竞争进程需要唯一的访问多于一个资源,并且当一个进程控制着一个进程,且在等待另一个进程,死锁可能发生。

3.饥饿:一组进程的一个可能会无限期地拒绝进入到一个需要资源,因为其他

成员组成垄断这个资源。

进程间通过共享合作

多个进程可能访问一个共享变量、共享文件或数据库,进程可能使用并修改共享变量而并不涉及其他进程,但却知道其他进程也可能访问同一个数据。因此,这些进程必须合作,以确保它们共享的数据得到正确的管理。

进程间通过通信合作

当进程通过通信进行合作时,各个进程都与其他进程进行连接,通信提供了同步和协调各种活动的方法。

·互斥的要求

1.必须强制实施互斥:在具有关于相同资源或共享对象的临界区的所有进程中,一次只允许一个进程进入临界区。

2.一个在临界区停止的进程必须不干涉其他进程

3.绝不允许出现一个需要访问临界区的进程被无限延迟的情况,即不会饿死或饥饿

4.当没有进程在临界区中时,任何需要进入临界区的进程必须能够立即进入

5.对相关进程的速度和处理器的数目没有任何要求和限制。

6.一个进程驻留在临界区中的时间是有限的


·信号量


常用并发机制

信号量的操作:
1)一个信号量可以初始化为非负数。
2)semWait操作使信号量减1。如果值<0,则该进程被阻塞。否则继续执行。
3)semSingnal操作使信号量加1。如果值<=0,则唤醒队列中的一个进程。否则继续执行。
进程按照什么顺序从队列中移除?
最公平的策略是先进先出(FIFO),采用该策略的信号量称为 强信号量。
没有规定进程从队列中移除顺序的信号量称为 弱信号量

使用信号量实现互斥

·管程
管程是由一个或多个过程、一个初始化序列和局部数据组成的软件模块。


管程的结构



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值