进程与线程的同步互斥

每日三问/操作系统篇<1>:进程间同步与互斥的区别?

根据操作系统的设计,在语句执行期间,有可能发生中断或调度,而导致和当前进程无关的程序被先一步执行。为了保证程序执行最终结果的正确性,必须对并发执行的各进程进行制约,以控制它们的执行速度和对资源的竞争。

直接制约关系/同步

这种制约主要源于进程间的合作。比如多个进程常常需要共同修改某些共享变量,表格,文件数据库等,协作完成一些功能。在运行过程中,某进程可能要在某些同步点上等待另一伙伴(协作进程)为它提供消息,在未获得消息之前,该进程处于等待状态,获得信息后被唤醒进入就绪态,才能被执行,就需要用到进程之间的同步。

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

间接制约关系/互斥:

同处于一个系统中的进程,通常都共享着某种资源,如共享CPU、共享I/O设备等,所谓间接相互制约即源于这种资源共享,使系统中本来没有关系的进程因竞争资源产生了制约关系,例如在多个程序中,有两个进程不可以同时进行(例如读,写操作)。

一组并发进程中的一个或多个程序段,因共享某一个公有资源而导致它们必须以一个不允许交叉执行的单位执行。即不允许两个以上的共享该资源的并发进程同时进入临界区称为互斥

进程的互斥是由于共享资源而引起的,为了描述这类情况,引入了临界资源和临界区的概念。

竞争资源(临界资源)

当并发进程竞争使用同一资源时,他们之间就会发生冲突。如果操作系统将资源分配给其中的某一个进程使用,另一个进程就必须等待,直到申请的资源可用时,由操作系统分配给他们,如果竞争资源的进程太多,这些进程还必须等待在一个队列中,如就绪队列,阻塞队列等。一种极端的情况是,被阻塞进程永远得不到申请的资源,而死锁,而使用临界资源,就只能有一个进程对资源进行处理,系统中一次只允许一个进程访问的资源。如I/O设备、共享文件、共享变量等。

临界区(critical section)

并发执行的进程中,访问临界资源的必须互斥执行的代码段叫临界区。临界资源一次仅允许一个进程使用的共享资源。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。

同步与互斥的解决方法:软件方法、硬件方法、信号量、管程、通讯机制。

每日三问/操作系统篇<2>:进程/线程同步有哪几种机制或控制方法?

1、临界区:

通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。它并不是核心对象,不是属于操作系统维护的,而是属于进程维护的。

2、互斥量:

为协调共同对一个共享资源的单独访问而设计的,互斥量跟临界区很相似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。互斥量比临界区复杂。因为使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。

3、信号量:

为控制一个具有有限数量用户资源而设计,信号允许多个线程同时使用共享资源 ,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。

4、事件:

用来通知线程有一些事件已发生,从而启动后继任务的开始,允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务。比如在某些网络应用程序中,一个线程如A负责侦听通信端口,另外一个线程B负责更新用户数据,利用事件机制,则线程A可以通知线程B何时更新用户数据。每个Cevent对象可以有两种状态:有信号状态和无信号状态。Cevent类对象有两种类型:人工事件和自动事件。

每日三问/操作系统篇<3>:进程/线程的同步机制应该遵循什么原则?

**空闲让进:**临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。

**忙则等待:**当已有`进程进入临界区时,其它试图进入临界区的进程必须等待。

**有限等待:**对请求访问的进程,应该保证能在有限时间内进入临界区。

让权等待: 当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值