中断技术1ppt课件.ppt

上传人:豆**** 文档编号:57178616 上传时间:2022-11-04 格式:PPT 页数:112 大小:568.50KB
返回 下载 相关 举报
中断技术1ppt课件.ppt_第1页
第1页 / 共112页
中断技术1ppt课件.ppt_第2页
第2页 / 共112页
点击查看更多>>
资源描述

《中断技术1ppt课件.ppt》由会员分享,可在线阅读,更多相关《中断技术1ppt课件.ppt(112页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、中断技术1ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望中断技术(2)2.2.7实例研究:Windows2000/XP中断处理2.2.8实例研究:Solaris中断处理2.2.9实例研究:Linux中断处理2.2.1中断的概念(1)请求系统服务,实现并行工作,处理突发事件,满足实时要求,都需要打断处理器正常的工作,为此,提出了中断概念。中断的概念(2)w中断中断是指程序执行过程中,当发生某个事件时,中止CPU上现行程序的运行,引出处理该事件的程序执行的

2、过程。中断的概念(3)w中断源。w中断装置。w中断机制的共性:当中断事件发生后,它能改变处理器内操作执行的顺序,可见中断是现代操作系统实现并发性的基础之一。2.2.2中断源分类(1)从中断事件的性质和激活的手段来说,可以分成两类:强迫性中断事件强迫性中断事件 自愿性中断事件自愿性中断事件 中断源分类(2)强迫性中断事件不是正在运行的程序所期待的,而是由于某种事故或外部请求信息所引起的,分为:w机器故障中断事件。w程序性中断事件。w外部中断事件。w输入输出中断事件。中断源分类(3)自愿性中断事件是正在运行的程序所期待的事件。正在运行的程序对操作系统有某种需求,一旦机器执行到一条访管指令时,便自愿

3、停止现行程序的执行而转入访管中断处理程序处理。中断源分类(4)两类中断事件 运行程序中断处理程序中断装置中断处理程序中断装置机器故障中断事件程序性中断事件外部中断事件输入输出中断事件运行程序访管指令中断源分类(5)按照中断信号的来源,可把中断分为外中断和内中断外中断和内中断两类:外中断(又称中断)指来自处理器和主存之外的中断。内中断(又称异常)指来自处理器和主存内部的中断。中断源分类(6)外中断包括:电源故障中断、时钟中断、控制台中断、它机中断和I/O中断等。不同的中断具有不同的中断优先级,处理高一级中断时,往往会屏蔽部分或全部低级中断。中断源分类(7)内中断包括:通路校验错、主存奇偶错、非法

4、操作码、地址越界、页面失效、调试指令、访管中断、算术操作溢出等各种程序性中断。异常是不能被屏蔽的,一旦出现应立即响应并加以处理。中断源分类(8)中断和异常的区别(1):中断中断是由与现行指令无关的中断信号触发的(异步的),且中断的发生与CPU处在用户模式或内核模式无关,在两条机器指令之间才可响应中断,一般来说,中断处理程序提供的服务不是为当前进程所需的,如时钟中断、硬盘读写服务请求中断;中断源分类(9)中断和异常的区别如下(2):异常异常是由处理器正在执行现行指令而引起的,一条指令执行期间允许响应异常,异常处理程序提供的服务是为当前进程所用的。异常包括很多方面,有出错(fault),也有陷入(

5、trap)。中断源分类(10)出错和陷入的区别如下:它们发生时保存的返回指令地址不同,出错保存指向触发异常的那条指令,而陷入保存指向触发异常的那条指令的下一条指令。从异常返回时,出错会重新执行那条指令,而陷入就不会重新执行那条指令。如缺页异常是一种出错,而陷入主要应用在调试中。中断源分类(11)wIBM中大型机操作系统使用了上述第一种分类方法,wWindows2000/XP则采用了上述第二种分类方法。中断源分类(12)w中断和异常要通过硬件设施来产生中断请求,可看作硬中断硬中断。w不必由硬件发信号而能引发的中断称软中断,软中断软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行

6、效果。中断源分类(13)w软中断软中断是由内核或进程对某个进程发出的中断信号,可看作内核与进程或进程与进程之间用来模拟硬中断的一种信号通信方式。w硬中断和软中断硬中断和软中断共同点和不同点:2.2.3中断装置(1)w发现中断源并产生中断的硬件称中断装置。w所有计算机系统都采用硬件和软件结合的方法实现中断处理。中断装置(2)中断装置中断装置主要做以下三件事:w发现中断源。w保护现场。w启动处理中断事件的程序。中断装置(3)IBM中大型机中断响应过程 外中断旧PSW访管中断旧PSW程序中断旧PSW机器故障中断旧PSWI/O中断旧PSW外中断新PSW访管中断新PSW程序中断新PSW机器故障中断新PS

7、WI/O中断新PSW18202830385860687078现行PSW中断时保存现行PSW中断时装入现行PSW 中断后恢复PSW主存专用双字单元 (16进制)装配中断码中断装置(4)IBM PC机中断的响应过程 IPCSPSW现行PSW 寄存器新IP新CS老IP老CS老PSW新栈顶主存新PSW2.2.4中断处理程序(1)w处理中断事件的程序称为中断中断处理程序处理程序。它的主要任务是处理中断事件和恢复正常操作。w不同中断源对应不同中断处理程序,故快速找到中断处理程序的入口地址是一个关键问题。中断处理程序(2)中断处理程序主要做四项工作:w保护未被硬件保护的一些必需的处理状态。w识别各个中断源,

8、分析产生中断的原因。w处理发生的中断事件。w恢复正常操作。2.2.5中断事件具体处理方法1 1、机器故障中断事件的处理、机器故障中断事件的处理 事件是由硬件故障产生的,排除故障须进行人工干预。中断处理能做的工作是:保护现场,防止故障蔓延,报告给操作员并提供故障信息以便维修和校正,及对程序中所造成的破坏进行估价和恢复。机器故障中断事件的处理 下面是一些硬件失效中断事件的处理办法:1 1)电源故障的处理)电源故障的处理 2 2)主存储器故障的处理)主存储器故障的处理2、程序性中断事件的处理(1)w程序性中断事件两种处理办法w中断续元处理需要的设施 调试语句 中断续元入口表w中断续元处理过程 程序性

