zoukankan      html  css  js  c++  java
  • 软中断和硬中断

    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。

  • 相关阅读:
    北斗授时服务器,时间同步服务器,网络时钟服务器2020最新报价
    北斗GPS卫星同步时钟让采集系统更精准
    ntp时钟服务器(医院时钟系统)在网络里的作用
    「Excel技巧」Excel中根据某列的值去汇总另外一列的值
    「Excel技巧」Excel技巧之如何看文件里的宏?
    「杂谈」同学聚会最悲哀的事情
    torch 中的损失函数
    CJJ/T 302-2019 城市园林绿化监督管理信息系统工程技术标准
    SJ/T 11362-2006 企业信息化技术规范 制造执行系统(MES)规范
    1. C语言三个数从小到大排序/输出
  • 原文地址:https://www.cnblogs.com/Huayuan/p/2507150.html
Copyright © 2011-2022 走看看