对于管道和FIFO来说,必须应该先有读取者存在,否则先有写入者是没有意义的。而消息队列则不同,它是一个消息链表,有足够写权限的线程可往别的队列中放置消息,有足够读权限的线程可从队列中取走消息。每个消息都是一个记录,它由发送者赋予一个优先级。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。消息队列是随内核的持续性,一个进程可以往某个队列写入一些消息,然后终止,再让另外...
分类:
系统相关 时间:
2014-06-20 13:31:47
阅读次数:
298
系统加于管道和FIFO的唯一限制是:
1、OPEN_MAX 一个进程在任意时刻打开的最大描述符数。
2、PIP...
分类:
系统相关 时间:
2014-06-20 13:27:15
阅读次数:
339
管道是没有名字的,因此它只能在有qinyuan...
分类:
系统相关 时间:
2014-06-20 12:22:33
阅读次数:
442
互斥锁用于上锁,条件变量则用于等待。条件变量是类型为pthread_cond_t的变量。一般使用如下函数:
#include
int pthread_cond_wait(pthread_cond_t *cptr, pthread_mutex_t *mptr);
int pthread_cond_signal(pthread_cond_t *cptr);每个条件变量总是有一个互斥锁与之关联。调用...
分类:
系统相关 时间:
2014-06-08 17:45:15
阅读次数:
337
同步的内容在《UNP2》里把它看作了进程间通信,我觉得其实tongbuzhishi...
分类:
系统相关 时间:
2014-06-08 10:10:51
阅读次数:
330
概述
互斥锁把试图进入我们称之为临界区的所有其他线程都阻塞住。该临界区通常涉及对由这些线程共享一个或多个数据的访问或更新。读写锁在获取读写锁用于读某个数据和获取读写锁用于写直接作区别。读写锁的分配规则如下:
1、只要没有线程持有某个给定的读写锁用于写,那么任意数目的线程可以持有该读写锁用于读。
2、仅当没有线程持有某个给定的读写锁用于读或用于写时,才能分配该读写锁用于写。
即只要没有线程在...
分类:
系统相关 时间:
2014-06-08 09:54:51
阅读次数:
344
管道作为最古老的进程间通信方法,它有以下几个特点:
1、没有名字,因此...
分类:
系统相关 时间:
2014-06-07 16:12:47
阅读次数:
367
引言:高级I/O包括非阻塞I/O、记录锁、系统V流机制、I/O多路转接(select和poll函数)、readv和writev函数以及存储映射I/O。
(一)非阻塞I/O
可能会使进程永远阻塞的一类系统调用有:
1、如果某些文件类型的数据并不存在,则读操作可能会使调用者永远阻塞。
2、如果数据不能立即被上述同样类型的文件接受,则写操作也会使调用者永远阻塞。
3、在某种条件发生之前,打开某...
分类:
系统相关 时间:
2014-05-22 08:05:30
阅读次数:
432
守护进程也是一种进程,它由如下特性:
1、生存期较长,在系统自举时启动,仅在系统关闭时终止。
2、没有控制终端,在后台运行。
系统中有很多守护进程,它们执行日常事务活动。如日志进程syslogd、web服务器httpd、邮件服务器sendmail和数据块服务器mysqld等。大多数守护进程都是以超级用户(用户ID为0)特权运行。没有一个守护进程具有控制终端,其终端设置为问号(?),终端前台进...
分类:
系统相关 时间:
2014-05-18 09:32:23
阅读次数:
366
引言
假如在后台运行一个可执行程序./a.out,如果想终止该程序,通常会按下Ctrl-C,从而产生一个中断,其实这个过程的实现就是通过信号完成的。信号是软件中断,它提供了一种处理异步事件的方法。
(一)
每个信号都有一个名字,这些名字都以三个字符SIG开头。例如SIGALARM是闹钟信号,当由alarm函数设置的计时器超时后产生此信号。Linux除支持31种不同信号外,还支持应用程序额外定...
分类:
系统相关 时间:
2014-05-18 04:50:12
阅读次数:
347