专利名称:使用目标安全的输入输出装置的多表式存取方法及装置的制作方法
技术领域:
本发明主要涉及计算机系统操作,更确切的说,是用来执行基于物理地址的安全结构方案以提供安全的输入/输出(I/O)存取的方法及装置。
背景技术:
计算机或计算系统在当今的许多工业及家庭应用中都是非常重要的元素。许多的系统,如制造系统、电力系统、产品配销系统和文件系统等,皆由使用处理器的计算机系统所驱动。这些处理器提供多种测试并执行许多可以相互作用的软件程序。多次输入/输出装置能够操控处理器及软件程序的操作。在处理器操作过程中需要一定的安全等级,这样才能对某些软件结构(如软件对象、子程序和独立程序等)加以控制并给予高于其它软件结构的优先权。许多时候,对于某些软件结构及某些处理器功能的存取会受到限制以防止处理器进行未经授权及不经意的存取与操作。目前计算机结构包含了一种运用虚拟内存的方案,该虚拟内存使用驻留在计算机系统上的物理内存中的数个系统定义的表。这些系统表上的入口一般预先设定过且包含限制了对某些软件结构的存取的保留区域。
计算系统已由单一任务装置逐渐演变为多任务装置。计算系统利用操作系统来执行许多的工作并对他们的资源运用作管理。一般,当使用者触发了一个进程(如开启了文字处理器之类的软件),计算机会提供某些计算机资源(如部分的内存)供该工作使用。然而,许多的计算机资源无法或者不能以这种方法提供。例如,打印机驱动程序常为多个任务所使用。操作系统因此也经常替这些共享资源有关的任务定义权限与通讯协议。因此,通过操作系统的努力,计算系统能够以有效率的方式同时执行多个任务。
这类计算环境中的一个重要方面为″安全″。计算系统的多任务利用安全与保护服务来保护操作系统不受用户进程影响,同时也保护各个用户进程相互影响。若没有保护,恶意程序会不经意地破坏属于操作系统或其它进程的内存空间内的程序代码或数据。在下文中,请注意,安全并不代表防止有意的恶性行为,尽管其希望能有效的与之对抗。
许多的处理器,如x86处理器,提供多个的安全等级,例如优先权(privilege)等级。现在请看图1,在此示例了一个典型的多重保护等级的范例。图1中的倒三角形结构图解了四个安全(优先权)等级,等级0、等级1、等级2、等级3一直到等级n。操作系统被赋予如等级0的基本优先权等级。由安全等级0所提供的优先权让特定的软件结构能获得由后续安全等级如等级1至3所提供的存取。若有一个软件结构仅允许安全等级2的优先权,则该特定软件仅能在优先权等级2及优先权等级3所提供的操作系统上做存取与控制。在许多的情况下,如Microsoft Windows这类大众化的操作系统并不会用到各个安全等级的所有功能。某些软件操作系统仅使用两个优先权等级,如等级0与等级3。
当操作系统服务与所有的驱动程序皆在安全等级0操作时,用户应用程序可能在安全等级3执行。如此会使计算机系统暴露在数种安全风险之下。当大部分的驱动程序在对所有的计算机资源做存取时特别真确,因为他们是在最具优先权的安全等级0之下操作。因此,未经授权而存取用来控制计算机系统中输入/输出装置(如调制解调器装置)的驱动程序,会引起输入/输出装置有未经授权的操作而导致系统的崩溃或错用。此外,对系统输入/输出装置进行未经授权的存取会造成宝贵数据与软件程序的遗失。
本发明用于克服或至少减少上述的一个或数个问题的影响。
发明内容
本发明在一个方面,提供了利用目标安全以执行输入输出装置存取的方法。一个软件对象被执行。建立了一个供该软件对象用的安全等级。利用至少一个安全等级实现一个多表式输入/输出(I/O)空间存取。该对象的功能被执行。
本发明在另一个方面,提供了一个使用目标安全以执行装置输入/输出存取的装置。本发明的装置包含与总线相连的处理器;将至少一个软件对象与处理器相连接的方法;输入/输出(I/O)装置;与总线及内存单元相连接的(I/O)存取接口,该内存存取接口基于至少一个安全等级为处理器提供了至少一部分的内存单元的多等级表输入/输出空间存取部分,以响应执行软件对象的处理器。
本发明可通过参考后续与附图相结合的叙述加以了解,其中相同的组件以相同的数字标示,且其中图1为一个供计算机系统中安全存取用的多个优先权等级的文字表示;图2为根据本发明的一个实施例,可实际应用的计算机系统方框图;图3为根据本发明的一个实施例,图2中所显示的处理器单元的更详细方框图;图4为根据本发明的一个实施例,图3中所显示的输入/输出存取接口的更详细方框图;图5A及图5B为图1-4示例的处理器所执行的输入/输出空间/输入/输出内存存取的方框图;图6为根据本发明的一个实施例,利用安全结构执行输入/输出空间/输入/输出内存存取的方法的流程图;图7为根据本发明的一个实施例,图6中所描述的多表式输入/输出空间/输入/输出内存存取的执行方法的流程图;图8为根据本发明的一个实施例,图7中所描述的第二输入/输出表的设定方法的流程图;图9为根据本发明的一个实施例,图7中所描述的多等级表存取的执行方法的流程图;图10为根据本发明的一个实施例,图9中所描述的第二输入/输出表的安全等级决定方法的流程图;而图11为根据本发明的一个实施例,图7中所描述的为响应多等级表存取而执行适当的输入/输出空间/输入输出内存存取的方法的流程图。
由于本发明容易受到不同变化与相异形式的影响,其特定实施例已利用附图范例的方式加以表示并在此详述。然而,应该理解的是,此处所描述的特定实施例并不是要对所揭示的特定模型加以限制,相反的,其目的在于涵盖所有符合本发明所附的权利要求书的精神与范围所定义的修改、等效及转化形式。
具体实施例方式
本发明所描述的实施例叙述于下。为了清晰起见,并非实际实现的所有功能都在此说明书中加以叙述。可以理解的是在此类实施例的实施过程中,有数个有关实现的特定决定需加以决策以达成开发者的特定目标,诸如顺从系统相关或商业相关的限制,其在各个实施例中都有所不同。此外,可以理解此类开发所付出的努力将会复杂且耗时,但对于那些受益于本揭示的本领域技术人员仍将会是例行工作。
本发明的具体实施例采用安全存取系统提供给输入/输出空间存取。本发明的具体实施例在一个由计算机系统中的单一或多个处理器加以激活的输入/输出空间存取(如存取输入输出装置)期间提供给多重输入/输出空间及/或输入/输出内存存取表系统以提供安全。本发明的具体实施例还提供一个使用输入/输出空间存取表及第二输入/输出存取表的输入/输出空间存取系统,其使得输入/输出空间及/或输入/输出内存存取时的安全度增加。
现在请看图2,其中示例了根据本发明的系统200的一个实施例。系统200包含处理单元210;多个输入/输出装置,如键盘230、鼠标240、输入笔250和一个如显示器的显示单元220。在一个实施例中,本发明所揭示的安全等级系统驻留在处理单元210中。在处理单元210中,来自输入/输出装置230、240和250中的一个输入会激活一个或多个软件结构(包含操作系统)的执行。与驻留在系统200中的输入/输出空间相关的输入/输出空间及/或内存然后会受到存取以执行驻留在处理单元210中的多个软件结构。基于编程写入系统200的预定安全入口,本发明的实施例限制了由一个或多个软件结构所激活的输入/输出空间存取。
现在请看图3,在此示例了根据本发明的处理单元210的一个实施例的简单方框图。在一个实施例中的处理单元210,包含处理器310、输入/输出存取接口320、I/O空间340和诸如软件对象或结构的可编程对象350。处理器310可以是微处理器,其可以包含多个处理器(未显示)。
在一个实施例中,输入/输出空间340提供了一个″网关″给输入/输出装置360,如调制解调器、软驱、硬盘驱动器、光驱、DVD光驱、PCMCIA卡及多个其它的输入/输出外围设备。在另一个实施例中,输入/输出装置360里整合了输入/输出空间340。在一个实施例中,输入/输出空间340包含了一个含有与输入输/输出空间340的寻址与通信有关的数据的内存单元347。内存单元347包含一个物理内存区,其中包含诸如磁带内存、闪存、随机存取存储器、驻留在半导体芯片中的内存及其它此类的物理内存。驻留在半导体芯片上的内存可以是多种形式中的任意一个,例如同步动态随机存取存储器(SDRAM)、双倍速率动态随机存取存储器(DDRAM)或诸如此类的。
处理器310通过系统输入/输出存取接口320与输入/输出空间340通信。在一个实施例中,输入/输出存取接口320是一种常见的结构,其为输入/输出空间340提供输入/输出空间地址及逻辑信号以进行所需的输入/输出数据交易。本发明的实施例供输入/输出存取接口320实现多表式、基于安全的存取系统。
在一个实施例中,处理器310与主机总线315相连。处理器310通过主机总线315与输入/输出存取接口320及对象350通信。输入/输出存取接口320与主机总线315及输入/输出空间340相对应。处理器310也与用以和外围装置通信的主要总线315相对应。在一个实施例中,主要总线325为外围设备互连(PCI)总线(参考PCI规格说明书2.1版)。用以驱动显示单元220及其它装置(如PCI装置)的视频控制器(未显示)与主要总线325相连接。计算机系统200可能包含本领域技术人员所熟悉的其它总线如第二PCI总线(未显示)或其它外围装置(未显示)。
处理器310根据来自对象350的指令执行多个的计算机处理操作。对象350可包含触发处理器310执行多个功能的软件结构。此外,对象350的多个子区块,如操作系统、诸如Microsoft Word的用户接口软件系统等,可能同时在处理器310上常驻并执行操作。本发明的实施例为处理器310提供了安全等级存取及优先权。
为响应对象350所提供的软件程序代码的执行,处理器310执行一个或多个输入/输出装置存取,包括内存存取,以便执行由一个或多个对象350的激活所引起的任务。由处理器310所执行的输入/输出存取包括存取输入/输出装置360以控制输入/输出装置360的各个功能,例如调制解调器的操作。由处理器310所执行的输入/输出存取还包括存取输入/输出装置360的内存位置以储存执行程序代码及内存存取以便从储存的内存位置中获得数据。
许多时候,为了供一个或多个被选取的对象350存取,某些输入/输出装置360,或部分输入/输出装置360的部分会被加以限制。同样地,为了供一个或多个被选取的对象350存取,储存在输入/输出装置360中的特定内存位置中的某些数据会受到限制。本发明的多个实施例提供多表式安全存取以限制系统200中的特定输入/输出装置360或输入/输出装置360的内存位置的存取。处理器310通过输入/输出存取接口320执行输入/输出空间存取。输入/输出接口320提供对输入/输出空间340的存取,其可包含供多重输入/输出装置360用的网关。多表式虚拟内存存取由本发明的至少一个实施例提供。
现在请参考图4,其描述了根据本发明的一个输入/输出存取接口320的实施例的方框图。在一个实施例中,输入/输出存取接口320包含输入/输出存取表410(或输入/输出空间存取表410)、第二输入/输出存取表430及输入/输出空间接口345。在一个实施例中,输入/输出空间接口345代表″虚拟的″输入/输出空间地址,其可用于寻址与输入/输出装置360有关的物理位置或输入/输出装置360的一部分。此虚拟I/O空间寻址可定义为对有关虚拟内存表的虚拟内存进行寻址。输入/输出空间接口345可包括虚拟内存表。。在另一具体实施例中,虚拟内存表可位于输入/输出空间接口345外部,例如在第二输入/输出存取表430或输入/输出存取表410中。处理器310可通过寻址输入/输出空间接口345来存取输入/输出空间340。
本发明的实施例提供利用多表式输入/输出及内存存取系统执行输入/输出存取。本发明的实施例所利用的多表式输入/输出及内存存取系统使用多等级表寻址的方法(也就是说,利用与第二输入/输出表430相结合的输入/输出存取表410)通过输入/输出接口345存取输入/输出空间地址。处理器310使用输入/输出内存地址对所需的物理输入/输出位置进行定位。
系统200利用将输入/输出存取表410与其它至少一个表,如第二输入/输出表430,相结合以定义虚拟输入/输出空间地址,其中该虚拟输入/输出空间地址可以关于虚拟内存表。输入/输出存取表410及第二输入/输出存取表430是用来对虚拟输入/输出空间地址做转换以产生物理输入/输出地址。物理输入/输出地址指向输入/输出装置360的物理位置或指向输入/输出装置360中的内存位置。由本发明的实施例所提供的多等级输入/输出存取表系统允许第二输入/输出表430定义输入/输出存取表410的所有区块。在某些情况下,第二输入/输出表430可以定义在输入/输出存取表410中部分不存在的虚拟输入/输出地址的一部分。第二输入/输出表430可作为微调装置以根据由输入/输出存取表410所产生的虚拟输入/输出地址对物理输入/输出位置做进一步定义。这会产生更正确且快速的虚拟输入/输出地址的定义。
在一个实施例中,其中可包含多个子表的第二表430,储存于系统200的内存单元347,或系统200的主存储器(未显示)中。第二输入/输出表430储存在高度的安全等级之下以防止不安全或未经证实的软件结构或对象350存取第二输入/输出表430。在一个实施例中,处理器310请求对根据对象350所送出的指令请求存取物理输入/输出装置位置内的位置。为响应处理器350所提出的内存存取请求,输入/输出存取接口320引发输入/输出存取表410产生虚拟输入/输出地址,其由第二输入/输出表430进一步的定义。接着虚拟输入/输出地址指向输入/输出空间接口345中的一个位置。接着处理器310请求存取虚拟输入/输出位置,其接着用于对输入/输出装置360中相对应的位置定位。
图5A、5B及下面的描述示例了用以执行由处理器310所执行的内存存取的一个具体实施例。现在请参考图5A,其显示了一个用于储存及取得数据处理器或计算机系统200中的安全等级属性的输入/输出存取系统500的示例性实施例。在一个实施例中,输入/输出存取系统被整合到系统200的处理单元210之中。输入/输出存取系统500在使用多表式安全方法存取输入/输出空间340时在数据处理器(未显示)中很有用。例如,当利用分页方法,如x86型微处理器中所使用的分页方法,对输入/输出空间340做寻址时处理器310便可用到输入/输出存取系统500。在一实施例中,x86系统中的单一内存分页包含4Kbytes的内存。此外,输入/输出存取系统500可在一定的分页等级下指定适当安全等级属性的处理器310中找到特定的应用。
输入/输出存取系统500接收由分页部分510及偏移部分520所组成的输入/输出空间地址533,相对于会被x86型的微处理器中的分页单元加以接收的虚拟、线性、中间地址。在一个实施例中,分页部分510的数据寻址了适当的内存分页,而偏移部分520的数据寻址了选定的分页部分510上的特定输入/输出偏移位置。输入/输出存取系统500接收可由x86型微处理器中的分页单元(未显示)所产生的物理地址。
通常被视为延伸安全属性表(ESAT)的多等级查找表530,接收物理输入/输出地址的分页部分510。多等级查找表530储存了与内存的各个分页510相关的安全属性。换句话说,每个分页510具有某些与分页510相关的安全等级属性。在一个实施例中,与分页510相关的安全属性储存在多等级查找表530中。例如,与各个分页510相关的安全属性可包含向下参照、安全文件标识、轻量呼叫门、可读、可写、执行、可外部控制写入、可外部控制读取、加密内存、安全指令使能等等…。这些许多属性对于受益于本揭示的本领域技术人员而言并不陌生。
在一个实施例中,多等级查找表530位于系统200的系统内存(未显示)之中。在另一个实施例中,多等级查找表530整合到处理器310中,其包含含有系统200的微处理器。因此,多等级查找表所能操作的速度是(至少部分地)取决于系统内存的速度。与处理器310的速度相比,系统内存的速度一般相对地较慢。因此,利用多等级查找表530取得安全属性的过程会延缓系统200的整体操作。为了减少定位及取得安全属性所需的时间,采用了一个与多等级查找表530并连的高速缓存540。高速缓存540可放置于与处理器310相同的半导体晶粒上(例如,将高速缓存540及处理器310整合在相同的半导体芯片上)或置于处理器晶粒之外。一般来说,高速缓存540的速度会明显地快于等级查找表530。高速缓存540包含较小的分页510的子集合且其安全属性包含在多等级查找表530中。因此,由于分页510储存在高速缓存540中,取得安全属性的操作会明显加强。
现在参考图5B,其示例了一个用以储存及接收与内存中的分页510相关的安全属性的多等级查找表530的实施例。多等级查找表530包含第一表550,其一般被视为延伸安全属性表目录,及第二表552,其一般被视为延伸安全属性表。一般来说,第一表550包含供其中储存了各个分页510的安全属性的多个延伸安全属性表552用的启始地址的目录。在此处所示例的实施例中,单一延伸安全属性表目录550可用来规划输入/输出装置360上的整个输入/输出地址及/或内存的长度。
包含了最高次序位且一般被视为目录(DIR)554的输入/输出空间地址553的第一部分被用作指向第一表550的指针。输入/输出空间地址553还包括含有表数据570的一部分,其可识别被寻址的表550、552。输入/输出空间地址553进一步包含通向特定的入口560和580的表550与552上的偏移520。第一表550位于基地址555的系统内存中。将输入/输出空间地址553的目录部分554加入至基地址555中以识别入口560,其指向第二表群552其中之一内的一个适当地址的基地址。在一个实施例中,多等级查找表530中存在多个第二表552。一般来说,第一表550中入口560的每一个皆指向第二表552的地址中的一个启始地址。换句话说,每个入口580可指向它们自己单独的延伸安全属性表552。
在一个实施例中,第一表550及每个第二表552在物理内存中占有一个分页510。因此,在x86型微处理器中常见的可分页内存管理单元能够根据需要将表550、552置换入及出系统内存中。也就是说,由于表550、552的多等级安排,将可以预期所有的表552可同时存在于输入/输出空间340中。若有一个表552并未正确的被置于由第一表550中的入口560所要求的内存单元347内,x86微处理器的常用内存管理单元(未显示)会自诸如硬盘驱动器的主存储器中读取分页510,并将所要求的分页510储存在其可能会被存取的系统内存中。这种表550、552的单页空间处理,减少了储存多级查找表530所需的系统内存数目,并减少了利用表550、520存取输入/输出空间340所需的置换内存数目。
在一个实施例中,每个分页尺寸皆为4K字节,而系统内存共16M字节。因此,将近4000个延伸安全属性表552会存在于一个分页510上。在一个实施例中,4000个延伸安全属性表表552分别包含4000组的安全属性。此外,延伸安全属性表目录550包含了4000个延伸安全属性表表552的每一个启始地址。第一表550的入口560指向适当的第二表552的基地址。在适当的第二表552中的所需入口580通过将输入/输出空间地址553的第二部分552(表部分)加入到包含在入口560内的基地址555中来加以识别。在一个实施例中,入口580包含与输入/输出空间340中的已识别分页510相关的预定安全属性。图5A及图5B中所示例的多表式方法为一个示例性实施例,那些受益于本揭示的本领域技术人员可以根据本发明实现不同的多表式方法。
现在请参考图6,其示例了根据本发明的一个实施例的方法的流程图。对象350由系统200激活(框图610)。对象350诸如特定的软件程序(例如Windows Word),可通过诸如鼠标240的输入输出装置的作用而激活。当对象350被系统200激活时,处理器310会执行对象350所提供的程序代码(框图620)。接着系统200根据预定的安全等级为对象350建立安全等级(框图630)。接着系统200引发多表式输入/输出空间存取(框图640)。由系统200所执行的多表式输入/输出空间存取将在下面详述。根据已建立的安全等级与由系统200所实现的多等级输入/输出空间存取,对象350的功能会紧接着被执行(框图650)。对象350的功能包含读取已储存的文件、执行由调制解调器所激活的通信连接,如无线调制解调器,及诸如此类的功能。
现在请参考图7,其示例了执行图6中的框图640中描述的多表式输入/输出空间存取的一个实施例的流程图。系统200执行第二表设定功能(框图710)。设定第二输入/输出表430包含放置及/或更新第二表430中的数据的安全等级。第二输入/输出表430可用于定义输入/输出存取表410上的多个区块。第二输入/输出存取表430可包含与整个表入口(如图5B中的560、580)有关的数据,其可能会自输入/输出存取表410中消失。
在一个实施例中,系统200将输入/输出空间340分割成分页510,因此处理器310需根据分页510存取输入/输出空间340。在一个实施例中,分页510被定义为4K字节的内存区块,其与x86处理器兼容。输入/输出存取表410及第二输入/输出表430包含进入表410、430的索引。这些索引可用于计算物理输入/输出空间地址553以供存取输入/输出装置360及/或定位输入/输出装置360的特定部分,如输入/输出装置360的物理内存。由处理器310所执行利用表410、430对输入/输出空间340的存取,将在下面详述。
一旦系统200建立第二输入/输出表430,系统200会确认来自处理器310的输入/输出空间存取请求(框图720)。来自处理器310的内存存取请求一般由对象350所引起。某些对象350需要大量的输入/输出空间340及/或内存存取以执行它们各自的任务,例如通过调制解调器激活通信、取得附属于特定文件的数据及诸如此类的。系统200会决定输入/输出空间存取请求是否被接收(框图730)。当系统决定输入/输出空间存取未被接收时,系统200会继续检查输入/输出空间存取请求,如图7中框图730返回至框图720的路径所示。
根据本发明的一个实施例,当系统200决定要进行所请求的输入/输出空间存取时,系统200会执行多等级表存取(框图740)。下面将提供由系统200所执行的多等级表存取的更详细叙述。在框图740中一旦系统200执行所叙述的多表式存取,系统200会允许适当的输入/输出空间存取以响应多等级表存取(框图750)。换句话说,系统200允许引发处理器310提出内存需求的对象350能实际获得对输入/输出装置360及/或输入输出装置360上的物理内存做存取。
现在请参考图8,其示例了如图7中框图710所示的建立第二表430的方法的实施例。系统200将输入/输出空间340及或输入/输出装置360内的内存分割成多个区段(框图810)。在一具体实施例中,这些区段可意指分页510。在一个实施例中,该区段/页510被划分成4K字节大小的内存在一个实施例中,对于受益于本揭示的本领域技术人员来说将输入/输出空间340分割成4K字节的区段的动作可由公知的硬件程序加以执行。在另一个实施例中,对于受益于本揭示的本领域技术人员来说将输入/输出空间340分割成区段的动作可利用公知的软件技术来进行。
系统200决定那一个区段会自第二表430中省略掉并执行省略的动作(框图820)。自第二表430中省略的区段是可被指定默认安全等级的分页510。省略的区段包含可分配广等级或低等级的安全等级的分页510。因此,系统200为省略的区段指定默认的安全等级(框图830)。最低的安全等级会被指定至省略掉的区段,因此省略掉的区段实际上可让任何的引起处理器310对输入/输出空间340及或内存做存取的软件对象350进行存取。
接着系统200指定与输入/输出空间340中的各个未省略区段/分页510对应的安全等级(框图840)。系统200根据特定对象350通过处理器310预定要做的存取指定安全等级至分页510。当指定适当安全等级至未省略区段/分页510的同时,系统200对于位于处理器单元210中的某些硬件装置及其它内存进行保护。
一旦安全等级被指定后,系统将特定的区段/分页510与初始的或虚拟输入/输出空间地址553建立关联(框图850)。虚拟输入/输出空间地址553可根据特定的安全等级指向特定的输入/输出装置360及/或输入/输出装置360中的内存。系统200接着利用虚拟输入/输出空间地址553与输入/输出空间340中区段的关联来建立多等级的第二输入/输出表430(框图850)。在一个实施例中,为了节省内存资源,会将第二输入/输出表430中的特定空间省略掉。如上面所述,省略掉的内存位置会被指定一个默认的安全等级,其一般为最低的安全等级。
现在请参考图9,其示例了一个执行图7中框图740所指出的多等级表存取过程的实施例。在接收到进行输入/输出空间存取的请求后,系统200会决定第二输入/输出表430中的安全等级以响应输入/输出空间存取请求(框图910)。系统200根据输入/输出空间存取来决定第二表430中的安全等级以响应了关于某形式的对象350的处理器310的指示,其激活了处理器310中软件的执行。某些软件对象350需要可以对内存中某些较敏感的输入/输出装置及/或数据存取的更高等级的安全存取。例如,需要做数据通信传输的软件对象350会需要更高层安全等级的许可证以便自处理器单元350中存取敏感数据。相对的,执行数据处理器功能的软件对象350,如Microsoft Word,需要较低等级的安全许可证以执行其任务。
系统200接着检视激活输入/输出空间存取请求的软件对象350的执行安全等级,及作为输入/输出空间存取的目标的分页510的安全等级(框图920)。处理器310将目前正在执行的软件对象350的安全等级与输入/输出空间340及/或内存存取的目标的分页510的安全等级相比较,以决定匹配(例如,是否接受所请求的那一个输入/输出空间340及或内存存取)。这预防了某些未被授权能够对某些输入/输出装置360及/或在输入/输出装置360的物理内存中的敏感数据做存取的软件对象350,去存取及控制某些输入/输出装置360及/或内存位置。系统200接着将适当的安全等级与由软件对象350所激活的特定存取要求建立关联(框图930)。
系统200接着将第二输入/输出表430地址与输入/输出空间340及/或内存相对应的输入/输出空间接口345建立关联(框图940)。系统200定位输入/输出空间340并且将适当的安全等级与物理输入/输出空间340建立关联(框图950)。在一个实施例中,输入/输出空间存取接口320执行输入/输出空间接口345位置的定位,并将输入/输出空间接口345的位置与输入/输出空间340内的位置建立关联。
现在请参考图10,其示例了如图9的框图910所示,响应处理器310的内存存取请求决定第二表430的安全等级的实施例,。系统200决定了响应来自输入/输出存取表410的输入/输出空间存取请求的输入/输出空间地址553(框图1010)。系统200接着根据物理输入/输出空间地址553对由响应软件对象350的处理器310所执行的区段/分页510进行定位(也就是说,利用地址做为进入第二输入/输出表430的索引)(框图1020)。当根据软件对象350执行程序代码时,系统200在处理器310处理的同时决定了分页510的安全等级,其可定义目前的安全等级。因此,系统200有效地使用区段/页510来定义安全等级(框图1030)。系统200紧接着将定义的安全等级送至处理器310中以便执行适当的输入/输出空间存取(框图1040)。图10中所示例的步骤的实现明显的完成了如图9的框图910所表示的决定第二输入/输出表430中的安全等级的步骤。
现在请参考图11,其示例了执行图7的框图750所描述的适当输入/输出空间存取的步骤的流程图的实施例。系统200检查与特定内存存取请求相对应的安全等级(框图1110)。该安全等级可与根据处理器310所执行的特定软件对象350提出的特定输入/输出空间存取请求相关联。系统200紧接着决定该安全等级是否足够允许请求的输入/输出资源/输入/输出内存的存取(也就是说,输入/输出装置360及或输入/输出装置360的部分内存)(框图1120)。系统200会检视安全等级通行证是否适合于正确执行由处理器310所请求的输入/输出空间存取并且获得对特定输入/输出装置360及或输入/输出装置360上内存位置的存取。
当系统200认为安全等级的高度并不足以让根据由处理器310所请求的特定输入/输出空间存取而进行的输入/输出资源/输入/输出内存存取能够执行时,系统200会否决所要求的输入/输出资源/输入/输出内存存取(框图1140)。当系统200决定安全等级能有效的允许所要求的输入/输出资源/输入/输出内存存取时,系统200会允许处理器310或软件对象350获得对物理内存345中的特定输入/输出装置360及/或输入/输出装置360上的内存位置的存取(框图1130)。图11中所指出的步骤的实现明显的完成了允许如图7中框图750所指示的适当内存存取程序的执行。本发明所讲授的原理可在其它形式的自动化结构中进行。
上面所揭示的特定实施例仅为示例性的,对于受益于本发明的本领域技术人员来说,本发明可以以不同但等同的方法进行修改与实现。此外,除了下面的权利要求书中所述之外,对于此处所显示的结构或设计详细说明并不意图做任何限制。因此很明显的上面所揭示的特定实施例可以修改及变动,而所有的这些变化都被视为在本发明的精神与范围之内。因此,此处所追求的保护如下面的权利要求书所提。
权利要求
1.一种方法,包含执行一软件对象(350);建立该软件对象(350)的一安全等级;使用至少一个该安全等级执行一多表式输入/输出(I/O)空间存取;及执行该对象(350)的功能。
2.如权力要求1所述的方法,其中建立该软件对象(350)的安全等级更进一步包含给定与至少一部分的内存(347)的输入/输出空间存取有关的安全等级。
3.如权力要求1所述的方法,其中使用至少一个该安全等级执行一多表式输入/输出空间存取,其进一步包含建立一第二输入/输出表(430);接收根据该软件对象(350)的执行的一输入/输出空间存取请求;利用该第二输入/输出表(430)及至少一个虚拟内存表根据该输入/输出空间存取请求执行一多等级表存取;及根据该多等级表存取对至少一部分的输入/输出装置(360)做存取。
4.如权力要求3所述的方法,其中第二输入/输出表(430)的建立进一步包含将一输入/输出空间(340)分割成多个区段;决定至少一个上述区段从该第二输入/输出表(430)中省略及至少一个区段未省略;指定一默认安全等级至该省略区段中;指定一默认安全等级至该未省略区段中;及将至少一个的区段与输入/输出空间(340)位置建立关联。
5.如权力要求3所述的方法,其中根据该输入/输出空间存取请求执行一多等级表存取,其进一步包含决定至少一个与该第二输入/输出表(430)中的区段相对应的安全等级;确认介于执行安全等级及与一区段相关的安全等级相匹配,其中该区段被存取以响应该对象的执行;为响应该执行安全等级与该被存取的区段相关的安全等级之间的匹配,而根据该第二输入/输出表(430)决定一输入/输出空间地址;并且定位一输入/输出装置(360)以对应该输入/输出空间地址。
6.如权力要求5所述的方法,其中决定至少一个与该第二输入/输出表(430)中的一区段相对应的安全等级,其包含从该第二输入/输出表(430)中决定一物理输入/输出装置地址;根据该物理输入/输出装置地址决定一被执行的区段;并且根据该区段被执行的该决定来定义一目前的安全等级。
7.一种使用目标安全执行输入/输出装置存取的装置,其特征在于,该装置包含与一总线(315)连接的一处理器(310);将至少一个软件对象(350)与该处理器(310)相连的方法;一输入/输出(I/O)装置;以及与该总线(315)及一内存单元(347)相连接的输出/输入存取接口(320),该输出/输入存取接口(320)根据至少一个安全等级,而提供该处理器(310)对该内存单元(347)的至少一部分进行多等级表输入/输出空间存取,以响应该处理器(310)执行该软件对象(350)。
8.如权力要求7所述的装置,其中该输入/输出空间存取接口包含一个与第二输入/输出表(430)和该输入/输出存取接口(320)相连的输入/输出空间存取表(410),以提供虚拟内存寻址方法以便基于某个安全等级存取该输入输出装置(360)的至少一部分。
9.一种由指令编码的计算机可读取程序储存装置,当其由计算机执行时,执行一种方法,其包含执行一软件对象(350);建立供该软件对象(350)使用的一安全等级;建立一第二输入/输出(I/O)表(430);接收基于该软件对象(350)的执行的一输入/输出空间存取请求;决定至少一个与该第二输入/输出表(430)内的区段相对应的安全等级;确认介于执行安全等级及与一区段相关的安全等级相匹配,其中该区段被存取以响应该软件对象(350)的执行;为响应该执行安全等级与该被存取的区段相关的安全等级之间的匹配,而根据该第二输入/输出表(430)决定一输入/输出空间地址;定位与该输入/输出空间地址相对应的一物理输入/输出装置(360)位置(物理内存位置);及根据对该物理内存位置的定位对部分的输入/输出装置(360)进行存取。
10.该由指令编码的计算机可读取程序储存装置,当其由电脑执行时,执行如权力要求9所述的方法,其中决定至少一个与该第二输入/输出表(430)内的区段相对应的安全等级,其包含自该输入/输出空间表中决定一物理输入/输出装置(360)位址;根据该物理输入/输出装置(360)地址决定被执行的区段;并且根据该区段被执行的该决定来定义目前的安全等级。
全文摘要
一种利用目标安全执行输入/输出装置存取的方法与装置。执行了一个软件对象(350)。建立了供该软件对象(350)使用的安全等级。使用至少一个的安全等级执行多表式输入输出(I/O)空间存取。执行了软件对象(350)的功能。
文档编号G06F12/14GK1615473SQ02827161
公开日2005年5月11日 申请日期2002年9月12日 优先权日2002年1月15日
发明者B·C·巴恩斯, G·S·斯特龙金, R·W·施密特 申请人:先进微装置公司