9、中断事件的处理(2)on 表示指定条件的中断发生时,由中断续元进行处理。例如:on fixed overflow go to LA;每当发生定点溢出时,转向以LA为标号的语句。程序性中断事件的处理(3)发生在不同地方的同一种程序性中断事件允许用户采用不同的处理方法。例如,在执行了上述调试语句后又执行:on fixed overflow go to LB;表示再发生溢出时将转向LB去处理。程序性中断事件的处理(4)中断续元入口表的形式如下:中断条件0 中断条件1 0 0 中断续元入口0 中断续元入口1 中断续元入口n程序性中断事件的处理(5)中断续元的处理过程和原则(1):(1)编译程序编译到o

10、n语句时,生成填写相应中断续元入口表的目标代码段;(2)程序运行执行到on语句时,根据中断条件号,将中断续元入口填入相应栏,这是通过执行上述代码段来实现的;(3)执行同一中断条件号的on语句时,中断续元入口被填入同一栏,从而,用户可在他的程序的不同部分对同一中断条件采用不同的处理方法;程序性中断事件的处理(6)中断续元的处理过程和原则(2):(4)每当中断条件发生时,检查中断续元入口表相应栏,或转入中断续元处理,或进行操作系统标准处理;(5)程序性中断处理允许嵌套,应预先规定嵌套重数,但不允许递归。3、外部中断事件的处理 1)时钟中断事件的处理(1)w时钟是操作系统进行调度工作的重要工具,如让

11、分时进程作时间片轮转、让实时进程定时发出或接收控制信号、系统定时唤醒或阻塞一个进程、对用户进程进行记账。w时钟可以分成绝对时钟和间隔时钟两种。时钟中断事件的处理(2)w系统设置绝对时钟寄存器,定时地把该寄存器的内容加1。如果开始时这个寄存器的内容为0,那么,只要操作员告诉系统开机时的年、月、日、时、分、秒,以后就可推算出当前的年、月、日、时、分、秒。w计算当前时间时,只要按时钟中断的次数和绝对时钟寄存器的内容推算就可得到。时钟中断事件的处理(3)w间隔时钟是定时将一个间隔时钟寄存器的内容减1,当间隔时钟寄存器的内容为0时,产生一个间隔时钟中断,起到闹钟的作用,意味着预定的时间到了。操作系统经常

