摘要: 简述 linux下异步方式有两种:异步通知和异步IO(AIO),aio请参考:linux异步IO--aio 异步通知的含义是:一旦设备就绪,则主动通知应用程序,这样应用程序就不需要查询设备状态,准确称谓是“信号驱动的异步I/O”。 Linux的I/O机制经历了一下几个阶段的演进: 1. 同步阻塞I/ 阅读全文
posted @ 2018-03-18 18:21 yuxi_o 阅读(1447) 评论(0) 推荐(1) 编辑
摘要: 阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。而非阻塞的进程在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可以操作为止。 int fd; int data = 0; 阅读全文
posted @ 2018-03-18 17:37 yuxi_o 阅读(788) 评论(0) 推荐(0) 编辑
摘要: 解决竞态(race conditions)最根本的途径是对共享资源的互斥访问,访问共享资源的代码区被称为临界区(critical sections),对临界区的代码需要以某种互斥机制加以保护。常见的互斥机制有:中断屏蔽、原子操作、自旋锁、信号量、互斥体。1. 中断屏蔽由于linux内核的进程调度和异 阅读全文
posted @ 2018-03-18 17:18 yuxi_o 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 查阅内核代码时经常看到和应用到延时,本文用于归纳延时相关内容。 一. 短延时 短延时的本质是忙等。 毫秒时延已经很大了,在内核中,最好不要直接使用mdelay(),无谓消耗cpu资源,对于毫秒级以上时延,内核提供如下函数: msleep(),ssleep()不能被打断,msleep_interrup 阅读全文
posted @ 2018-03-18 16:52 yuxi_o 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 本文档只介绍中断编程所需的函数及应用,中断完整处理流程应参考文档《linux中断处理流程》。 本文档基于3.14内核。 0. 基础 中断取代了轮询的通知方式,DMA取代了轮询的读写数据方式。中断分类软件指令造成的中断(又叫异常,同步中断)。 svc, und, abt硬件通过中断请求信号造成的中断( 阅读全文
posted @ 2018-03-18 15:31 yuxi_o 阅读(795) 评论(0) 推荐(0) 编辑