`

linux信号 事件驱动机制

阅读更多

事件驱动机制

如果在编写单片机程序时,引入事件驱动机制,把中断响应与事件处理程序分离,中断服务程序的任务只是产生一个中断发生的标志,而事件处理则由处理程序来完成。主程序则负责判断标志和调度处理程序。

从而大幅提高系统对多中断的实时响应能力

 

在windows系统中,程序的设计围绕事件驱动来进行。当对象有相关的事件发生时(如按下鼠标键),对象产生一条特定的标识事件发生的消息,消息被传入消息队列,或不进入队列而直接发送给处理对象,主程序负责组织消息队列,将消息发送给相应的处理程序,使相应的处理程序执行相应的动作,做完相应的处理后将控制权交还给主程序。

 

在这种机制中,对象的请求仅仅是向队列中添加相应的消息,耗时的处理则被分离给处理函数。

这种结构的程序中各功能模块界限分明,便于扩充,能充分利用CPU的处理能力,使系统对外界响应准确而及时。

 

事件驱动在单片机程序的设计

与windows系统相比,单片机的资源非常有限,因此,单片机程序中的事件驱动机制只能采取一种简化的方式。

当某个中断发生时,中断服务程序设置相应的标志,不同的标志代表不同的中断发生的消息。

而主程序不断地判别这些标志,以决定启动哪一个处理函数。相应的处理函数被启动处理完相关的任务后,清楚此标志,然后把控制权交还给主程序。

 

信号本质 

信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。 

信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息。 

 

信号来源 

信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障);软件来源,最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作。 

 

分享到:
评论

相关推荐

    Linux内核驱动fsync机制实现图解.docx

    Linux内核驱动fsync机制实现图解 Linux内核驱动fsync机制实现图解可以分为四个方面:同步阻塞I/O、同步非阻塞I/O、异步阻塞I/O和异步非阻塞I/O。 同步阻塞I/O:应用程序显式地通过函数访问数据,在此函数返回时就...

    深入Linux设备驱动内核机制

    深入理解Linux设备驱动内核机制是一项复杂而重要的任务,它涉及到操作系统的核心部分——内核,以及如何通过编写高效的驱动程序来实现硬件与软件之间的交互。本文将围绕这一主题展开讨论,帮助读者更好地理解Linux...

    Linux字符设备驱动机制探索论文.doc

    Linux 字符设备驱动机制探索 本文档探索了 Linux 字符设备驱动机制,涵盖了字符设备概述、相关数据结构之间的关系说明、字符设备驱动实例、字符设备驱动中的并发控制、字符设备的阻塞与非阻塞操作等方面的知识点。 ...

    深入Linux设备驱动程序内核机制.zip

    《深入Linux设备驱动程序内核机制》是一本深入探讨Linux操作系统下设备驱动程序与内核交互的专著。这本书详细阐述了Linux系统中设备驱动的基本原理、设计模式以及实际开发中的关键技术,对于想要理解或从事Linux设备...

    深入Linux设备驱动程序内核机制.pdf

    《深入Linux设备驱动程序内核机制》这本书是Linux系统开发者和爱好者的重要参考资料,它详细讲解了Linux内核与设备驱动程序之间的交互原理和技术细节。在Linux操作系统中,设备驱动程序是连接硬件和操作系统内核的...

    linux 驱动开发资料

    9. Linux并发、同步、互斥机制:解释在驱动程序中实现多线程或多进程的并发控制的机制,如信号量、互斥锁、等待队列等。 10. Linux周期性事件:介绍内核定时器和内核线程的使用,它们是实现周期性任务的基础。 11....

    《Linux设备驱动开发详解-基于最新的Linux4.0内核》源码

    中断是设备向处理器发送的信号,表明有数据或事件需要处理。中断下半部则用于在中断处理程序执行完毕后,非抢占环境下完成剩余的工作。 DMA(直接内存访问)是一种提高数据传输效率的技术,允许设备直接读写内存,...

    嵌入式Linux按键驱动,支持短按和长按检测

    在嵌入式Linux系统中,按键驱动是与用户交互的重要组成部分。本文将深入探讨如何实现一个支持短按和长按检测的按键驱动,利用平台驱动框架、按键中断、内核定时器以及POLL机制,确保在休眠-唤醒场景下也能高效工作,...

    学习linux底层驱动笔记

    理解VFS(虚拟文件系统)的概念和机制对于编写驱动至关重要。 8. **编程接口**:驱动程序开发涉及大量内核API,如sysfs和procfs用于设备信息暴露,ioctl用于设备控制,以及kobject、device、driver等结构体用于设备...

    linux字符设备驱动实例

    可以使用内核提供的锁机制,如自旋锁(spinlock)、信号量(semaphore)等。 9. **调试与日志**:Linux内核提供了一套强大的调试工具,如`printk()`函数用于打印日志,`debugfs`用于创建调试文件,帮助开发者追踪和...

    Linux驱动IRDA红外遥控

    考虑到功耗和传输效率,驱动开发者可能会优化中断处理机制,提高数据传输速率,或者调整硬件设置以适应不同的红外遥控设备。 总的来说,Linux驱动IRDA红外遥控是一个涉及硬件交互、驱动编程和协议处理的综合技术,...

    LINUX 4.4.38 GT911驱动

    这个驱动程序可能包括了初始化代码、事件处理机制以及与内核交互的接口。 在"gt9xx"这个压缩包文件中,我们可以期待找到与GT911相关的源码文件和编译脚本。这些源码可能包含以下组件: 1. **驱动源码**:这是核心...

    yt8521 linux驱动源码

    - **中断处理**:设备发送中断信号给CPU,驱动响应并处理相关事件。 - **DMA(Direct Memory Access)**:设备直接访问内存,提高数据传输效率。 - **I/O调度**:对于块设备,如何管理I/O请求队列,平衡延迟和吞吐量...

    Linux设备驱动开发详解-基于最新的Linux4.0内核》配套代码.zip

    《Linux设备驱动开发详解-基于最新的Linux4.0内核》是一本深入讲解Linux设备驱动程序开发的专业书籍,配套代码存放在"learn-ldd-master-main"这个压缩包中,旨在帮助开发者理解并掌握在嵌入式Linux系统上编写驱动...

    SR9700 Linux系统驱动

    1. **中断处理**:中断是硬件向CPU发送的信号,表明需要立即处理某个事件。驱动程序需要定义中断处理函数,当硬件设备触发中断时,这个函数会被调用。 2. **设备注册**:驱动程序需要在内核中注册设备,这样系统...

    Linux设备驱动中的互斥机制.pdf

    Linux 设备驱动中的互斥机制 Linux 设备驱动程序在内核态下运行,需要解决并发控制问题,以避免临界资源的竞态。Linux 提供了多种互斥机制,包括中断屏蔽、原子操作、信号量和自旋锁等。本文将详细介绍这些互斥机制...

    LINUX+设备驱动程序(中文版)

    8. **多线程和同步**:在多处理器系统中,驱动程序可能需要处理多个并发请求,因此需要正确地使用锁、信号量等同步机制,以避免数据竞争。 通过阅读《LINUX+设备驱动程序(中文版)》,读者不仅可以了解Linux设备驱动...

    linux设备驱动程序

    3. **高级字符驱动程序操作**:在《Linux设备驱动程序(7)-高级字符驱动程序操作2》中,会涉及更复杂的驱动程序设计,如缓冲区管理、同步机制(互斥锁、信号量等)和异步I/O等。 4. **时间、延迟及延缓操作**:在...

    深入浅出Linux_设备驱动编程.rar_firet1r_linux设备驱动_linux驱动编程_深入浅出Linux_设备驱动编

    《深入浅出Linux_设备驱动编程》是一本针对Linux系统设备驱动编程的专著,适合对Linux内核机制和驱动开发感兴趣的软件工程师阅读。Linux设备驱动编程是连接硬件与操作系统的关键,通过编写设备驱动,我们可以使Linux...

Global site tag (gtag.js) - Google Analytics