在操作系统中,进程之间经常会存在互斥(都需要共享独占性资源时)和同步(完成异步的两个进程的协作)两种关系。而信号量和PV操作完美有效的处理了这两种情况。
互斥:就好比过独木桥,一次只能执行一个进程。
同步:好比一个人骑车一个人步行,双方协作完成一件事情,速度快的每过一段时间就停下来等等速度慢的
信号量是...
分类:
其他好文 时间:
2014-10-07 17:55:09
阅读次数:
364
信号量基础和两个经典例子
信号量(semaphore)
用于进程中传递信号的一个整数值。
三个操作:
1、一个信号量可以初始化为非负值
2、semWait操作可以使信号量减1,若信号量的值为负,则执行semWait的进程被阻塞。否则进程继续执行。
3、semSignal操作使信号量加1。若信号量的值小于等于0,则被semWait操作阻塞的进程讲被接触阻塞。
ps: semWait对应P原语,semSignal对应V原语。
信号量以及PV原语的C语言定义如下...
分类:
其他好文 时间:
2014-10-05 17:37:18
阅读次数:
225
linux下的同步和互斥
Linux sync_mutex
Semaphore.h
一份好文档,胜读十年书
本文参考了诸多资料,百度百科,cplusplus等
首先介绍一个头文件
#include
这里面包含了大多数的所需要使用的信号量.
包含:
int sem_init(sem_t *sem, int pshared, unsigned int value)...
分类:
系统相关 时间:
2014-10-03 23:39:55
阅读次数:
378
起因:最近需要从hbase中向 ES中导一批数据,使用multiprocessing 启动多个程序同时向ES导数据,可以大大提高效率,因为导数的任务是可以按照时间分割的。
令我十分不解的,multiprocessing 是如何实现任务的分发,以及结果的回传的。我希望能够把它的实现机制与操作系统的进程机制对应起来。
经过阅读代码,得出的结论如下:
1. 父进程作为整个任务的分发器,每个worker是一个子进程
2. 子进程和父进程之间通过管道通讯,包括任务的分发和结果的回传(2个【管道】) ,管道通过【信号量...
分类:
其他好文 时间:
2014-10-03 13:57:04
阅读次数:
284
概述1、Linux使用的进程间通信方式主要包括:(1)管道(pipe)和有名管道 (2)信号(signal) (3)共享内存 (4)消息队列 (5)信号量 (6)套接字(socket)2、问:为什么进程间需要通信?(1)数据传输 一个进程需要将它的数据发送给另外一个进程(2)资源共享 ...
分类:
其他好文 时间:
2014-10-02 18:46:03
阅读次数:
183
现在linux使用的进程间通信方式:(1)管道(pipe)和有名管道(FIFO)(2)信号(signal)(3)消息队列(4)共享内存(5)信号量(6)套接字(socket)为何进行进程间的通信:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共..
分类:
系统相关 时间:
2014-10-01 00:27:41
阅读次数:
368
首先,先来看几个概念:
同步:协作的过程,例如,多人开发合作;
互斥:争抢资源的过程,例如苦逼的大学选课;
临界区:进程中对临界资源实施操作的那段程序;
临界资源:一次只能一个进程使用的资源,例如打印机;
信号量:表示资源数量;相对于各个进程来说的;
P操作(-1):申请资源;
V操作(+1):释放资源;
一,单缓冲区的生成者消费者问...
分类:
其他好文 时间:
2014-09-29 22:36:31
阅读次数:
173
如今最经常使用的进程间通信的方式有:信号,信号量,消息队列,共享内存。 所谓进程通信,就是不同进程之间进行一些"接触",这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信是一个广义上的意义,不仅仅指传递一些massege。他们的用法是基本相同的,所以仅仅要掌握了一种的用法,然后记住其他的用.....
分类:
系统相关 时间:
2014-09-29 12:42:20
阅读次数:
145
一些理论基础:信号量:又称为信号灯、旗语 用来解决进程(线程同步的问题),类似于一把锁,访问前获取锁(获取不到则等待),访问后释放锁。临界资源:每次仅允许一个进程访问的资源。临界区:每个进程中访问临界资源的那段代码叫临界区进程互斥:两个或以上的进程不能同时进入关于同一组共享变量的临界区域,即一个进程...
分类:
Web程序 时间:
2014-09-29 01:11:07
阅读次数:
242
并发及其管理
竞态通常作为对资源的共享访问结果而产生当两个执行线程需要访问相同的数据结构(或硬件资源)时,混合的可能性就永远存在只要可能就应该避免资源的共享共享通常是必需的,硬件资源本质上就是共享的访问管理的常见技术称为“锁定”或者“互斥”
信号量和互斥体
建立临界区:在任意给定的时刻,代码只能被一个线程执行可以使用一种锁定机制,当进程在等待对临界区的访问时,此机制可让进程进入休眠状...
分类:
系统相关 时间:
2014-09-27 23:04:20
阅读次数:
297