UNIX 内核管理的进程自主地操作,从而产生更稳定的系统。然而,每个开发人员最终都会遇到这样的情况,即其中一组进程需要与另一组进程通信,也许是为了交换数据或发送命令。这种通信称为进程间通信(Inter-Process Communication,IPC)。System V (SysV) UNIX 规范描述了以下三种 IPC 机制,它们统称为 SysV IPC:...
分类:
系统相关 时间:
2014-05-22 12:49:46
阅读次数:
469
In a multicore environment—where system resources must be shared—it is important to control simultaneous accesses to the available resources. To ensure correct system operation, it is necessary to lim...
分类:
其他好文 时间:
2014-05-22 07:18:54
阅读次数:
308
浅解多线程(一)之线程入门起步本文链接确定多线程的结束时间,thread的IsAlive属性线程优先级,thread的ThreadPriority属性线程通信之Monitor类线程排队之Join多线程互斥锁Mutex信号量semaphore确定多线程的结束时间,thread的IsAlive属性在多个...
分类:
编程语言 时间:
2014-05-19 07:01:07
阅读次数:
776
Linux提供两种信号量:
1、内核信号量,由内核控制路径使用
2、System V IPC信号量,由用户态进程使用
从本质上说,它们实现了一个加锁原语,即让等待者睡眠,直到等待的资源变为空闲。
信号量
内核信号量类似于自旋锁,因为当锁关闭着的时候,它不允许内核控制路径继续运行。然而,当内核内核控制路径试图获取内核信号量所保护的忙资源时,相应的进程被挂起。只有在资源被释放时,进程才再次变...
分类:
其他好文 时间:
2014-05-18 18:43:39
阅读次数:
294
线程的同步可分用户模式的线程同步和内核对象的线程同步两大类。
用户模式中线程的同步方法主要有原子访问和临界区等方法。其特点是同步速度特别快,适合于对线程运行速度有严格要求的场合。
内核对象的线程同步则主要由事件、等待定时器、信号量以及信号灯等内核对象构成。由于这种同步机制使用了内核对象,使用时必须将线程从用户模式切换到内核模式,而这种转换一般要耗费近千个CPU...
分类:
编程语言 时间:
2014-05-18 14:32:18
阅读次数:
293
PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作。
信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关...
分类:
其他好文 时间:
2014-05-16 00:07:15
阅读次数:
344
进程间的通信(2)
有三种IPC我们称为XSI IPC,即消息队列、信号量以及共享存储器,它们之间有很多相似之处。
标识符和键
每个内核的IPC结构(消息队列、信号量或共享存储段)都用一个非负整数的标识符加以引用。例如,为了对一个消息队列发送或取消息,只需要知道其队列标识符。与文件描述符不同,IPC标识符不是小的整数。当一个IPC结构被创建,以后被删除时,与这种结果相关的标识符连续加1,知道...
分类:
系统相关 时间:
2014-05-15 07:16:02
阅读次数:
454
共享内存是两个或多个进程共享同一块内存区域,并通过该内存区域实现数据交换的进程间通信。虽然共享内存是进程间通信的最快速的机制,但是进程间的同步问题靠自身难以解决,于是就需要信号量机制,信号量能很好的解决互斥资源的同步问题。这些牵涉到操作系统里的知识,要好好研究一番同步互斥问题才能继续。
共享内存的工作模式一般是:
1. int shmget(key_t key, int size...
分类:
其他好文 时间:
2014-05-13 23:08:44
阅读次数:
763
接着上一篇博文,原来双线程,现在为了实现暂停/继续功能,又加了一个线程。第三线程使用条件信号量,当用户按下S键,第三线程将检测到,并且将ifpause置为1,然后输出线程将在if语句成立后被条件信号量cond阻塞。此时第三线程依然运行。当检测到按下R后,ifpause置为0,并且使..
分类:
编程语言 时间:
2014-05-13 01:02:13
阅读次数:
507