用于保护工作存储器的方法和设备与流程

文档序号:17727885发布日期:2019-05-22 02:38阅读:155来源:国知局
本发明涉及一种用于保护工作存储器的方法。本发明此外涉及一种相应的设备、一种相应的计算机程序以及一种相应的存储介质。
背景技术
::在存储器管理中,将操作系统的和所谓的虚拟机监视器的以下能力称作存储器保护:划分可用的工作存储器并且将运行的程序或客户系统相互分离,使得例如通过程序错误触发的、单个程序的崩溃不妨碍其他程序的或总系统的稳定性。以此方式阻止这样被监视的程序:无意地或有意地访问其他程序的存储区域或者与通过标准化的接口不同地利用所述操作系统。足够已知的是存储器保护单元(memoryprotectionunits,mpu)或更复杂的存储器管理单元memorymanagementunits,mmu),其支持存储器保护。在后续实施的范围内,名称“存储器保护单元”因此应在广泛的词义上理解,所述词义明确地包括具有翻译虚拟地址的能力的先进的存储器管理单元。存储器保护单元原先设计为微处理器的外部的附加部件,但是根据现有技术直接集成到高性能处理器中或者至少布置在其附近。然而,传统地仅仅设计用于实施单个应用的嵌入式系统和尤其微控制器也越来越多地配备有虚拟化与存储器保护机制。de102014208848a1提出一种用于执行存储器访问的方法和计算机程序。为此,与存储器保护单元结合地使用虚拟机监视器,通过虚拟机监视器实现存储器访问。技术实现要素:本发明提供根据独立权利要求所述的一种用于保护工作存储器的方法、一种相应的设备、一种相应的计算机程序——例如以虚拟机监视器或操作系统的形式——以及一种机器可读的存储介质。所提出的方案在此基于以下认识:可配置的存储区域的和与此相关的访问权限的数目在根据所述类型的硬件存储器保护单元中受限制。该限制随之引起:例如在虚拟机监视器的情况下,由虚拟机(vm)使用的存储区域的数目可能超出硬件的能力。就此而言在任何情况下考虑各个存储区域的合并,该合并限制存储器保护配置的粒度,从而不再能够完全地排除通过虚拟机对确定的存储位置的未经授权的访问。该问题可能通过以下方式加剧:虚拟机监视器预留相应的配置表格的一些项目用于内部的应用或者提供用于虚拟机的虚拟mpu实现,所述虚拟机自身又需要存储器保护单元,以便例如在虚拟机内实现受保护的操作系统。本发明的一种实施方式的优势在于,该实施方式克服根据所述类型的存储器保护单元的可配置的存储区域的数量限制,以便可以正确地确定由虚拟机直接地以及间接地——例如通过虚拟机监视器使用的全部存储区域。这样的解决方案允许虚拟机不受硬件存储器保护单元的能力限制地访问几乎任意数目的存储区域。通过在从属权利要求中列出的措施,能够实现在独立权利要求中说明的基本思想的有利的扩展方案和改进。附图说明在附图中示出并且在下面的描述中进一步阐述本发明的实施例。其中:图1示出根据第一实施方式的方法的活动图;图2示意性示出根据第二实施方式的控制设备。具体实施方式图1说明根据本发明的方法(10)的示例性的构型的基本流程。为了接下来的实施目的,应假设,所考虑的系统具有相比存储器保护单元按硬件支持的更大数目的待区分的存储区域。下面讨论的解决方案在此基于以下基本思想:虚拟机监视器根据需求在运行时间期间更换存储器保护单元的配置项目。该方案给作为虚拟机监视器的客户系统运行的虚拟机提供实施上下文,当所配置的存储区域的数目超出存储器保护单元的数目时,所述实施上下文考虑在所涉及的机器的配置中指定的所有存储区域自身。所描述的更换在此遵循可配置的借用操作系统理论的置换策略(verdrängungsstrategie),如其根据现有技术例如对于缓存所应用的那样。例如考虑以下配置项目的调出:所述配置项目的通过mpu的最后的应用过去最久(最近最少使用,lru)。该实现在此按图遵循以下方案:待配置的存储区域在发展阶段中首先可选择地分配给第一或第二类(活动11)。虚拟机监视器的配置语言为此允许积分器,将各个区域标记为不可调出的(第一类)或可调出的(第二类)。显然,在这种情况下,对于第二类的存储区域始终应保留存储器保护单元的至少一个配置项目,只要至少一个区域已经分配给该类。在存储区域的分类中应考虑,用于在经调出的存储区域中的机器命令的实施以及用于对这样的存储区域的写与读访问的等待时间可能是可观的。积分器负责决定:哪些存储区域应配置为不可调出的以及哪些应配置为可调出的。相应的——根据相应应用的实时要求——适用于符合目的的置换策略的选择。然后,虚拟机监视器将第二类的可调出的存储区域以合适的数据结构存储在闪存中(活动12)。对于这种类型的每个区域,结构在此包括所述区域的对于权限检查相关的细节,即尤其由该区域占用的地址空间的边界以及所涉及的客户系统的或过程的所允许的访问类型。在一种替代的实施方式中,在不离开本发明的范围的情况下,根据所进行的分类,仍然可以在代码生成的路径中产生检查例程,所述检查例程例如进行在第一类的区域和第二类的区域之间的情况区分(switchstatement)。在开始之前,虚拟机监视器通过配置存储器保护单元来设置全部的不可调出的存储区域,其方式是,虚拟机监视器将至少在第一类中包含的区域登记到存储区域的与此相关的配置表格中(活动13)。只要通过配置区分的存储区域的总数目不超出可用的表格项目的总数目,就不需要各个项目的调出。然而,如果所设置的存储区域的数目超出存储器保护单元的能力,则这样的调出在虚拟机的运行时间期间是可能的。存储器保护单元的“配置表格”的方案尤其包括在现代的存储器管理单元中典型地设置的分页表(pagetable),所述分页表首先用于将虚拟的存储地址翻译成物理的存储地址。这样的分页表可以是一级式地、多级式地或者为了节省存储空间而倒排地构造,其中,在分页表中的查找可以通过连接在前面的所谓的哈希表来加速。在这种情况下,通过产生分页表项(pagetableentry,pte)来进行到分页表中的所述登记(活动13)。在一种更简单的实施方式中,配置表格可以在无虚拟的存储器管理的情况下仍然通过简单的存储器保护单元的寄存器来体现,如其例如在autosar-发展伙伴关系的范围中设置用于分离根据所述类型的控制设备(electroniccontrolunit:电子控制单元,ecu)的不同的软件部件(softwarecomponents,sw-c)那样。配置表格的对于电子技术人员已知为“地区(region)”的项目——典型地根据模型在每mpu为2个和32个之间的这样的地区——在这种情况下表示autosar的意义上的所谓的分区,所述分区作为相互限界的保护空间分别又可以包括多个软件部件。对于这些地区中的每一个,mpu的寄存器内容在此通过与制造商相关的比特序列说明对于相应的分区允许的访问类型,其中,有时进一步在通过“有特权的”软件和“无特权的”软件的访问之间进行区分。如果虚拟机在程序实施期间请求对由第二类包括的并且因此基本上可调出的、但是已经在存储器保护单元中预先配置的存储区域的访问——这种情况在图上未示出,则不需要通过虚拟机监视器的干预。然而,如果在程序实施期间请求对第二类的存储区域中的目标区域的访问,所述目标区域当前没有登记在配置表格中(事件15),则采取通过存储器保护单元定义的异常处理。虚拟机监视器提供对于该目的登记的异常处理例程(exceptionhandler),所述异常处理例程解码触发异常的机器命令(活动14)并且以此方式获得访问类型--读、写或实施--以及所请求的访问的目标地址(活动16)。根据该信息以及在活动12中存储的数据结构,异常处理例程经历权限检查的所设置的访问(判断19)并且在其未命中的情况下(分支n),将虚拟机置于所定义的错误状态,所述错误状态促使虚拟机监视器进行预先配置的错误响应(活动17)如虚拟机的重新启动那样。存储器保护单元在这种情况下根据在配置表格中存储的权限将未经授权地对受保护的地址空间访问的尝试识别为所谓的区段错误(segmentationviolation:区段违规、segmentationfault:区段错误、segfault)或者访问违反(accessviolation:访问违规)并且将这向虚拟机监视器进行信令化。在类unix的操作系统下,该信令化可以例如通过异常条件sigsegv、在具有ia-32或x86-架构的微处理器或性能更好的微控制器的情况下通过中断(interrupt)进行。如果基于成功进行的权限检查(19)准许所请求的访问(分支y),则异常处理例程(16,17,18,19,y,n)根据预先配置的置换策略在第二类的当前在存储器保护单元的配置表格中登记的存储区域下选择用于调出的区域。由该被丢弃的区域占据的项目现在以以下存储区域来填充:所请求的访问涉及所述存储区域(活动18)。该目标区域——基本上通过由该目标区域占用的地址空间的以及所允许的访问类型的边界定义——可以再一次地从在活动12中存储的数据结构获得。因此,最后可以结束异常处理(16,17,18,19,y,n),继续虚拟机中的控制流并且现在起在无存储器区段错误的情况下重新执行请求访问的机器命令(14)。该方法(10)可以例如以软件或硬件或者以由软件和硬件组成的混合形式例如在控制设备(20)中实现,如图2的示意图说明的那样。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1