软中断和硬中断

http://www.cnblogs.com/huayuan/archive/2012/05/18/2507150.html

1、中断:
通常被定义成一个事件,该事件改变处理器执行的指令顺序。这样的事件与cpu芯片外部电路产生

的电信号相对应。
2、中断的产生:
每个能够发出中断请求的硬件设备控制器都有一条称为IRQ的输出线(中断线)。所有的IRQ线都

与一个中断控制器的输入引脚相连,中断控制器与cpu的intr引脚相连。
3、中断向量:
每个中断由0-255之间的一个8位数来标识。称为中断向量。
4、中断描述符表:
IDT是一个系统表,它与每一个中断或者异常向量相联系,每一个向量在表中有相应的中断处理程

序的入口地址。cpu的idtr寄存器执行IDT表的物理基地址。
5、中断的硬件处理:
在内核被init进程初始化后,cpu运行在保护模式下。当执行一条指令后,sc和eip这对寄存器包

含了下一条将要执行的指令的逻辑地址。在执行这条指令之前,cpu控制单元会检查在运行前一条指令时是

否发生了一个中断。如果发生了,cpu控制单元处理中断。

软中断:

软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。
硬中断是外部设备对cpu的中断。
软中断通常是硬中断服务程序对内核的中断。(中断服务程序和中断处理程序不同)
信号则是由内核或者其他进程对某个进程的中断。
理解:因为每个进程空间或者线程空间都是在一定程度上相对逻辑独立的,类似于外部设备DMA相

对于cpu。所以从理论上说,是可以实现中断的。
扩展:信号量与消息队列都是提供给用户程序的,是内核服务的一种封装。

进程内核栈和用户栈:
每个进程都有两个栈:用户栈和内核栈。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内

容是用户堆栈地址。同理,进程在内核空间运行时,eip值是内核栈空间地址。
进程用户栈和内核栈的切换,当进程因为中断或者系统调用而陷入内核态执行时,进程所使用的

堆栈也要从用户栈转到内核栈。
检查信号中断时在内核态即将进入用户态的时候,而不是任何时候都检查的。
软中断时软件实现的中断,也就是程序运行时其他程序对它的中断。
中断源发中断请求或者软中断信号后,cpu或者接收进程在适当的时机自动进行中断处理或者完成

软中断信号对应的功能。
软中断发生的时间是由程序控制的,而硬中断时随机的。
构成软中断机制的核心元素:
软中断状态寄存器irq_stat:
软中断向量表:
软中断守护daemon:这是软中断实现的核心,通过查询irq_stat判断软中断是否发生。
软中断的工作过程模拟了硬中断过程,当某一个软中断事件发生后,首先需要设置对应的中断标

记位,触发中断事务,然后唤醒守护进程去检查中断状态寄存器,如果查询发现某一个软中断事务发生,

那么通过软中断向量表调用软中断服务程序action。

时间: 2024-10-13 15:13:28

软中断和硬中断的相关文章

软中断与硬中断 & 中断抢占 中断嵌套

参考了这篇文章:http://blog.csdn.net/zhangskd/article/details/21992933 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器. 如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚.处理器于是立即停止自己正在做的事, 跳到中断处理程序的入口点,进行中断处理. (1) 硬中断 由与系统相连的外设(比如网卡.硬盘)自动产生的.主要是用来通知操作系统系统外设状态的变化.比如当网卡收

软中断和硬中断(转)

1.中断:通常被定义成一个事件,该事件改变处理器执行的指令顺序.这样的事件与cpu芯片外部电路产生 的电信号相对应.2.中断的产生:每个能够发出中断请求的硬件设备控制器都有一条称为IRQ的输出线(中断线).所有的IRQ线都 与一个中断控制器的输入引脚相连,中断控制器与cpu的intr引脚相连.3.中断向量:每个中断由0-255之间的一个8位数来标识.称为中断向量.4.中断描述符表:IDT是一个系统表,它与每一个中断或者异常向量相联系,每一个向量在表中有相应的中断处理程 序的入口地址.cpu的id

硬中断和软中断(转)

来自:http://blog.csdn.net/zhangskd/article/details/21992933 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器. 如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚.处理器于是立即停止自己正在做的事, 跳到中断处理程序的入口点,进行中断处理. (1) 硬中断 由与系统相连的外设(比如网卡.硬盘)自动产生的.主要是用来通知操作系统系统外设状态的变化.比如当网卡收到数

硬中断与软中断的区别!!!

硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程). 2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断.在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理

基于 Linux 2.6的 硬中断 / 软中断的原理以及实现

Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器. 如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚.处理器于是立即停止自己正在做的事, 跳到中断处理程序的入口点,进行中断处理. 有关概念 (1) 硬中断 由与系统相连的外设(比如网卡.硬盘)自动产生的.主要是用来通知操作系统系统外设状态的变化.比如当网卡收到数据包的时候,就会发出一个中断.我们通常所说的中断指

关于linux硬中断、软中断、软中断指令、信号的简明解释

硬中断: 1.同步中断(内部中断/异常) core内部触发的中断,当中断发生时.会等待流水线完成后,再去执行中断.包含软中断指令.中断的标志由软件或者硬件设置. 2.异步中断(外部中断/中断) core外部触发的中断,当中断发生时.不会等待流水线完成,就会立即执行.此时流水线作废.中断的标志由硬件设置. 软中断: linux中断机制的下半部分(下半部:软中断,普通进程处理方式).软件上模拟硬件中断,达到异步调用下半部服务函数的功能. 软中断指令: 由程序设置中断标志后,硬件接着执行中断的相关操作

Linux性能优化从入门到实战:05 CPU篇:硬中断、软中断

??软中断(softirq)会导致CPU 使用率升高 ??中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求.中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力.由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行.并且当CPU执行在中断处理函数中时,不会响应同时发生的又一次中断. ??所以为了加快中断处理程序执行和解决中断丢失的问题,Linux将中断分为上半部和

把握linux内核设计(二):硬中断及中断处理

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 操作系统负责管理硬件设备,为了使系统和硬件设备的协同工作不降低机器性能,系统和硬件的通信使用中断的机制,也就是让硬件在需要的时候向内核发出信号,这样使得内核不用去轮询设备而导致做很多无用功. 中断使得硬件可以发出通知给处理器,硬件设备生成中断的时候并不考虑与处理器的时钟同步,中断可以随时产生.也就是说,内核随时可能因为新到来的中断而被打断.当接收到一个中断后,中断控制器会给处

中断(interrupt)、异常(exception)、陷入(trap)

http://blog.chinaunix.net/cp.php?ac=blog 中断:是为了设备与CPU之间的通信.典型的有如服务请求,任务完成提醒等.比如我们熟知的时钟中断,硬盘读写服务请求中断.中断的发生与系统处在用户态还是在内核态无关,只决定于EFLAGS寄存器的一个标志位.我们熟悉的sti, cli两条指令就是用来设置这个标志位,然后决定是否允许中断.在单个CPU的系统中,这也是保护临界区的一种简便方法.中断是异步的,因为从逻辑上来说,中断的产生与当前正在执行的进程无关.事实上,中断是