[发明专利]多实例应用程序在内核态地址空间冲突的解决方法及系统有效
申请号: | 200810065662.1 | 申请日: | 2008-01-25 |
公开(公告)号: | CN101226488A | 公开(公告)日: | 2008-07-23 |
发明(设计)人: | 李翌;王继刚;钟卫东 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 深圳市永杰专利商标事务所 | 代理人: | 曹建军 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实例 应用程序 内核 地址 空间 冲突 解决方法 系统 | ||
技术领域
本发明涉及操作系统的地址空间管理机制,尤其涉及在用户态下运行的应用程序在不同地址空间相互隔离的多实例移植到内核态统一地址空间时形成的地址冲突问题的解决方法及系统。
背景技术
目前随着计算机技术的不断发展,计算机性能也越来越高,但随之的,软件功能也越来越强大,因此,软件功能和计算性能的冲突一直都存在。为了在一定的硬件平台上提升计算性能,减少操作系统的性能损耗是一个重要方法,而将应用程序放入用户态运行具有以下缺点:
1.运行在用户态的应用程序需要断进行系统态和用户态的运行状态切换,在进行运行状态切换时,操作系统要进行诸如保存寄存器状态、运行级别切换、信号和调度检查等操作,这些都会造成运行开销;
2.由于系统态和用户态属于不同的运行空间,因此,为了在两者将传递消息,需要进行内核拷贝方式,这也造成了一定的内存拷贝开销。
为减少这部分开销,提升计算性能,可以采用将该应用程序放入到内核态下运行的方法来解决,这样不仅减少了运行状态切换的开销,还减少了内存拷贝开销。
因此,将应用放入内核态运行,可以较好地提升效率。移植方法为:在创建线程时采用特殊操作,不为其分配用户态地址,而直接使用内核态的地址空间,并设置其执行特权级别为内核态特权级;同时,在内核态提供与标准用户态兼容的支撑库,这样上层应用基本可以感知不到运行状态的变化,减少移植工作量。
移植到内核态的方法虽然简单,但由于程序运行地址空间的变化,还是会给一些应用程序带来一些问题:部分用户态下的应用程序可以以多实例方式运行,这些实例在用户态都映射为进程的方式,程序编程时,直接操作相同的变量地址空间,由于进程的独立地址空间,这些变量操作都会映射到不同的物理地址范围,因此不会有冲突发生。而一旦放入内核态运行,这些实例只能形成不同的线程,没有进程的独立地址空间,这样,对这些变量地址操作,就会操作到相同的地址空间,形成冲突。
目前的解决方法一般有以下几种,一是修改应用代码,使用指针来进行这部分变量操作,通过对不同实例创建初始化时,对这些指针赋予不同的地址,这样访问时就指向了不同的地址空间了。但这种方法缺点是对代码修改过大,必须找到所有的变量操作代码,修改为指针方式,而这样多的修改动作,很容易出现错误。
另一种方法是使用特殊的硬件支持,如在x86上,可以使用段寄存器,如gs段,对不同的实例,绑定不同的段地址,而在访问这些变量时,也加上段修饰,这样,通过使用不同的段地址进行前缀偏移,也可以达到地址区分的目的,但缺点是必须有编译器的支持,而标准的gcc编译器,是不支持对变量访问加上段前缀修饰,而大部分的应用开发都使用gcc进行编译。并且,这种方法只有在部分支持段式寻址的CPU架构上才能起作用。
还有就是将变量申明为线程局部变量,利用操作系统和运行C库的支持,使变量空间和线程相绑定,但这种方法有以下缺点:一是需要运行C库的支持,还有就是只能和线程绑定,若多实例中每个实例又是多线程方式,则这种方法就不能适用,因为每个实例中的线程应该共享同一变量地址空间,而不是如这种方法的所有线程的变量地址空间都分离。
发明内容
本发明所要解决的技术问题是提供一种多实例的应用程序在内核态运行时变量地址空间冲突的解决方法及系统,不依赖于硬件支持和对应用代码的大量修改,方便地实现应用程序到内核态的移植运行。
为解决上述技术问题,本发明是通过以下技术方案实现的:
一种多实例应用程序在内核态地址空间冲突的解决方法,包括以下步骤:
A、系统初始化时,创建线程实例映射表、变量地址表、实例地址映射表;
B、应用程序初始化时,通过调用地址绑定模块将需要切换地址空间的变量调用接口加入到变量地址表中;
C、创建实例线程,为每个线程分配线程实例映射表表项,并设定表项中线程所属的实例ID,然后将该表项放入线程实例映射表中;
D、当线程切换时,在调度器中根据线程实例映射表查看待调出的线程对应的实例ID与待调入的线程的实例ID是否相同,若不同,则进入步骤E;
E、根据待调入与待调出线程的实例ID,查找实例地址映射表,找到对应表项中的实例地址空间,完成地址空间切换。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810065662.1/2.html,转载请声明来源钻瓜专利网。