12、利用间隔时钟作控制调度。时钟中断事件的处理(4)操作系统有关时钟的任务包括内容:w维护绝对日期和时间;w防止进程的运行时间超出其允许值,发现陷入死循环的进程;w对使用CPU的用户进程记账;w处理进程的间隔时钟(闹钟);w对系统的功能或部件提供监视定时器。Linux系统定时器(1)wLinux的时钟滴答(clock tick)wLinux系统时间的测量基准jiffies(瞬时)(一个全局变量)wUNIX纪元时间Linux系统定时器(2)Linux中两种类型系统定时器:w老的定时器机制 w新的定时器机制 Linux系统定时器(3)031timer-structtimer-table timer-a

13、ctive31 0 expires *fn()timer-structtimer-listtimer-list*next*prevexpiresdatafunction()timer-list*next*prevexpiresdatafunction()*next*prevexpiresdatafunction()expires *fn()timer-listLinux系统定时器(4)Linux间隔定时器有三种类型:wrealreal 这种间隔定时器按实际时间计时,时间到发送SIGALRM信号。wvirtualvirtual 这种间隔定时器仅当进程正在用户态下执行时才计时,时间到发送SIGVT

14、ALRM信号。wprofileprofile 这种间隔定时器当进程执行在用户态或核心态时都计时,时间到时发送SIGROF信号。Linux系统定时器(5)wLinux允许进程同时启动多个定时器,通过在一个进程中设定上述三个定时器,就可以了解一个进程在用户态、内核态和总的执行时间。Linux时钟系统调用 时钟系统调用完成时钟的读取、设置和校准功能,为计时服务提供支持,也为用户查询当前系统时间提供接口。wlsys-time:读取系统时间。wlsys-stime:设置系统时间。wlsys-gettimeofday:读取系统时间和时区。wlsys-settimeofday:设置系统时间和时区。wlsys

15、-adjtimex:用于在网络环境下调整系统时钟。2)控制台中断事件的处理w操作员可以利用控制台开关请求操作系统工作,当使用控制台开关后,就产生一个控制台中断事件通知操作系统。操作系统处理这种中断就如同接受一条操作命令一样,转向处理操作命令的程序执行。4、I/O中断的处理(1)I/O中断种类较多,处理方法各异。1)I/O操作正常结束后的处理2)I/O操作发生故障后的处理3)I/O操作发生异常后的处理4)设备报到或设备结束的处理 I/O中断的处理(2)1)I/O操作正常结束后的处理 把正在等待输入输出操作完成的进程设置为可执行的状态,然后,要查看是否有等待该设备或通道的其他进程,若有则释放。I/

16、O中断的处理(3)2)I/O操作发生故障后的处理 设备本身的故障,可先向相应设备发命令索取状态字节,进行分析就可知道故障的确切原因。如果该设备的控制器有复执功能,就组织复执。如果没有,对某些故障,可组织软复执。对不能复执或复执多次仍不能克服的故障,系统向操作员报告,请求人工干预。I/O中断的处理(4)3)I/O操作发生异常后的处理 设备在操作中发生了某些特殊事件,操作结束发生中断时,要将这个情况向系统报告。系统从设备状态字节中的设备特殊位为,可判知设备在操作中发生了某个特殊事件。I/O中断的处理(5)4)设备报到或设备结束的处理 如果是设备上来的“设备报到”或“设备结束”等异步信号,表示有设备

17、接入可供使用或断开暂停使用,操作系统应修改系统表格中相应设备的状态。5、自愿中断事件的处理(1)w系统程序或用户程序执行访管指令而引起的中断,它表示运行程序对操作系统功能的调用,所以,也称系统调用,可以看作是机器指令的一种扩充。自愿中断事件的处理(2)系统调用机制通过特殊硬指令和中断系统来实现。共性处理流程:w用户程序执行n号系统调用w通过中断系统进入访管中断处理,保护现场w通过系统调用入口表,按功能号跳转找到相应功能入口地址w执行相应例行程序,结束后正常情况返回系统调用的下一条指令执行2.2.6中断优先级和多重中断(1)1、中断的优先级2、中断的屏蔽3、多重中断事件的处理 中断优先级和多重中

