应用程序的核心模式操作系统及方法

文档序号:6438464阅读:344来源:国知局
专利名称:应用程序的核心模式操作系统及方法
技术领域
本发明涉及在保护模式下执行核心模式操作的方法,应用于操作系统中进行低阶化的除错工作,让使用者易于执行核心模式操作。
背景技术
对研发人员来说,常常必须在机器的除错上花费许多时间,投资精力,并且不断吸收科技新知识。就软件的研发而言,则必须在软件与硬件间不断周旋,理清问题,并解决问题,以求提高质量。
在整个产品制造的除错过程(debugging process)中,软件研发人员所必须扮演的地位,除了软件本身的问题以外-包含基本输出/输入系统(BIOS)、驱动程序或操作系统,还可能与硬件间有极大的关联性。图1是显示磁盘操作系统(DOS)环境下的系统资源存取结构图。DOS的系统资源存取结构包括一应用程序/工具11、一基本输出输入系统13、一特权指令15、一输出入端口(I/O)17以及一存储器19。在过去的时代,操作系统(如DOS)开放了所有的系统资源供使用者任意使用,通过应用程序/工具11直接存取基本输出输入系统13或进行低阶化的操作(例如执行特权指令15或对输出入端口17及存储器19的存取),因此软件研发人员在除错的过程中,不致于有太大的瓶颈或问题。
然而随着时代的演进,操作系统为了能够提高操作效率,妥善管理系统资源,必须抛弃传统的中央处理器运作模式,即真实模式(real mode),而改行32位的保护模式(protected mode)。再者,由于操作系统管制了(包含禁止及限制)绝大部份的系统资源,因此对软件研发人员而言,过去在DOS下所能使用的观念,在此时则几乎变成无用武的地,除非软件研发人员的除错方式或是工具能够在保护模式的最高特权等级(称为Ring0)下执行。为了取得保护模式的最高等级,我们必须知道在保护模式下执行「核心模式操作」(Kernel-Mode operation)的方法。
软件研发人员为了能够在现代化的操作系统中进行低阶化的除错工作,或是开发相关软件,必须认知到现代的操作系统皆是在中央处理器的保护模式下运作的。因此,了解保护模式的基本原理便成为一项基本功夫。且在保护模式的运作下,若欲进行低阶化的系统操作,必须让程序能够进入到在中央处理器运作的最高特权等级,或是操作系统的核心模式,才有机会使用到全部的系统资源。
图2是显示在窗口操作系统下,藉由核心模式驱动程序执行核心模式操作的结构图。其中,包括一操作系统的保护模式环境,保护模式环境中包括一应用程序/工具21、一核心模式驱动程序(Kernel-Mode InterFaceDriver)23、一基本输出输入系统251、一特权指令253、一输出入端口257以及一存储器259。应用程序/工具21及核心模式驱动程序23是在一般使用者模式下执行,基本输出输入系统251、特权指令253、输出入端口257以及存储器259是存在于操作系统核心模式下。为了能取得最高特权等级,传统的做法,必须通过应用程序/工具21撰写核心模式驱动程序23(通过一驱动程序呼叫程序执行核心模式驱动程序23),藉由核心模式驱动程序23执行一系统呼叫(system call)以进入操作系统核心模式,如此便可直接存取基本输出输入系统251或进行低阶化的操作(例如执行特权指令253或对输出入端口257及存储器259的存取)。所述做法必须进入核心模式才能执行这些低阶化的系统操作,在微软的窗口操作系统下,就必须有驱动程序发展工具(DDK,Driver Development Kit)的协助才能完成。
图3是显示通过驱动程序发展工具执行核心模示操作的示意图。且不论DDK对驱动程序的分层观念以及其实作细节,在概念上,它首先必须先将欲在核心模式加以处理的数据予以包裹后,形成输出入请求分组(IRP,I/O Request Packet)31后,再连同「句柄」(Control Code)一并以DeviceIoControl()函式的系统呼叫程序通知驱动程序;接着通过输出/输入管理系统33,经过层层转换到达到硬件抽象层后35,然后进行硬件37的存取(如特权指令371、输出入端口373或存储器375),这样一个「输出入要求分组」会经过层层的处理,才会完成整个操作过程。
然而,对于系统制造软件研发人员而言,这样繁杂的过程有时会造成困扰,说明如下(1)大部份的系统制造软件研发人员所想要的核心模式操作是简单而直觉的。也许只是几个输出入端口的存取,或是必须进入核心模心才能使用的汇编语言(assembly language,如特权指令的执行)的撰写;(2)系统研发时期所可能遇到的问题种类复杂,变异性太大,一种为特定需求设计的核心模式驱动程序,不一定能够应付这些千变万化的可能性;(3)时效上的争取对于某些操控项目是必要的,例如一项时间消耗的计算,可能是精准至以毫秒或是一个时钟来计算;而驱动程序的执行路径若过于冗长,可能影响到时间计算上的精确性;(4)DDK的学习曲线过长,进入门坎值过高,对于只懂C/C++语言或是汇编语言的研发人员而言,很难在短时间内了解其撰写方法;以及(5)原先可在DOS下运作良好的工具,不易轻易运用核心模式驱动程序的方法加以移植,导致研发人员必须为新的软件结构做大幅度的调整,甚至是重新撰写原始码。
基于所述缺点,希望有一个解决策略并可达到以下特性(a)原始码可移植性(source code portability)原先能在DOS下运作良好的工具,若具有原始码,最好能够只作少许的修改,即可在窗口操作系统下运作;(b)语言适用性(language suitability)软件研发人员最好能够运用即有的C/C++语言,或是汇编语言的知识,即可顺利在窗口操作系统下立即从事核心模式软件的撰写,而不必再学习新的软件结构;(c)核心操作掌控性(controllability)如果有必要需使用到非原有知识范围内的软件结构,最好能够轻易掌控其行为;(d)程序可异动性(variability)面对千变万化的除错需要,最好能够让软件研发人员藉由几个简单的调整,即可完成其所要达到的目的;以及(e)操作直觉性(inductivity)除了呼应以上各点,同时,最好在窗口操作系统下,一样能够以原先在DOS下所拥有的观念来加以运用。

