进程同步与通信

多个并发执行的进程,在运行过程中,共享系统的cpu,内存,io设备和文件等资源。系统资源的共享,使得一个进程的执行可能会受到其他进程直接或间接的制约。为了协调进程之间的制约关系,达到资源共享和进程合作。就需要实现进程的互斥与同步。协调进程之间的关系,是通过进程之间的通信机制来实现的。低级通信主要是通过控制进程的执行速度,来保证进程之间的互斥与同步。高级通信则要在进程之间传送大量的数据,此外,进程的并发执行还会带来一个严重的问题,死锁。
并发进程的关系。
间接制约关系。
两个或多个进程共享同一种资源,且该资源一次仅允许一个进程使用,当一个进程正在访问或使用该资源时,就会制约其他进程对该资源的访问和使用。在一段时间内,只能由一个进程使用的资源称为独占资源或互斥资源。间接制约的存在,使得多个进程并发不能同时访问互斥资源。也就是说,一个进程通过共享互斥资源来暂时限制,间接制约其他进程的运行。
直接制约关系。
这种制约关系是由任务协作引起的几个进程相同协作完成一项任务,这些进程因任务性质的要求,必须按事先规定好的顺序依次执行,才能使任务得到正确的处理,否则就可能造成错误的结果。在直接制约关系中,一个进程的执行状态直接决定了相互协作的另一个或几个进程能否执行。
进程的互斥与同步。
进程的同步是指某些进程之间在逻辑上的相互制约关系。也就是说若干进程为完成一个共同的任务而相互合作。
进程互斥是指某一资源同一时间只允许一个进程对其进行访问。这种访问具有唯一性和排他性。
互斥的实现还会产生两个额外的控制问题,饥饿和死锁。
一个进程所申请的资源,总是被优先于自己的其他进程所占有,而长时间处于不能调度的状态,长时间处于就绪或阻塞状态,这种现象称为饥饿。
互相有资源,又期待别人的资源叫死锁,因相互等待对方的资源而始终无法运行。
一段时间内只允许一个进程使用的资源称为临界资源。把进程中访问临界资源的代码段称为临界区。
为了实现进程互斥地进入自己的临界区,可以采用软件的方法,但更多是在系统中专门设置同步机构,来协调各进程间的运行。
空闲让进。无进程处于临界区时,意味着临界资源处于空闲状态,这时若有进程要求进入临界区,应立即允许进入。
忙则等待,当已有进程进入临界区时,则意味着某临界资源正在使用其他域访问该临界资源的进程试图进入各自临界区时必须等待。以保证各进程互斥的进入访问同一个临界资源的临界区。
有限等待,若干进程要求进入访问同一临界资源的临界区时,应在有限时间内使一个进程进入临界区。即不应出现个进程相互等待而都无法进入临界区的情况。
让权等待,当进程不能进入其临界区时,应立即释放所占有的cpu,以免陷入忙等,进程在占有cpu的同时,又一直等待。保证其他可执行的进程获取cpu运行。这方面有可能会考填空。同步机制的四条准则。
实现进程互斥的硬件方法。
最好还是使用硬件的方法。
开关中断指令又称为硬件锁,使用它来实现进程互斥最简单。具体方法是,进程在进入临界区之前,先执行关中断指令来屏蔽掉所有中断进程,进入临界区的任务完成后,再执行开中断指令,将中断打开。
Lock out interrupts;
临界区(原子操作)
unlock Interrupts;
使用开关中断的指令实现进程互斥,只适合单cpu系统。如果关中断的时间过长,会使系统效率下降,若关中断不当,有可能导致系统无法正常调度进程运行。
实现进程互斥的软件方法。我并不是很喜欢用。
信号量
整型信号量
若定义信号量为s,p操作原语和v操作原语
结构体型信号量。
当s.value大于0时,s.value表示该类资源当前的可用数量
当它等于0时,则表示该类资源为空
当它小于0时则,它的绝对值表示应等待该类资源而阻塞的进程个数。
p操作的物理意义是,执行一次就相当于申请一个资源s,就相当于s申请一个少一个。
v操作的物理含义是,在申请释放互斥资源的操作中,执行一次v操作相当于释放一个资源s。于是执行s加一的操作,系统回收一个资源s。若s加一后,其值仍然小于或等于零,则表明仍然有处于阻塞状态的进程,在等待资源s。而v操作就是去增加s。(操作系统中广泛的使用结构体信号量)
使用信号量实现进程互斥
首先为要进入的临界区设置一个互斥信号量,将初值设置为一,然后将各进程的临界区置于p和v之间即可。
p,v操作用处多多,还可以实现进程同步。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值