软中断和硬中断

摘要:
http://www.cnblogs.com/huayuan/archive/2012/05/18/2507150.html1中断:通常定义为改变处理器执行指令顺序的事件。这样的事件对应于由cpu芯片的外部电路生成的电信号。2.中断生成:每个可以发出中断请求的硬件设备控制器都有一条名为IRQ(中断线)的输出线。所有IRQ线路都连接到中断控制器的输入引脚

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。

免责声明:文章转载自《软中断和硬中断》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA SHA1 加密 对应 c# SHA1 加密C#支付宝支付接口H5版(手机网页支付)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux内核设计笔记8——下半部

下半部笔记 1. 软中断 软中断实现 软中断是在编译期间静态分配,其结构如下所示,结构中包含一个接受该结构体指针作为参数的action函数。 struct softirq_action{ void (*action)(struct softirq_action *); } 在kernel/softirq.c中定义了一个包含32个结构体的数组,每...

深入理解linux网络技术内幕读书笔记(十)--帧的接收

Table of Contents 1 概述1.1 帧接收的中断处理 2 设备的开启与关闭 3 队列 4 通知内核帧已接收:NAPI和netif_rx 4.1 NAPI简介4.1.1 NAPI优点 4.2 NAPI所用之net_device字段 4.3 net_rx_action软中断处理函数和NAPI 4.4 新旧驱动程序接口 概...

数据包从物理网卡流经 Open vSwitch 进入 OpenStack 云主机的流程

目录 文章目录 目录 前言 数据包从物理网卡进入虚拟机的流程 物理网卡处理 如何将网卡收到的数据写入到内核内存? 中断下半部分软中断处理 数据包在内核态 OvS Bridge(Datapath)中的处理 veth pair 的工作原理 将数据包交给 Linux Bridge 处理 将数据包送入虚拟机 tap 口 tap 口的数据包处理流程 vho...

[Linux内核]软中断与硬中断

转自:http://blog.csdn.net/zhangskd/article/details/21992933 本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。...

深入理解“软中断”

前言 软中断(softirq)导致 CPU 使用率升高也是最常见的一种性能问题 所以软中断这个硬骨头必须啃下去! 回忆下什么是中断 中断是系统用来响应硬件设备请求的一种机制 它会打断进程的正常调度和执行 然后调用内核中的中断处理程序来响应硬件设备的请求 场景类比,加深印象 比如说你订了一份外卖,但是不确定外卖什么时候送到,也没有别的方法了解外卖的进...

(案例5)软中断导致 CPU 使用率过高

前言 软中断基本原理,可参考这篇博客:https://www.cnblogs.com/uestc2007/p/14684499.html 中断 一种异步的事件处理机制,用来提供系统的并发处理能力 当中断事件发生,会触发执行中断处理程序 中断处理程序分为上半部和下半部 上半部:硬中断,快速处理中断 下半部:软中断,用来异步处理上半部未完成的工作  软...