什么是异常和中断
答案:2 悬赏:20 手机版
解决时间 2022-01-01 08:16
- 提问者网友:且恨且铭记
- 2021-12-31 19:35
什么是异常和中断
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-12-31 19:47
先简单描述一下中断和异常相关的基本概念:中断是一种机制,这种机制使I/O设备能够打断cpu当前正在进行的计算,这种机制使cpu能够同时进行计算和I/O操作。异常,当cpu在执行指令的时候探测到一个错误条件,就会产生一个异常,比如被零除,访问的数据当前不在内存中等。不管是中断还是异常,内核是通过中断向量号来识别的,cpu将中断向量号做为中断描述表的索引,相应的表项中包含了中断处理程序或者异常处理程序的地址。这里将不讨论I/O设备产生的中断,因为其牵扯的内容多且有点复杂,留作以后分析。因为异常是cpu内部识别的,所以其对应的中断向量号是固定的,处理期间中断对应的中断向量号也是固定的,将从这些中断和异常里面摘取几个典型简要分析一下,看看在能处理异常和中断前,freebsd9.2所完成的初始化工作以及IA32提供的中断处理机制。[IA32:高级可编程中断控制器(APIC)]-对于APIC,下面简单介绍一下相关概念以及用来发送处理器间中断的寄存器,详细信息可以参考Intel 64 and IA-32 ArchitecturesSoftware Developer’s Manual Volume 3A第十章,将处理器间中断简称为IPI。在IA32中,APIC分为local APIC和I/O APIC两种:local APIC,主要用来完成:1:从cpu的处理器引脚,或者外部中断源,或者外部的I/O APIC接收中断,并将中断发送给处理器核心进行处理。2:在SMP系统中,local APIC从系统总线上接收其它cpu发送的IPI消息或者将IPI消息通过系统总线发送给其它cpu,IPI消息 也可以用来在系统中的cpu间分发中断。I/O APIC:主要用来接收I/O设备产生的中断,并且将中断转换为中断消息发送给local APIC,关于I/O 1PIC将不会去深入分析, 知道其作用就行;作为一个实例,大家可以参考82093AA I/O APIC这个中断控制器芯片的详细说明。local APIC和I/O APIC的关系图如下所示: local APIC包含了一组寄存器,在local APIC能正确工作之前,要初始化这些寄存器,其中有些寄存器是只读的,在SMP系统的配置中,这组寄存器被映射到一个大小为4KB的连续物理地址空间中,起始物理地址为FEE00000H,当然也可以通过修改IA32_APIC_BASE MSR这个寄存器来更改起始物理地址。下面简单描述一下两个local APIC寄存器:Local APIC ID Register和Interrupt Command Register。[Local APIC ID Register]:在加电时,系统硬件会给每个local APIC分配一个唯一的APIC ID,系统硬件基于系统拓扑以及编码插槽位置信息等获取一个APIC ID。在SMP系统中,BIOS和操作系统使用local APIC ID 作为cpu的id,和前面描述的logical cpu id不同,该寄存器如下图所示。 [Interrupt Command Register]-该寄存器是64bit,主要用来发送IPI,为了发送一个IPI,必须要正确的构造这个寄存器,向低32位执行一个写操作,将导致一个IPI被发送,寄存器详细格式如下图所示,正确构造这个寄存器就是用正确的值来初始化其中的字段: 只关......余下全文>>
全部回答
- 1楼网友:長槍戰八方
- 2021-12-31 21:12
谢谢回答!!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