科创园

科创园地,分享技术知识,为科技助力发展,贡献一己之力。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年2月24日

摘要: 异步通知的概念与作用异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上"中断"的概念,比较准确的称谓是"信号驱动的异步I/O"。Linux信号Linux系统中,异步通知使用信号来实现。信号也就是一种软件中断。信号的产生:kill raise alarm用户按下某些终端键;硬件异常;终止进程信号;软件异常。信号的处理:忽略该信号,但SIGSTOP SIGKILL不可忽略;捕捉该信号,并处理;执行默认操作。信号的接收捕捉信号,安装信号处理函数:void (*signal(int signum, v 阅读全文

posted @ 2012-02-24 22:09 科创园 阅读(635) 评论(0) 推荐(0) 编辑

摘要: 阻塞与非阻塞I/O还记得上篇 我们讲到的是linux中并发控制访问的手段有哪些????原子、信号量、自旋锁、互斥体。这是为了保护临界区的资源,是多个进程对共享资源的并发访问的一种处理手段。但是,在驱动程序中,我们常常为了支持用户空间对设备的灵活访问,引入了阻塞与非阻塞I/O两种不同模式。阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作。因为阻塞的进程会进入休眠状态,因此,必须确保有一个地方能够唤醒休眠的进程。唤醒进程的地方最大可能发生在中断里面,因为硬件资源获得的同时往往伴随着一个中断。注意:驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通 阅读全文

posted @ 2012-02-24 21:52 科创园 阅读(7542) 评论(0) 推荐(0) 编辑

摘要: 首先,让我们来回顾一下在简单的linux字符设备驱动中,我们是通过file_operation的连接实现了应用程序访问内核的接口,在各个注册的函数接口中,我们并没有考虑一些比较复杂的情况,比如:当一个进程在打开文件进行修改时候,而另一个进程也在打开修改,同时可能有一个进程正在阅读,这时候就会发生竞争了。因此linux中必须提供了一种针对多个进程共享资源的控制。废话少说:直接提出解决的方法。。。。。1、中断屏蔽 CPU一般具有开启中断和屏蔽中断的功能,该功能可以保证正在执行的内核执行路径不会被中断处理程序所抢占,,防止竞态条件的发生。 使用方法: local_irq_disable();/... 阅读全文

posted @ 2012-02-24 21:42 科创园 阅读(369) 评论(0) 推荐(0) 编辑