摘要: 阻塞与非阻塞是设备访问的两种方式。驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通知)访问设备。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。 一、阻塞与非阻塞 阻塞调用是没有获得资源则挂起进程,被挂起的进程进入休眠状态,调用的函数只有在得到结果之后才返回,进程继续。 非阻塞是不能 阅读全文
posted @ 2016-01-31 16:43 touchcode 阅读(18305) 评论(2) 推荐(1) 编辑
摘要: 一.信号的本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到 阅读全文
posted @ 2016-01-30 00:23 touchcode 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 前言 Linux以进程为单位来执行程序。我们可以 将计算机看作一个大楼,内核(kernel)是大楼的管理员,进程是大楼的房客。每个进程拥有一个独立的房间(属于进程的内存空间),而每个房间都是不允 许该进程之外的人进入。这样,每个进程都只专注于自己干的事情,而不考虑其他进程,同时也不让别的进程看到自己 阅读全文
posted @ 2016-01-29 15:07 touchcode 阅读(180) 评论(0) 推荐(0) 编辑
摘要: System V 的IPC对象有共享内存、消息队列、信号灯(量)。 注意:在IPC的通信模式下,不管是共享内存、消息队列还是信号灯,每个IPC的对象都有唯一的名字,称为"键(key)"。通过"键",进程能够识别所用的对象。"键"与IPC对象的关系就如同文件名称于文件,通过文件名,进程能够读写文件内的 阅读全文
posted @ 2016-01-28 15:31 touchcode 阅读(1379) 评论(0) 推荐(0) 编辑
摘要: 共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制。共享内存可以通过mmap()映射普通文件 (特殊情况下还可以采用匿名映射)机制实现,也可以通过systemV共享内存机制实现。应用接口和原理很简单,内部机制复杂。为了实现更安全通信,往往还与信号灯等 阅读全文
posted @ 2016-01-28 09:47 touchcode 阅读(10576) 评论(1) 推荐(2) 编辑
摘要: 为什么要引入守护进程: 因为它生存期长,它独立于控制终端、会话周期(下文有解释)执行任务: 由于在linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依赖这个终端,这个终端就称为这些进程的控制终端。当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能突破这种 阅读全文
posted @ 2016-01-26 22:13 touchcode 阅读(658) 评论(1) 推荐(0) 编辑