18、断(2)1、中断的优先级 计算机执行的每一瞬间,可能有几个中断事件同时发生,中断装置如何来响应同时发生的中断呢?它按照预定顺序来响应,这个预定顺序称中断的优先级中断的优先级,首先响应优先级高的中断事件。中断优先级和多重中断(3)如何确定中断的优先级?计算机系统中,各中断源的优先顺序是根据某个中断源或中断级若得不到及时响应,造成计算机出错的严重性程度来定。中断优先级和多重中断(4)IBM 370系统中断优先级由高到低的 顺序是:机器校验中断自愿性中断程序性中断外部中断输入输出中断重启动中断。中断优先级只表示中断装置响应中断 的次序,并不表示处理它的先后顺序。中断优先级和多重中断(5)2、中断的屏

19、蔽 主机可允许或禁止某类中断的响应,如允许或禁止所有的I/O中断、外部中断、及某些程序性中断。有些中断是不能被禁止的,例如,计算机中的自愿性访管中断就不能被禁止。中断优先级和多重中断(6)3、多重中断事件的处理 中断正在进行处理期间,这时CPU又响应了新的中断事件,于是暂时停止正在运行的中断处理程序,转去执行新的中断处理程序,这就叫多重中断(又称中断嵌套)多重中断(又称中断嵌套)。中断优先级和多重中断(7)对于多个中断,可能是同一中断类型的不同中断源,也可能是不同类型的中断。对于前者,一般由同一个中断处理程序按预定的次序分别处理之;中断优先级和多重中断(8)对于多个不同类型的中断,区别不同情况

20、作如下处理:w禁止再发生中断 运行中断处理程序时,对任何新产生的中断不予理睬,这可以通过屏蔽某些中断来实现。中断优先级和多重中断(9)w定义中断优先级 对必须处理且优先级更高的中断源,允许在运行中断例行程序时,可响应这些中断,系统负责保护被中断的中断处理例行程序的现场,再转向处理新中断的例行程序。中断优先级和多重中断(10)w响应并进行中断处理 运行中断处理例行程序时,如果出现任何程序性中断,一般情况下,表明这时中断处理程序有错误,应立即响应并进行处理。中断优先级和多重中断(11)中断处理程序的PSW中,应屏蔽哪些中断源,将由系统设计而定,需要考虑的情况有:硬件中断优先级,应用的需要,软件处理

21、所希望的优先级,可能丢失的中断源及其对系统的影响等。2.2.7实例研究:Windows 2000/XP中断处理 1、Windows 2000/XP中断处理概述(1)中断中断主要由I/O设备、处理器时钟或定时器、可以启用或禁用。中断是异步事件,可能随时发生,与处理器正在执行的内容无关。异常异常是同步事件,它是某一个特定指令执行的结果。异常的例子是内存访问错误、调试指令及被零除。内核也将系统服务调用视作异常。Windows 2000/XP中断处理概述(2)硬件和软件都可以产生中断和异常,如总线出错异常由硬件造成,而被零除异常是由软件引起的;同样,I/O设备可产生中断,而内核自身也可以发出中断。Wi

22、ndows 2000/XP中断处理概述(3)陷阱陷阱指处理意外事件的一种硬件机制,当中断或异常发生时,它能发现并俘获正在执行的线程,把它从用户态切换到核心态,并将控制权交给内核的陷阱处理程序。Windows 2000/XP中断处理概述(4)Windows陷阱调度 中断服务例程中断服务例程中断服务例程异常调度器虚存管理器的页面管理器中断调度器系统服务调度器异常调度器陷阱处理程序异常帧虚拟地址异常硬件异常软件异常系统服务调用中断2、Windows 2000/XP中断类型中断类型和优先级和优先级(1)中 断 请 求 级 IRQL(Interrupt Request Level)内核维护的IRQL是可

23、以移植的 IRQL将按照优先级排列中断,并按照优先级顺序服务中断,较高优先级中断可以抢占较低优先级中断服务 Windows 2000/XP中断类型和优先级中断类型和优先级(2)Windows中断请求级 系统关闭高31掉电30处理器内的中断29时钟28配置文件设备n设备1Dispatch/DPC2APC1低0硬件中断软件中断正常的线程执行Windows 2000/XP中断类型和优先级中断类型和优先级(3)Windows中断屏蔽 高掉电处理器内的中断时钟配置文件设备n设备1在处理器A上被屏蔽的中断Dispatch/DPCAPC低IRQL=时钟处理器A在处理器B上被屏蔽的中断IRQL=Dispatc

