CN101038545A - 操作系统内核构件跨域运行的方法 - Google Patents
操作系统内核构件跨域运行的方法 Download PDFInfo
- Publication number
- CN101038545A CN101038545A CN 200610114424 CN200610114424A CN101038545A CN 101038545 A CN101038545 A CN 101038545A CN 200610114424 CN200610114424 CN 200610114424 CN 200610114424 A CN200610114424 A CN 200610114424A CN 101038545 A CN101038545 A CN 101038545A
- Authority
- CN
- China
- Prior art keywords
- inner core
- core component
- domain
- metadata
- territory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000008358 core component Substances 0.000 title claims description 365
- 238000000034 method Methods 0.000 title claims description 31
- 230000006870 function Effects 0.000 claims abstract description 157
- 238000004891 communication Methods 0.000 claims abstract description 42
- 239000000306 component Substances 0.000 claims description 53
- 238000011068 loading method Methods 0.000 claims description 37
- 230000008569 process Effects 0.000 claims description 9
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 235000013399 edible fruits Nutrition 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 3
- 238000012856 packing Methods 0.000 claims description 2
- 230000002349 favourable effect Effects 0.000 abstract 1
- 230000007246 mechanism Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005538 encapsulation Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000007599 discharging Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000011800 void material Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000000178 monomer Substances 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明属于嵌入式操作系统领域,其特征在于把系统模块扩展成为一个包含元数据的文件节——元数据节,而在元数据中含有服务接口函数的内核构件,在内存地址空间中设定:可读写核心域、同机同域、跨域操作用的只读核心域和用户域、跨机操作用的网络核心域和网络用户域,为各域分别建立适用于同机同域、跨域和跨机情况下内核构件运行的多种通信通道,通过在操作系统核心和内存地址空间中为相应各内核构件建立影子内核构件服务接口函数来解决同机跨域或跨机内核构件的下载、访问和卸载问题,本发明还利用在操作系统内设定的元数据管理和缓存、构件管理、绑定管理、构件缓存管理等平台在同时保证性能和安全的情况下,完成下动态组装内核构件的工作。
Description
技术领域
本发明属于嵌入式操作系统领域。
技术背景
随着计算技术的发展,我们已经由PC时代进入网络时代,进而进入“普适计算时代”。“普适计算”指的就是,“无论何时何地,只要有需求,就可以通过某种方式访问到所需的信息”。在针对普适计算的嵌入式系统环境中,需要大量的智能嵌入式系统存在,能随时根据环境的变换,提供适当的功能和服务。
目前嵌入式系统硬件发展迅速,但面向环境随时改变的系统软件,特别是操作系统对环境动态变化、硬件资源有限、硬件多样化等目前普遍存在的嵌入式系统环境中的特点还不能很好地适应。
目前操作系统的研究大概是三个方向:高端服务器系统,桌面系统和嵌入式系统。其中面向嵌入式的操作系统与面向普适计算的操作系统相近。迄今为止,操作系统的体系结构大致分为两种:大内核(也叫单体内核,Monolithic Kernel)体系结构和微内核(Micro Kernel)体系结构。传统的大内核体系结构操作系统将图形、设备驱动、文件系统等全部功能都在操作系统内核中实现,运行在内核状态、同一地址空间。这种体系结构的操作系统的优点是可以减少进程间通信和状态切换的系统开销,系统的运行效率比较高。其缺点是内核庞大,占用资源多,整个系统剪裁不易,并且一旦个别操作系统模块(如驱动程序)运行出错,就会导致整个系统崩溃,所以整个操作系统的稳定性和安全性都不好。微内核体系结构的操作系统则在内核中只实现那些必须由内核实现的基本功能,而将图形、文件系统、设备驱动、通讯等功能放在内核之外,作为系统服务来提供相应的功能,一般都作为一般的用户进程来运行。这些系统服务程序在用户状态下运行。这类操作系统的优点是有一个精炼的内核,便于移植、扩展,系统的稳定性和安全性都比较好。由于系统服务程序运行在用户地址空间,个别系统服务程序(如驱动程序)的错误不至于导致整个操作系统崩溃。其缺点是由于把系统在运行中用户状态和内核状态要频繁切换,这样会导致系统效率降低。
Linux操作系统的内核是单一内核体系结构(大内核),整个内核是一个单独的非常大的程序,我们可理解为它们都处于rw_core domain中,即权限最高的内核空间。所有的模块都集成在一起,系统的性能和速度都很好,但是可扩展性和维护性就相对比较差。为了弥补这一缺点,Linux操作系统使用了一种机制一内核模块(Kernel Module),这样在不需要内核重新编译的情况下,模块能动态地载入内核或从内核移出。但内核模块也都处于rw_core domain中,有问题的内核模块会破坏整个系统。
与现有操作系统技术相比,本发明提出了一种把Linux操作系统功能进行构件化封装,通过建立高效、安全的多通道构件通信手段,实现了内核构件的灵活加载和在不同域(domain)运行的方式。这里进行了构件化封装的内核子系统称为内核构件,如文件系统内核构件,TCP/IP网络内核构件。
其构件化封装的特征是该构件提供的服务功能通过接口(Interface)显示地表达出来,且该构件需要得到的服务功能也通过接口显示地表示出来,这部分信息以元数据的形式保存在存储内核构件的程序文件中。这里所指的接口的具体形式是多个函数指针项形成的一个数组。这里的“域”是指具有不同安全级别和访问权限的地址空间,如属于在一个内存地址空间中的“域”,属于在同一机器,但属于在不同内存地址空间中和不同通信通道的“域”,属于在不同机器中和不同通信通道构成的“域”。这样就可以根据嵌入式系统的动态环境需求,动态“组装”成一个能够“刚好”满足此环境需求的操作系统,且可把有“安全问题”的操作系统功能构件放置在一个特定的域中,使其无法对系统进行破坏,从而可提供了整个操作系统的可靠性、高效性和灵活性。
发明内容
针对现有操作系统技术不适合动态组装和重构,灵活性和安全性无法同时满足,而且硬件资源有限的情况,本发明提出了操作系统内核构件跨域运行的方法,可把操作系统功能(如文件系统功能、网络功能等)进行构件化封装,形成内核构件。各个构件之间根据元数据中的接口实现相互的访问。各个构件可以运行在不同的域中,而通过建立高效、安全的多通道构件通信手段,实现了各个构件之间的数据传递,从而实现了内核构件的灵活加载和在不同域运行。
本发明的特征在于,该方法在分布式网络内的计算机中的面向构件的操作系统或者传统的操作系统按以下步骤依次进行:
步骤(1)初始化,步骤如下:
把系统的内核模块扩展成一个内核构件,这是一个还没有链接的执行格式目标文件,在其中建立了专门包含元数据的文件节——元数据节,在元数据中包含了内核构件提供的服务/需求接口的列集/散集函数构成部分;所述的执行格式目标文件的框架形式为:内核构件需要的头文件的说明、元数据所在的节声明开始、服务接口的元数据说明、需求接口元数据说明、元数据所在的节声明结束、内核构件功能实现的具体内容、内核模块初始化函数以及内核模块返回函数;所述的列集函数的功能是对内核构件所提供的接口中的函数定义进行字节序列化打包操作;所述的散集函数的功能是对已经序列化的数据镜像字节反序列化解包并恢复函数定义的操作;
在内存地址空间中设定下述整个包括读/写/执行在内的内存访问权限和包括内核态/用户态在内的CPU特权态的一段地址空间,称为域:
可读写核心域,用rw_core domain表示,在一台计算机上只有一个,该域与操作系统核心处于同一地址空间,处于该域中的内核构件权限最高,且由操作系统核心直接加载,操作系统核心与内核构件之间、内核构件相互之间的通信通道连接:
只读核心域,用r_core domain表示,在一台计算机上有多个,该域与操作系统核心不处于同一地址空间,操作系统核心能对属于此域中的内核构件进行读写操作;属于同一个只读核心域内的内核构件通过此域空间互操作,但属于不同只读核心域内的内核构件之间只能通过基于共享内存的通信通道互操作,该通道是建立在内核态的共享内存和同相应的代理(Proxy)与存根(Stub)进行数据的列集与散集之上的;
用户域,用user domain表示,在一台计算机上有多个,都处在用户态的地址空间,处于此域中的内核构件只能通过所述共享内存的通信通道与处于可读写核心域和只读核心域中的内核构件或操作系统核心进行互操作;
网络核心域,用net_core domain表示,是一个位于另一台计算机的地址空间上且属于内核态的域,位于此域中的内核构件通过基于TCP/IP协议的网络通信通道实现互操作,或者下载到本地计算机中运行,且处于本地计算机的只读核心域中;
网络用户域,用net_user domain表示,是一个位于另一台计算机的地址空间上且属于用户域的域,位于此域中的内核构件通过基于TCP/IP协议的网络通信通道实现互操作,或者下载到本地计算机中运行,且处于本地计算机的用户域中;
在所述操作系统内建立下列所述内核构件跨域下载/运行/卸载所属的支撑平台:
元数据管理/缓存平台:设有内核构件注册表,其中包括内核构件的代码和元数据信息,使得内核构件的元数据信息由元数据管理/缓存平台统一管理;同时,在内核构件间进行异地访问时,完成元数据的本地缓存工作;
构件管理平台:设有内核构件注册表,执行内核构件在服务管理中注册和注销;
绑定管理平台:接收构件管理平台输入的接口绑定通知,完成对内核构件需求接口中的函数指针的赋值,若找不到需求接口中的函数指针对应的其它构件的服务接口,便报错;
构件缓存管理平台:用于把异地的内核构件放到本地缓存,并依据最近最少使用算法进行构件的替换;
在操作系统核心的所在域中,建立系统函数表,其中包含了在内存地址空间中允许直接访问的内核函数的符号和地址的对应关系表;
步骤(2)封装内核构件,步骤如下:
步骤(2.1)输入内核构件执行文件框架所需要的内容,其中包括:元数据内容,并指定其属于执行文件格式中的元数据节;
步骤(2.2)把步骤(1)生成的内核构件源文件按内核模块的编译参数生成能加载到不同于域的可执行的内核构件;
步骤(3)实现内核构件的加载,步骤如下:
步骤(3.1)操作系统核心把对外服务接口注册到元数据管理/缓存平台;
步骤(3.2)构件管理平台依据已注册的内核构件提出的加载服务请求或系统构件 文件确定内核构件的加载方式;
同机跨域的内核构件的加载按照以下步骤进行:
步骤(3.2.1.1)构件管理平台通过内核构件注册表查找该构件的本地文件路径,打开内核构件文件,通过句柄读入此构建文件。
步骤(3.2.1.2)构件管理平台通知元数据管理/缓存平台,把内核构件中的元数据读入元数据管理/缓存平台的内核构件注册表中。
步骤(3.2.1.3)元数据管理/缓存平台通过查找内核构件注册表得到已注册的本地内核构件的元数据信息后,根据文件句柄创建内核构件,根据内核构件所处的域建立该内核构件的内存访问权限,并设定该构件运行的CPU特权状态;
步骤(3.2.1.4)元数据管理/缓存平台把该内核构件的带把加入该构件所在域的内存地址空间,建立一个共享内存通信通道。
步骤(3.2.1.5)元数据管理/缓存平台把该内核构件提供的服务接口函数提供给绑定管理平台;
步骤(3.2.1.6)绑定管理平台根据所收到的所述内核构件的元数据信息建立相应的服务接口存根和需求接口代理,接着把内核构件提供的服务接口函数注册到位于该内核构件所在的系统函数表中,便于位于所述域的内核构件查询;
步骤(3.2.1.7)绑定管理平台在操作系统核心所在域中建立该内核构件的影子内核构件,其中包括有该内核构件的服务接口存根和需求接口代理,然后把影子内核构件中的函数注册到操作系统核心所在域的系统函数表中;
步骤(3.2.1.8)绑定管理平台扫描操作系统内核的所在域,系统函数表把该影子内核构件中涉及的函数符号修正为所述域提供的系统函数表,为位于同机跨域的其他内核构件通过共享内存通信通道提供跨域服务;
跨机的内核构件加载按照以下步骤执行:
步骤(3.2.2.1)构件管理平台依据已注册的内核构件提出的加载服务请求或系统构件服务文件确定该内核构件的加载方式;
步骤(3.2.2.2)若是把远地的内核构件下载到本地,则通过构件缓存管理平台对该内核构件进行缓存,根据最近最少使用算法构件替换,按照步骤(3.2.1.1)~(3.2.1.8)进行加载;
步骤(3.2.2.3)若是在远地加载一个内核构件,则按照以下步骤进行:
步骤(3.2.2.3.1)构件管理平台通过查找内核构件注册表获得该远地内核构件的远地文件路径后,与远地建立网络通信通道;
步骤(3.2.2.3.2)通过网络通信通道执行步骤(3.2.1.1)中打开内核构件文件的操作;
步骤(3.2.2.3.3)通过网络通信通道执行步骤(3.2.1.2)~(3.2.1.3);
步骤(3.2.2.3.4)若加载任务在远地计算机中执行,则把该内核构件的代码加入远地同一所在域的内存地址空间,在连接本地网络通信通道中的请求链接,用于跨域的数据传递;
步骤(3.2.2.3.5)接着执行步骤(3.2.1.4)~(3.2.1.6);
步骤(3.2.2.4)若是在本地执行加载任务,则执行步骤(3.2.1.7)~(3.2.1.8);
步骤(4)对内核构件的访问,步骤如下:
若为同机跨域访问,首先在元数据管理/缓存平台中查找此内核构件的元数据;然后由构件管理平台据此元数据建立服务接口的存根及需求接口的代理;再调用影子内核构件服务接口代理的相应函数,然后调用共享内存通信通道进行列集参数,向此内核构件的服务接口存根发送服务请求,服务接口存根会访问此内核构件的服务函数并会送结果,然后共享内存通信通道会散集结果,并把结果返回给内核中的某一执行路径调用;
若为跨域访问,先通过网络通信通道建立跨计算机的信息通路,然后再按上述同机跨域访问处理;
若在跨域访问中要把此内核构件下载到本地计算机中,如果远地计算机中的内核构件处在网络核心域,则在本地是处于只读核心域;如果远地计算机中的内核构件处于网络用户域,则在本地是处于只读用户域;
步骤(5)内核构件的卸载,步骤如下:
对于同机跨域时内核构件的卸载,当操作系统确定内核构件的接口级访问计数为零后,把系统函数表中该内核构件和影子内核构件提供的函数符号及相应地址的项清除,释放该内核构件在运行中申请的资源,释放该构件和影子内核构件所占有的代码空间,最后释放共享内存通信通道;
对于远地跨域的内核构件卸载,与同机跨域的内核构件卸载相比,仅仅在于最后释放的是网络通信通道,其它相同。
目前本发明所描述的方法已实现在自行研制的运行Intel X86或ARM CPU上基于Linux的构件化操作系统原型中。需要指出的是,本发明不局限在某个特点的硬件平台和操作系统上,本发明的方法可以用于建立面向构件的新型操作系统设计,也可建立在已有传统单体操作系统之上。从实用性上来看,建立在已有操作系统之上会使得本方法的应用面更广。下面结合附图,对本发明的具体实施进行详细说明。
本发明与现有技术相比具有如下的优点:
本发明采用跨域运行内核构件的方法,能够在系统运行时动态地拼装各个内核构件,把有问题的构件放在安全性高的域中运行,把对性能和功能要求高的构件放在系统最高权限所在域中运行,从而让操作系统能够动态满足嵌入式系统环境和功能需求随时可变的要求。
附图说明
图1:处于不同域中的内核构件运行示意图
图2:本发明的内核构件运行时的系统结构示意图
图3:本发明的同机同域内核构件加载运行工作流程框图
图4:本发明的同机跨域内核构件加载运行工作流程框图
图5:本发明的跨机内核构件加载运行工作流程框图
具体实施方式
在说明内核构件在域内或跨域运行的方法前,需要对内核构件的封装,元数据的结构和内核构件运行时的系统结构进行说明。
本发明提出的内核构件实现实例建立在Linux内核模块上,内核构件可以运行在本发明所指的各个域中。内核构件是一个还没有链接的执行格式目标文件,首先它是一个Linux内核模块(Kernel Module),且在对此内核模块进行了扩展,建立了专门包含元数据(metadata)的文件节—元数据节(metadata section),在元数据中包含了内核构件提供的服务/需求接口的列集/散集函数构成部分。
内核构件的执行文件框架形式如下:
//内核构件需要的头文件说明
#include″Linux/kernerl.h“
#include″Linux/module.h″
……
//元数据所在的节(section)声明开始
//服务接口(也称输出接口)元数据说明
……
//需求接口(也称输入接口)元数据说明
……
//元数据所在的节(section)声明结束
//内核构件功能实现的具体内容,包括服务接口的实现
……
//内核模块初始化函数
int init_module(){
……
}
//内核模块退出函数
int cleanup_module(){……
}
元数据用来帮助操作系统对函数参数进行列集和散集,元数据的形式如下:
对于属于服务/需求接口中的每个函数,需要列集和散集整个函数参数。每个函数对应有三个用来列集和散集该函数参数的函数。这三个函数可以称之为该函数的元数据。元数据的具体定义如下:
typedefint(*Size)(int *size);//用来求其列集参数所需空间
typedef int(*MarshalingIn)(void *puargs,void *buffer);//列集参数
typedef int(*UnmarshalingOut)(void *puargs,void *data,MemAlloc mem_alloc,InSpaceinSpace);//散集参数
这三个函数只能使用函数参数或函数局部变量,这是因为需要要把这三个函数的内容注册到元数据管理/缓冲平台中,可传递到其它域中执行。
内核构件要遵循规定的规范。本发明把遵循如下规范的内核模块称为内核构件:
(1)遵循现有内核模块约定(在Linux操作系统中是指现有Linux内核模块约定),但不支持模块版本管理机制;
(2)仅通过服务接口来向外提供服务,称服务接口包含的这些函数为该内核构件的导出服务函数。导出服务函数遵循一定的设计约定:函数是非内联函数,即不能定义为内联(inline)函数;函数调用约定是C语言的缺省调用约定,参数从右至左入栈,调用者负责参数的出栈);函数返回值数据类型的大小不能超过32位/64位;函数参数个数确定(不支持变参),数据类型是约定的数据类型。暂约定为自描述数据类型。该数据类型中的数据成员分为两类:内容和内容指针(如int是内容,而int*是内容指针);内容和内容指针只能当作数据,不能当作一个函数指针;
(3)该仅通过需求接口提供的函数以函数调用的形式来调用外部的服务(操作系统核心和其他模块所提供),这些引用的函数属于需求接口,称为该内核构件的导入服务函数。导入服务函数遵循一定的设计约定,与(2)中的描述一致;
(4)该内核构件在加载时应向元数据管理/缓存系统提供其元数据,用于动态生成实现列集/散集机制的接口函数。
在内核构件运行过程中,经常需要访问某些特定文件的内容,这实际上是通过在用户态调用open系统调用(如果在内核中打开文件,调用sys_open内核函数)后,可得到一个内部索引值,这里称为文件句柄,通过文件句柄就可以进一步对文件内容进行读写操作。
内存访问权限是指当前运行的指令对某一内存地址空间是否能进行读/写/执行的操作权限,CPU特权态是指当前运行的指令是处于内核态或用户态。图1描述了本发明的内核构件在不同计算机上相互调用的抽象示意图。图1中所述地址空间域是指的有特定内存访问(包括读/写/执行)权限和CPU特权态(内核态/用户态)的一段地址空间,简称域。图1中所述的单一机器空间域是指在一台独立计算机上的域,包括rw_core domain、r_core domain、userdomain。而两台独立计算机之间,即一台计算机访问另一台计算机所处的域包括net_coredomain、net_user domain。在一个分布式网络环境中,各个操作系统内核构件运行在不同的域(domain)中,通过高效安全的多模式通信通道(communication channel)进行交互。
本发明实现内核构件的灵活加载的基本准则是内核构件能透明地加载到不同的域中去,且操作系统核心和内核构件能透明地对其它内核构件进行访问。也就是对于内核构件的调用者和自身而言,内核构件的加载空间和运行空间是透明的。在不同的域中,内核构件的加载方式、运行方式和调用方式各不相同。在本方法中,设计实现了5种域和针对不同域的多模式通信通道。具体定义如下:
(1)rw_core domain(可读写核心域):在与操作系统核心在同一地址空间所构成且处于内核态的域;在此域中,内核构件可通过操作系统核心直接加载,与操作系统核心处于同一地址空间,操作系统核心与内核构件之间、内核构件与内核构件的通信通道是栈(stack),二者通过栈空间进行参数访问,完成相互调用,而二者之间的数据可相互读写,其相互访问的速度是最快的;但如果某一内核构件有问题,会直接破坏操作系统核心,造成整个系统崩溃。处于此域中地内核构件权限最高。rw_core domain在一台计算机上只有一个;
(2)r_core domain(只读核心域):与操作系统核心不处于同一地址空间,但对操作系统核心所在地址空间的访问权限为只读所形成且处于内核态的域;在此域中,比较特殊的是操作系统核心能对属于此域中的内核构件进行读写操作,但内核构件只能对操作系统核心进行读操作;在一台计算机上的r_core domain有多个,属于同一r_core domain的内核构件通过栈空间进行互操作,且数据共享;但属于不同r_core domain的内核构件之间只能通过基于共享内存的通信通道(share memory based communication channel)实现互操作,这需要建立在内核态的共享内存和相应的代理和存根进行数据的列集与散集;
(3)user domain(用户域):与操作系统核心不处于同一地址空间,是在用户态的地址空间,无法直接对操作系统核心所在的地址空间进行读写操作;在一台计算机上的user domain有多个;处于此空间的内核构件无法直接访问处于r_core domain和rw_core domain中的内核构件或操作系统核心,只能通过共享内存的通信通道实现与处于r_core domain和rw_coredomain中的内核构件或操作系统核心进行互操作,这需要建立在跨内核态/用户态的共享内存和相应的代理和存根进行数据的列集与散集;
(4)net_core domain(网络核心域):位于另一计算机的地址空间所形成且属于内核态的域;在此域中,无法直接对操作系统核心所在的地址空间进行读写操作;位于此域中内核构件通过基于TCP/IP的网络通信通道实现互操作或下载到本地计算机上运行;如果是下载到本地运行,则此构件处于本地计算机的r_core domain域中;
(5)net_user_domain(网络用户域):位于另一计算机的地址空间所形成且属于用户态的域;在此域中,无法直接对操作系统核心所在的地址空间进行读写操作;位于此域中内核构件通过基于TCP/IP的网络通信通道实现互操作或下载到本地计算机上运行,如果是下载到本地运行,则此构件处于本地计算机的user domain域中。
本发明所述用于内核构件间访问的多通信通道,是指在同机同域中采用基于栈(stack)空间机制的直接调用方式,这样效率最高;在同机不同域中采用通过基于现有构件技术的代理和存根机制实现对访问参数的列集(marshaling)/散集(unmarshaling),然后通过建立基于跨内核/用户空间的共享内存的消息传递的间接调用方式,这种方式的效率不如基于栈空间机制,但可以保证不同域的内核构件不会相互影响;在不同机中采用通过基于现有构件技术的代理和存根机制实现对访问参数的列集/散集,然后通过建立基于跨计算机的的网络消息传递的间接调用方式,这种方式效率最低,但可以实现构件跨计算机访问。需求方和内核构件进行跨域通信时,需求方得到的接口指针实际上指向需求方本域中的影子内核构件(MirrorKernel Component),影子内核构件是跨域的内核构件在本访问域中的代理,处于本访问域的操作系统核心或其它内核构件可以通过影子内核构件间接访问在不同域中的内核构件。处不同域中的内核构件的存根与相应的影子内核构件通过统一的抽象通道接口进行通信,再由存根完成与真正被调用的内核构件中的接口函数的交互。
操作系统核心向内核构件提供的函数中,如果与内核构件所处的域有关,如内存分配函数(Linux内核中为kmalloc),打印函数(Linux内核中为printk)等,则当内核构件加载到其它域且其它域(user_domain、net_user domain中)没有对应的函数时,还需要在user_domain中实现相同语义的函数供内核构件使用。
对内核构件进行封装的方法步骤如所示:
(1) 首先按照操作系统内核模块规范的内核构件的执行文件框架,即需要实现内核模块初始化功能和内核模块推出功能;
(2)按照内核构件规范实现内核构件的具体功能;
(3)提供对于内核构件中的属于服务/需求接口中的元数据(metadata),即实现元数据所要求的三个函数;
(4)指定元数据内容属于执行文件格式中的元数据节;
(5)把通过步骤(1)到步骤(4)生成的内核构件源文件按内核模块的编译参数生成可以加载到不同域的可执行内核构件,此内核构件包含元数据节。
内核构件跨域加载/运行/卸载所需的支撑平台如附图2所示。其中的各个组成部分说明如下:
1.元数据管理/缓存平台:内核构件的元数据信息在内核中由元数据管理/缓存平台统一管理,主要功能是内核构件元数据信息的注册、注销和存储,以及内核构件的函数的元数据信息查询。当构件间访问是异地时,完成元数据的本地缓存工作,以减少多次的元数据异地传输的开销。
2.构件管理平台:接受内核代理构件的注册和注销,另一方面接受服务方的注册和注销;另一方面是通知绑定管理平台完成接口的绑定(即对接口函数指针进行赋值),然后加载构件运行,但需要卸载构件时,完成卸载构件,回收内存的工作。
3.绑定管理平台:完成对构件需求接口中的函数指针的赋值,如果不能找到需求接口中的函数指针对应的其他构件的服务接口的实现,则报错。
4.构件缓存管理平台:主要实现把异地内核构件缓存到本地,减少不必要的异地远程构件间访问的开销。并可根据LRU算法进行构件的替换,只保存最常用的异地构件。
内核构件跨域加载/运行/卸载的步骤如下:
步骤1:加载处于不同域的内核构件
首先把操作系统核心提供的对外服务接口信息注册到元数据管理/缓存平台;如有一内核构件需要加载,则构件管理平台根据环境情况,分析此内核构件中包含内核构件文件的元数据信息进行策略选择:
1)如果是需要加载到rw_core domain,则首先通过构件管理平台把此内核构件的元数据信息(即根据接口信息形成的服务/需求接口的列集散集功能单元)注册到到元数据管理/缓存平台,然后通过构件管理平台和绑定管理平台把该构件加载到rw_core domain;
2)如果是需要加载到r_core domain,则首先通过构件管理平台把此内核构件的元数据信息(即根据接口信息形成的服务/需求接口的列集散集功能单元)注册到到元数据管理/缓存平台,然后通过构件管理平台和绑定管理平台把该构件加载到rw_core domain。同时在r_coredomain建立此内核构件的服务接口存根和需求接口代理;
3)如果是需要加载到user domain,则首先通过构件管理平台把此内核构件的元数据信息(即根据接口信息形成的服务/需求接口的列集散集功能单元)注册到到元数据管理/缓存平台,然后通过构件管理平台和绑定管理平台把该构件加载到user domain。同时在user domain建立此内核构件的服务接口存根和需求接口代理;
4)如果是需要加载到net_core/user domain,则首先通过构件管理平台建立网络消息通道,网络消息通道把处于不同计算机上的内核构件文件打开,并把此内核构件的元数据信息(即根据接口信息形成的服务/需求接口的列集散集功能单元)通过网络消息通道注册到到元数据管理/缓存平台;接着更新不同计算机上的元数据缓存。然后通过网络消息通道、构件管理平台和绑定管理平台把该构件加载到net_core/user domain。同时在net_core/user domain建立此内核构件的服务接口存根和需求接口代理;
步骤2:访问处于不同域的内核构件
1)当内核中的某一执行路径调用此内核构件的服务接口的函数时,且二者为同一计算机中的相同域时,则内核中的某一执行路径根据元数据信息,直接通过栈空间传递参数并直接调用相应的构件服务函数,构件服务函数把结果通过寄存器或栈空间返回给内核中的某一执行路径调用。
2)当内核中的某一执行路径调用此内核构件的服务接口的函数时,且二者为同一计算机中的不同域时,首先在元数据管理/缓存平台中查找此内核构件的元数据;然后构件管理平台根据此元数据建立服务接口的存根,根据此元数据建立需求接口的代理;然后调用构件服务接口代理的相应函数,该函数会通过共享内存通信通道在进行列集参数,向此内核构件的服务接口存根发送服务请求,服务接口存根会访问此内核构件的服务函数并回送结果后,共享内存通信通道会散集结果,并把结果返回给内核中的某一执行路径调用。
3)当内核中的某一执行路径调用此内核构件的服务接口的函数时,且二者为不同计算机中的不同域时,如果是第一次调用,则先会通过网络通信通道建立跨计算机的信息通路,如果不是第一次调用,则可直接使用第一调用建立的网络通信通道;然后在元数据管理/缓存平台中查找此内核构件的元数据;然后构件管理平台根据此元数据建立服务接口的存根,根据此此元数据建立需求接口的代理;然后调用构件服务接口代理的相应函数,该函数会通过网络通信通道进行列集参数,向此内核构件的服务接口存根发送服务请求,服务接口存根会访问此内核构件的服务函数并回送结果后,网络通信通道会散集结果,并把结果返回给内核中的某一执行路径调用。另一种方式是把此内核构件下载到本地计算机中,如果远地计算机中的内核构件所处地域是net_core domain,则在本地是处于r_core domain;如果远地计算机中的内核构件所处地域是net_user domain,则在本地是处于r_user domain;
步骤3:卸载处于不同域的内核构件
当满足一定退出条件(如一段时间后没有访问请求)时,完成该内核构件的卸载工作,即确定内核构件的接口级访问计数为零后,把系统函数表中该内核构件提供的函数符号一地址项清除,是否该内核构件在运行时申请的资源,释放该内核构件所占有的代码空间。如果是处于同机跨域中的内核构件,需要断开共享内存通信通道。如果是处于跨机中的内核构件,需要断开网络通信通道。
对内核构件的请求者来说,内核构件的加载过程是指通过创建内核构件的实例并获得它所实现的某个接口的指针的过程。在此过程中完成内核构件文件的读取,并获得内核构件的类厂接口指针,然后使用这个指针调用类厂接口中的方法来创建构件的实例并获得构件的请求者请求接口的指针。同时还要从构件文件中得到元数据,注册到元数据管理/缓存平台。对于处于不同域的内核构件请求,其具体的加载/访问/卸载的细节不同。
在跨域进行内核构件间互操作时,我们可以使用具有列集/散集功能的代理和Stub机制来实现对构件的访问,即当内核构件加载到跨域的地址空间中时,操作系统核心根据该内核构件保存的元数据信息中的接口信息,可为该内核构件在此空间中生成对应的存根(提供服务)和代理(请求服务);当存根接受操作系统核心或其它域的内核构件中通过代理发来的服务请求时,由存根调用此内核构件的接口函数完成服务请求;然后存根将结果发送给代理,再由代理返回给调用者。图2是内核构件运行时的系统结构图。下面按同机同域(在在同一计算机的同一域中)、同机跨域(在同一计算机的不同域中)、跨机(在通过TCP/IP连接的不同计算机中)三种情况进行描述:
同机同域的内核构件加载方法:基本工作流程如图3所示,具体步骤如下:
(1)构件管理平台根据构件服务请求方或系统构件配置文件确定构件的加载方式;
(2)在确定使用本地同域的加载方式加载内核构件后,构件管理平台查找该内核构件的本地文件路径,打开内核构件文件并获得其句柄,读入此构件文件;
(3)构件管理平台通知元数据管理/缓存平台,把内核构件中的元数据节中的元数据读入元数据管理/缓存平台的注册表中;
(4)并通过查找内核构件注册表获得/注册本地内核构件的元数据信息后,然后根据文件句柄创建内核构件,根据所处的域建立该构件的内存访问权限,并设定此构件运行的CPU特权状态;
(5)把该内核构件的代码加入同域的内存地址空间,把该内核构件提供的服务接口函数通过绑定平台注册到位于此域(此域与操作系统核心所在域不同)的系统函数表(系统函数表是包含了在此域中可直接访问的内核函数的符号和地址的对应关系表)中,同时也注册到操作系统核心所在域的系统函数表中;
(6)接着扫描此域的系统函数表,把该内核构件需取的函数符号修正为此域提供的系统函数表。加载完毕后,位于同机同域的其它内核执行路径就可以访问加载后的内核构件提供的服务了;
(7)当内核中的某一执行路径调用此内核构件的服务接口的函数时,且二者为同一计算机中的相同域时,则内核中的某一执行路径根据元数据信息,直接通过栈空间传递参数并直接调用相应的构件服务函数,构件服务函数把结果通过寄存器或栈空间返回给内核中的某一执行路径调用;
(8)当满足一定退出条件(如一段时间后没有访问请求)时,可完成该内核构件的卸载工作,即确定内核构件的接口级访问计数为零后,把系统函数表中该内核构件提供的函数符号—地址项清除,是否该内核构件在运行时申请的资源,释放该内核构件所占有的代码空间。
同机跨域的内核构件加载/访问/卸载方法:基本工作流程如图4所示,具体步骤如下:
(1)构件管理平台根据构件服务请求方或系统构件配置文件确定构件的加载方式;
(2)在确定使用本地跨域的加载方式加载构件后,构件管理平台查找该构件的本地文件路径,打开内核构件文件并获得其句柄,读入此构件文件;
(3)构件管理平台通知元数据管理/缓存平台,把内核构件中的元数据节中的元数据读入元数据管理/缓存平台的注册表中;
(4)并通过查找内核构件注册表获得的注册本地内核构件的元数据信息后,然后根据文件句柄创建内核构件,根据所处的域建立该构件的内存访问权限,并设定此构件运行的CPU特权状态;
(5)完成实际的加载任务,具体的加载任务包括:把该内核构件的代码加入此域的内存地址空间;然后建立一个共享内存通信通道,用于进行跨域的数据传递;
(6)在此接口上通过绑定平台根据此构件的元数据信息建立该构件的服务接口存根和需求接口代理;
(7)接着把该内核构件提供的服务接口函数注册到位于此域(此域与操作系统核心所在域不同)的系统函数表中,以便于位于此域中的内核构件直接访问;
(8)接着在操作系统核心所在域中建立此内核构件的影子内核构件(Mirror KernelComponent),在影子内核构件中主要包括了此构件函数的服务接口存根和需求接口代理,接着把影子内核构件中的函数注册到操作系统核心所在域的系统函数表中;
(9)然后扫描此域的系统函数表,把该影子内核构件需取的函数符号修正为此域提供的系统函数表,到此内核构件加载完毕;内核构件加载完毕后,位于同机跨域的其它内核执行路径就可以访问加载后的内核构件提供的跨域服务了;
(10)当内核中的某一执行路径调用此内核构件的服务接口的函数时,且二者为同一计算机中的不同域时,则先会调用影子内核构件服务接口代理的相应函数,该函数会通过共享内存通信通道先列集参数,向此内核构件的服务接口存根发送服务请求,服务接口存根会访问此内核构件的服务函数并回送结果后,共享内存通信通道会散集结果,并把结果返回给内核中的某一执行路径调用;
(11)当满足一定退出条件(如一段时间后没有访问请求)时,可完成该内核构件的卸载工作,即确定内核构件的接口级访问计数为零后,把系统函数表中该内核构件和影子内核构件提供的函数符号—地址项清除,释放该内核构件在运行时申请的资源,释放该内核构件和影子内核构件所占有的代码空间;最后释放共享内存通信通道。
跨机的内核构件加载/访问/卸载方法:基本工作流程如图5所示,具体步骤如下:
(1)构件管理平台根据构件服务请求方或系统构件配置文件确定构件的加载方式;
(2)在确定使用跨机的加载方式加载构件后,有两种加载方式,一种是在远地加载,一种是把远地的内核构件下载到本地,然后在本地加载。如果是第二种方式,则通过构件缓存管理平台对构件进行缓存,并根据LRU算法进行构件的替换。根据加载方式,如果在同一域中,则与上述同机同域的内核构件加载/访问/卸载方法一致;如果在不同域中,则与上述同机跨域的内核构件加载/访问/卸载方法一致;
(3)如果是第一种方式,即远程加载方式,则构件管理平台通过查找内核构件注册的表项获得了远地内核构件的远地文件路径后,先与远地建立网络通信通道;
(4)然后通过网络通信通道在远地执行如下操作:打开内核构件文件并获得其句柄,读入此构件文件;
(5)构件管理平台通知元数据管理/缓存平台,把内核构件中的元数据节中的元数据通过网络通信通道读入元数据管理/缓存平台的注册表中,这样就完成了实际加载任务的前期准备工作;
(6)并通过查找内核构件注册表获得/注册本地内核构件的元数据信息后,然后创建内核构件,根据所处的域建立该构件的内存访问权限,并设定此构件运行的CPU特权状态;
(7)完成实际的加载任务。加载任务在远地和本地执行,在远地执行的加载任务的具体步骤包括:把该内核构件的代码加入远地此域的内存地址空间;然后链接本地的网络通信通道中的请求链接,用于进行跨域的数据传递;在此接口上通过绑定平台根据此构件的元数据信息建立该构件的服务接口存根和需求接口代理;接着把该内核构件提供的服务接口函数注册到位于此域(此域与操作系统核心所在域不同)的系统函数表中,以便于位于此域中的内核构件直接访问。在本地执行的加载任务的具体步骤包括:在操作系统核心所在域中建立此内核构件的影子内核构件(Mirror Kernel Component),在影子内核构件中主要包括了此构件函数的服务接口代理和需求接口存根,接着把影子内核构件中的函数注册到操作系统核心所在域的系统函数表中;最后扫描此域的系统函数表,把该影子内核构件需取的函数符号修正为此域提供的系统函数表。加载完毕后,位于跨机的其它内核执行路径就可以访问加载后的跨机的内核构件提供的跨机服务了;
(8)当内核中的某一执行路径调用此内核构件的服务接口的函数时,且二者为不同计算机中的不同域时,如果是第一次调用,则先会通过网络通信通道建立跨计算机的信息通路,如果不是第一次调用,则可直接使用第一调用建立的网络通信通道;然后调用构件服务接口代理的相应函数,该函数会通过网络通信通道列集参数,向此内核构件的服务接口存根发送服务请求,服务接口存根会访问此内核构件的服务函数并回送结果后,网络通信通道会散集结果,并把结果返回给内核中的某一执行路径调用;
(9)当满足一定退出条件(如一段时间后没有访问请求)时,可完成该内核构件的卸载工作,即确定内核构件的接口级访问计数为零后,把系统函数表中该内核构件提供的函数符号—地址项清除,释放该内核构件和影子内核构件在运行时申请的资源,释放该内核构件和影子内核构件所占有的代码空间。最后释放网络通信通道。
Claims (1)
1、嵌入式操作系统内核构件跨域运行的方法,其特征在于,该方法在分布式网络内的计算机中的面向构件的操作系统或者传统的操作系统按以下步骤依次进行:
步骤(1)初始化:
把系统的内核模块扩展成一个内核构件,这是一个还没有链接的执行格式目标文件,在其中建立了专门包含元数据的文件节——元数据节,在元数据中包含了内核构件提供的服务/需求接口的列集/散集函数构成部分;所述的执行格式目标文件的框架形式为:内核构件需要的头文件的说明、元数据所在的节声明开始、服务接口的元数据说明、需求接口元数据说明、元数据所在的节声明结束、内核构件功能实现的具体内容、内核模块初始化函数以及内核模块返回函数;所述的列集函数的功能是对内核构件所提供的接口中的函数定义进行字节序列化打包操作;所述的散集函数的功能是对已经序列化的数据镜像字节反序列化解包并恢复函数定义的操作;
在内存地址空间中设定下述整个包括读/写/执行在内的内存访问权限和包括内核态/用户态在内的CPU特权态的-段地址空间,称为域:
可读写核心域,用rw_core domain表示,在一台计算机上只有一个,该域与操作系统核心处于同一地址空间,处于该域中的内核构件权限最高,且由操作系统核心直接加载,操作系统核心与内核构件之间、内核构件相互之间的通信通道连接:
只读核心域,用r_core domain表示,在一台计算机上有多个,该域与操作系统核心不处于同一地址空间,操作系统核心能对属于此域中的内核构件进行读写操作;属于同一个只读核心域内的内核构件通过此域空间互操作,但属于不同只读核心域内的内核构件之间只能通过基于共享内存的通信通道互操作,该通道是建立在内核态的共享内存和同相应的代理与存根进行数据的列集与散集之上的;
用户域,用user domain表示,在一台计算机上有多个,都处在用户态的地址空间,处于此域中的内核构件只能通过所述共享内存的通信通道与处于可读写核心域和只读核心域中的内核构件或操作系统核心进行互操作;
网络核心域,用net_core domain表示,是一个位于另一台计算机的地址空间上且属于内核态的域,位于此域中的内核构件通过基于TCP/IP协议的网络通信通道实现互操作,或者下载到本地计算机中运行,且处于本地计算机的只读核心域中;
网络用户域,用net_user domain表示,是一个位于另一台计算机的地址空间上且属于用户域的域,位于此域中的内核构件通过基于TCP/IP协议的网络通信通道实现互操作,或者下载到本地计算机中运行,且处于本地计算机的用户域中;
在所述操作系统内建立下列所述内核构件跨域下载/运行/卸载所属的支撑平台:
元数据管理/缓存平台:设有内核构件注册表,其中包括内核构件的代码和元数据信息,使得内核构件的元数据信息由元数据管理/缓存平台统一管理;同时,在内核构件间进行异地访问时,完成元数据的本地缓存工作;
构件管理平台:设有内核构件注册表,执行内核构件在服务管理中注册和注销;
绑定管理平台:接收构件管理平台输入的接口绑定通知,完成对内核构件需求接口中的函数指针的赋值,若找不到需求接口中的函数指针对应的其它构件的服务接口,便报错;构件缓存管理平台:用于把异地的内核构件放到本地缓存,并依据最近最少使用算法进行构件的替换;
在操作系统核心的所在域中,建立系统函数表,其中包含了在内存地址空间中允许直接访问的内核函数的符号和地址的对应关系表;
步骤(2)封装内核构件,步骤如下:
步骤(2.1)输入内核构件执行文件框架所需要的内容,其中包括:元数据内容,并指定其属于执行文件格式中的元数据节;
步骤(2.2)把步骤(1)生成的内核构件源文件按内核模块的编译参数生成能加载到不同于域的可执行的内核构件;
步骤(3)按照以下步骤实现内核构件的加载:
步骤(3.1)操作系统核心把对外服务接口注册到元数据管理/缓存平台;
步骤(3.2)构件管理平台依据已注册的内核构件提出的加载服务请求或系统构件文件,确定内核构件的加载方式;
同机跨域的内核构件的加载按照以下步骤进行:
步骤(3.2.1.1)构件管理平台通过内核构件注册表查找该构件的本地文件路径,打开内核构件文件,通过句柄读入此构建文件;
步骤(3.2.1.2)构件管理平台通知元数据管理/缓存平台,把内核构件中的元数据读入元数据管理/缓存平台的内核构件注册表中;
步骤(3.2.1.3)元数据管理/缓存平台通过查找内核构件注册表得到已注册的本地内核构件的元数据信息后,根据文件句柄创建内核构件,根据内核构件所处的域建立该内核构件的内存访问权限,并设定该构件运行的CPU特权状态;
步骤(3.2.1.4)元数据管理/缓存平台把该内核构件的带把加入该构件所在域的内存地址空间,建立一个共享内存通信通道;
步骤(3.2.1.5)元数据管理/缓存平台把该内核构件提供的服务接口函数提供给绑定管理平台;
步骤(3.2.1.6)绑定管理平台根据所收到的所述内核构件的元数据信息建立相应的服务接口存根和需求接口代理,接着把内核构件提供的服务接口函数注册到位于该内核构件所在的系统函数表中,便于位于所述域的内核构件查询;
步骤(3.2.1.7)绑定管理平台在操作系统核心所在域中建立该内核构件的影子内核构件,其中包括有该内核构件的服务接口存根和需求接口代理,然后把影子内核构件中的函数注册到操作系统核心所在域的系统函数表中;
步骤(3.2.1.8)绑定管理平台扫描操作系统内核的所在域,系统函数表把该影子内核构件中涉及的函数符号修正为所述域提供的系统函数表,为位于同机跨域的其他内核构件通过共享内存通信通道提供跨域服务;
跨机的内核构件加载按照以下步骤执行:
步骤(3.2.2.1)构件管理平台依据已注册的内核构件提出的加载服务请求或系统构件服务文件确定该内核构件的加载方式;
步骤(3.2.2.2)若是把远地的内核构件下载到本地,则通过构件缓存管理平台对该内核构件进行缓存,根据最近最少使用算法构件替换,按照步骤(3.2.1.1)~(3.2.1.8)进行加载;
步骤(3.2.2.2)若是在远地加载一个内核构件,则按照以下步骤进行:
步骤(3.2.2.3.1)构件管理平台通过查找内核构件注册表获得该远地内核构件的远地文件路径后,与远地建立网络通信通道;
步骤(3.2.2.3.2)通过网络通信通道执行步骤(3.2.1.1)中打开内核构件文件的操作;
步骤(3.2.2.3.3)通过网络通信通道执行步骤(3.2.1.2)~(3.2.1.3);
步骤(3.2.2.3.4)若加载任务在远地计算机中执行,则把该内核构件的代码加入远地同一所在域的内存地址空间,在连接本地网络通信通道中的请求链接,用于跨域的数据传递;
步骤(3.2.2.3.5)接着执行步骤(3.2.1.4)~(3.2.1.6)
步骤(3.2.2.4)若是在本地执行加载任务,则执行步骤(3.2.1.7)~(3.2.1.8);
步骤(4)对内核构件的访问按照以下步骤进行:
若为同机跨域访问,首先在元数据管理/缓存平台中查找此内核构件的元数据;然后由构件管理平台据此元数据建立服务接口的存根及需求接口的代理;再调用影子内核构件服务接口代理的相应函数,然后调用共享内存通信通道进行列集参数,向此内核构件的服务接口存根发送服务请求,服务接口存根会访问此内核构件的服务函数并会送结果,然后共享内存通信通道会散集结果,并把结果返回给内核中的某一执行路径调用;
若为跨域访问,先通过网络通信通道建立跨计算机的信息通路,然后再按上述同机跨域访问处理;
若在跨域访问中要把此内核构件下载到本地计算机中,如果远地计算机中的内核构件处在网络核心域,则在本地是处于只读核心域;如果远地计算机中的内核构件处于网络用户域,则在本地是处于只读用户域;
步骤(5)内核构件的卸载按以下步骤进行:
对于同机跨域时内核构件的卸载,当操作系统确定内核构件的接口级访问计数为零后,把系统函数表中该内核构件和影子内核构件提供的函数符号及相应地址的项清除,释放该内核构件在运行中申请的资源,释放该构件和影子内核构件所占有的代码空间,最后释放共享内存通信通道;
对于远地跨域的内核构件卸载,与同机跨域的内核构件卸载相比,仅仅在于最后释放的是网络通信通道,其它相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610114424 CN101038545A (zh) | 2006-11-10 | 2006-11-10 | 操作系统内核构件跨域运行的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610114424 CN101038545A (zh) | 2006-11-10 | 2006-11-10 | 操作系统内核构件跨域运行的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101038545A true CN101038545A (zh) | 2007-09-19 |
Family
ID=38889466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610114424 Pending CN101038545A (zh) | 2006-11-10 | 2006-11-10 | 操作系统内核构件跨域运行的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101038545A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102105874A (zh) * | 2008-07-28 | 2011-06-22 | 微软公司 | 带有定制的计算机应用程序包 |
CN101478549B (zh) * | 2009-01-20 | 2011-10-05 | 电子科技大学 | 共享内存流媒体服务器的运行方法及其功能模块构架 |
CN102521300A (zh) * | 2011-11-30 | 2012-06-27 | 华中科技大学 | 基于嵌入式虚拟化平台的域间文件数据共享方法 |
CN101650670B (zh) * | 2008-08-14 | 2013-01-09 | 鸿富锦精密工业(深圳)有限公司 | 可共享应用程序配置参数的电子系统及其方法 |
CN102981823A (zh) * | 2012-10-25 | 2013-03-20 | 四川农业大学 | 一种领域驱动开发插件系统 |
CN101697125B (zh) * | 2009-11-04 | 2013-05-08 | 中兴通讯股份有限公司 | 一种开发环境转换的方法及装置 |
CN108259561A (zh) * | 2017-12-07 | 2018-07-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种跨平台系统面向数据的通信方法 |
CN108563448A (zh) * | 2018-04-19 | 2018-09-21 | 清华大学 | 程序文件的编译方法、系统、计算机设备和存储介质 |
CN109522111A (zh) * | 2018-11-29 | 2019-03-26 | 北京元心科技有限公司 | 异构生态系统的调用方法、装置、电子设备及存储介质 |
CN111124522A (zh) * | 2020-04-01 | 2020-05-08 | 广东戴维利科技有限公司 | 一种微内核及宏内核混合的方法及系统 |
CN111433771A (zh) * | 2017-09-22 | 2020-07-17 | 西班牙毕尔巴鄂比斯开银行 | 内核模块的安全引导 |
CN113238800A (zh) * | 2021-05-25 | 2021-08-10 | 上海安路信息科技股份有限公司 | 堆栈结构和函数调用方法及系统 |
-
2006
- 2006-11-10 CN CN 200610114424 patent/CN101038545A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102105874A (zh) * | 2008-07-28 | 2011-06-22 | 微软公司 | 带有定制的计算机应用程序包 |
CN102105874B (zh) * | 2008-07-28 | 2014-02-12 | 微软公司 | 用于检测和处理对应用程序包作出的对资源的改变的方法和系统 |
CN101650670B (zh) * | 2008-08-14 | 2013-01-09 | 鸿富锦精密工业(深圳)有限公司 | 可共享应用程序配置参数的电子系统及其方法 |
CN101478549B (zh) * | 2009-01-20 | 2011-10-05 | 电子科技大学 | 共享内存流媒体服务器的运行方法及其功能模块构架 |
CN101697125B (zh) * | 2009-11-04 | 2013-05-08 | 中兴通讯股份有限公司 | 一种开发环境转换的方法及装置 |
CN102521300B (zh) * | 2011-11-30 | 2015-03-04 | 华中科技大学 | 基于嵌入式虚拟化平台的域间文件数据共享方法 |
CN102521300A (zh) * | 2011-11-30 | 2012-06-27 | 华中科技大学 | 基于嵌入式虚拟化平台的域间文件数据共享方法 |
CN102981823B (zh) * | 2012-10-25 | 2015-09-30 | 四川农业大学 | 一种领域驱动开发插件系统 |
CN102981823A (zh) * | 2012-10-25 | 2013-03-20 | 四川农业大学 | 一种领域驱动开发插件系统 |
CN111433771A (zh) * | 2017-09-22 | 2020-07-17 | 西班牙毕尔巴鄂比斯开银行 | 内核模块的安全引导 |
CN108259561A (zh) * | 2017-12-07 | 2018-07-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种跨平台系统面向数据的通信方法 |
CN108563448A (zh) * | 2018-04-19 | 2018-09-21 | 清华大学 | 程序文件的编译方法、系统、计算机设备和存储介质 |
CN109522111A (zh) * | 2018-11-29 | 2019-03-26 | 北京元心科技有限公司 | 异构生态系统的调用方法、装置、电子设备及存储介质 |
CN109522111B (zh) * | 2018-11-29 | 2023-03-10 | 北京元心科技有限公司 | 异构生态系统的调用方法、装置、电子设备及存储介质 |
CN111124522A (zh) * | 2020-04-01 | 2020-05-08 | 广东戴维利科技有限公司 | 一种微内核及宏内核混合的方法及系统 |
CN111124522B (zh) * | 2020-04-01 | 2020-08-04 | 广东戴维利科技有限公司 | 一种微内核及宏内核混合的方法及系统 |
CN113238800A (zh) * | 2021-05-25 | 2021-08-10 | 上海安路信息科技股份有限公司 | 堆栈结构和函数调用方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101038545A (zh) | 操作系统内核构件跨域运行的方法 | |
CN1645330A (zh) | 用于应用程序分布式管理的启用网格的虚拟机的方法和系统 | |
JP6370218B2 (ja) | メモリ管理方法、コンピュータシステム、コンピュータプログラム及び記憶媒体 | |
JP5980916B2 (ja) | コンピュータにより実行される方法及びコンピュータシステム | |
CN1791862A (zh) | 操作系统 | |
CN1881183A (zh) | 信息处理装置、进程控制方法及其计算机程序 | |
CN1645342A (zh) | San环境中基于网络的海量存储资源管理方法 | |
CN1432913A (zh) | 在计算系统中管理驱动器的系统和方法 | |
CN1492323A (zh) | 多处理器地址转换的高效仿真方法和系统 | |
CN1942860A (zh) | 在分布式网络体系结构中建模和动态部署服务的系统和方法 | |
CN1229944A (zh) | 用于减少预装类的脚印的系统和方法 | |
KR20070006756A (ko) | 이종 연산 환경에서 리소스의 할당을 용이하게 하는 방법,시스템 및 컴퓨터 프로그램 제품 | |
CN101039330A (zh) | 在移动应用程序环境中使用的产品 | |
CN1735890A (zh) | 存储和检索在定义类型的数据库存储外的用户定义类型的字段的系统和方法 | |
CN101035125A (zh) | 用于处理Web服务请求的方法和系统 | |
CN1801756A (zh) | 迁移程序、信息处理装置、计算机系统和存储有迁移程序的计算机可读记录介质 | |
CN101075333A (zh) | 计算机软件开发方法和系统 | |
CN1930553A (zh) | 访问逻辑分区中的存储器 | |
CN101042649A (zh) | 一种配置信息处理方法及装置以及平台系统 | |
CN1725142A (zh) | 用于安全系统的框架 | |
CN1916842A (zh) | 构件化软件系统中实现反射机制的构件封装方法 | |
US20060123390A1 (en) | Method and apparatus to implement adaptive scripting tool | |
CN1591339A (zh) | 提供共享Web模块的系统和方法 | |
CN1300690C (zh) | 用于监视计算机系统中的资源的方法和系统 | |
CN1924803A (zh) | 处理不同模态的数据的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |