linux 中断
摘自:http://www.kerneltravel.net/journal/viii/01.htm
计算机系统实现中断机制是非常复杂的一件工作,再怎么说人都是高度智能化的生物,而计算机作为一个铁疙瘩,没有程序的教导就一事无成。而处理一个中断过程,它受到的限制和需要学习的东西太多了。
首先,计算机能够接收的外部信号形式非常有限。PC给所有的外部刺激只留了一种输入方式——特定格式的电信号,并对这种信号的格式、接入方法、响应方法、处理步骤都做了规约,这种信号就是中断或中断信号,而这一整套机制就是中断机制。
其次,计算机不懂得如何应对信号。没有程序,它就纹丝不动。因此,必须有机制保证外部中断信号到来后,有正确的程序在正确的时候被执行。
还有,计算机不懂得如何保持工作的持续性。
那么,通用的计算机系统是如何解决这些问题的呢?它是靠硬件和软件配合来协同实现中断处理的全过程的。我们将通过Intel X86架构的实现来介绍这一过程。
CPU执行完一条指令后,下一条指令的逻辑地址存放在cs和eip这对寄存器中。在执行新指令前,控制单元会检查在执行前一条指令的过程中是否有中断或异常发生。如果有,控制单元就会抛下指令,进入下面的流程:
1. 确定与中断或异常关联的向量i (0<= i <=255)
2. 寻找向量对应的处理程序
3. 保存当前的“工作现场”,执行中断或异常的处理程序
4. 处理程序执行完毕后,把控制权交还给控制单元
5. 控制单元恢复现场,返回继续执行原程序
让我们深入这个流程,看看都有什么问题需要面对。
1、异常是什么概念?
在处理器执行到由于编程失误而导致的错误指令(例如除数是0)的时候,或者在执行期间出现特殊情况(例如缺页),需要靠操作系统来处理的时候,处理器就会产生一个异常。对大部分处理器体系结构来说,处理异常和处理中断的方式基本是相同的,x86架构的CPU也是如此。异常与中断还是有些区别,异常的产生必须考虑与处理器时钟的同步。实际上,异常往往被称为同步中断。
2、中断向量是什么?
中断向量代表的是中断源——从某种程度上讲,可以看作是中断或异常的类型。中断和异常的种类很多,比如说被0除
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
这一段时间一直进行Linux on floppy的尝试,借此希望能对如何构造一个Linux发行版本、Linux的启动、Linux系统的裁剪有一个深刻的认识。
在进行中,我有一些自己的心得体会,尤其是如何构造一个较小的Linux系统。这里贴出其中的一部分,希望能与各位共同分享。有不对的地方,也望各位高手能不吝赐教。
构造Linux on flop ......
第一步:裁减内核
打开终端,输入:cd /usr/src/linux2.4,然后输入make xconfig.现在编译内核正式开始了
1.1 “code maturity level options”选项,代表代码的成熟等级,因为这是一个试验的部分,我们不需要,所以关闭它。
1.2 “Loadable module support”可加载模块支持
可加载模块是指内核代 ......