24、h/DPC处理器BWindows 2000/XP硬件中断处理(1)中断产生时,陷阱处理程序保存运行程序的状态,调用中断调度程序。中断调度程序提高处理器的IRQL到中断源的级别,以便在中断服务过程中屏蔽等于和低于当前中断源级别的其他中断。重新启用中断,以使高优先级的中断仍然能够得到服务。Windows 2000/XP硬件中断处理(2)Windows使用中断分配表IDT(Interrupt Dispatch Table)来查找处理特定中断的例程。中断源的IRQL作为表的索引,表的入口指向中断处理例程。Windows 2000/XP硬件中断处理(3)Windows中断服务 高掉电处理器间的中断时钟设

25、备n设备1中断调度程序接收 到中断源的IRQL,用作查询IDT的索引Dispatch/DPCAPC低有中断产生线程调度程序/DPC处理程序(无)系统关闭例程系统调电例程处理器间中断处理程序时钟处理程序设备n ISR设备1 ISRAPC处理程序中断调度程序跟随该指针,调用相应的处理程序Windows 2000/XP软件中断处理w多数中断由硬件产生,但内核也为多种任务产生软件中断,包括:启动线程调度、处理计时器到时、在特定线程的描述表中异步执行一个过程及支持异步I/O等。4、延迟过程调度和异步过程调用(1)w内核直接调用调度程序实现描述表切换时,在深入多层代码内检测到应该进行重调度,理想的解决方法

26、是请求调度,但应延迟调度的产生直到内核完成当前活动为止,延迟过程调用DPC软件中断是实现这种延迟的简便方法。延迟过程调度和异步过程调用(2)延迟过程调度DPC的用法:1)内核处理时钟中断 2)执行“延迟函数”,3)设备驱动程序使用DPC完成I/O请求。延迟过程调度和异步过程调用延迟过程调度和异步过程调用(3)(3)提交DPC 高掉电如果IRQL降到比Dispatch/DPC级低,则DPC中断发生。Dispatch/DPCAPC低定时器到时,内核排好DPC队列,准备释放等候在定时器上的所有 线程,然后内核请求软件中断。调度程序DPC中断之后,控制传送给(线程)调度程序DPCDPCDPC调度程序执

27、行DPC中的每一个DPC例程,然后使队列变空。如果需要,调度程序还重新安排处理器延迟过程调度和异步过程调用(4)w异步过程调用APC为用户程序和系统代码提供了一种在特殊用户线程的描述表(特殊的地址空间)中执行代码的方法。延迟过程调度和异步过程调用(5)w两种APC,用户态APC和核心态APC。w核心态APC在线程描述表中运行并不需要得到目标线程的“允许”,而用户态APC则需要得到目标线程的“允许”。w核心态APC可以中断线程及执行过程,而不需要线程的干预和同意。延迟过程调度和异步过程调用(6)w执行体使用核心态APC来执行必须在特定线程的地址空间(描述表)中完成操作系统的工作。w环境子系统使用

28、核心态APC将线程挂起或终止自身的运行,或得到或设置它的用户态执行描述表。wPOSIX子系统使用核心态APC来模仿POSIX信号到POSIX进程的发送。延迟过程调度和异步过程调用(7)w设备驱动程序也使用核心态APC。w一些Win32 API,如ReadiEX,WriteFileEX和QueueUserAPC,使用用户态APC。5、Windows 2000/XP异常调度(1)w异常是直接由运行程序的执行产生的情况。WIN32引入了异常处理工具,允许应用程序在异常发生时可以得到控制。w应用程序可以固定这个状态并返回到异常发生的地方展开堆栈,也可以向系统声明不能识别异常,并继续搜寻能处理异常的异常

29、处理程序。Windows 2000/XP异常调度(2)w除由陷阱处理程序解决的异常外,所有异常均由异常调度程序提供服务,它的任务是找到能处理该异常的异常处理程序。w如果异常产生于核心态,异常调度程序将调用一个例程来定位处理该异常的异常处理程序。没有被处理的核心态异常是一种致命的系统错误。w在x86处理器上执行INT 2E指令引起系统陷阱,进入系统服务调度程序,w传递的参数指明了被请求的系统服务号。内核根据入口参数在系统服务调度表(System Service Dispatch Table)中查找系统服务信息。6、Windows 2000/XP系统服务调度(1)用户态核心态系统服务调用陷阱处理程

