网站大量收购独家精品文档,联系QQ:2885784924

Linux信号及软中断.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux信号及软中断

Linux信号及软中断 软中断 软中断一般是指由指令int引起的“伪”中断动作——给CPU制造一个中断的假象;而硬中断则是实实在在由8259的连线触发的中断。因此,严格的讲,int和IRQ毫无关系,但二者均和中断向量有关系。int引起的中断,CPU是从指令中取得中断向量号;而IRQ引起的中断,CPU必须从数据线上取回中断号(硬件引发中断首先加到8259的某个IRQ引脚上,8259根据定义好的规则换算出相应的中断向量号,将其放在数据线上,然后通知CPU中断到来)。接下来CPU的工作就一样了:保护现场、根据中断号得到中断处理程序地址、执行中断处理、恢复现场继续执行被中断的指令。Windows驱动程序一般不能直接接管中断,中断是由内核的VPICD接管,驱动程序只是向VPICD注册中断服务,中断服务将由VPICD调用。这样可以有效的实现虚拟设备:虚拟不存在的设备或者改变已存在的物理设备的行为。 Linux用int $80来实现系统调用异常 .这一指令使用中断/异常向量号128(即16进制的80)将控制权转移给内核。为达到在使用系统调用时不必用机器指令编程,在标准的C语言库中为每一系统调用提供了一段短的子程序,完成机器代码的编程工作。事实上,机器代码段非常简短。它所要做的工作只是将送给系统调用的参数加载到CPU寄存器中,接着执行int $0x80指令。然后运行系统调用,系统调用的返回值将送入CPU的一个寄存器中,标准的库子程序取得这一返回值,并将它送回用户程序. 一般现在的核心有190个左右的系统调用 ,可以看/usr/src/linux/代码目录下的 5.init/main.c 6.arch/i386/kernel/traps.c 7.arch/i386/kernel/entry.S 8.arch/i386/kernel/irq.h 9.include/asm-386/unistd.h 几个文件 希望和你共进步 1、内中断(软中断) 指CPU执行某些特殊操作或由INT指令引起的中断 ① 被零除操作或OF=1时执行INTO指令引起 ② 使用DEBUG中的单步或断点设置操作引起 ③ 执行INT n 指令引起 指外部芯片通过 CPU的INTR引脚或NMI引脚 发出中断申请引起的中断。 当INTR上有高电平信号 当NMI上有上升沿信号 可屏蔽中断 由INTR引脚引起的中断,称可屏蔽中断。 CPU是否响应INTR引脚上的中断请求取决于IF标志: IF=1,CPU响应INTR引脚上的中断请求 IF=0,CPU不响应INTR引脚上的中断请求 即当IF=0时,将INTR引脚上的中断申请屏蔽。 软中断对应的英文单词是software interrupt 硬中断对应的英文单词是hardware interrupt 有三种类型的中断: (1)traps(可翻译为自陷,同时在一些地方称做software interrupt(可翻译为软中断); (2)exceptions(可翻译为“异常”) (3)interrupts(也可称为“hardware interrupts) interrupts 是有外部设备引起的中端。 traps 是使用int n这样的指令引起的中断 exceptions 类似于traps。但有所不同。traps 是无条件的。当执行int n时,系统就去调用n所对应的中断服务程序。 而except是某些程序执行中,出现了一些异常情况时(比如说,出现除领的情况),系统就会调用异常服务程序。这是有条件的。 在软中断和硬中断之间的区别是什么? ①硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。 ②硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需发中断回合信号。 ③硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中断号由指令直接给出,无需使用中断控制器。 ④硬中断是可屏蔽的(NMI硬中断不可屏蔽),软中断不可屏蔽。 编制一段程序,使其实现进程的软中断通信。 要求:使用系统调用fork()创建两个子

文档评论(0)

htfyzc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档