发明内容
有鉴于此,本发明的目的在提供一种应用程序的核心模式操作系统,使应用程序在使用者模式特权等级(Ring3)下执行核心模式操作。
本发明的另一目的在提供一种应用程序的核心模式操作方法,使得软件发人员能很容易地在保护模式下执行核心模式操作。
基于所述目的,本发明提供一种应用程序的核心模式操作方法,包括下列步骤提供一核心接口产生器(Kernel-Mode Interface Generator);核心接口产生器可产生一核心模式接口驱动程序;核心模式接口驱动程序产生一呼叫网关,并可使此呼叫网关具有在核心模式下执行最高特权等级操作的能力;提供一特权接口(Privilege Interface),特权接口用以连接一使用者模式及核心模式;以及藉由呼叫网关,提供使用者模式的一行程切换进入核心模式,执行最高特权等级的操作。
本发明将提供一种能使应用程序在使用者模式特权等级下执行核心模式操作的方法,让软件发人员能很容易地在保护模式下执行核心模式操作。


为让本发明的所述和其它目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并结合附图详细说明如下。
图1示出了磁盘操作系统环境下的系统资源结构图。
图2示出了于窗口操作系统下,藉由核心模式驱动程序执行核心模式操作的结构图。
图3示出了通过驱动程序发展工具执行核心模示操作的示意图。
图4示出了操作系统的特权等级的存取权限示意图。
图5示出了本发明的系统结构图。
图6示出了呼叫网关的呼叫流程图。
附图标号说明11、21~应用程序/工具;13、251~基本输出输入系统;15、253、371~特权指令;17、257、373~输出入端口;19、259、375~存储器;23~核心模式驱动程序;31~输出/输入请求分组;33~输出/输入管理;35~硬件抽象层;37~硬件;41~系统中断;43~工作切换;45~特权切换指令;451~特权切换指令进入点;47、531~呼叫网关;471~呼叫网关进入点;51~核心接口产生器;53~核心模式接口驱动程序;55~特权界面;61~远程指标;63~全域描述表格;631~呼叫网关描述器;633~目标程序节区描述器;65~进入点。
具体实施例方式
本发明提供了一种应用程序的核心模式操作系统及方法。
图4示出了操作系统的特权等级的存取权限示意图。窗口操作系统(如Windows NT/2K/XP)皆为完全的保护模式操作系统,在保护模式中,绝大部份的系统资源不是必须具有足够的特权(privilege level)才能进行操作,就是被限制使用。这二项限制条件,对于位于使用者模式的行程(User-Mode Process)来说是完全的成立,但是对于核心模式的行程(Kernel-Mode Process)来说,则绝大部份是开放的。意即,一旦进入操作系统的核心模式,等于是取得了中央处理器的最高特权等级,能够拥有对于绝大部份的系统资源进行操作的权力。因此,为了能够取得这样的特权,我们必须找到能够进入核心模式或是最高特权等级的路径。
在图4中,我们可以知道要取得核心模式的操控权,重点在于能否由使用者模式特权等级的中央处理器特权等级,以合法的路径进入最高特权等级的特权核心。在英特尔公司(Intel)的IA-32系列的中央处理器的设计中,提供了几种能够进入最高特权等级的方法,这些合法的路径,包括(i)系统中断(system interrupt)41工作切换为操作系统在时间间隔(time-slice)到达时,所引发的工作本文切换动作(context switch)。在切换动作发生时,原先的工作中大部份的中央处理器缓存器内容会被保存,并加载下一个工作的中央处理器缓存器内容。在此,我们所提的工作切换为不同特权等级间的工作切换。(ii)工作切换(task switch)43系统中断为操作系统或是系统硬件所触发的工作切换,与前一项工作切换的性质类似,不同的是,此时中央处理器并不负责保存缓存器的内容,而是由中断服务例程(Interrupt Service Routine,ISR)来决定需被保留的缓存器。通常中断的发生,会伴随着特权等级的切换,尤其是中断的性质为硬件中断(IRQ),或是操作系统所引发的中断或例外(exception)。(iii)特权切换指令(SYSENTER及SYSEXIT)45此为Pentium II以上的IA-32中央处理器所提供的一组特别指令,用来使任何的特权等级的工作能够随时经由特定的「特权切换指令进入点(entry point)451」来取得最高特权等级的权限。通常这组指令必须由操作系统配合做基本的初始化工作,才能正确地被使用。窗口操作系统的设备驱动程序通常使用这组指令来要求操作系统协助完成低阶的硬件操作。(iv)呼叫网关(Call Gate)47此为IA-32中央处理器所提供的另一种特权等级切换的机制。这种机制的特色是其可在全域描述器表格(Global Descriptor Table,GDT)中配置一组选择器(selector)及呼叫网关进入点471,并开放给符合特权等级要求的工作能够藉由呼叫网关进入点471来进行等级切换,并在工作完成后,再切换回原先的等级。对执行呼叫的行程来说,呼叫网关的机制就如同一般的过程调用,但比一般的过程调用具有更高的特权。
在以上四种特权等级切换的机制中,对应用程序而言,只有特权切换指令)45及呼叫网关47两种方法具有可控制性,亦即可由应用程序决定引发特权切换的时间点。然而,特权切换指令机制的使用,却必须在使用前先行设定相关的特定模型缓存器(MSR,Model-Specific Register),且其仅提供单一进入点的特性(一般来说,操作系统已决定其进入点了),对应用程序而言,不易改变或新增特权进入点。因此,本发明即利用呼叫网关,由应用程序改变或新增特权进入点。
图5示出了本发明的系统结构图。本发明的系统结构包括一核心接口产生器(亦可称为KMIf Generator)51、一核心模式接口驱动程序(亦可称为IKM Driver)53及一特权界面55。核心接口产生器51用来控制产生核心模式接口驱动程序53的生成(construct)及消灭(destruct),并使其与特权接口55产生关联;核心模式接口驱动程序53由核心接口产生器51动态产生,并用以产生一呼叫网关531及设定呼叫网关531需使用的核心变量的属性;特权接口55为软件研发人员所直接接触的对象类别,为一使用者模式及核心模式间连接的「桥梁」(bridge)。特权接口55提供了能使在使用者模式运作的行程(process)进行核心模式操作的类别方法。
在这些类别方法中,实作了绝大部份会被中央处理器或操作系统认定为「特权的」(privileged)或是「限制的」(restricted)指令,如输出入端口的读写、中断的允许(enable)及禁止(disable)、特定模型缓存器)的读写、存储器的操作…等。这些类别方法皆以「类C」(C-like)的方式来加以命名。因此对于软件研发人员来说,可以立即上手。另外,对于本发明未直接支持的特权指令,或是某些必须经过特权检查的系统呼叫(例如,线性地址(linear addess)与物理地址(physical address)的相互转换),也提供了如Ring0Function()函式的回呼函式(callbackfunction)的间接支持,以应付千变万化的核心模式操作。
简而言之,本发明是通过特权接口55发出一系统呼叫,藉由呼叫网关531使特权等级较低的行程取得最高特权等级的权限,以使用特权等级较高的系统资源或操作。
图6示出了呼叫网关的呼叫流程图。呼叫网关在使用上,藉由远程过程调用(call far)指令来完成,如下所述call far CallGateSelectorCallGateOff其中,CallGateOff并不会被使用到,因此可以为任意值。而CallGateSelector在意义上,是一指向呼叫网关的远程指标(far pointerto call gate),如图6所示,其中,呼叫网关选择器(call gate selector)61所代表的远程指针指向全域描述表格(Global Descriptor Table)63的呼叫网关描述器(call gate descriptor)631。在呼叫网关描述器631中,描述呼叫网关进入点的选择器信息,以及可供使用呼叫网关的特权等级属性信息。因此,当呼叫网关呼叫者(caller)执行呼叫时,中央处理器先行判断呼叫者的特权等级是否足够,再决定是否取出呼叫网关所指向的目标程序节区描述器(code-segment descriptor)633。如果特权检查通过了,中央处理器会进行堆栈切换(stack switch)-同时隐含着特权等级切换,并将「指令指针」(instruction pointer)切换至呼叫网关所代表的进入点65中(即图6的程序节区描述器633中所存的基地址(baseaddress)加上呼叫网关描述器631中所存的偏移地址(offset)后所得的地址)。
一旦呼叫网关完成指令指针的切换后,同时也完成了特权等级的切换,而核心模式程序接口(IKM)对其所配置的呼叫网关即给予最高特权等级,也因此使得呼叫者拥有最高特权等级的权限。在取得最高的权限后,便能运用任何的系统资源,包含输出入端口的存取,存储器的存取,特权指令的使用…等等。而在这些核心模式的操作完成后,再以远程返回(returnfar)回到呼叫者的返回地址,并回复成原先的特权等级。
本发明提出一个可于窗口操作系统下,以传统C/C++语言观念快速撰写核心模式应用软件及工具的软件框架,以解决所述的各种技术困境。
由于本发明的设计理念,是希望能够让处于使用者模式特权等级权限的应用程序能完成最高特权等级权限所能做的事,因此,其在呼叫网关的运用上采用轻量原则(light-weighted principle),意即在使用每一个类别方法函式的呼叫时,尽量与中央处理器的指令用途接近,同时将必须在操作系统核心模式才能完成的操作予以实作(如物理地址转译为线性地址),以求达到以下效果1.使软件研发人员能以最直觉的系统操作观念(即汇编语言的观念,或是输出入端口或存储器直接存取的观念)撰写核心模式应用程序;2.缩短核心模式函式的执行时间,以求争取最快的时效性(例如一项操作耗费中央处理器时钟的计算);3.增加核心模式操作的弹性,以求软件研发人员能够快速调整核心模式操作的程序细节。
虽然本发明已以较佳实施例披露如上,然其并非用以限定本发明,任何本领域的技术人员,在不脱离本发明的精神和范围的前提下,可作各种的更动与润饰,因此本发明的保护范围视后附的权利要求的范围为准。
权利要求
1.一种应用程序的核心模式操作系统,包括一核心接口产生器,所述核心接口产生器用以动态产生一核心模式接口驱动程序,所述核心模式接口驱动程序产生一呼叫网关,并使所述呼叫网关可在一核心模式下执行一最高特权等级操作;以及一特权接口,所述特权接口用以连接一使用者模式及所述核心模式,所述特权接口通过所述呼叫网关,提供所述使用者模式的一行程切换进入所述核心模式,执行所述最高特权等级操作。
2.如权利要求1所述的应用程序的核心模式操作系统,其中,所述特权接口向所述核心接口产生器发出一呼叫网关要求,所述核心接口产生器产生所述核心模式接口驱动程序,接着所述核心模式接口驱动程序产生所述呼叫网关,所述特权接口即通过所述呼叫网关,令所述行程切换进入所述核心模式。
3.如权利要求1所述的应用程序的核心模式操作系统,其中,所述核心模式位于一中央处理器的一保护模式下。
4.如权利要求3所述的应用程序的核心模式操作系统,其中,所述行程指一使用者特权等级的操作。
5.如权利要求4所述的应用程序的核心模式操作系统,其中,所述呼叫网关在一全域描述器表格中,配置一选择器及一特权进入点,以使所述行程在所述核心模式中执行所述最高特权等级的操作。
6.如权利要求5所述的应用程序的核心模式操作系统,其中,利用所述全域描述器表格,通过所述选择器,并经由所述特权进入点,将所述行程的所述使用者特权等级切换至所述最高特权等级,在执行完所述最高特权等级的操作后,切换回所述使用者特权等级。
7.如权利要求6所述的应用程序的核心模式操作系统,其中,所述全域描述器表格有一呼叫网关描述器及一节区描述器。
8.如权利要求7所述的应用程序的核心模式操作系统,其中,所述选择器所代表的一远程指标指向所述呼叫网关描述器,当所述呼叫网关的一呼叫者执行呼叫时,所述中央处理器判断所述呼叫者若具备所述最高特权等级,则将一指令指针切换至所述进入点。
9.如权利要求8所述的应用程序的核心模式操作系统,其中,所述指令指针切换至所述进入点,表示具有所述最高特权等级,可在所述核心模式下执行所述最高特权等级的操作,并在操作完后恢复所述使用者特权等级。
10.一种应用程序的核心模式操作方法,包括下列步骤提供一核心接口产生器;所述核心接口产生器产生一核心模式接口驱动程序;所述核心模式接口驱动程序产生一呼叫网关,并使所述呼叫网关可在一核心模式下执行最高特权等级操作;提供一特权接口,所述特权接口系用以连接一使用者模式及所述核心模式;以及藉由所述呼叫网关,提供所述使用者模式的一行程切换进入所述核心模式接口驱动程序,执行所述最高特权等级的操作。
11.如权利要求10所述的应用程序的核心模式操作方法,其中,提供所述特权接口以连接所述使用者模式及所述核心模式的步骤中,所述特权接口向所述核心接口产生器发出一呼叫网关要求,所述核心接口产生器产生所述核心模式接口驱动程序,接着所述核心模式接口驱动程序产生所述呼叫网关,所述特权接口即通过所述呼叫网关,令所述行程切换进入所述核心模式。
12.如权利要求10所述的应用程序的核心模式操作方法,其中,所述核心模式系位于一中央处理器的一保护模式下。
13.如权利要求12所述的应用程序的核心模式操作方法,其中,提供所述使用者模式的所述行程切换进入所述核心模式接口驱动程序的步骤中,所述行程是指一使用者特权等级的操作。
14.如权利要求13所述的应用程序的核心模式操作方法,其中,所述呼叫网关在一全域描述器表格中,配置一选择器及一特权进入点,以使所述行程于所述核心模式执行所述最高特权等级的操作。
15.如权利要求14所述的应用程序的核心模式操作方法,其中,利用所述全域描述器表格,通过所述选择器,并经由所述特权进入点,将所述行程的所述使用者特权等级切换至所述最高特权等级,于执行完所述最高特权等级的操作后,切换回所述使用者特权等级。
16.如权利要求15所述的应用程序的核心模式操作方法,其中,所述全域描述器表格有一呼叫网关描述器及一节区描述器。
17.如权利要求16所述的应用程序的核心模式操作方法,其中,所述选择器所代表的一远程指标指向所述呼叫网关描述器,当所述呼叫网关的一呼叫者执行呼叫时,所述中央处理器判断所述呼叫者若具备所述最高特权等级,则将一指令指针切换至所述进入点。
18.如权利要求17所述的应用程序的核心模式操作方法,其中,所述指令指针切换至所述进入点,表示具有所述最高特权等级,可在所述核心模式下执行所述最高特权等级的操作,并在操作完后恢复所述使用者特权等级。
全文摘要
一种应用程序的核心模式操作系统,包括一核心接口产生器、一核心模式接口驱动程序及一特权接口,核心接口产生器系用以动态产生核心模式接口驱动程序,接着核心模式接口驱动程序产生一呼叫网关,并使呼叫网关可在一核心模式下执行一最高特权等级操作,特权接口是用以连接使用者模式及核心模式,特权接口通过呼叫网关,提供使用者模式的一行程切换进入核心模式,以执行最高特权等级操作。
文档编号G06F9/46GK1519719SQ03101499
公开日2004年8月11日 申请日期2003年1月22日 优先权日2003年1月22日
发明者刘韦宏 申请人:纬创资通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1