30、序系统服务调度程序系统服务调度表0123n系统服务扩展系统服务2Windows2000/XP系统服务Windows 2000/XP系统服务调度(2)Windows 2000/XP系统服务调度(3)调用WriteFile()Win32应用程序调用NtWriteFile返回调用者KERNEL32.DLL中的WriteFileINT 2E返回调用者NTDLL.DLL中的NtWriteFile调用NtWriteFile解除中断NTOSKRNL.EXE中的KiSystemService执行操作返回调用者NTOSKRNL.EXE 中的NtWriteFile调用USER及GDI服务应用程序INT 2E返回调

31、用者GDI32.DLL或USER32.DLL调用WIN32例程解除中断NTOSKRNL.EXE中的KiSystemService执行操作返回调用者WIN32K.SYS 中的服务入口点用户态核心态WIN32专用WIN32专用所有子系统使用软件中断软件中断WIN32内核APIWIN32 USER及GDI API2.2.8实例研究:Solaris中断处理 1、Solaris中断处理概述 2、ULTRA SPARC的陷阱 3、Solaris中断和中断处理 4、Solaris系统调用 1、Solaris中断处理概述 系统调用系统调用(system call)是用户进程请求内核服务的机制。中断中断(int

32、errupt)是控制进入内核的向量转移。中断一般由硬件设备引起,与正在执行的线程异步产生。中断也可由软件产生。陷阱陷阱(trap)也是控制进入内核的向量转移,是由处理器引起的。陷阱和中断之间最大的区别是:陷阱是由正在执行的线程导致,而中断则是异步事件。2、ULTRA SPARC的陷阱(1)SPARC和ULTRA SPARC处理器体系使用陷阱作为统一机制来处理系统调用、处理器异常和陷阱。SPARC陷阱是由微处理器引起的过程调用,用于处理同步的处理器异常、异步的处理器异常、软件引起的陷阱指令、或设备中断引起的中断处理。ULTRA SPARC的陷阱(2)陷阱使硬件进行以下动作:(1)保存某些处理器状

33、态信息(程序计数器、状态寄存器、陷阱类型等);(2)进入特权执行模式;(3)开始执行陷阱表中的相应代码。ULTRA SPARC的陷阱(3)SPARC和ULTRA SPARC的陷阱分为以下几种:(1)处理器重置(加电重置、机器重启、软件引起的重置);(2)存储管理异常(页面错误、破坏页保护、存储错误、偏离访问);(3)指令异常(非法指令,常态下运行特权指令);(4)浮点异常;(5)寄存器异常;(6)中断陷阱,用于系统调用入口的软件引起陷阱。ULTRA SPARC的陷阱(4)SPARC和ULTRA SPARC陷阱有一个相关的优先级别:加电重置最高,各类处理器异常,软件陷阱和中断陷阱。中断陷阱还要和

34、处理器中断级PIL比较,只有比PIL级别高的中断陷阱才会被处理。ULTRA SPARC支持陷阱的嵌套处理。嵌套陷阱共有5级,0为正常执行,4为错误处理状态,事实上支持3层嵌套处理。3、Solaris中断和中断处理(1)Solaris中断是一种设备使用的机制,设备向内核发送信号,以通知内核:该设备需要得到注意并要求立即处理。Solaris对中断的服务是通过切换出正在处理器上运行的线程的上下文,并为该中断设备执行一个中断处理程序进行的。Solaris中断和中断处理(2)中断有优先级,从1级到15级,15级是最高的优先级别。内核可以通过设置处理器的中断级别来屏蔽设定优先级以下的中断 等于或低于处理器

35、中断级别的中断暂时被忽略,直到处理器中断级别低于正在等待的中断的优先级。Solaris中断和中断处理(3)Solaris的中断被转换成一个内核线程进行处理,称为中断处理内核线程。中断处理内核线程有自己的标识号、优先级、上下文环境和堆栈。由内核来控制访问共享数据结构,并使用互斥原语在中断处理内核线程之间进行同步,Solaris中断和中断处理(4)中断处理内核线程的执行过程。中断处理内核线程的同步问题。中断处理内核线程被另一个具有更高优先级的中断处理内核线程剥夺问题。4、Solaris系统调用 Solaris系统调用表sysent。Solaris系统调用处理过程。Solaris系统调用陷阱指令tc

