第八章 中断与系统功能调用
操作系统的中断、异常和系统调用
操作系统的中断、异常和系统调⽤操作系统的中断、异常和系统调⽤
中断
硬件
设置中断标记【CPU初始化】
将内部、外部事件设置中断标记
中断事件的ID
软件
保存当前处理状态
中断服务程序处理
清除中断标记
恢复之前保存的处理状态
异常
异常编号
保存现场
异常处理
杀死产⽣异常程序
重新执⾏异常指令
恢复现场
系统调⽤
应⽤程序调⽤printf(),会触发write()。
程序访问主要是通过⾼层次的api接⼝⽽不是直接进⾏系统调⽤。
win32 api ⽤于 Windows
POSIX api ⽤于 Unix,Linux,MacOSX
Java api ⽤于java虚拟机(JVM)
其实也实现调⽤java api随后调⽤对应操作系统的api
操作系统如何完成系统调⽤(⽤户态到<--->内核态)
通常情况,与每个系统调⽤相关的序号
系统调⽤接⼝根据序号维护表的索引
系统调⽤接⼝调⽤内核态中预期的系统调⽤
并返回系统调⽤的状态和其他任何返回值
⽤户不需要知道系统调⽤是如何实现的
只需要获取API和了解操作系统讲什么作为返回结果
操作系统接⼝细节⼤部分都隐藏在API中
系统调⽤中,操作系统和应⽤程序的堆栈是不同的。
跨越操作系统便边界的代价
在执⾏时间上的开销超过程序调⽤
对应中断号,堆栈切换保存与恢复
开销:
建⽴中断/异常/系统调⽤号与对应服务例程映射关系的初始化开销
建⽴内核堆栈
验证参数
内核态映射到⽤户态的地址空间
更新页⾯映射
内核独⽴地址空间
TLB。
中断在操作系统中的应用
中断服务程序
中断处理
返回断点
中断源:指能够引起中断的原因或发出中断申请 的来源。主要有以下几类:
(1)外部设备请求中断。一般的外部设备如键盘、 磁盘驱动器、磁带机、打印机等在工作告一段落后 发出中断请求,要求CPU为它服务。 (2)实时时钟请求中断。如定时/计数器,先有CPU 发出指令,让时钟电路开始计时工作,待规定的时 间到,时钟电路发出中断申请,CPU转入中断服务程 序进行中断处理。
输入 锁存器 三态 缓冲器
输入 设备
数据总线
中断请求 +5 V D Q &
端口 译码
地址总线 RD
Q 中断屏蔽 & INT
中断排队:通常,系统中有多个中断源,当有多个中断源同时发出 中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。 为此,计算机给每个中断源规定了优先级别,称为优先权。这样, 当多个中断源同时发出中断请求时,优先权高的中断能先被响应, 只有优先权高的中断处理结束后才能响应优先权低的中断。计算机 按中断源优先权高低逐次响应的过程称优先权排队,这个过程可通 过硬件电路来实现,亦可通过软件查询来实现。 1.中断优先级 中断请求是随机发生的,当系统具有多个中断源时,有时会同时出 现多个中断请求,CPU只能按一定的次序予以响应和处理,这个响应的次 序称为中断优先级。对于不同级别的中断请求,一般的处理原则是: (1) 不同优先级的多个中断源同时发出中断请求,按优先级由高到低依 次处理。 (2) 低优先级中断正在处理,出现高优先级请求,应转去处理高优先级 请求,服务结束后再 返回原优先级较低的中断服务程序继续执行。 (3) 高优先级中断正在处理,出现低优先级请求,可暂不响应。 (4) 中断处理时,出现同级别请求,应在当前中断处理结束以后再处理 新的请求。
MS-DOS软件中断与系统功能调用-吉林大学-徐嵩
MS-DOS软件中断与系统功能调用-吉林大学-徐嵩MS-DOS软件中断与系统功能调用操作系统是系统软件的核心,它负责管理计算机的所有资源,协调计算机的各种操作。
操作系统和编辑程序、汇编程序、连接程序、调试程序等一系列系统实用程序一起组成微型计算机的系统软件。
MS-DOS是PC机上用得最普遍的操作系统,其主要功能可以分为两方面。
一个是设备管理功能,管理显示器、键盘、磁盘、打印机、异步通信口等各种设备资源;另一个是文件管理功能,包括如何在磁盘上建立文件、删除文件、读/写文件和检索文件等。
MS-DOS采用层次化模块结构,它有基本输入/输出模块BIOS、磁盘管理模块、命令处理模块这3个主要模块。
它从两个层次上向用户提供了接口,普通用户可以通过键盘命令在命令处理模块这个层次上和操作系统打交道。
高级用户可以通过软件中断和系统功能调用在MS-DOS的较低层次上,即磁盘管理模块和基本输入/输出模块,和操作系统打交道。
MS-DOS能处理的命令分内部命令和外部命令两类。
内部命令往往是最常用的一些命令,如目录显示命令DIR、复制文件命令COPY、文件改名命令REN等,它们所对应的命令执行模块就在/doc/4a11835156.html,程序内部。
大部分命令属于外部命令,一个外部命令的处理要通过此命令所对应的一个命令文件的执行来实现。
例如,我们要设计、运行用汇编语言编写的程序,就要用到下列外部命令,用编辑命令EDLIN来编辑文件,用汇编命令MASM来得到目标文件,用连接命令LINK来得到可执行文件,在程序被确认完全正确之前,还要用调试命令DEBUG进行调试。
MS-DOS的主要系统功能都是用中断处理程序的形式来提供的,用户可以按照一定的格式在指定寄存器中存放好某一适当的参数,再用一条INT中断指令,便可调用某个中断子程序,这就是利用软件中断方法来调用操作系统的功能。
因为类型为21H的软件中断所对应的中断处理程序中包含了实现外部设备管理功能、文件读/写功能和管理功能、目录管理功能等最常用的功能子程序,它们几乎包括了整个系统的功能,所以系统功能调用这个术语通常指对类型为21H的软件中断。
第八章子程序与中断调用
8.2 子程序的设计要求
• 适合于编制为子程序的功能模块:
• (1)字处理软件中:在字符串中查找某一个给定 的字符;比较两个字符串是否相等;合并两个字 符串;在字符串指定位置插入一个新的字符;删 除字符串指定位置的字符。
• (2)图形生成软件中:在屏幕指定位置显示一个 点;在屏幕指定位置显示一条直线;在屏幕指定 位置显示一个多边形。
堆栈传递方式
• ; 存放ASCII串首地址压栈
• LEA
AX, ASCBUF
• PUSH AX
• CALL BITASC ;调子程序
• MOV AX, BIN16
• PUSH AX
• MOV AX, 16
• PUSH AX
堆栈传递方式
• ; 置存放ASCII串首址 • LEA AX, ASCBUF+10H • PUSH AX • CALL BITASC • MOV AH, 4CH • INT 21H
A的返回点
8.3 子程序与主程序间的参数传递
• 结合一个实际例子说明三种参数传递方式
• 子程序功能:实现对8位或者16位二进制数 的ASCII转换,转换后得到的字符串存放在 主程序指定的位置。
8.3 子程序与主程序间的参数传递
• 入口参数: • 1)待转换的二进制数 • 2)转换位数 • 3)转换后字符串存放的首地址
• CALL指令在把程序流程转向目标地址 (子程序的首地址)之前,会把返回地址 首先压入堆栈保存,为子程序返回主程序 提供必要条件.
8.1.2 子程序的调用与返回
• CALL指令功能:保存返回地址到堆栈,把 程序流程转移到子程序的入口地址。
中断处理和函数调用
中断处理和函数调用中断处理和函数调用是计算机编程中常见的两个概念,它们在程序执行过程中起着重要的作用。
本文将分别详细介绍中断处理和函数调用的概念、原理和应用。
一、中断处理中断处理是指在计算机执行程序的过程中,当发生某些特定事件时,会暂停当前程序的执行,转而执行中断处理程序。
中断处理可以分为硬件中断和软件中断两种类型。
硬件中断是由计算机硬件设备发出的信号,用于通知CPU某种事件的发生,如键盘输入、鼠标移动等。
当发生硬件中断时,CPU会立即停止当前正在执行的指令,保存当前执行环境的状态,然后转而执行与中断相关的中断处理程序。
中断处理程序执行完毕后,CPU 会回到中断发生的地方,继续执行原来的程序。
软件中断是由程序中的特定指令触发的中断。
在程序中通过软件中断指令,可以主动暂停当前程序的执行,并转而执行与中断相关的中断处理程序。
软件中断通常用于实现一些特定功能,如系统调用、异常处理等。
中断处理在操作系统、驱动程序等领域有着广泛的应用。
通过中断处理,计算机可以及时响应外部设备的请求,提高系统的实时性和可靠性。
二、函数调用函数调用是指在程序中通过函数名和参数列表来调用特定的函数。
函数是一段封装了特定功能的代码块,通过函数调用可以在程序中多次使用同一段代码,提高了代码的复用性和可维护性。
在函数调用过程中,首先需要将函数的参数传递给函数,然后执行函数体中的代码。
函数执行完毕后,会返回一个返回值,并将控制权交还给调用函数的位置。
函数调用可以嵌套,即在一个函数内部调用另一个函数。
函数调用可以分为有返回值和无返回值两种类型。
有返回值的函数可以将计算结果返回给调用者,无返回值的函数则仅执行一些操作而不返回结果。
函数调用是程序结构化的基础,通过合理的函数调用可以使程序结构清晰、模块化,便于理解和维护。
函数调用也是实现面向对象编程的重要手段,通过定义类和方法,可以将函数调用封装成对象的方法调用。
三、中断处理与函数调用的关系中断处理和函数调用在程序执行过程中有着密切的联系。
系统调用与中断的关系
系统调用与中断的关系系统调用与中断的关系1.中断课本中“中断”的定义:所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序的预先安排引起CPU暂停正在运行程序,而转到为内部/外部事件或为预先安排事件服务的程序中去。
服务完毕,再返回去继续执行被暂停的程序。
中断可分为三类,第一类是由CPU外部引起的,称作中断,如I/O中断、时钟中断、控制台中断等。
第二类是来自CPU的内部事件或程序执行中的事件引起的过程,称作异常,如由于CPU本身故障(电源电压低于105V或频率在47~63Hz之外)、程序故障(非法操作码、地址越界、浮点溢出等)等引起的过程。
第三类由于在程序中使用了请求系统服务的系统调用而引发的过程,称作“陷入”(trap,或者陷阱)。
前两类通常都称作中断,它们的产生往往是无意、被动的,而陷入是有意和主动的。
2.系统调用所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。
这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。
系统调用是用户程序和内核交互的接口。
操作系统的主要功能是为应用程序的运行创建良好的环境,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用的(system call)的接口呈现给用户。
系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序。
整个系统调用的过程可以总结如下:1.执行用户程序(如:fork)2.根据glibc中的函数实现,取得系统调用号并执行int $0x80产生中断。
3.进行地址空间的转换和堆栈的切换,执行SAVE_ALL。
(进行内核模式)4.进行中断处理,根据系统调用表调用内核函数。
5.执行内核函数。
6.执行RESTORE_ALL并返回用户模式那么,系统调用和中断调用有什么联系和区别呢?首先它们都是操作系统概念。
第八章系统功能调用
第8章
中断与系统功能调用
汇编语
设计
②读取字符: 读取字符: 入口参数: 入口参数:DL=FFH 出口参数:若读到字符,ZF=0,AL=键入字符的ASCII码 键入字符的ASCII 出口参数:若读到字符,ZF=0,AL=键入字符的ASCII码。若未读 到字符,ZF=1。 到字符,ZF=1。 功能:从键盘读取字符,但不等待按键, 功能:从键盘读取字符,但不等待按键,即不论有无键按下都 立即返回,并且也不特殊检查Ctrl Break键 Ctrl立即返回,并且也不特殊检查Ctrl-Break键。当要求用户必须立即 做出反应时可用此调用读取键盘,如在游戏程序中。 做出反应时可用此调用读取键盘,如在游戏程序中。 调用示例:在本示例中, 调用示例:在本示例中,通过一个循环来实现等待读取一个字 符。 L1: L1: MOV MOV INT JZ AH, AH,6 DL, DL,0FFH 21H L1
返回本章首页
进入下一节
返回本节首页
高 教
第8章
8.2.2
中断与系统功能调用
汇编语
设计
DOS系统功能调用 DOS系统功能调用 本节中介绍DOS功能调用的方法及常用的DOS I/O功能调 本节中介绍DOS功能调用的方法及常用的DOS I/O功能调 DOS功能调用的方法及常用的
用。 DOS功能调用的方法 1. DOS功能调用的方法 调用DOS功能调用需要进行如下三项工作: DOS功能调用需要进行如下三项工作 调用DOS功能调用需要进行如下三项工作: ① 调置入口参数,如果所调用的子程序不需参数,则可 调置入口参数,如果所调用的子程序不需参数, 省略此步。 省略此步。 欲调用的子程序编号→AH。 ② 欲调用的子程序编号→AH。 发中断调用指令INT 21H。 ③ 发中断调用指令INT 21H。
中断处理和函数调用
中断处理和函数调用中断处理和函数调用是计算机系统中两个重要的概念,它们在程序设计和系统运行中起着不可或缺的作用。
本文将从中断处理和函数调用两个方面,详细介绍它们的概念、原理和应用。
一、中断处理中断是指计算机在执行程序的过程中,由于外部事件(如硬件设备的输入、定时器的触发等)而打断正常的程序流程,转而处理其他任务的一种机制。
中断处理的目的是为了提高系统的响应能力和并发性。
中断处理过程主要包括中断请求、中断响应和中断处理程序三个阶段。
当外部事件发生时,硬件会发出中断请求信号,CPU会立即响应并转移到中断处理程序进行处理。
中断处理程序是一段特殊的代码,用于处理特定的中断事件,并保存和恢复现场。
中断处理的优点是可以提高系统的实时性和响应能力。
通过中断处理,系统可以在处理外部事件的同时,继续执行其他任务,从而实现并发处理。
但中断处理也有一定的开销,因为中断会引起上下文的切换和状态的保存,而且中断处理程序需要占用一定的系统资源。
二、函数调用函数调用是程序设计中常用的一种模块化编程方式。
函数是一段完成特定任务的代码块,通过函数调用可以在程序中重复使用这段代码,提高代码的可读性和重用性。
函数调用的过程主要包括函数调用、参数传递、函数执行和返回值等几个步骤。
当程序执行到函数调用语句时,会跳转到函数的入口地址,并将参数传递给函数。
函数执行完成后,会返回到函数调用的位置,并将返回值传递给调用者。
函数调用的优点是可以将复杂的程序分解成多个小模块,提高代码的可维护性和可测试性。
通过函数调用,可以将不同的功能封装到不同的函数中,便于代码的复用和维护。
但函数调用也会引入一定的开销,因为函数调用需要保存和恢复现场,而且函数调用过程需要消耗一定的时间和空间。
三、中断处理和函数调用的联系和区别中断处理和函数调用在计算机系统中起着不同的作用,但它们也有一些联系和区别。
中断处理和函数调用都是程序执行流程的转移。
中断处理是由外部事件触发,用于打断正常的程序流程,转而处理其他任务。
微机原理--第八章-中断系统
裁决器
0
IR6
0
IR7
选 CS 译 码
RD
WR
INTA INT
ICW1 芯片控制 A0
A0
1 × I3 I4 0 1 0 0 1 0 1 0 0 1
ICW2 中断类型号 1
ICW3 主从片连接关系
1 ICW4 方式控制
1
OCW1 中断屏蔽寄存器 IMR
00
0
SP/EN
CA0
OCW2 优先级设置、发EOI
上有中断申请,则将IRR相应位置1;
总线
D0 ~ D7 A0
A5 ~ A9
IOR IOW INTA INTR
数据线 D0 ~ D7
A0
ISR 0
当前 0
中断 服务
• 非屏蔽中断 – 由NMI引脚引起的中断,称非屏蔽中断。 – 当NMI引脚上产生上升沿信号,CPU必响应此中断请 求,即NMI引脚上的中断请求不受IF标志的控制, – IF不能屏蔽NMI引脚上的中断请求。
8086/8088CPU的中断分类图
中断源
外部中断 内部中断
非屏蔽中断 可屏蔽中断 内部硬件中断
SP/EN CA0 CA1 CA2
GND
+ 5V
电子钟时间基准
键盘 保留 串 口2 串 口1 硬盘 软盘 打印机
用于多片 8259A
级连情况
7.3.4 8259A的控制字
8259A中断控制器
处理部分
0
ISR 0
当前 0
中断 0
服务 0
寄存器
0 0
0
IRR
中断申请
0 0
寄存器 0
0
PR
0
优先级
Linux的中断和系统调用esp、eip等寄存器
Linux的中断和系统调⽤esp、eip等寄存器⼀共三篇中断⼀般分为三类:1、由计算机硬件异常或故障引起的中断,称为内部异常中断;2、由程序中执⾏了引起中断的指令⽽造成的中断,称为软中断(这也是和我们将要说明的系统调⽤相关的中断);3、由外部设备请求引起的中断,称为外部中断。
简单来说,对中断的理解就是对⼀些特殊事情的处理。
当发⽣软件中断时,其他所有的中断都可能发⽣并被处理;但当发⽣磁盘中断时,就只有时钟中断和机器错误中断能被处理了。
⽤户态和核⼼态之间的区别是什么呢?(以下区别摘⾄《UNIX操作系统设计》)1、⽤户态的进程能存取它们⾃⼰的指令和数据,但不能存取内核指令和数据(或其他进程的指令和数据)。
然⽽,核⼼态下的进程能够存取内核和⽤户地址2、某些机器指令是特权指令,在⽤户态下执⾏特权指令会引起错误对此要理解的⼀个是,在系统中内核并不是作为⼀个与⽤户进程平⾏的估计的进程的集合,内核是为⽤户进程运⾏的。
内核⾃⼰的栈这在最上层的1G的地址空间内,这是只能由内核访问的部分。
⽤户态:Ring3运⾏于⽤户态的代码则要受到处理器的诸多检查,它们只能访问映射其地址空间的页表项中规定的在⽤户态下可访问页⾯的虚拟地址,且只能对任务状态段(TSS)中I/O许可位图(I/O Permission Bitmap)中规定的可访问端⼝进⾏直接访问。
内核态:Ring0在处理器的存储保护中,核⼼态,或者特权态(与之相对应的是⽤户态),是操作系统内核所运⾏的模式。
运⾏在该模式的代码,可以⽆限制地对系统存储、外部设备进⾏访问。
⼆、什么情况下会发⽣从⽤户态向内核态切换。
这⾥细分为3种情况。
1、发⽣系统调⽤时这是处于⽤户态的进程主动请求切换到内核态的⼀种⽅式。
⽤户态的进程通过系统调⽤申请使⽤操作系统提供的系统调⽤服务例程来处理任务。
⽽系统调⽤的机制,其核⼼仍是使⽤了操作系统为⽤户特别开发的⼀个中断机制来实现的,即软中断2、产⽣异常时当CPU执⾏运⾏在⽤户态下的程序时,发⽣了某些事先不可知的异常,这时会触发由当前运⾏的进程切换到处理此异常的内核相关的程序中,也就是转到了内核态,如缺页异常。
中断定时和系统调用
– 中断资源只有在使用时才真正进行分配,并在使用后予以释放。
• 中断处理函数中不能有任何进入阻塞的调用 • I/O中断的处理
– 使用进程的内核堆栈保存中断向量以及各种CPU寄存器 – 向中断控制器发送应答信号 – 执行中断处理函数(中断服务程序,ISR) – 使用ret_from_intr()返回
set_trap_gate(13,&general_protection);
set_intr_gate(14,&page_fault);
set_trap_gate(15,&spurious_interrupt_bug);
set_trap_gate(16,&coprocessor_error);
set_trap_gate(17,&alignment_check);
• TASKLET_STATE_SCHED • TASKLET_STATE_RUN
– count: 锁计数器 – func: 指向tasklet函数的指针 – data: 一般用于tasklet的私有数据
• Tasklet由Softirq启动
2020/12/12
Bottom Halves
• 早期使用的中断下半部的实现机制,被 称为BH机制。
2020/12/12
初始化中断门描述符表
• 初级初始化:setup_idt()
– 缺省的中断处理函数:ignore_int()
• 打印"Unknown interrupt"
– 用ignore_int()填充中断门描述符表中所有表 项的中断处理函数
• ignore_int函数应该永远不会被调用,除非系统 硬件或内核出现问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
溢出中断INTO:如果标志寄存器中溢出标志位为1,在执 行了INTO指令后,产生类型为4的溢出中断。
❖第8章 中断与系统功能调用
③单步中断 当标志寄存器的标志位TF置1时,8086/8088 CPU处于单步
不同级别的中断源同时申请中断时,CPU根据级别高低依次 决定服务顺序。
❖第8章 中断与系统功能调用
4. 中断类型号 由于系统中存在许多中断源,当有中断发生时,就有CPU
如何识别中断源是谁的问题,只有知道了中断源是谁,CPU才 能调用相应的中断服务程序来为其服务。为了标记中断源, 人们给系统中的每个中断源指定了一个唯一的编号,称为中 断类型号。CPU对中断源的识别就是获取当前中断源的中断类 型号。方法如下:
❖第8章 中断与系统功能调用
(2)内部中断源和内部中断 内部中断源是来自CPU内部的中断事件,这些事件都是特定
事件,一旦发生,CPU即调用预定的中断服务程序去处理。内部 中断主要有以下几种情况:
①除法错误:当执行除法指令时,如果除数为0或是商数超 过了最大值,CPU会自动产生类型为0的除法错误中断。
❖第8章 中断与系统功能调用
8.1 8086/8088中断系统
本章讲述中断的相关知识及DOS与BIOS中断功能调用,
中断是8C.P2U与外D设OS交中换断数据与的系一统种功方式能,调而用且是最常用的一种 方式。8D.O3S与BBIOISO中S断中功断能功调能用是调系用统提供给汇编语言程序员 的作大,实量利代用训码它一段们(可子以PC程极机序大间)地,简的这化相些汇互代编码程通段序信都设:以计中。中断本断方章方式中进要式行求工掌 握中实断的训概二念、发中声断源程、序中设断矢计量表、中断响应条件、中断 响应实过程训以三及DO彩S功色能图调形用的程概序念设、调计用方法及基本的I/O功 能调实用、训磁四盘文磁件盘读写文等件内操容。作设计
②软件中断 执行软件中断指令时,会产生软件中断。8086/8088的系统中, 设置了三条中断指令,分别是:
❖第8章 中断与系统功能调用
中断指令INT n:用户可以用INT n 指令来产生一个类型 为n的中断,以便让CPU执行n号中断的中断服务程序,通常这 样做的目的是该中断服务程序的功能正是当前软件所需要的。
❖第8章 中断与系统功能调用
8.1 8086/8088中断系统
8.1.1 中断基本知识 在§7.2节中曾经提到,CPU与外设交换信息时,若用直
接I/O方式,效率虽高,安全性不强。若用查询方式,安全性 有保障,但效率不高。为了使高速工作的CPU与低速工作的外 设之间,既能安全地交换数据,又有较高的效率,人们经常 采用中断传送方式。
❖第8章 中断与系统功能调用
3. 外部中断与内部中断 根据中断源是来自CPU内部还是外部这一角度,通常人们将所
有中断源分为两类:外部中断源和内部中断源,对应的中断称为外 部中断和内部中断。
(1)外部中断源和外部中断 外部中断源即硬件中断源,它们来自CPU外部。8086/8088 CPU 提供了两个引脚来接收外部中断源的中断请求信号:可屏蔽中断请 求引脚和非屏蔽中断请求引脚。 通过可屏蔽中断请求引脚输入的中断信号叫可屏蔽中断,对这 种中断请求CPU可响应也可不响应,具体取决于标志寄存器中IF标 志位的状态。通过非屏蔽中断请求引脚输入的中断请求信号叫非屏 蔽中断。这种中断请求CPU必须无条件响应。
8086/8088系统中中断类型号范围为0~FFH,即最多256个 中断源。在PC机中,这256个中断类型号的分配情况如表8-1所 示。
❖第8章 中断与系统功能调用
5. 中断系统 为了实现中断的功能而设置的各种硬件和软件,统称为
③软件中断源。在程序中向CPU发出中断指令(8086/8088为INT指 令),可迫使CPU转去执行某个特定的中断服务程序,而中断服务程序 执行完后,CPU又回到原程序中继续执行INT指令后面的指令。
④为调试而设置的中断源。系统提供的单步中断和断点中断,可 以使被调试程序在指行一条指令或执行到其个特定位置处时,自动产 生中断,从而便于程序员检查中间结果,寻找错误所在。
❖第8章 中断与系统功能调用
1. 中断 中断是指计算机的CPU暂时中止它正在执行的主程序,转
去执行请求中断的那个外设或事件的中断服务(处理)程序, 待处理完毕之后,又返回主程序接着被中断处继续执行,这样 的一个过程就称为中断。
在中断传送方式下,外设有“事”时向CPU发中断申请, 无事时CPU完全可以处理自己的业务。这种方式既安全又高效, 因而应用很广。
❖第8章 中断与系统功能调用
2. 中断源 引起中断的原因或发出中断申请的来源,称为中断源。中断源有
以下几种; ①外设中断源:一般有键盘、打印机、磁盘、磁带等,工作中要
求CPU为它服务时,会向CPU发送中断请求。
出等),相关部件会向CPU发出中断请求,以便使CPU转去执行故障处 理程序来解决故障。
❖第8章 中断与系统功能调用
①可屏蔽硬件中断:CPU在准备响应其中断请求时,会给 它发一个中断请求响应信号,硬件中断源在收到这一信号后会 将自己的类型号通过系统数据线发送给CPU。
②软件中断:在中断指令INT n 中,参数n即为中断类型 号。
③除上面两种情况外,其余中断都是固定类型号:这主要 是内部中断,如除法错(类型0)、单步中断(类型1)、INT 3(类型3)、INTO(类型4)等。外部中断中非屏蔽中断也是 固定类型号(类型2)。
工作方式。CPU每执行完一条指令,自动产生类型为1的单步中 断,直到将TF置0为止。单步中断和断点中断一般仅在调试程 序内使用。
❖第8章 中断与系统功能调用
为了解决多个中断源同时申请中断时响应的先后顺序问题, 系统将所有的中断源划分为四级,以0级为最高,依次降低等, 各级情况如下: 0级---除单步中断以外的内中断源 1级---不可屏蔽中断源 2级---可屏蔽中断源 3级---单步中断源