CN1690971A - 中断控制装置 - Google Patents
中断控制装置 Download PDFInfo
- Publication number
- CN1690971A CN1690971A CN200510066132.5A CN200510066132A CN1690971A CN 1690971 A CN1690971 A CN 1690971A CN 200510066132 A CN200510066132 A CN 200510066132A CN 1690971 A CN1690971 A CN 1690971A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- cpu
- level
- information
- executive
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种用于控制多中断的装置,该装置用于:为各中断事件预存储表示响应该中断事件的发生要执行的中断处理程序的信息和表示该中断处理程序级别的级别信息;在中断事件发生时,对由所述级别信息表示的执行级别和由CPU内部的处理器状态字表示的执行级别进行比较;将包括CPU中的处理器状态字和程序计数器内容的CPU信息保存到存储器内部的堆栈区域;如果所述比较结果为级别信息执行级别不低于处理器状态字级别,则指示保存单元在以相应的级别执行相应的中断处理程序之前保存该CPU信息;并且指示恢复单元在所述中断处理程序执行结束之后恢复该CPU信息。
Description
技术领域
本发明涉及一种计算机中的中断控制,尤其涉及一种用于在执行中断处理程序之前和之后保存和恢复表示CPU状态的数据的技术。
背景技术
通常,广泛使用的计算机系统以使用中央处理单元(CPU)进行控制的至少两种类型的工作模式工作,以保护管理计算机资源等的操作系统(OS)免受应用程序(AP)的破坏。
工作模式通常可以分为(i)计算机资源的使用不受限的模式类型,例如,可以称为特权模式、内核模式或者监控呼叫(SVC)模式,和(ii)计算机资源的使用受限的另一模式类型,例如,可以称为用户模式、非特权模式和问题模式。对于各OS程序和AP程序,使用一些方法指定表示程序应该采用哪一种工作模式执行的执行级别。在下面的描述中,在例如输入和输出设备等计算机资源的使用不受限的模式中执行程序的执行级别称为特权级别,而在计算机资源的使用受限的模式中执行程序的执行级别称为用户级别。
通常,向组成OS内核的各程序提前指定特权级别。组成AP和OS的非内核部分的其他程序被认为是用户级别。
在传统的计算机系统中,CPU的处理器状态字(PSW)中的特定位表示当前的工作模式,即,当前执行的程序的执行级别。只有处于特权级别的程序允许重写表示执行级别的部分PSW并且存取由所谓的环保护(ring protection)等保护的存储器区域。处于用户级别的程序禁止存取表示执行级别的部分PSW和保护的存储器区域。当企图进行这些禁止的存取时,会被视为系统错误。
通常,计算机系统执行所谓的中断控制。下面简单解释一下中断控制。
在计算机系统中,为各中断事件预先设定中断级别和中断处理程序。当在程序执行过程中发生中断事件时,如果对应于要发生的中断事件的中断级别比当前PSW中的中断屏蔽级别标志高时,则挂起程序的执行并且在中断屏蔽级别标志更新为对应于要发生的中断事件的中断级别之后,通过临时执行中断处理程序而进行响应中断事件的操作,并且然后恢复原来被挂起程序的执行。
为了进行这样的程序挂起和恢复,计算机系统在执行中断处理程序之前将CPU的PSW内容以及程序计数器(PC)的内容(下面将PSW的内容和程序计数器的内容统称为CPU信息)保存到指定的存储器区域。在中断处理程序执行结束时,恢复保存的CPU信息,换句话说,将保存的CPU信息重新设置为CPU的PSW和PC。
应该注意,即使在执行中断处理程序的过程中,如果有比正在处理的中断处理程序级别高的中断事件发生,计算机系统挂起正在执行的中断处理程序,并且通过执行对应于发生的中断事件的中断处理程序进行多中断处理。此外,当发生多中断时,计算机系统以后进先出(LIFO)的方式将CPU信息保存到存储器区域,即堆栈区域中,并且从该堆栈区域中恢复这些CPU信息。
应该注意,对于传统的用于响应中断事件的发生执行中断处理程序的中断控制技术,在例如日本专利申请(公开号为HO6-83640,pp.2-4,图1-3)中公开了一种中断响应处理的方法。
假设使用了一种允许执行处于用户级别的中断处理程序的中断控制方法,具有允许处于用户级别的中断处理程序重写由于发生中断而保存在堆栈区域中的部分CPU信息的结构将很方便。例如,如果可以改变已经保存在堆栈区域中的CPU信息中的PC值,则由于在恢复处于用户级别的中断处理程序时可以以用户级别随意改变程序中要回去的位置,所以可以使用处于用户级别的中断控制程序实现灵活的中断控制算法。
然而,与在OS的内核中并且具有高可靠性的处于特权级别的中断处理程序不同,处于用户级别的程序具有很低的可靠性并且可能包括例如所谓的病毒等错误程序。
因此,在允许处于用户级别的中断处理程序重写堆栈区域中的CPU信息时,会产生下述一些问题。
一个问题是存在处于用户级别的错误的中断处理程序会随意改变保存在堆栈区域中与处于特权级别的程序的执行状态相关的部分CPU信息的风险。另一问题在于处于用户级别的错误的中断处理程序会重写CPU信息中表示执行级别的PSW,从而使其表现为特权级别并且通过利用执行完中断处理程序后将重写的CPU信息恢复到CPU中的特征,接管该特权级别。
发明内容
因此,本发明的一个目的是解决上述问题并且提供一种执行中断控制的中断控制装置,以防止在允许处于用户级别的中断处理程序执行的同时,该处于用户级别的中断处理程序错误地管理CPU信息。
为了实现这些目的,本发明提供一种用于控制多中断的中断控制装置,包括:一种用于控制多中断的中断控制装置,包括:中断信息存储单元,用于为各中断事件预存储(i)表示响应该中断事件的发生要执行的相应中断处理程序的中断处理信息和(ii)表示相应的中断处理程序的执行级别是高级别还是低级别的级别信息;比较单元,用于在中断事件发生时,将由对应于所述中断事件的级别信息表示的执行级别与由CPU中的处理器状态字表示的执行级别进行比较;保存单元,用于将CPU信息保存到存储器中的堆栈区域中,该CPU信息包括所述CPU中的处理器状态字的内容和程序计数器的内容;恢复单元,用于从所述堆栈区域中读取保存的CPU信息并且将读取的CPU信息恢复到CPU中;以及中断控制单元,用于在所述比较结果为由对应于所述中断事件的级别信息表示的执行级别不低于由处理器状态字表示的执行级别时,在所述中断控制单元以相应的执行级别执行相应中断处理程序之前指示所述保存单元保存所述CPU信息,并且在所述相应的中断处理程序执行完成后指示所述恢复单元恢复所述CPU信息。
按照本发明,具有该结构的中断控制装置,在处于低级别,即用户级别的中断处理程序执行期间,保存在堆栈区域的CPU信息可改变;然而,由于在处于用户级别的中断处理程序执行时,堆栈区域部存储与处于特权级别的程序执行状态相关的CPU信息,处于用户级别的中断处理程序不可能错误地重写保存的与处于特权级别的中断处理程序的执行状态相关的数据。
应该注意,在执行过程中,处于用户级别的中断处理程序能够存取保存在堆栈区域中与处于用户级别的程序执行状态相关的CPU信息中的PC并且可以将返回地址改变为任意地址。这样,可以实现不只局限于中断处理程序的灵活的中断响应处理。此外,也可以以快捷的方式执行处于特权级别的中断处理程序而不会由于对应于处于用户级别的中断处理程序的中断事件的发生而被挂起。
另外,也可以具有这样的结构:如果在从堆栈区域读取保存的CPU信息之后,CPU的处理器状态字表示的执行级别为低级别,恢复单元迫使读取的CPU信息表示的级别并且将迫使表示低级别的CPU信息恢复到CPU中。
使用该结构,处于用户级别的中断处理程序可以改变保存在堆栈区域中的部分CPU信息,例如,在中断处理程序执行结束时将作为CPU信息重新设置到PC中被恢复的部分;然而,即使重写了表示执行级别的其它部分CPU信息,当中断处理程序执行结束恢复CPU信息时,该部分CPU信息也会被重写以表示特权级别。
此外,中断控制装置还可以包括异常检测单元,用于在由CPU中的处理器状态字表示的执行级别为低级别而由恢复单元从堆栈区域中读取的CPU信息表示高级别时,将表示出现异常的信息输出到中断控制装置的外部。
使用该结构,如果处于用户级别的中断处理程序重写保存在堆栈区域中表示执行级别的部分CPU信息并且企图使本来处于用户级别的程序以特权级别工作,包括中断控制装置的计算机系统能够将这种企图检测为发生异常。
本发明提供的另一种用于控制多中断的中断控制装置,包括:
中断信息存储单元,用于为各中断事件预存储(i)表示响应该中断事件的发生要执行的相应中断处理程序的中断处理信息和(ii)表示相应的中断处理程序的执行级别是高级别还是低级别的级别信息;保存单元,用于将CPU信息保存到由预定寄存器表示的存储器内的堆栈区域中和存储器内预定的保护区域中,该CPU信息包括CPU中的处理器状态字的内容和程序计数器的内容;并且将表示所述预定寄存器内容的堆栈指针保存到所述保护区域中。恢复单元,用于从所述保护区域中读取保存的堆栈指针,将读取的堆栈指针设置到所述预定的寄存器中,并且从所述保护区域中读取保存的CPU信息以及(i)如果从所述保护区域中读取的代表执行级别的部分CPU信息表示低级别,则将执行级别部分以及保存在所述由预定寄存器表示的堆栈区域中代表除执行级别以外的部分CPU信息恢复到CPU中和(ii)如果从所述保护区域中读取的CPU信息的执行级别部分表示高级别,则将从所述保护区域中读取的CPU信息恢复到CPU中;保护单元,用于在CPU中当前的执行级别表示低级别时,禁止将数据写入所述保护区域的指令执行;以及中断控制单元,用于在所述中断事件发生时,在所述中断控制单元执行相应的中断处理程序之前指示所述保存单元保存所述CPU信息,并且在所述相应的中断处理程序执行结束之后指示所述恢复单元恢复所述CPU信息。
使用该结构,即使处于特权级别的程序正在执行,也可以执行处于用户级别的中断处理程序,并且尽管在控制从处于用户级别的中断处理程序转换到处于用户级别的程序时,也不可能重写执行级别。这样,可以禁止处于用户级别的程序接管特权级别。
本发明提供的又一种用于控制多中断的中断控制装置,包括:中断信息存储单元,用于为各中断事件预存储(i)表示响应该中断事件的发生要执行的相应中断处理程序的中断处理信息和(ii)表示相应的中断处理程序的执行级别是高级别还是低级别的级别信息;保存单元,用于将CPU信息保存到由预定寄存器表示的存储器内的堆栈区域中,该CPU信息包括CPU中的处理器状态字的内容和程序计数器的内容;并且将表示所述预定寄存器内容的堆栈指针保存到存储器内的保护区域中。恢复单元,用于从所述保护区域中读取保存的堆栈指针,将读取的堆栈指针设置到所述预定的寄存器中,并且从由所述预定的寄存器表示的堆栈区域中读取所述CPU信息,以及将该读取的CPU信息恢复到CPU中;第一保护单元,用于在CPU中当前的执行级别表示低级别时,禁止将数据写入所述保护区域的指令执行;第二保护单元,用于在CPU中当前的执行级别表示低级别时,禁止将数据写入由保存到所述保护区域中并且还没有读取出的堆栈指针表示的一个堆栈区域的指令执行;以及中断控制单元,用于在所述中断事件发生时,在所述中断控制单元执行相应的中断处理程序之前指示所述保存单元保存所述CPU信息,并且在所述相应的中断处理程序执行结束之后指示所述恢复单元恢复所述CPU信息。
使用该结构,可以使用特权动态保护保存CPU信息的存储器区域并且禁止处于用户级别的中断处理程序重写保存在存储器区域中的CPU信息。
也可以具有这样的结构:保存单元将由堆栈指针和由CPU中的处理器状态字表示的执行级别组成的数据对保存到保护区域中,由第二保护单元禁止执行的指令只是用于将数据写入由与表示高级别的执行级别成对的堆栈指针表示的堆栈区域的指令,所述堆栈指针保存在所述保护区域中并且还没有读取出,以及恢复单元从所述保护区域中读取由所述堆栈指针和执行级别组成的数据对,将读取的堆栈指针设置为所述预定寄存器,从由所述预定寄存器表示的堆栈区域中读取代表除执行级别以外的部分CPU信息,并且将该读取的部分CPU信息和执行级别恢复到CPU中。
使用该结构,处于用户级别的中断处理程序只允许重写与处于用户级别的程序执行状态相关并且表示除执行级别以外的部分CPU信息。
也可以具有这样的结构:保存单元将由所述堆栈指针和由CPU中的处理器状态字表示的执行级别保存到所述保护区域中,(i)如果先前保存在保护区域中而且还没有读取出的堆栈指针与表示高级别的执行级别组成数据对,则第二保护单元禁止将数据写入从由该堆栈指针表示的地址开始到预定的地址结束的范围内的指令执行;以及(ii)如果先前保存在保护区域中而且还没有读取出的堆栈指针与表示低级别的执行级别组成数据对,则第二保护单元禁止将数据写入从通过将由所述指向预定地址的堆栈指针表示的地址增加或者减少预定量获得的地址开始到预定的地址结束的范围内的指令执行,以及恢复单元从保护区域中读取由所述堆栈指针和执行级别组成的数据对,将该读取的堆栈指针设置为预定寄存器,从由该预定寄存器表示的堆栈区域中读取代表除执行级别以外的部分CPU信息,并且将该读取的部分CPU信息和指令级别恢复到CPU中。
使用该结构,通过提前设置保存的CPU信息的数据结构和第二保护单元的预定量,使得处于用户级别的中断处理程序能够重写保存在堆栈区域中与其执行由于中断而被挂起的处于用户级别的程序的PC部分位置相对应的部分CPU信息,从而可以允许处于用户级别的中断处理程序只重写该部分并且禁止处于用户级别的中断处理程序重写其它部分。
附图说明
结合附图,本发明的这些和其它目的、优点和特征将变得很清楚,其中附图示出了本发明的特定实施例。
图1示出了按照本发明第一实施例的中断控制装置100的功能方框图;
图2示出了中断控制装置100执行的中断控制处理的流程图;
图3示出了中断事件发生和中断处理程序执行之间关系的时序图;
图4示出了按照本发明第一实施例的变型示例的中断控制装置200的功能方框图;
图5示出了按照本发明第二实施例的中断控制装置300的功能方框图;
图6示出了中断控制装置300执行的中断控制处理的流程图;
图7示出了中断事件发生和中断处理程序执行之间关系的时序图;
图8示出了按照本发明第三实施例的中断控制装置500的功能方框图;
图9示出了中断控制装置500执行的中断控制处理的流程图;
图10示出了中断控制装置500执行的指令执行处理的流程图;
图11示出了按照本发明第三实施例的变型示例的中断控制装置700的功能方框图;
图12示出了中断控制装置700执行的中断控制处理的流程图;以及
图13示出了中断控制装置700执行的指令执行处理的流程图。
具体实施方式
下面描述按照本发明第一实施例的中断控制装置。
结构
图1示出了按照本发明第一实施例的中断控制装置100的功能方框图。
中断控制装置100是包括CPU、存储器等计算机的一部分并且足实现中断控制的一种装置。应该注意,中断控制是指当特定的中断事件发生而CPU正在执行一程序时,挂起该程序的执行而执行对应于该中断事件的特定中断处理,并且当该中断处理完成时,恢复已经挂起的原始程序的执行。
如图所示,中断控制装置100按照其功能包括:堆栈区域110、中断信息存储单元120、比较单元140、保存单元150、恢复单元160和控制单元170。
这里,堆栈区域110是位于存储器中的区域。堆栈指针(SP)139是表示在堆栈区域110中当前数据存储位置的寄存器或者存储器中的区域。
中断信息存储单元120是在其中存储如下信息并使这些信息互相对应的存储区域:例如,指定中断处理程序地址的中断处理信息AD、表示或者特权级别或者用户级别的执行级别ELIR、表示多中断中的优先级级别的中断级别LV以及在中断事件发生时设置为高电平(H)而在该中断事件的中断处理程序执行之前重新设置为低电平(L)的中断请求标志IR。中断信息存储单元120可以包括用于特定目的的中断控制寄存器。应该注意,当执行级别ELIR为高(H)时,表示执行级别是用户级别,而当执行级别ELIR为低(L)时,表示执行级别是特权级别。作为附加信息,中断信息存储单元120的内容在系统激活时由OS等提前设置。
保存单元150根据控制单元170的指令将CPU信息130存储到堆栈区域110中的当前数据存储位置。
这里,CPU信息130是表示CPU当前状态的寄存器一处理器状态字(PSW)132的内容以及表示程序执行地址的寄存器一程序计数器(PC)131的内容。应该注意,PSW 132包括:(i)表示当前工作模式的执行级别标志EL,即,当前执行的程序的执行级别和(ii)用于判断是否拒绝多中断的中断屏蔽级别标志IM。执行级别表示参照计算机资源的使用为程序提供的授权级别。表示在计算机资源的使用中没有特定限制的高执行级别为特权级别。表示在可用的计算机资源中有限制的低执行级别为用户级别。
比较单元140用于在中断事件发生时将与该中断事件相对应的中断级别LV和执行级别ELIR与PSW 132中的中断屏蔽级别标志IM和执行级别标志EL相比较,并且将比较结果通知给控制单元170。
另外,控制单元170用于读取来自存储器的程序并且解码和执行该程序,以及在中断事件发生时根据比较单元140的比较结果判断该中断是否应该接受。当中断应该接受时,控制单元170在指示保存单元150保存CPU信息后,以相应的执行级别ELIR执行由对应于该中断事件的中断处理信息AD表示的中断处理程序。执行完该中断处理程序后,控制单元170指示恢复单元160恢复保存的CPU信息。
恢复单元160用于根据控制单元170的指令将先前保存在堆栈区域110中的CPU信息130恢复到CPU中。在进行恢复的过程中,如果在保存在堆栈区域110中的CPU信息读取之后,CPU中PSW 132中的执行级别标志EL为用户级别(H),恢复单元160在将CPU信息恢复到CPU中之前,迫使读取的CPU信息中的执行级别标志表示为用户级别(H)。应该注意,该迫使行为意味着无论原来的值如何而设置一特定值。该迫使行为通过设置在恢复单元160中的或逻辑门161实现,并且以PSW 132中的执行级别标志EL和从堆栈区域读取的CPU信息中的执行级别标志作为输入而将输出送给PSW 132中的执行级别标志EL。
工作原理
下面描述具有上述结构的中断控制装置100的工作原理。
图2示出了中断控制装置100执行的中断控制处理的流程图。
首先,当中断事件发生时,将中断信息存储单元120中对应于该中断事件的中断请求标志IR通过例如CPU外部的中断控制器设置为高H电平。
然后,检测中断事件发生之后,控制单元170指示比较单元140将存储在中断信息存储单元120中并且对应于发生的中断事件的中断级别LV与PSW 132中的中断屏蔽级别标志IM进行比较(步骤S11)。如果中断级别LV为具有更高优先级的级别,则控制单元170指示比较单元140对对应于该中断事件的执行级别ELIR与PSW 132中的执行级别标志EL进行比较(步骤S12),并且如果执行级别ELIR为等于或者高于执行级别标志EL的执行级别,则控制单元170判断该中断应该接受并且重新设置中断请求标志IR为低(L)电平(步骤S13)。应该注意,在步骤S12的比较中,只有在执行级别ELIR表示特权级别或者在执行级别ELIR表示用户级别同时执行级别标志EL表示用户级别时,执行级别ELIR表示等于或者高于执行级别标志EL的执行级别。
此外,如果在步骤S11的比较结果中,中断级别LV不具有比中断屏蔽级别标志IM更高的优先级,或者在步骤S12的比较结果中,执行级别ELIR表示比执行级别标志EL更低的执行级别,则控制单元170判断该中断不应该接受。
在接受中断请求之后,控制单元170指示保存单元150将CPU中的CPU信息保存到堆栈区域110(步骤S14)。应该注意,保存单元150将CPU信息130保存到由SP 139指定的部分堆栈区域110中并且将SP 139改变与所存储的信息一样多。
在将CPU信息130保存之后,控制单元170更新CPU信息130(步骤S15)。具体地说,控制单元170将PSW 132中的执行级别标志EL设置为与其中断请求已经被接受的中断事件相对应的执行级别ELIR,将PSW 132中的中断屏蔽级别标志IM设置为与该中断事件相对应的中断级别LV,并根据与该中断事件相对应的中断处理信息AD将中断处理程序的地址设置到PC 131中。
接着步骤S15,控制单元170根据PC 131执行中断处理程序(步骤S16)。此时,中断处理程序以由相应的执行级别ELIR表示的工作模式工作。具体地说,处于用户级别的中断处理程序以用户模式工作,而处于特权级别的中断处理程序以特权模式工作。
假设在中断处理程序的处理结束后提供恢复指令,控制单元170在读取该恢复指令后结束步骤S16。
应该注意,如果在控制单元170正在执行中断处理程序(步骤S16)的过程中有另一中断事件发生,中断控制装置100响应该中断事件在图2所示的步骤S11中以及其后进行一系列的处理。这样,中断控制装置100能够处理多中断。
在中断处理程序执行完成之后,控制单元170指示恢复单元160恢复在步骤S14中保存在堆栈区域110中的CPU信息。
此时,恢复单元160首先从由SP 139指定的部分堆栈区域110中读取CPU信息并且将SP 139改变与CPU信息量一样多(步骤S17)。这样,由于参照CPU信息中的执行级别标志和由PSW 132中的执行级别标志EL表示的当前执行级别的或逻辑门161的作用,如果当前执行级别标志EL表示用户级别(H)(步骤S18),恢复单元160迫使要恢复到CPU中的执行级别标志为用户级别(H)(步骤S19),并且将CPU信息恢复到CPU(步骤S20)。
在恢复CPU信息之后,如果存在与设置为H电平的中断请求标志IR相对应的中断事件,控制单元170参照该中断事件在步骤S11中及其之后连续进行一系列处理。如果不存在这样的中断事件,控制单元170结束该中断控制处理(步骤S21)。
下面描述中断控制装置100执行的用于中断控制的特定工作。
存在有由对应于中断事件的处于用户级别的中断处理程序组成的任务a和任务c,而存在有由对应于中断事件的处于特权级别的中断处理程序组成的任务b。对于由中断级别表示的优先级级别,任务c最高,任务b第二高,任务a最低。下面描述的示例为对应于任务a的中断事件首先发生,对应于任务b的中断事件接着发生,而对应于任务c的中断事件最后发生。
图3示出了中断事件发生和中断处理程序执行之间关系的时序图。
首先,执行处于用户级别的任务a,并且据此,PSW 132中的中断屏蔽级别标志IM表现为低优先级级别,而执行级别标志EL表现为用户级别(H)。
在时间T200,对应于任务b的中断事件B发生。对应于中断事件B的中断请求标志IR被设置为H电平。在时间T201,对应于中断事件B的中断级别LV表现为比中断屏蔽级别IM更高的优先级级别,并且对应于任务b的执行级别ELIR表现为特权级别(L)并且比执行级别标志EL高;因此,该中断被接受,中断请求标志IR被重新设置为L电平。然后,将CPU信息保存到堆栈区域110中,更新中断屏蔽级别IM,将执行级别标志EL设置为特权级别(L),并且执行用于任务b的中断处理程序。
在时间T202,假设正在执行用于任务b的中断处理程序时,对应于任务c的中断事件C发生,并且对应于中断事件C的中断请求标志IR被设置为H电平。对应于中断事件C的中断级别LV表现为比中断屏蔽级别IM更高的优先级级别,但是对应于中断事件C的执行级别ELIR此时表现为用户级别(H)并且比执行级别标志EL低;因此,该中断将不被接受而被挂起。
在时间T203,当执行用于任务b的中断处理程序中的恢复指令时,保存在堆栈区域110中的CPU信息被恢复到CPU中。在该恢复过程中,执行级别按照其保存时的状态保持在用户级别(H)。
然后,在时间T205,对应于挂起的中断事件C的中断级别LV表现为比中断屏蔽级别IM更高的优先级级别并且对应于中断事件C的执行级别ELIR表现为用户级别(H),而此时的执行级别标志EL也表现为用户级别(H);因此,按照步骤S12中控制单元170的判断结果,该中断被接受,中断请求标志IR被重新设置为L电平,而CPU信息130被保存到堆栈区域110中。更新中断屏蔽级别IM,将执行级别标志EL设置为用户级别(H),并且执行用于任务c的中断处理程序。
在时间T206,当执行用于任务c的中断处理程序中的恢复指令时,恢复单元160读取保存在堆栈区域110中的CPU信息。由于此时PSW 132中的执行级别标志EL为用户级别(H),通过或逻辑门161的作用,CPU信息中的执行级别标志始终表现为用户级别(H),并且将CPU信息恢复到CPU中。
因此,即使在执行过程中对应于任务c的处于用户级别的中断处理程序重写保存在堆栈区域110中的信息,即重写保存的CPU信息,在恢复到CPU中之前,执行级别标志被迫处于用户级别(H)。换句话说,即使通过具有低可靠性的用户级别对堆栈区域进行存取或者产生噪声,CPU的PSW中的执行级别标志EL也不会被错误地设置为特权级别(L)。应该注意,处于用户级别的程序不允许直接更新PSW中的执行级别标志EL。这种企图更新的操作会被视为系统错误。
目前为止,当正在执行具有高可靠性的处于特权级别的中断处理程序时,中断控制装置100不接受由对应于处于用户级别的中断处理程序的中断事件产生的中断。另外,当处于用户级别的中断处理程序执行之后恢复CPU信息时,不迫使执行级别标志EL变化为特权级别。这样,例如,尽管中断处理程序能够进行例如改变保存在堆栈区域中的CPU信息的PC值等灵活的控制从而在中断处理完成后可以执行任意程序,但是处于用户级别的中断处理程序也不能接管特权级别。
总之,中断控制装置100通过使用比较执行级别的比较单元140的功能以及或逻辑门161的功能等,可以很容易地实现防止接管特权级别的自动防故障功能。通过该结构,不必限制CPU信息保存到存储器中只有特权级别程序能够存取的特权保护区域。
变型示例
下面描述通过改变部分中断控制装置100获得的中断控制装置200。
图4示出了按照第一实施例的变型示例的中断控制装置200的功能方框图。
如图所示,中断控制装置200按照其功能包括:堆栈区域110、中断信息存储单元120、比较单元140、保存单元150、恢复单元260、异常检测单元262和控制单元170。在附图中,中断控制装置200中与中断控制装置100中相同的组成元件具有相同的参考标记。这里省略了这些相同组成元件的描述。
恢复单元260用于按照控制单元170的指令将先前保存在堆栈区域110中的CPU信息恢复到CPU中。
异常检测单元262用于在恢复单元260要恢复CPU信息时,将从堆栈区域110读取的表示执行级别标志的部分CPU信息以及此时PSW 132中的执行级别标志EL输入到非门和与逻辑门,并且在预定的条件下,将发生错误的通知输出到中断控制装置200的外部。
中断控制装置200与中断控制装置100的不同之处在于包括恢复单元260和异常检测单元262,并且除了不执行步骤S18和S19而进行下述处理外,其执行与图2所示的中断控制处理执行基本相同的处理。
只有在满足下面的(i)和(ii)两种情况并且当非门和与逻辑门的结果为H电平时,异常检测单元262向中断控制装置200的外部输出发生错误的通知:(i)从堆栈存储器110中读取的表示执行级别标志的部分CPU信息表现为特权级别(L);(ii)此时PSW 132中的执行级别标志EL表现为用户级别(H)。
因此,当正在执行具有高可靠性并且处于特权级别的中断处理程序时,即正在执行具有高执行级别的中断处理程序时,中断控制装置200不接受由对应于低可靠性并且处于用户级别的中断处理程序的中断事件产生的中断,即,具有低执行级别的中断处理程序。而且,当处于用户级别的中断处理程序执行完成之后恢复CPU信息时,中断控制装置200能够检测到要恢复的执行级别是否被错误地设置为特权级别并且视其为错误。结果,与中断控制装置100相似,尽管中断处理程序能够进行例如改变保存在堆栈区域中的CPU信息的PC值等灵活的控制从而在中断处理完成后可以执行任意程序,处于用户级别的中断处理程序也不能接管特权级别。
第二实施例
下面描述按照本发明第二实施例的中断控制装置。
结构
图5示出了按照第二实施例的中断控制装置300的功能结构图。
中断控制装置300是包括CPU、存储器等计算机的一部分。如图所示,中断控制装置300按照其功能包括:堆栈区域110、中断信息存储单元120、保存单元350、恢复单元360、控制单元370和保护区域380。
中断控制装置300包括一些与第一实施例中中断控制装置100相同的组成元件;但是,中断控制装置300具有特殊的机理,在即使正在执行处于特权级别的中断处理程序,也可以接受对应于处于用户级别的中断处理程序的中断事件产生的中断的同时,可以防止处于用户级别的程序接管特权级别。应该注意,图5所示的中断控制装置300中与中断控制装置100相同的一些组成元件与图1中使用相同的参考标记。以下省略了这些相同组成元件的描述。
保存单元350用于根据控制单元370的指令将CPU信息按照与第一实施例的描述相同的方式保存到堆栈区域110的当前数据存储位置并且将CPU信息130和SP 139保存到保护区域380中。
恢复单元360用于根据控制单元370的指令将先前保存在保护区域380中的SP 139的内容存储到SP 139中并且读取先前保存在保护区域380和堆栈区域110中的CPU信息。如果从保护区域380中读取的代表执行级别标志的部分CPU信息表示特权级别,则恢复单元360用于将从保护区域380中读取的CPU信息恢复到CPU中。如果代表执行级别标志的部分表示用户级别,则恢复单元360用于将从保护单元380中读取的代表执行级别标志的部分CPU信息以及从堆栈区域110中读取的代表除执行级别标志以外信息的部分CPU信息恢复到CPU中。
控制单元370用于读取来自存储器的程序并且解码和执行该程序。另外,当中断事件发生时,控制单元370通过对对应于该中断事件的中断级别LV与PSW 132中的中断屏蔽级别标志IM进行比较,判断该中断是否应该接受。如果该中断应该接受,控制单元370用于指示保存单元350保存CPU信息,然后以相应的执行级别ELIR执行由对应于该中断事件的中断处理信息AD指定的中断处理程序,并且指示恢复单元360在该中断处理程序执行完成之后恢复该保存的CPU信息。
保护区域380被保护,从而只有处于特权级别的程序能够向该区域写入数据。保护区域380为存储器中的存储区域,其中数据的读取和写入以后进先出(LIFO)的方式进行控制。该保护使用通常通过CPU或者OS提供的环保护实现。在控制单元370解码并执行程序时,如果处于用户级别的程序企图向保护区域380写入数据,控制单元370禁止该写入并且视其为系统错误。
工作原理
下面描述具有上述结构的中断控制装置300的工作原理。
图6示出了中断控制装置300执行的中断控制处理流程图。
首先,当中断事件发生时,位于中断信息存储单元120中并且对应于该中断事件的中断请求标志IR由例如是CPU外部的中断控制器设置为H电平。
然后,检测到中断事件发生后,控制单元370将存储在中断信息存储单元120中并且对应于发生的中断事件的中断级别LV与PSW 132中的中断屏蔽级别标志IM进行比较(步骤S31)。如果中断级别LV为具有更高优先级的级别,控制单元370判断该中断应该接受并且将中断请求标志IR重新设置为L电平(步骤S32)。应该注意,如果在步骤S31中的比较结果为中断级别LV不具有比中断屏蔽级别标志IM更高的优先级,在控制单元370判断该中断不应该接受。
接受中断请求之后,控制单元370指示保存单元350将CPU中的CPU信息保存到堆栈区域110中并且将CPU信息130和SP 139保存到保护区域380中(步骤S33)。应该注意,保存单元350将CPU信息保存到能够通过SP 139指定的部分堆栈区域110中并且将SP 139改变与所存储的信息一样多。
保存完CPU信息130后,控制单元370更新CPU信息130(步骤S34)。具体地说,控制单元370将PSW 132中的执行级别标志EL设置为与其中断请求已经被接受的中断事件相对应的执行级别ELIR,将PSW 132中的中断屏蔽级别标志IM设置为与该中断事件相对应的中断级别LV,并根据与该中断事件相对应的中断处理信息AD将中断处理程序的地址设置到PC 131中。
接着步骤S34,控制单元370根据PC 131执行中断处理程序(步骤S35)。此时,中断处理程序以由相应的执行级别ELIR表示的工作模式工作。具体地说,处于用户级别的中断处理程序以用户模式工作,而处于特权级别的中断处理程序以特权模式工作。
假设在中断处理程序的处理结束后提供恢复指令,控制单元370在读取该恢复指令后结束步骤S35。
应该注意,如果在控制单元370正在执行中断处理程序(步骤S35)的过程中有另一中断事件发生,中断控制装置300响应该中断事件在图6所示的步骤S31中及其之后执行一系列的处理。这样,中断控制装置300能够处理多中断。
在中断处理程序执行完成之后,控制单元370指示恢复单元360恢复在步骤S33中保存在保护区域380和堆栈区域110中的CPU信息。
此时,恢复单元360首先从保护区域380读取SP并且将读取的SP恢复到CPU中,从保护区域380和堆栈区域110中读取CPU信息(步骤S36)并且将SP 139更新与读取的CPU信息一样多。恢复单元360判断从保护区域380中读取的CPU信息中的执行级别标志是否表示用户级别(步骤S37),如果执行级别标志不表示为用户级别,即,执行级别标志表示特权级别,则恢复单元360将从保护区域380中读取的CPU信息恢复到CPU中(步骤S38)。
另外,在步骤S37中判断执行级别标志表示用户级别后,恢复单元360将从保护区域380读取的执行级别标志作为PSW 132中的执行级别标志EL恢复到CPU中,同时将从堆栈区域110中读取的代表除执行级别标志以外的部分CPU信息作为PSW 132中的内容恢复到CPU中(步骤S39)。
在步骤S38和S39将CPU信息恢复以后,如果存在对应于设置为H电平的中断请求标志IR的中断事件,控制单元370对于该中断事件在步骤S31中及其之后执行一系列的处理。如果不存在这样的中断事件,控制单元370结束中断控制处理(步骤S40)。
下面描述中断控制装置300执行的特定中断控制处理。
存在由对应于中断事件的处于特权级别的中断处理程序组成的任务b,而存在由对应于中断事件的处于用户级别的中断处理程序组成的任务c和任务d。对于由中断级别表示的优先级级别,任务d最高,任务c第二高,任务b最低。下面描述的示例为对应于任务b的中断事件首先发生,在对应于任务b的中断处理程序正在执行时,对应于任务c的中断事件发生,而对应于任务d的中断事件接着发生。
图7示出了中断事件发生和中断处理程序执行之间关系的时序图。
首先,执行处于特权级别的任务b,并且据此,PSW 132中的中断屏蔽级别标志IM表现为低优先级级别,而执行级别标志EL表现为特权级别。
在时间T400,对应于任务c的中断事件C发生。对应于中断事件C的中断请求标志IR被设置为H电平。在时间T401,对应于中断事件B的中断级别LV表现为比中断屏蔽级别IM更高的优先级级别,因此,根据在步骤S31控制单元370的判断结果,接受该中断,并且将中断请求标志IR重新设置为L电平。然后,将SP保存到保护区域380中,将CPU信息保存到堆栈区域110和保护区域380中,并且将SP更新与保存的信息一样多。控制单元370更新中断屏蔽级别IM,设置执行级别标志EL为用户级别,并且开始执行用于任务c的中断处理程序。
在时间T402,假设在执行用于任务c的中断处理程序时,对应于任务d的中断事件D发生,并且对应于中断事件D的中断请求标志IR被设置为H电平。对应于中断事件D的中断级别LV表现为比中断屏蔽级别IM更高的优先级级别;因此,根据在步骤S31控制单元370的判断结果,接受该中断,并且将中断请求标志IR重新设置为L电平。然后,将SP保存到保护区域380中,并且将与任务c的执行相关的CPU信息保存到堆栈区域110和保护区域380中。将SP更新与保存的信息一样多。控制单元370更新中断屏蔽级别IM,设置执行级别标志EL为用户级别,并且开始执行用于任务d的中断处理程序。因此,将用于任务c的中断处理程序的执行临时挂起。
接着,在时间T404,当执行用于任务d的中断处理程序中的恢复指令时,恢复单元360从保护区域380中读取保存的SP并且将读取的SP恢复到CPU中,以及从保护区域380和堆栈区域110中读取保存的CPU信息。由于从保护区域380中读取的执行级别标志为用户级别,在步骤S39,恢复单元360将执行级别标志和从堆栈区域110中读取的代表除执行级别标志以外的部分CPU信息恢复到CPU中。这样,之后恢复用于任务c的中断处理程序的执行。
然后,在用于任务c的中断处理程序中的恢复指令执行后,恢复单元360从保护区域380中读取保存的SP并且将读取的SP恢复到CPU中,以及读取保存在保护区域380和堆栈区域110中的CPU信息。由于从保护区域380中读取的执行级别标志为特权级别,在步骤S38,恢复单元360将从保护区域380中读取的CPU信息恢复到CPU中。这样,恢复对应于任务b的处于特权级别的中断处理程序的执行。
应该注意,处于用户级别并且对应于任务d的中断处理程序在执行的过程中能够重写保存在堆栈区域110中的部分CPU信息,例如,将恢复目的地址重写为任意地址。这样,重写的数据作为PC等被有效地恢复到CPU中。然而,即使处于用户级别并且对应于任务d的中断处理程序企图通过重写存储在堆栈区域110中的CPU信息的执行级别来接管特权级别,由于在中断处理程序的恢复发生时,保存在保护区域380中的执行级别标志被恢复到CPU中,所以中断处理程序不能接管特权级别。此外,处于用户级别的中断处理程序不能重写保护区域380中的内容。
另外,即使对应于任务c的中断处理程序在执行过程中已经重写了保存在堆栈区域110中的CPU信息,也不会有效工作。当中断处理程序的恢复发生时,由于作为恢复目的对应于任务b的中断处理程序处于特权级别,保存在保护区域380中的CPU信息被恢复到CPU中;因此,用于任务b的中断处理程序的执行被恢复为其被挂起时所处的同样的CPU状态。
目前为止,当处于用户级别的程序正在执行并且处于用户级别的中断处理程序开始执行时有中断发生,尽管中断控制装置300允许中断处理程序存取堆栈区域并且有效重写恢复目的地址等,中断控制装置300可以禁止中断处理程序错误地将执行级别标志重写为特权级别。
第三实施例
下面描述按照本发明第三实施例的中断控制装置。
结构
图8示出了按照第三实施例的中断控制装置500的功能方框图。
中断控制装置500是包括CPU、存储器等计算机的一部分。如图所示,中断控制装置500按照其功能包括:堆栈区域110、中断信息存储单元120、保存单元550、恢复单元560、控制单元570、保护区域580和保护范围管理单元590。
中断控制装置500包括一些与第一实施例中的中断控制装置100相同的组成元件;但是,具有不同于第二实施例的中断控制装置300的结构的中断控制装置500能够实现如下功能:即使处于特权级别的中断处理程序正在执行时,在接受有对应于处于用户级别的中断处理程序的中断事件产生的中断的同时,可以防止处于用户级别的程序接管特权级别。应该注意,图8所示的中断控制装置500中与中断控制装置100相同的一些组成元件与图1中使用相同的参考标记。以下省略了这些相同组成元件的描述。
保护范围管理单元590为一存储器区域,其中只有处于特权级别的程序能够写入数据。保护范围管理单元590的内容包括保护结束地址EDA 591、保护起始地址STA 592和保护标志NPE 593。各项的初始值由OS提前设置。例如,保护结束地址EDA 591和保护起始地址STA 592的各初始值为没有数据存储在堆栈区域110中时SP 139的值。保护标志NPE 593的初始值为L电平。
保护范围管理单元590的内容由控制单元570指定。如果保护标志NPE 593表示为L电平,从保护起始地址STA 592表示的堆栈区域内的存储器地址开始到保护结束地址EDA 591表示的堆栈区域内的存储器地址的范围被保护,从而只有处于特权级别的程序能够向该保护范围写入数据。如果保护标志NPE 593表示为H电平,从保护起始地址STA 592+1表示的堆栈区域内的存储器地址开始到保护结束地址EDA 591表示的堆栈区域内的存储器地址的范围被保护,从而只有处于特权级别的程序能够向该保护范围写入数据。
按照控制单元570的指令,保存单元550用于从保护范围管理单元590中取出保护起始地址STA和保护标志NPE并且将其放入保护区域580,以及将与第一实施例中的描述相同的CPU信息130存储到堆栈区域110中的当前数据存储位置,即由SP 139表示的位置。保存单元550也用于将SP 139更新与所保存的信息一样多,将SP 139的内容作为保护起始地址STA 592保存到保护范围管理单元590中,并且将CPU信息130中的执行级别标志EL的内容作为保护标志NPE 593保存到保护范围管理单元590中。
按照控制单元570的指令,恢复单元560用于将保护范围管理单元590中的保护起始地址STA 592设置为SP 139,并且读取先前保存在堆栈区域110中的CPU信息以及将代表除执行级别标志以外的部分CPU信息恢复到CPU中。恢复单元560也用于将保护范围管理单元590中的保护标志NPE 593恢复为CPU中PSW 132的执行级别标志EL,并且读取先前存储在保护区域580中由保护起始地址和保护标志组成的数据对,以及将其作为保护起始地址STA 592和保护标志NPE 593设置到保护范围管理单元590中。
控制单元570用于从存储器中读取程序并且解码和执行该程序,以及在中断事件发生时,通过将对应于该中断事件的中断级别LV与PSW 132中的中断屏蔽级别标志IM进行比较,判断该中断是否应该接受。如果该中断应该接受,则控制单元570在指示保存单元550保存CPU信息后,以相应的执行级别ELIR执行由对应于该中断事件的中断处理信息AD表示的中断处理程序。执行完该中断处理程序后,控制单元570指示恢复单元560恢复保存的CPU信息。应该注意,在解码和执行程序时,控制单元570通过重复执行后面要描述的指令执行处理而禁止处于用户级别的程序重写存储在堆栈区域110中特定范围内的内容。
保护区域580被保护,从而只有处于特权级别的程序能够向该区域写入数据。保护区域580为存储器中的存储区域,其中数据的读取和写入按照后进先出(LIFO)的方式进行控制。该保护通过CPU和OS通常提供的环保护实现。在控制单元570解码和执行程序时,如果处于用户级别的程序企图向保护区域580写入数据,控制单元570禁止该写入并视其为系统错误。
工作原理
下面描述具有上述结构的中断控制装置500的工作原理。
首先,参照图9描述中断控制处理。然后,参照图10描述由控制单元570执行的指令执行处理。
图9示出了中断控制装置500执行的中断控制处理的流程图。
首先,当中断事件发生时,位于中断信息存储单元120中对应于该中断事件的中断请求标志IR由例如是CPU外部的中断控制器设置为H电平。
然后,检测到中断事件发生后,控制单元570将存储在中断信息存储单元120中并且对应于发生的中断事件的中断级别LV与PSW 132中的中断屏蔽级别标志IM进行比较(步骤S51)。如果中断级别LV具有更高的优先级级别,控制单元570判断该中断应该接受并且将中断请求标志IR重新设置为L电平(步骤S52)。应该注意,如果在步骤S51的比较结果中,中断级别LV不比中断屏蔽级别标志IM的优先级高,控制单元570判断该中断不应该接受。
接受完该中断请求后,控制单元570指示保存单元550将CPU中的CPU信息130保存到堆栈区域110中(步骤S53)。响应该指令,保存单元550将CPU信息130保存到由SP 139指定的部分堆栈区域110中并且改变SP 139与所保存的信息一样多。保存单元550也将存储在保护范围管理单元590中的保护起始地址STA和保护标志NPE保存到保护区域580中(步骤S54)。保存单元550将SP 139的内容作为保护起始地址STA 592设置到保护范围管理单元590中,并且将CPU信息130中的执行级别标志的值作为保护标志NPE 593设置到保护范围管理单元590中(步骤S55)。
应该注意,在中断控制装置500中,特权级别表示为L电平而用户级别表示为H电平。因此,如果当接受了中断请求而正在执行的程序的执行级别为特权级别(L)时,在步骤S55将保护标志NPE 593设置为L电平。如果当接受中断请求而正在执行的程序的执行级别为用户级别(H)时,在步骤S55将保护标志NPE 593设置为H电平。
在保存单元550保存了CPU信息130之后,控制单元570更新CPU信息130(步骤S56)。具体地说,控制单元570将对应于其中断请求已经被接受的中断事件的执行级别ELIR的值设置为PSW 132中的执行级别标志EL,将对应于该中断事件的中断级别LV设置为PSW 132中的中断屏蔽级别标志IM,并且根据对应于该中断事件的中断处理信息AD将中断处理程序的地址设置为PC131。
接着步骤S56,控制单元570按照PC 131执行中断处理程序(步骤S57)。此时,中断处理程序以由相应的执行级别ELIR表示的工作模式工作。具体地说,处于用户级别的中断处理程序以用户模式工作,而处于特权级别的中断处理程序以特权模式工作。
假设在中断处理程序执行结束时提供恢复指令,控制单元570在读取恢复指令后结束步骤S57。
应该注意,如果在控制单元570执行中断处理程序(步骤S57)时有另一中断事件发生,中断控制装置500在图9所示的步骤S51中及其之后执行一系列的处理。这样,中断控制装置500能够处理多中断。
在中断处理程序执行完成后,控制单元570指示恢复单元560将保存在堆栈区域110中的CPU信息恢复。
响应该指令,恢复单元560将保护范围管理单元590中的保护起始地址STA 592恢复到SP 139中,并且将保护范围管理单元590中的保护标志NPE 593设置为PSW 132中的执行级别标志EL(步骤S58)。恢复单元560也将先前保存在保护区域580中的保护起始地址STA和保护标志NPE恢复到保护范围管理单元590中(步骤S59)。恢复单元560还读取保存在由SP 139表示的堆栈区域中的CPU信息并且更新SP 139与所读取的内容一样多,以及将表示除执行级别标志以外的部分CPU信息恢复到CPU中(步骤S60)。
图10示出了中断控制装置500执行的指令执行处理的流程图。
在解码和执行程序时,如图所示,控制单元590为程序中的各指令执行指令执行处理。
首先,控制单元570读取和解码由PC 131表示的存储器地址处的指令(步骤S71)。然后,控制单元570判断PSW 132中的执行级别标志EL是否为用户级别(H)(步骤S72)。如果执行级别标志EL不表示用户级别(H),而表示特权级别(L),控制单元570按照解码结果执行该解码的指令(步骤S78)。应该注意,,步骤S71中读取指令的功能和步骤S78中执行指令的功能与传统的CPU的功能相同。
另外,如果在步骤S72中PSW 132中的执行级别标志EL表示用户级别(H),控制单元570判断在步骤S71中解码的指令是否为用于向存储器中写入数据的指令(步骤S73)。如果该指令不是用于向存储器中写入数据,控制单元按照解码结果执行该指令(步骤S78)。如果该指令是用于向存储器中写入数据,控制单元570判断保护范围管理单元590中的保护标志NPE 593是否为H电平,即用户级别(H)(步骤S74)。
如果在步骤S74判断保护标志NPE 593表示用户级别(H),控制单元570判断根据写入指令要写入数据的存储器地址是否在从保护起始地址STA 592+1到保护结束地址EDA 591结束的范围内,该保护起始地址592和保护结束地址591保存在保护范围管理单元590内(步骤S77)。如果判断该存储器地址在该范围内,控制单元570进行例如视这种情况为系统错误等异常处理(步骤S76)。如果判断该存储器地址不在该范围内,控制单元570执行将数据写入存储器的指令(步骤S78)。
如果在步骤S74中控制单元570判断保护标志NPE 593不表示用户级别(H)而表示特权级别(L),控制单元570根据在步骤S71中解码的写入指令判断数据要写入的存储器地址是否在从保护起始地址STA 592开始到保护结束地址EDA 591结束的范围内,该保护起始地址592和保护结束地址591保存在保护范围管理单元590内(步骤S75)。如果该存储器地址在该范围内,控制单元570进行例如视这种情况为系统错误等异常处理(步骤S76)。如果判断该存储器地址不在该范围内,控制单元570执行将数据写入存储器的指令(步骤S78)。
下面参照已经用于描述第二实施例中的中断控制装置300的工作原理的图7描述中断控制装置500执行的特定工作。
存在由对应于中断事件的处于特权级别的中断处理程序组成的任务b,而存在由对应于中断事件的处于用户级别的中断处理程序组成的任务c和任务d。对于由中断级别表示的优先级级别,任务d最高,任务c第二高,任务b最低。下而描述的示例为对应于任务b的中断事件首先发生,在对应于任务b的中断处理程序正在执行时,对应于任务c的中断事件发生,而对应于任务d的中断事件接着发生。
首先,执行处于特权级别的任务b,并且据此,PSW 132中的中断屏蔽级别标志IM表现为低优先级级别,而执行级别标志EL表现为特权级别。
在时间T400,对应于任务c的中断事件C发生。对应于中断事件C的中断请求标志IR被设置为H电平。在时间T401,对应于中断事件B的中断级别LV表现为比中断屏蔽级别IM更高的优先级级别,因此,根据在步骤S51控制单元570的判断结果,接受该中断,并且将中断请求标志IR重新设置为L电平。然后,将CPU信息保存到堆栈区域110中,将保护范围管理单元590中的保护标志设置为L电平。设置从保护起始地址STA到保护结束地址EDA的范围以包括保存的CPU信息。控制单元570更新中断屏蔽级别IM,设置执行级别标志EL为用户级别,并且开始执行用于任务c的中断处理程序。
由于根据保护范围单元590控制单元570执行的指令执行处理(图10),用于任务c的中断处理程序不能重写保存在堆栈区域110中的CPU信息。
在时间T402,假设在执行用于任务c的中断处理程序时,对应于任务d的中断事件D发生,并且对应于中断事件D的中断请求标志IR被设置为H电平。对应于中断事件D的中断级别LV表现为比中断屏蔽级别IM更高的优先级级别;因此,根据在步骤S51控制单元570的判断结果,接受该中断,并且将中断请求标志IR重新设置为L电平。然后,将与任务c的执行相关的CPU信息130保存到堆栈区域110中。将保护范围管理单元590中的保护标志设置为H电平。设置从保护起始地址STA到保护结束地址EDA的范围以包括目前为止保存的所有CPU信息。控制单元更新中断屏蔽级别IM,设置执行级别标志EL为用户级别,并且开始执行用于任务d的中断处理程序。因此,用于任务c的中断处理程序的执行被临时挂起。
此时,根据基于保护范围管理单元590控制单元570执行的指令执行处理(图10)结果,开始执行的用于任务d的中断处理程序只能够重写最后保存在堆栈区域110中的部分CPU信息而不能重写CPU信息的其它部分和其它CPU信息。该能够被重写的部分CPU信息的一个示例是由PC保存的恢复目的地址。
然后,在时间T404,当用于任务d的中断处理程序中恢复指令已经执行时,恢复单元560将保护范围管理单元590中的保护起始地址STA 592恢复到SP 132中并且将保护范围管理单元590中的保护标志NPE 593设置为PSW 132中的执行级别标志EL。恢复单元560也将先前保存在保护区域580中的保护起始地址STA和保护标志NPE恢复到保护范围管理单元590中。恢复单元560还读取保存在由SP 139表示的堆栈区域中的CPU信息,更新SP 139与读取的信息一样多,并且将代表除执行级别标志以外的部分CPU信息恢复到CPU中。这样,之后就恢复了用于任务c的中断处理程序的执行。
然后,在执行用于任务c的中断处理程序中的恢复指令时,恢复单元560将保存的CPU信息与前述一样恢复到CPU中。这样,之后就恢复了用于任务b的中断处理程序的执行。
处于用于级别并对应于任务d的中断处理程序在执行过程中能够重写保存在堆栈区域110中的部分CPU信息,例如,将恢复目的地址重写为任意地址。这样,重写的数据作为PC被有效地恢复到CPU中。然而,即使处于用户级别并且对应于任务d的中断处理程序企图通过重写保存在堆栈区域110中的CPU信息的执行级别来接管特权级别,由于当中断处理程序发生恢复时,保存在保护范围管理单元590中的执行级别标志被恢复到CPU中,该中断处理程序也不能接管特权级别。此外,中断处理程序不能重写各保护范围管理单元590和保护区域580的内容。
无论对应于任务d的中断处理程序还是对应于任务c的中断处理程序都不能重写保存在堆栈区域110中与任务b相关的CPU信息;因此,处于用户级别的中断处理程序都不能错误重写用于执行处于特权级别的程序信息。
第四实施例
下面描述按照本发明第四实施例的中断控制装置。
结构
图11示出了按照第四实施例的中断控制装置700的功能方框图。
中断控制装置700是包括CPU、存储器等计算机的一部分。如图所示,中断控制装置700按照其功能包括:堆栈区域110、中断信息存储单元120、保存单元750、恢复单元760、控制单元770和保护区域780。
中断控制装置700通过只改变第三实施例中的部分中断控制装置500获得。与中断控制装置500相似,中断控制装置700能够实现如下功能:即使处于特权级别的中断处理程序正在执行时,在接受有对应于处于用户级别的中断处理程序的中断事件产生的中断的同时,可以防止处于用户级别的程序接管特权级别。应该注意,图11所示的中断控制装置700中与中断控制装置500相同的一些组成元件与图1或者图8中使用相同的参考标记。以下省略了这些相同组成元件的描述。
保护区域780为一存储区域,保存单元750将由(i)SP 139的内容和(ii)PSW 132中执行级别标志EL的值组成的数据对保存在其中。保护区域780被保护,从而只有处于特权级别的程序能够向该区域写入数据。保护区域780为其中数据的读取和写入以后进先出(LIFO)的方式控制的存储区域。这种保护通过通常由CPU或者0S提供的环保护实现。在控制单元770解码和执行程序时,如果处于用户级别的程序企图向保护区域780写入数据,控制单元770会禁止该写入并视其为系统错误。
按照控制单元770的指令,保存单元750用于将与第三实施例中相同的CPU信息130保存到处于当前数据存储位置的堆栈区域110中,即由SP 139表示的位置。保存单元750也用于更新SP 139的值与保存的信息一样多,将由SP 139的内容和PSW 132中执行级别标志EL的值组成的数据对保存到保护区域780中。
按照控制单元770的指令,恢复单元760用于读取先前保存在保护区域780中的由SP 139的内容和PSW 132中的执行级别标志EL的值组成的数据对,并且将其分别设置为SP 139和PSW 132中的执行级别标志EL。恢复单元760还用于读取保存在由SP 139表示的堆栈区域110位置中的CPU信息,将表示除执行级别标志以外的部分CPU信息恢复到CPU中,并且将SP 139更新与已经读取的部分CPU信息一样多。
控制单元770用于读取来自存储器的程序并且解码和执行该程序,并且当中断事件发生时,通过将对应于该中断事件的中断级别LV与PSW 132中的中断屏蔽级别标志IM进行比较,判断该中断是否应该接受。如果接受该中断,控制单元在指示保存单元750保存CPU信息之后,以相应的执行级别ELIR执行由对应于该中断事件的中断处理信息AD表示的中断处理程序。执行完该中断处理程序后,控制单元770指示恢复单元760恢复所保存的CPU信息。应该注意,在解码和执行程序时,控制单元770通过重复执行下面要描述的指令执行处理,禁止处于用户级别的程序重写由SP表示的堆栈区域110中的CPU信息,其中SP与表示特权级别的执行级别标志成对保存在保护区域780中。
工作原理
下面描述具有上述结构的中断控制装置700的工作原理。首先,参照图12描述中断控制处理,然后参照图13描述控制单元770执行的指令执行处理。
图12示出了中断控制装置700执行的中断控制处理的流程图。
首先,当中断事件发生时,中断信息存储单元120中对应于该中断事件的中断请求标志IR由例如是CPU外部的中断控制器设置为H电平。
然后,检测到中断事件发生后,控制单元770将保存在中断信息存储单元120中并且对应于发生的中断事件的中断级别LV与PSW 132中的中断屏蔽级别标志IM进行比较(步骤S81)。如果中断级别LV具有更高的优先级,控制单元770判断该中断应该接受并且将中断请求标志IR重新设置为L电平(步骤S82)。应该注意,如果在步骤S81中的比较结果为中断级别LV不具有比中断屏蔽级别标志IM更高的优先级,控制单元770判断该中断不应该接受。
接受该中断请求后,控制单元770指示保存单元750将CPU中的CPU信息保存到堆栈区域110(步骤S83)。响应该指令,保存单元750将CPU信息130保存到由SP 139指定的部分堆栈区域110中(步骤S83)并且将SP 139改变与所存储的信息一样多。保存单元750也将由SP 139的内容和PSW 132中的执行级别标志EL组成的数据对保存到保护区域780中(步骤S84)。
在保存单元750保存CPU信息130后,控制单元770更新CPU信息130(步骤S85)。具体地说,控制单元770将对应于其中断请求已经被接受的中断事件的执行级别ELIR的值设置为PSW 132中的执行级别标志EL,将对应于该中断事件的中断级别LV设置为PSW 132中的中断屏蔽级别标志IM,并且根据对应于该中断事件的中断处理信息AD,将中断处理程序的地址设置为PC 131。
接着步骤S85,控制单元770按照PC 131执行中断处理程序(步骤S86)。此时,中断处理程序以由相应的执行级别ELIR表示的工作模式工作。具体地说,处于用户级别的中断处理程序以用户模式工作,处于特权级别的中断处理程序以特权级别工作。
假设在中断处理程序处理结束后提供恢复指令,控制单元770在读取恢复指令后结束步骤S86。
应该注意,假设在控制单元770执行中断处理程序(步骤S86)时,又有另一中断发生,中断控制装置700响应该中断事件在图12所示的步骤S81中及其之后执行一系列处理。这样,中断控制装置700能够处理多中断。
在中断处理程序执行完成后,控制单元770指示恢复单元760将保存在堆栈区域110中的CPU信息恢复。
响应该指令,恢复单元760将保存在保护区域780中的SP的值设置为SP139,并且将保存的执行级别标志的值设置为PSW 132中的执行级别标志EL(步骤S87)。恢复单元760还将保存在由SP 139表示的堆栈区域110中代表除执行级别标志以外的部分CPU信息恢复到CPU中(步骤S88)。
在恢复CPU信息之后,如果存在相应的中断请求标志IR被设置为H电平的中断事件,控制单元770参照该中断事件在步骤S81中及其之后连续执行一系列处理。如果部存在这样的中断事件,控制单元770结束中断控制处理(步骤S89)。
图13示出了中断控制装置700执行的指令执行处理的流程图。
在解码和执行程序时,控制单元770对程序中的各指令执行如图所示的指令执行处理。
首先,控制单元770读取和解码由PC 131表示的存储器地址处的指令(步骤S91)。然后,控制单元170判断PSW 132中的执行级别标志EL是否表示用户级别(步骤S92)。如果执行级别标志EL不表示用户级别而表示特权级别,控制单元770按照解码结果执行该解码的指令(步骤S96)。应该注意,步骤S91中读取指令的功能以及步骤S96中执行指令的功能与传统的CPU功能相同。
此外,如果在步骤S92中PSW 132中的执行级别标志EL表示用户级别,控制单元770判断在步骤S91中解码的指令是否为用于向存储器写入数据的指令(步骤S93)。如果该指令不是用于向存储器写入数据,控制单元770按照解码结果执行指令(步骤S96)。如果该指令是用于向存储器写入数据的指令,,控制单元770根据写入指令判断要写入数据的存储器地址是否在由SP表示的用于CPU信息量的堆栈区域110的范围内,其中SP与表示特权级别的执行级别标志成对存储在保护区域780中(步骤S94)。
在步骤S94中,如果判断用于写入的存储器地址在其范围内,则控制单元770执行例如视该情况为系统错误等的异常处理(步骤S95)。如果判断用于写入的存储器地址不在其范围内,则控制单元770执行写指令(步骤S96)。
根据步骤S94的控制结果,尽管处于用户级别的中断处理程序允许重写保存在堆栈区域110中表示由于中断而其执行被临时挂起的处于用户级别的程序执行状态的部分CPU信息,可以禁止处于用户级别的中断处理程序重写保存在堆栈区域110中表示由于中断而其执行被临时挂起的处于特权级别的程序执行状态的部分CPU信息。
下面参照用于描述第三实施例的中断控制装置500的工作原理的图7描述中断控制装置700执行的中断控制的特定工作原理。
存在由对应于中断事件的处于特权级别的中断处理程序组成的任务b,而存在由对应于中断事件的处于用户级别的中断处理程序组成的任务c和任务d。对于由中断级别表示的优先级级别,任务d最高,任务c第二高,任务b最低。下面描述的示例为对应于任务b的中断事件首先发生,在对应于任务b的中断处理程序正在执行时,对应于任务c的中断事件发生,而对应于任务d的中断事件接着发生。
首先,执行处于特权级别的任务b,并且据此,PSW 132中的中断屏蔽级别标志IM表现为低优先级级别,而执行级别标志EL表现为特权级别。
在时间T400,对应于任务c的中断事件C发生。对应于中断事件C的中断请求标志IR被设置为H电平。在时间T401,对应于中断事件B的中断级别LV表现为比中断屏蔽级别IM高的优先级级别,因此,通过在步骤S81控制单元770的判断结果,接受该中断,并且将中断请求标志IR重新设置为L电平。然后,将CPU信息保存到堆栈区域110中,将由SP和表示特权级别的执行级别标志组成的一对数据保存到保护区域780中。控制单元770更新中断屏蔽级别IM,将执行级别标志EL设置为用户级别,并且开始执行用于任务c的中断处理程序。
由于控制单元770执行的指令执行处理(图13),用于任务c的中断处理程序不能重写保存在堆栈区域110中与任务b相关的部分CPU信息。
在时间T402,假设在执行用于任务c的中断处理程序中,对应于任务d的中断事件D发生,并且对应于中断事件D的中断请求标志IR被设置为H电平。对应于中断事件D的中断级别LV表现为比中断屏蔽级别IM更高的优先级级别;因此,按照在步骤S81控制单元770的判断结果,接受该中断,并且将中断请求标志IR重新设置为L电平。然后,将与任务c的执行相关的CPU信息130保存到堆栈区域110中。将由SP和表示用户级别的执行级别标志组成的数据对保存到保护区域780中。控制单元770更新中断屏蔽级别IM,设置执行级别标志EL为用户级别,并且开始执行用于任务d的中断处理程序。因此,用于任务c的中断处理程序的执行被临时挂起。
由于控制单元770执行的指令执行处理(图13),开始执行的用于任务d的中断处理程序只能重写最后保存在堆栈区域110中的与任务c相关的部分CPU信息。但是,用于任务d的中断处理程序不能重写与任务b相关的CPU信息。
然后,在时刻T404,当用于任务d的中断处理程序中的恢复指令执行时,恢复单元760从保护区域780中恢复SP 139和PSW 132中的执行级别标志EL,并且将保存在由SP 139表示的堆栈区域110中代表除执行级别标志以外的部分CPU信息恢复到CPU中。这样,之后就恢复了用于任务c的中断处理程序的执行。
然后,在执行用于任务c的中断处理程序的恢复指令时,恢复单元760将保存的CPU信息与前述一样恢复到CPU中。这样,之后就恢复了用于任务b的中断处理程序的执行。
应该注意,对应于任务d的处于用户级别的中断处理程序在执行过程中能够重写保存在堆栈区域110中的部分CPU信息,例如,重写与任务c相关的部分CPU信息,从而能够将恢复目的地址重写为任意地址。这样,重写的数据作为PC等被有效地恢复到CPU中。但是,即使处于用户级别并且对应于任务d的中断处理程序企图通过重写存储在堆栈区域110中的CPU信息的执行级别接管特权级别,由于在中断处理程序的恢复发生时,保存在保护区域780中的执行级别标志被恢复到CPU中,该中断处理程序不能接管特权级别。此外,处于用户级别的中断处理程序不能重写保护区域780中的内容。
无论对应于任务d的中断处理程序还是对应于任务c的中断处理程序都不能重写保存在堆栈区域110中与任务b相关的部分CPU信息;因此,处于用户级别的中断处理程序不能错误地重写处于特权级别的用于执行程序的信息。
补充信息
目前解释了本发明的第一到第四实施例。这些实施例中的中断控制装置可以进行如下一些变型:
(1)按照各实施例,组成中断控制装置的功能元件的功能分配并不局限于实施例中描述的示例。例如,也可以将控制单元、保存单元和恢复单元集成设置为CPU的一个功能块。或者,也可以通过使CPU执行例如OS等处于特权级别的程序而实现一些功能。
(2)在按照各实施例的中断控制装置中,当系统被激活时,通过OS设置存储在中断信息存储单元120中的信息;然而,也可以具有这样的结构:OS等接受处于用户级别的程序请求以注册处于用户级别的中断处理程序,并且OS按照用于注册的请求更新存储在中断信息存储单元120中的信息。然而,OS等必须响应该用于注册的请求以将注册到中断信息存储单元120中的执行级别ELIR一直设置为用户级别。
(3)在这些实施例中,在中断发生时,作为要恢复的目标的CPU信息是PSW和PC;然而,CPU信息也可以包括CPU中一些通用寄存器或者专用寄存器的内容。
(4)在第一到第四实施例中,只描述了两个执行级别:用户级别和特权级别;然而,也可以具有三个或者更多的执行级别。在三个或者更多的执行级别中,执行级别越高,与计算机资源的使用相关的授权范围就越广,因而越多的计算机资源可利用。也可以将这些三个或者更多的执行级别统分为高级别和低级别。这样,高级别通常是指为例如OS等具有高可靠性的程序提供的执行级别,而低级别通常是指为可能包含不合法程序的用户程序提供的执行级别。
(5)按照本发明第一实施例的中断处理装置通过将中断屏蔽级别标志IM与中断级别LV进行比较而进行优先级级别的比较;然而,也可以具有这样的结构:只有在执行级别标志EL与执行级别ELIR相同时进行优先级级别的比较。或者,也可以不包括比较优先级级别的结构而实现本发明的中断处理装置。
(6)第三实施例中的结构为:当保护范围管理单元590中的保护标志NPE表示用户级别时,禁止处于用户级别的程序重写从保护起始地址STA+1到有保护结束地址EDA表示的地址范围的部分堆栈区域;然而,也可以具有这样的结构:禁止处于用户级别的程序重写从通过向由保护起始地址STA表示的地址增加CPU信息量获得的地址到通过保护结束地址EDA表示的地址范围的部分堆栈区域。
(7)在第四实施例中,将由SP和执行级别标志EL组成的数据对保存到保护区域中;然而,也可以具有这样的结构:无论执行级别如何,不保存执行级别标志EL,而禁止处于用于级别的程序重写堆栈区域中由SP表示的部分CPU信息,其中SP被存储在保护区域中。
本发明可以应用于计算机系统的中断控制,其中的程序被分为多个执行级别并且具有对计算机资源使用的不同级别。
尽管通过参照附图的示例已经充分描述了本发明,但是,应该注意,对于本领域的技术人员来讲还可以做出各种各样的变化和修改。因此,除非这些变化和修改脱离了本发明的范围,否则均落在本发明的保护范围之内。
Claims (7)
1、一种用于控制多中断的中断控制装置,包括:
中断信息存储单元,用于为各中断事件预存储(i)表示响应该中断事件的发生要执行的相应中断处理程序的中断处理信息和(ii)表示相应的中断处理程序的执行级别是高级别还是低级别的级别信息;
比较单元,用于在中断事件发生时,将由对应于所述中断事件的级别信息表示的执行级别与由CPU中的处理器状态字表示的执行级别进行比较;
保存单元,用于将CPU信息保存到存储器中的堆栈区域中,该CPU信息包括所述CPU中的处理器状态字的内容和程序计数器的内容;
恢复单元,用于从所述堆栈区域中读取保存的CPU信息并且将读取的CPU信息恢复到CPU中;以及
中断控制单元,用于在所述比较结果为由对应于所述中断事件的级别信息表示的执行级别不低于由处理器状态字表示的执行级别时,在所述中断控制单元以相应的执行级别执行相应中断处理程序之前指示所述保存单元保存所述CPU信息,并且在所述相应的中断处理程序执行完成后指示所述恢复单元恢复所述CPU信息。
2、按照权利要求1所述的中断控制装置,其特征在于,
在将所述保存的CPU信息从所述堆栈区域中读取以后,如果由CPU中的处理器状态字表示的执行级别为低级别,则所述恢复单元迫使该读取的CPU信息表示低级别并且将该被迫使表示低级别的CPU信息恢复到CPU中。
3、按照权利要求1所述的中断控制装置,其特征在于,还进一步包括:
异常检测单元,用于在由CPU中的处理器状态字表示的执行级别为低级别而由所述恢复单元从所述堆栈区域中读取的CPU信息表示高级别时,将表示出现异常的信息输出到所述中断控制装置的外部。
4、一种用于控制多中断的中断控制装置,包括:
中断信息存储单元,用于为各中断事件预存储(i)表示响应该中断事件的发生要执行的相应中断处理程序的中断处理信息和(ii)表示相应的中断处理程序的执行级别是高级别还是低级别的级别信息;
保存单元,用于将CPU信息保存到由预定寄存器表示的存储器内的堆栈区域中和存储器内预定的保护区域中,该CPU信息包括CPU中的处理器状态字的内容和程序计数器的内容;并且将表示所述预定寄存器内容的堆栈指针保存到所述保护区域中。
恢复单元,用于从所述保护区域中读取保存的堆栈指针,将读取的堆栈指针设置到所述预定的寄存器中,并且从所述保护区域中读取保存的CPU信息以及(i)如果从所述保护区域中读取的代表执行级别的部分CPU信息表示低级别,则将执行级别部分以及保存在所述由预定寄存器表示的堆栈区域中代表除执行级别以外的部分CPU信息恢复到CPU中和(ii)如果从所述保护区域中读取的CPU信息的执行级别部分表示高级别,则将从所述保护区域中读取的CPU信息恢复到CPU中;
保护单元,用于在CPU中当前的执行级别表示低级别时,禁止将数据写入所述保护区域的指令执行;以及
中断控制单元,用于在所述中断事件发生时,在所述中断控制单元执行相应的中断处理程序之前指示所述保存单元保存所述CPU信息,并且在所述相应的中断处理程序执行结束之后指示所述恢复单元恢复所述CPU信息。
5、一种用于控制多中断的中断控制装置,包括:
中断信息存储单元,用于为各中断事件预存储(i)表示响应该中断事件的发生要执行的相应中断处理程序的中断处理信息和(ii)表示相应的中断处理程序的执行级别是高级别还是低级别的级别信息;
保存单元,用于将CPU信息保存到由预定寄存器表示的存储器内的堆栈区域中,该CPU信息包括CPU中的处理器状态字的内容和程序计数器的内容;并且将表示所述预定寄存器内容的堆栈指针保存到存储器内的保护区域中。
恢复单元,用于从所述保护区域中读取保存的堆栈指针,将读取的堆栈指针设置到所述预定的寄存器中,并且从由所述预定的寄存器表示的堆栈区域中读取所述CPU信息,以及将该读取的CPU信息恢复到CPU中;
第一保护单元,用于在CPU中当前的执行级别表示低级别时,禁止将数据写入所述保护区域的指令执行;
第二保护单元,用于在CPU中当前的执行级别表示低级别时,禁止将数据写入由保存到所述保护区域中并且还没有读取出的堆栈指针表示的一个堆栈区域的指令执行;以及
中断控制单元,用于在所述中断事件发生时,在所述中断控制单元执行相应的中断处理程序之前指示所述保存单元保存所述CPU信息,并且在所述相应的中断处理程序执行结束之后指示所述恢复单元恢复所述CPU信息。
6、按照权利要求5所述的中断控制装置,其特征在于,
所述保存单元还进一步将由所述堆栈指针和由CPU中的处理器状态字表示的执行级别组成的数据对保存到所述保护区域中,
所述由第二保护单元禁止执行的指令只是用于将数据写入由与表示高级别的执行级别成对的堆栈指针表示的堆栈区域的指令,所述堆栈指针保存在所述保护区域中并且还没有读取出,以及
所述恢复单元从所述保护区域中读取由所述堆栈指针和执行级别组成的数据对,将读取的堆栈指针设置为所述预定寄存器,从由所述预定寄存器表示的堆栈区域中读取代表除执行级别以外的部分CPU信息,并且将该读取的部分CPU信息和执行级别恢复到CPU中。
7、按照权利要求5所述的中断控制装置,其特征在于,
所述保存单元还进一步将由所述堆栈指针和由CPU中的处理器状态字表示的执行级别保存到所述保护区域中,
(i)如果先前保存在所述保护区域中而且还没有读取出的堆栈指针与表示高级别的执行级别组成数据对,则所述第二保护单元禁止将数据写入从由该堆栈指针表示的地址开始到预定的地址结束的范围内的指令执行;以及(ii)如果先前保存在所述保护区域中而且还没有读取出的堆栈指针与表示低级别的执行级别组成数据对,则所述第二保护单元禁止将数据写入从通过将由所述指向预定地址的堆栈指针表示的地址增加或者减少预定量获得的地址开始到预定的地址结束的范围内的指令执行,以及
所述恢复单元从所述保护区域中读取由所述堆栈指针和执行级别组成的数据对,将该读取的堆栈指针设置为所述预定寄存器,从由该预定寄存器表示的堆栈区域中读取代表除执行级别以外的部分CPU信息,并且将该读取的部分CPU信息和指令级别恢复到CPU中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004131692A JP2005316599A (ja) | 2004-04-27 | 2004-04-27 | 割込制御装置 |
JP2004131692 | 2004-04-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1690971A true CN1690971A (zh) | 2005-11-02 |
Family
ID=35137785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200510066132.5A Pending CN1690971A (zh) | 2004-04-27 | 2005-04-21 | 中断控制装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20050240701A1 (zh) |
JP (1) | JP2005316599A (zh) |
CN (1) | CN1690971A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294544A (zh) * | 2012-02-27 | 2013-09-11 | 展讯通信(上海)有限公司 | 嵌入式系统及其中断处理方法与装置 |
CN103414525A (zh) * | 2013-07-18 | 2013-11-27 | 中国电子科技集团公司第四十一研究所 | 超外差接收分析仪器通道输出电平的自动调节系统及方法 |
CN107580697A (zh) * | 2015-05-07 | 2018-01-12 | Arm 有限公司 | 用于验证正确的代码执行上下文的检查指令 |
CN107861763A (zh) * | 2017-12-01 | 2018-03-30 | 天津麒麟信息技术有限公司 | 一种面向飞腾处理器休眠过程的中断路由环境恢复方法 |
CN108694079A (zh) * | 2017-04-07 | 2018-10-23 | 瑞萨电子株式会社 | 半导体设备 |
CN109283906A (zh) * | 2018-11-10 | 2019-01-29 | 国网电力科学研究院武汉南瑞有限责任公司 | 一种叠堆过程的监控系统及方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4357442B2 (ja) * | 2005-03-23 | 2009-11-04 | 株式会社東芝 | プラン実行装置、プラン実行方法およびプログラム |
JP5100133B2 (ja) * | 2007-01-19 | 2012-12-19 | 株式会社東芝 | 情報処理装置 |
US8125243B1 (en) | 2007-03-12 | 2012-02-28 | Cypress Semiconductor Corporation | Integrity checking of configurable data of programmable device |
GB2461851A (en) * | 2008-07-10 | 2010-01-20 | Cambridge Consultants | Processor, which stores interrupt enable flags in a location used for other functions |
US9530008B2 (en) * | 2013-05-29 | 2016-12-27 | Infineon Technologies Ag | System and method for a processing device with a priority interrupt |
US9734326B2 (en) * | 2014-02-04 | 2017-08-15 | Nxp Usa, Inc. | Dynamic interrupt stack protection |
US9921984B2 (en) * | 2014-12-23 | 2018-03-20 | Intel Corporation | Delivering interrupts to user-level applications |
JP6955858B2 (ja) * | 2016-10-17 | 2021-10-27 | オークマ株式会社 | 制御装置 |
CN113486356B (zh) * | 2021-06-30 | 2024-05-07 | 佛山职业技术学院 | 一种控制中断源的运行方法、装置、终端设备及存储介质 |
WO2023144939A1 (ja) * | 2022-01-26 | 2023-08-03 | 三菱電機株式会社 | コンピュータ、制御方法及び制御プログラム |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4349873A (en) * | 1980-04-02 | 1982-09-14 | Motorola, Inc. | Microprocessor interrupt processing |
JP3176093B2 (ja) * | 1991-09-05 | 2001-06-11 | 日本電気株式会社 | マイクロプロセッサの割込み制御装置 |
US5659759A (en) * | 1992-09-21 | 1997-08-19 | Kabushiki Kaisha Toshiba | Data processing device having improved interrupt controller to process interrupts of different priority levels |
JPH0713772A (ja) * | 1993-06-29 | 1995-01-17 | Mitsubishi Electric Corp | データ処理装置 |
US5497494A (en) * | 1993-07-23 | 1996-03-05 | International Business Machines Corporation | Method for saving and restoring the state of a CPU executing code in protected mode |
US5634046A (en) * | 1994-09-30 | 1997-05-27 | Microsoft Corporation | General purpose use of a stack pointer register |
JPH08305585A (ja) * | 1995-05-11 | 1996-11-22 | Matsushita Electric Ind Co Ltd | 割込制御装置 |
US20040168078A1 (en) * | 2002-12-04 | 2004-08-26 | Brodley Carla E. | Apparatus, system and method for protecting function return address |
US20050138263A1 (en) * | 2003-12-23 | 2005-06-23 | Mckeen Francis X. | Method and apparatus to retain system control when a buffer overflow attack occurs |
-
2004
- 2004-04-27 JP JP2004131692A patent/JP2005316599A/ja active Pending
-
2005
- 2005-04-21 CN CN200510066132.5A patent/CN1690971A/zh active Pending
- 2005-04-27 US US11/115,270 patent/US20050240701A1/en not_active Abandoned
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294544A (zh) * | 2012-02-27 | 2013-09-11 | 展讯通信(上海)有限公司 | 嵌入式系统及其中断处理方法与装置 |
CN103294544B (zh) * | 2012-02-27 | 2016-08-17 | 展讯通信(上海)有限公司 | 嵌入式系统及其中断处理方法与装置 |
CN103414525A (zh) * | 2013-07-18 | 2013-11-27 | 中国电子科技集团公司第四十一研究所 | 超外差接收分析仪器通道输出电平的自动调节系统及方法 |
CN103414525B (zh) * | 2013-07-18 | 2015-04-01 | 中国电子科技集团公司第四十一研究所 | 超外差接收分析仪器通道输出电平的自动调节系统及方法 |
CN107580697A (zh) * | 2015-05-07 | 2018-01-12 | Arm 有限公司 | 用于验证正确的代码执行上下文的检查指令 |
US10942739B2 (en) | 2015-05-07 | 2021-03-09 | Arm Limited | Check instruction for verifying correct code execution context |
CN107580697B (zh) * | 2015-05-07 | 2021-11-30 | Arm 有限公司 | 用于验证正确的代码执行上下文的检查指令 |
CN108694079A (zh) * | 2017-04-07 | 2018-10-23 | 瑞萨电子株式会社 | 半导体设备 |
CN107861763A (zh) * | 2017-12-01 | 2018-03-30 | 天津麒麟信息技术有限公司 | 一种面向飞腾处理器休眠过程的中断路由环境恢复方法 |
CN107861763B (zh) * | 2017-12-01 | 2022-03-11 | 麒麟软件有限公司 | 一种面向飞腾处理器休眠过程的中断路由环境恢复方法 |
CN109283906A (zh) * | 2018-11-10 | 2019-01-29 | 国网电力科学研究院武汉南瑞有限责任公司 | 一种叠堆过程的监控系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20050240701A1 (en) | 2005-10-27 |
JP2005316599A (ja) | 2005-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1690971A (zh) | 中断控制装置 | |
CN1109983C (zh) | 病毒清除方法和信息处理设备 | |
CN1315062C (zh) | 处理器装置、使用它的信息处理装置、编译装置及其方法 | |
CN1760836A (zh) | 信息处理系统、信息处理方法和程序 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1252599C (zh) | 信息处理设备 | |
CN1277207C (zh) | 使用基于时间的断点调试计算机程序的方法和系统 | |
CN1886728A (zh) | 非法代码执行的防止方法、非法代码执行的防止用程序以及非法代码执行的防止用程序的记录媒体 | |
CN100351788C (zh) | 嵌入式设备的驱动方法 | |
CN1227589C (zh) | 用于保存返回状态的数据处理设备和方法 | |
CN1795439A (zh) | 计算机操作系统的安全系统与方法 | |
CN1869952A (zh) | 指令执行设备、调试方法、调试设备以及调试程序 | |
CN1596401A (zh) | 非易失性存储器装置的控制方法 | |
CN1162777C (zh) | 中断管理装置和中断管理方法 | |
CN1630849A (zh) | 安全执行模式下信任客户使用安全核心系统 | |
CN1742257A (zh) | 基于识别寻址模式的双目的寄存器的数据预测机制 | |
CN1410876A (zh) | 微处理机 | |
CN1906583A (zh) | 信息处理设备、中断处理控制方法、以及计算机程序 | |
CN101038554A (zh) | 软件更新方法、更新管理程序和信息处理设备 | |
CN1121014C (zh) | 具有risc结构的八位微控制器 | |
CN1276562A (zh) | 虚拟机系统 | |
CN1993670A (zh) | 信息处理装置 | |
CN1947107A (zh) | 用于在存储器间传输数据的装置 | |
CN1908904A (zh) | 实时内部简易监视器 | |
CN1774695A (zh) | 用于计算机的总线桥安全系统与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |