灵活高效的跨权限级与域的调用方法技术

技术编号:13228921 阅读:57 留言:0更新日期:2016-05-13 11:54
本发明专利技术提供了一种灵活高效的跨权限级与域的调用方法,在进行跨权限级与地址空间调用时通过减少权限级与地址空间的切换来提高调用性能;通过采用认证与授权分离的方式,保证调用的灵活性与安全性。传统计算机处理器的跨域调用机制只有有限的几条调用路径,不同域的调用需要多次复用已有的调用路径才能完成,从而导致许多额外的跨权限级与地址空间的切换,而本发明专利技术所提出的方法能够有效地较少这种不必要的切换,在保证安全性的同时提高系统的性能,促进具有高性能需求的关键服务在基于虚拟化平台或高性能操作系统的服务器、嵌入式设备等场景的应用,进而带来可观的社会效益和经济效益。

【技术实现步骤摘要】

本专利技术涉及计算机系统软件与体系结构领域。具体涉及灵活高效的跨权限级与域 的调用方法,主要是提出了一种灵活的跨域调用方法,保证安全性的同时提高系统的性能。
技术介绍
计算机系统技术特别是虚拟化技术的革命性发展为系统软件栈增加了更多的垂 直层次,目前已经有虚拟机监控器、虚拟机管理工具、操作系统和用户态程序四种保护层 次。云计算场景的多租户应用则在一台计算机的横向发展上引入了多重保护域(如虚拟 机)。此外,嵌套虚拟化场景等的逐渐流行,进一步在横向和纵向上增加了软件栈的复杂性。 复杂性不断增加的软件栈为我们带来了机遇与挑战:一方面,开发者能够更自由 地利用不同层次的软件栈实现多样化的功能,包括安全增强、功能解耦和可管理度增强等; 另一方面,软件层次与保护域的增加同样导致了更加复杂的跨域调用与控制机制。例如一 个跨虚拟机的调用(从一个虚拟机中调用另一个虚拟机的代码)通常需要在虚拟机之间以 及虚拟机与虚拟机监控器之间频繁的切换。这里的域指的是由处理器权限级、处理器运行 模式与程序地址空间等状态所组成的计算环境,地址空间和模式分别是由页表和处理器执 行模式(如ring级、root或非root模式)决定的。 这种复杂的跨域调用与控制机制导致了许多不必要的系统复杂度和性能开销,其 原因是现有的跨域调用机制不够灵活。如图1所示,当前的硬件机制大多只支持从用户态程 序到内核态程序的系统调用(称为syscall)和从虚拟机到虚拟机监控器的调用(称为 hypercall,也可以称为vmcall)。因此,一个跨域的调用需要多次往返地经过虚拟机监控 器,以检查调用者的身份并根据请求的具体信息决定是否授权执行这样的调用。 更进一步地,跨域调用不单单需要跨越权限级(如从Ring 3到Ring 0)还会跨越 不同的地址空间,这不仅让跨域调用变得更加复杂、低效,而且由于跨域切换会导致缓存、 快表等命中率低下从而降低整体性能。如图2所示,当一个虚拟机需要调用另一个虚拟机中 的服务时,理想的调用过程只需要经过2次域切换即可完成;然而现实情况是,该调用过程 需要经过多达9次的域切换,在此过程中产生相当多的性能损耗。跨虚拟机调用的系统由于 都需要大量的经过虚拟机监控器或是操作系统内核的来回切换,从而导致实现的复杂性和 性能的低下,极大地限制了这类系统的可用性。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种灵活高效的跨权限级与域的调 用方法,其给出的灵活高效而又安全的跨域调用机制,能够解决目前域间切换性能低下且 复杂的问题。 根据本专利技术提供的一种,采用认证与授权分 离的方式; 所述认证与授权分离的方式,是指:在发生域调用时,通过向被调用域传递调用域 的信息完成认证,由被调用域决定是否授权该域调用的执行。 优选地,包括调用准备阶段步骤; 在一次域调用过程中,所述调用准备阶段步骤仅执行一次; 所述调用准备阶段步骤,包括如下步骤: 步骤A1,调用者与被调用者分别通过一条系统调用指令或虚拟机调用指令调用下 层软件,并分别将自身域注册到域表中; 步骤A2,调用者与被调用者通过下层软件的协助建立两个域间共享的内存区域, 所述内存区域用于存储跨域调用中的内存拷贝;所述两个域是指调用者所处域和被调用者 所处域; 步骤A3,调用者与被调用者分别通过下层软件获取到对方所处域的域ID; 即,调用 者通过下层软件获取到被调用者所处域的域ID,被调用者通过下层软件获取到调用者所处 域的域ID。 优选地,还包括软件调用者执行调用步骤; 所述软件调用者执行调用步骤,包括如下步骤: 步骤Bl,调用者提供要调用的被调用者所处域的域ID,然后执行域调用指令; 所述域调用指令的执行,包括如下步骤: 步骤il,调用域提供被调用域的作为令牌唯一标识的域ID,其中,所述域ID表示域 表项的ID,记为WID; 步骤i2,处理器首先根据调用者的自身WID在域表中查找是否存在该项WID;若不 存在,则说明该被调用域未被创建并返回错误;若存在,则进入步骤i 3继续执行; 步骤i3,处理器根据调用域所提供的自身WID在域表缓存中查找被调用域对应的 域表项;若查找到,则进入步骤i4继续执行;若没有查找到,则进入步骤if继续执行; 步骤i4',处理器认为产生异常并从内存中的域表中查找对应的域表项并填充到 域表缓存中,然后转入步骤i3继续执行;如果处理器在内存中的域表也没有查找到对应的 域表项,则认为域调用失败,处理器在调用域中产生一个异常并交由调用域软件进行处理; 步骤i4,处理器找到被调用域对应的域表项后,将当前的调用域的状态进行保存, 然后处理器加载被调用域对应的域表项中的信息,在寄存器中保存调用域的自身WID以供 被调用域作进一步授权,并跳转到被调用域中执行;跳转的地址是根据被调用域对应的域 表项中的信息的PC值而定,其中,PC值用于指示域表项对应的域调用的入口地址;如果该PC 值不为〇,则跳到这个PC值所指向的地址中;如果该PC值为0,则跳转的地址由调用域指定; 其中,使用一个域表保存一个域的信息,并通过不可伪造的令牌来唯一地识别一 个域;一个域仅在域表上注册方才成为一个可被调用的域,注册时处理器会在域表中增加 一项,每项代表着一个域并由一个域ID作为令牌唯一标识。 优选地,还包括处理器硬件执行调用切换步骤; 所述处理器硬件执行调用切换步骤,包括如下步骤:步骤Cl,处理器执行域调用指令;其中,所述步骤Cl具体包括如下步骤: 步骤Cl. 1,将当前调用者所处域的状态进行保存; 步骤Cl. 2,根据调用者提供的被调用者所处域的域ID,在域表中查找对应的域表 项;步骤Cl. 3,将处理器当前寄存器的状态更改为所查找到的域表项的值;步骤Cl.4,处理器将一寄存器的值设置为调用域的域ID。优选地,还包括软件被调用者执行授权步骤;所述软件被调用者执行授权步骤,包括如下步骤:步骤Dl,处理器开始执行被调用域入口处对应的命令,根据所获取的调用域ID,实 施对调用者的权限检查。 优选地,调用域的身份与被调用域的身份均是通过硬件产生或管理的不可伪造的 令牌进行标识的,调用执行时由处理器硬件向被调用域提供调用域的令牌实现认证,并且 调用域调用某一被调用域是通过软件授权方式完成的。 优选地7、根据权利要求6所述的,其特征在 于,所述软件授权的具体过程是:跨域调用执行时,被调用域根据硬件提供的不可伪造的令 牌获知该跨域调用的源调用域,并进行授权。[003当前第1页1 2 3 4 本文档来自技高网
...

【技术保护点】
一种灵活高效的跨权限级与域的调用方法,其特征在于,采用认证与授权分离的方式;所述认证与授权分离的方式,是指:在发生域调用时,通过向被调用域传递调用域的信息完成认证,由被调用域决定是否授权该域调用的执行。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈海波夏虞斌利文浩臧斌宇管海兵
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1