36、c。Solaris系统调用陷阱种类。2.2.9实例研究:Linux中断处理 1 Linux中断处理过程 2 快中断与慢中断 3 底半处理 4 任务队列 5 底半处理数据结构 6 底半处理的执行过程7 Linux软中断机制 1 Linux中断处理过程(1)Linux中断处理子系统使用两个数据结构:irq-action和irqaction,irqaction含有处理一种中断所需的各种信息:struct irqaction struct irqaction void(*handler)(int,void*,struct pt-regs*);void(*handler)(int,void*,struc

37、t pt-regs*);unsigned long flags;unsigned long flags;unsigned long mask;unsigned long mask;const char*name;const char*name;void*dev-id;void*dev-id;struct irqaction*next;struct irqaction*next;Linux中断处理过程(2)Lniux 设备的中断共享。Linux 中断共享的实现。Linux 共享中断发生时的处理。Linux 设备的中断处理。2 快中断与慢中断(1)在Linux中,可以区分快中断和慢中断两类中断事件

38、,前者用于时间短、简单的中断处理任务;而后者处理常见的中断,需时较长且处理复杂。快中断与慢中断(2)(1)处理慢中断前需保存所有寄存器的内容,而快中断处理仅要保存被常规C函数修改的寄存器;(2)慢中断处理时,不屏蔽其他中断信号,而快中断处理时会屏蔽所有其他中断;快中断与慢中断(3)(3)慢中断处理完毕后,通常不立即返回被中断的进程,而是进入调度程序重新调度,调度结果未必是被中断的进程运行(是抢先式调度)。而快中断处理完毕后,通常恢复现场返回被中断的进程继续执行(是非抢先式调度)。快中断与慢中断(4)为了尽快缩短快中断处理时间,以便及时响应处理期间到达的其他中断信号,便引入了底半处理的概念。3底

39、半处理(1)(1)什么是底半处理?(2)为什么需要有底半处理?3底半处理(2)bottom half handling是一种任务延迟处理机制 “硬中断”是外部设备对CPU的中断,top half是硬中断;同时,“软中断”通常是硬中断服务程序对内核的中断,bottom half是软中断;而“信号”也是一种软中断,“信号”是由内核或进程对其他进程的中断。4 任务队列(1)Linux内核中设立任务队列,这是核心对任务进行延迟处理的方法,提供对任务队列中任务排队及处理的通用机制。任务队列和底半处理过程bottom half的关系呢?任务队列(2)task-queuetq-structnextsync*

40、routine()*datanextsync*routine()*datatq-struct任务队列任务队列(3)核心建立和维护三个一般性任务队列:(1)定时器队列(TQ-TIMER)(2)即时队列(TQ-IMMEDIATE)(3)进程调度队列(TQ-SCHEDULER)5 底半处理数据结构 bh-active31 0 bh-mask31 0bh-base底半处理过程 底半处理数据结构0316 底半处理的执行过程(1)核心定义的部分通用底半处理过程有:(1)定时器(TIMER-BH)。(2)控制台(CONSOLE-BH)。(3)TTY消息队列(TQUEUE-BH)。(4)网络(NET-BH)。

41、(5)SCSI设备(SCSI-BH)。(6)即时(IMMEDIATE-BH)。(7)键盘(KEYBOARD-BH)。底半处理的执行过程(2)三种情况下执行bottom half处理过程:w当调度程序欲选择下一个运行进程之前(Schedule()。w当从系统调用返回之前(ret_from_syscall)。w当每个中断处理和异常处理返回前(ret_from_intr和ret_from_exception)。底半处理的执行过程(3)定时器中断(IRQ0)中断服务例程的top half与bottom half处理过程间的联系。w定时器中断服务例程(函数)叫timer-interrupt,w执行它的top half函数为do-timer。w执行它的bottom half函数为timer-bh。7 Linux软中断机制wLinux的 bottom half wLinux的 taskletwLinux的 softirq

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