CN100345112C - 操作系统的构件化扩充方法 - Google Patents
操作系统的构件化扩充方法 Download PDFInfo
- Publication number
- CN100345112C CN100345112C CNB200510124103XA CN200510124103A CN100345112C CN 100345112 C CN100345112 C CN 100345112C CN B200510124103X A CNB200510124103X A CN B200510124103XA CN 200510124103 A CN200510124103 A CN 200510124103A CN 100345112 C CN100345112 C CN 100345112C
- Authority
- CN
- China
- Prior art keywords
- operating system
- destination
- management device
- message
- extending method
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种计算机操作系统软件的构件化扩充方法,该方法依靠一组闭环循环调度指令代码,通过闭环的循环调度机制,获得硬件系统的执行控制权,并将该控制权根据配置规则,分配其中一部分执行权给目标操作系统,闭环循环调度指令代码进行构件化扩充,通过某种引用方式将构件功能映射到目标操作系统,完成对操作系统的构件化扩充。本发明允许目标操作系统不做任何改动的情况下,无论目标操作系统是否支持构件化技术,都可实现构件扩充或功能扩充。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种计算机操作系统软件的扩充。
背景技术
操作系统是直接运行于硬件平台上的软件,对操作系统进行扩充是经常发生的行为,引发这一行为的原因是多方面的,包括:硬件设备的变化、操作系统错误修正、操作系统功能变更、操作系统性能优化等。实现操作系统扩充的方法基本可以分为两种:一种是直接修改操作系统的代码。这需要对操作系统实现十分了解,不仅代价高昂,而且容易出错;另一种是通过操作系统提供的接口进行扩充,允许静态或动态地加载新模块,但这些扩充方法并不通用,开发人员仍然需要深入了解每一种操作系统的扩充方法才能实现扩充,费时费力,而且操作系统的扩充接口随着版本变化而不同。因此,这两种方法都受到操作系统种类、版本的限制,扩充的代码资源无法重用。
发明内容
本发明解决了上述操作系统软件扩充方法的不足,提供一种操作系统的构件化扩充方法,该方法不受硬件平台和操作系统变化的影响,以构件化技术本身的高重用性和灵活性解决操作系统扩充问题。
本发明的技术内容:一种操作系统的构件化扩充方法,采用一组运行于硬件之上的闭环循环调度指令代码,通过闭环的循环调度机制,获得硬件系统的执行控制权,并将该控制权根据配置规则,分配其中一部分执行权给目标操作系统,闭环循环调度指令代码进行构件化扩充,通过某种引用方式将构件功能映射到目标操作系统,完成对操作系统的构件化扩充。
该闭环循环调度指令代码独立于操作系统,直接运行在硬件逻辑上,其占有和保留部分存储器用于自身运行,与目标操作系统共存,不会被全部或部分卸载,其包括一个加载器、一个调度器、一个构件管理器、一个通讯管理器及一个硬件信号管理器,加载器用于将所有指令代码加载到特定地址空间,调度器划分出合理的CPU资源分配给操作系统使用,构件管理器允许用户加载构件、管理构件引用,通讯管理器完成构件间的信息传递,硬件信号管理器是操作系统与硬件平台间的通信管道。
硬件启动,加载器通过硬件初始化获得控制权,并从外存储器中将其余代码读入内存指定位置,更新构件引用符,设置存储空间保护标志,初始化调度器、构件管理器、通讯管理器、硬件信号管理器,然后将通过调度器将控制权交给操作系统自带的加载代码,加载目标操作系统。
构件化扩充是指:采用API扩充和构件扩充方式,通过运行前的编译和连接进行静态的扩充或在运行中加载已编译的扩充代码。
当需要向系统扩充构件时,执行以下步骤:
(1)目标操作系统通过虚拟设备向构件管理器发送消息激活构件管理器;
(2)构件管理器根据消息调用存储设备读取构件将指定的构件,同时向域管理器申请空闲内存,并将构件读入空闲内存;
(3)域管理器将新读入的构件所占用的地址空间标为“已占用”,更新构件引用关系;
(4)控制权交还给调度器,由调度器交还目标操作系统,构件加载完成。
构件扩充代码加载过程结束,目标操作系统正常加载。由于调度作用,操作系统加载和初始化硬件设备时,构件扩充代码会获得CPU控制权,此时构件扩充代码执行硬件信号管理器初始化,与目标操作系统中的虚拟设备接口映射。构件的功能映射到目标操作系统,包括:
(1)循环调度指令代码通过开放和声明一些功能接口,允许目标操作系统引用;
(2)循环调度指令代码通过替换硬件系统缺省的功能引用,使目标操作系统引用扩充功能;
(3)循环调度指令代码查找和修改目标操作系统的引用指针,实现对目标操作系统的功能替换或扩充。
当构件不再使用时,可以被卸载。步骤如下:
(1)目标操作系统通过虚拟设备向构件管理器发送消息激活构件管理器;
(2)构件管理器根据消息检查欲卸载的构件引用数是否为0,如果为0则执行步骤3,否则返回“构件正在使用,不允许卸载”的错误信息;
(3)通过通讯管理器向域管理器发送消息,注销构件;
(4)域管理器根据内存使用情况决定是否释放构件占用的内存;
(5)构件卸载完毕,控制权由调度器交还给操作系统,操作系统继续运行。
本发明的技术效果:本方法通过一组直接运行于硬件平台上的循环调度指令代码提供一种简单的扩充方法,用户可以通过构件契约描述,以构件化的方式扩充操作系统,且扩充方法不受硬件平台和操作系统变化的影响,以构件化技术本身的高重用性和灵活性解决操作系统扩充问题。当然,本方法同样支持通过传统软件调用接口的方法进行扩充。
本方法允许用户在现有技术基础上迭代开发,特别适合于现在嵌入式产品领域产品生命周期越来越短的趋势。
附图说明
图1为本发明的总体关系示意图;
图2为本发明的加载过程流程图;
图3为本发明的构件扩充过程流程图。
具体实施方式
操作系统的构件扩充方法,依靠一组直接运行于硬件平台上的指令代码实现。这组代码中包括一个加载器、一个调度器、一个构件管理器、一个通讯管理器、一个硬件信号管理器。加载器用于将本方法的所有指令代码加载到特定地址空间,构件管理器允许用户加载构件、管理构件引用,通讯管理器完成构件间的信息传递,硬件信号管理器是操作系统与硬件平台间的通信管道,调度器划分出合理的CPU资源分配给操作系统使用。
上述的加载器至少具有:
目标硬件平台存储空间描述表,用于定义和描述具体的加载地址;
构件引用符描述表,用于调整构件引用和指针的对应关系;
存储设备读写构件,用于从外存储器读取需要加载的代码;
上述加载器通过硬件初始化获得控制权,并从外存储器中将其余代码读入内存指定位置,更新构件引用符,设置存储空间保护标志,初始化调度器、构件管理器、通讯管理器、硬件信号管理器,然后将通过调度器将控制权交给操作系统自带的加载代码,加载目标操作系统。
上述的调度器至少具有:
调度策略接口,用于保存调度策略信息;
构件引用接口,用于把CPU资源分配给指定构件;
操作系统引用接口,用于把CPU资源分配给操作系统。
上述的构件管理器至少具有:
多层构件框架架构,用于加载和运行第三方构件;
域管理器,用于保护和隔离构件;
构件通讯插口,用于提供构件间通讯和构件-操作系统间通讯。
上述通讯管理器至少具有:
消息缓冲区,用于存储构件通讯消息队列;
消息描述符表,用于对应消息于构件的从属关系。
上述硬件信号管理器至少具有:
虚拟设备接口,供目标操作系统加载和使用,提供目标操作系统和扩充构件间的交互借口;
设备描述符表,用于抽象设备的管理;
中断描述符表,用于中断信号的分发管理;
端口描述符表,用于物理设备端口的注册管理。
另外还有一个虚拟设备驱动程序,以传统驱动程序的方法加载目标操作系统,提供目标操作系统与本构件扩充代码的相互引用。
加载器加载的具体过程为:
步骤1:使用目标硬件平台存储空间描述表确定具体的目标加载地址;
步骤2:调用存储设备读取构件从外存储器读取所有需要加载的代码到目标加载地址;
步骤3:根据构件引用符描述表,确定构件的入口地址,并修改构件引用符与地址的映射关系;
步骤4:对硬件的存储器配置作相应修改,将以占用的地址空间置为占用标志;
步骤5:初始化调度器、构件管理器、通讯管理器、硬件信号管理器的数据结构;
步骤6:调用调度策略接口,设置硬件定时器和中断,把控制权交给调度器;
步骤7:调度器将CPU资源分配给操作系统自带的加载代码,启动操作系统加载过程;
至此,构件扩充代码加载过程结束,目标操作系统正常加载。由于调度器的作用,操作系统加载和初始化硬件设备时,构件扩充代码会获得CPU控制权,此时构件扩充代码执行硬件信号管理器初始化,与目标操作系统中的虚拟设备接口映射。步骤为:
步骤8:硬件信号管理器与在目标操作系统中注册的虚拟设备映射;
步骤9:如果虚拟设备全部注册完毕,控制权通过调度器交回操作系统。否则,执行步骤8;
此后,直至操作系统加载完成。
当需要向系统扩充构件时,执行以下步骤:
步骤10:通过目标操作系统通过虚拟设备向构件管理器发送消息激活构件管理器;
步骤11:构件管理器根据消息调用存储设备读取构件将指定的构件,同时向域管理器申请空闲内存,并将构件读入空闲内存;
步骤12:域管理器将新读入的构件所占用的地址空间标为“已占用”,更新构件引用关系;
步骤13:控制权交还给调度器,由调度器交还目标操作系统,构件加载完成。
构件加载完成意味着操作系统扩充已经完成,操作系统可以通过虚拟设备接口,象使用常规设备一样使用构件所提供的功能。对于操作系统而言,无需关心构件如何被调用和如何返回调用结果。调度器用于在构件和操作系统之间分配CPU资源。
当构件不再使用时,可以被卸载。步骤如下:
步骤14:通过目标操作系统通过虚拟设备向构件管理器发送消息激活构件管理器;
步骤15:构件管理器根据消息检查欲卸载的构件引用数是否为0,如果为0则执行步骤16,否则返回“构件正在使用,不允许卸载”的错误信息;
步骤16:通过通讯管理器向域管理器发送消息,注销构件;
步骤17:域管理器根据内存使用情况决定是否释放构件占用的内存;
步骤18:构件卸载完毕,控制权由调度器交还给操作系统,操作系统继续运行;
以下结合实例具体对本发明作进一步的详细说明:
以X86硬件平台扩充对USB设备的支持为例,USB设备的驱动程序以构件形式提供,构件扩充代码存储在硬盘第二分区的FAT文件系统中,在X86平台加载过程如下:
步骤1:系统自检后将启动分区内容(已设置第二分区为启动分区)加载至地址0:7c00处,并将控制权转移到该处;
步骤2:启动分区包含加载器代码,因此加载器获得控制权,读取存储空间描述表,进入保护模式,确定目标加载地址为10000起始的512K字节空间内;
步骤3:将所需代码读入10000起始的地址空间内,并以10000为基址调整构件引用符表中的地址映射关系;
步骤4:设置全局描述符表GDT,将从10000起的512K字节地址空间设置为只读
步骤5:初始化调度器、构件管理器、通讯管理器、硬件信号管理器的数据结构;
步骤6:设置定时器和中断入口表,激活调度器;
步骤7:调度器查找可加载的目标操作系统,本例中为Linux操作系统,存储在硬盘第一分区,调度器将Linux加载器读入内存,并从保护模式以后部分的代码开始执行操作系统加载过程。
步骤8:Linux加载的虚拟设备驱动程序触发硬件信号管理器,硬件信号管理器分别向虚拟块设备和虚拟字符设备提供引用接口;
步骤9:重复步骤8直到虚拟设备注册完毕;
至此,构件扩充代码已经与Linux操作系统并存于硬件平台中,调度器通过定时中断在构件扩充代码和操作系统之间分配CPU资源。构件扩充代码在Linux操作系统占有一段保留内存,保证自身不会被其他代码所覆盖。
以上实例仅用以说明本发明而并非限制本发明所描述的技术方案。
通过闭环的循环调度机制,获得硬件系统的执行控制权,并将该控制权根据配置规则,分配其中一部分执行权给目标操作系统,目标操作系统在闭环循环调度中获得可配置的控制权,并通过常规方法获得扩充构件所提供的功能支持。支持构件技术的闭环循环调度在操作系统之前加载,初始化完毕后加载目标操作系统;目标操作系统加载完成后,闭环循环调度将连接必要的数据区或系统调用,实现功能上的连接;构件扩充和功能扩充可在闭环循环调度中实现。
Claims (10)
1、一种操作系统的构件化扩充方法,采用一组运行于硬件之上的闭环循环调度指令代码,通过闭环的循环调度机制,获得硬件系统的执行控制权,并将该控制权根据配置规则,分配其中一部分执行权给目标操作系统,闭环循环调度指令代码进行构件化扩充,通过引用方式将构件功能映射到目标操作系统,完成对操作系统的构件化扩充,所述闭环循环调度指令代码包括一个加载器、一个调度器、一个构件管理器、一个通讯管理器及一个硬件信号管理器,加载器用于将所有指令代码加载到特定地址空间,调度器划分出合理的CPU资源分配给操作系统使用,构件管理器允许用户加载构件、管理构件引用,通讯管理器完成构件间的信息传递,硬件信号管理器是操作系统与硬件平台间的通信管道。
2、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:所述构件化扩充是指:采用API扩充和构件扩充方式,通过运行前的编译和连接进行静态的扩充或在运行中加载已编译的扩充代码。
3、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:所述通过引用方式将构件功能映射到目标操作系统,包括:
(1)循环调度指令代码通过开放和声明一些功能接口,允许目标操作系统引用;
(2)循环调度指令代码通过替换硬件系统缺省的功能引用,使目标操作系统引用扩充功能;
(3)循环调度指令代码查找和修改目标操作系统的引用指针,实现对目标操作系统的功能替换或扩充。
4、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:当需要向系统扩充构件时,执行以下步骤:
(1)目标操作系统通过虚拟设备向构件管理器发送消息激活构件管理器;
(2)构件管理器根据消息调用存储设备读取指定的构件,同时向域管理器申请空闲内存,并将构件读入空闲内存;
(3)域管理器将新读入的构件所占用的地址空间标为“已占用”,更新构件引用关系;
(4)控制权交还给调度器,由调度器交还目标操作系统,构件加载完成。
5、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:当构件不再使用时,被卸载,步骤如下:
(1)通过目标操作系统通过虚拟设备向构件管理器发送消息激活构件管理器;
(2)构件管理器根据消息检查欲卸载的构件引用数是否为0,如果为0则执行下一步骤,否则返回“构件正在使用,不允许卸载”的错误信息;
(3)通过通讯管理器向域管理器发送消息,注销构件;
(4)域管理器根据内存使用情况决定是否释放构件占用的内存;
(5)构件卸载完毕,控制权由调度器交还给操作系统,操作系统继续运行。
6、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:所述的加载器至少有:
目标硬件平台存储空间描述表,用于定义和描述具体的加载地址;
构件引用符描述表,用于调整构件引用和指针的对应关系;
存储设备读写构件,用于从外存储器读取需要加载的代码。
7、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:所述的调度器至少有:
调度策略接口,用于保存调度策略信息;
构件引用接口,用于把CPU资源分配给指定构件;
操作系统引用接口,用于把CPU资源分配给操作系统。
8、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:所述的构件管理器至少具有:
多层构件框架架构,用于加载和运行第三方构件;
域管理器,用于保护和隔离构件;
构件通讯插口,用于提供构件间通讯和构件-操作系统间通讯。
9、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:所述通讯管理器至少具有:
消息缓冲区,用于存储构件通讯消息队列;
消息描述符表,用于对应消息与构件的从属关系。
10、如权利要求1所述的操作系统的构件化扩充方法,其特征在于:所述硬件信号管理器至少具有:
虚拟设备接口,供目标操作系统加载和使用,提供目标操作系统和扩充构件间的交互接口;
设备描述符表,用于抽象设备的管理;
中断描述符表,用于中断信号的分发管理;
端口描述符表,用于物理设备端口的注册管理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200510124103XA CN100345112C (zh) | 2005-11-25 | 2005-11-25 | 操作系统的构件化扩充方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200510124103XA CN100345112C (zh) | 2005-11-25 | 2005-11-25 | 操作系统的构件化扩充方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1776615A CN1776615A (zh) | 2006-05-24 |
CN100345112C true CN100345112C (zh) | 2007-10-24 |
Family
ID=36766155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200510124103XA Expired - Fee Related CN100345112C (zh) | 2005-11-25 | 2005-11-25 | 操作系统的构件化扩充方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100345112C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8590060B2 (en) * | 2010-10-08 | 2013-11-19 | Tandberg Data Holdings S.A.R.L. | Virtual removable disk device for removable storage media |
CN103677933A (zh) * | 2013-12-19 | 2014-03-26 | 大唐微电子技术有限公司 | 一种为智能卡打补丁的方法和系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010014968A1 (en) * | 1998-07-21 | 2001-08-16 | Mannan A. Mohammed | Automatic upgrade of software |
CN1310385A (zh) * | 2000-02-24 | 2001-08-29 | 英业达股份有限公司 | 计算机软件功能的动态扩充方法 |
CN1399194A (zh) * | 2001-07-24 | 2003-02-26 | 微软公司 | 创建和使用具有选定功能的操作系统的方法和系统 |
CN1403915A (zh) * | 2001-09-10 | 2003-03-19 | 英业达股份有限公司 | 一种计算机防病毒方法及使用这种方法的计算机 |
US20030163723A1 (en) * | 2002-02-25 | 2003-08-28 | Kozuch Michael A. | Method and apparatus for loading a trustable operating system |
CN1468393A (zh) * | 2000-10-05 | 2004-01-14 | �Ƚ�װ�ù�˾ | 防止计算机软件侵权的系统和方法 |
CN1501256A (zh) * | 2002-11-19 | 2004-06-02 | 研扬科技股份有限公司 | 一种具有虚拟软式磁盘驱动器的计算机系统 |
CN1534472A (zh) * | 2003-03-31 | 2004-10-06 | 联想(北京)有限公司 | 动态扩充嵌入式计算机系统的实现方法 |
CN1581080A (zh) * | 2004-05-20 | 2005-02-16 | 安徽现代电视技术有限公司 | 嵌入式操作系统的固化方法 |
US20050204205A1 (en) * | 2004-02-26 | 2005-09-15 | Ring Sandra E. | Methodology, system, and computer readable medium for detecting operating system exploitations |
-
2005
- 2005-11-25 CN CNB200510124103XA patent/CN100345112C/zh not_active Expired - Fee Related
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010014968A1 (en) * | 1998-07-21 | 2001-08-16 | Mannan A. Mohammed | Automatic upgrade of software |
CN1310385A (zh) * | 2000-02-24 | 2001-08-29 | 英业达股份有限公司 | 计算机软件功能的动态扩充方法 |
CN1468393A (zh) * | 2000-10-05 | 2004-01-14 | �Ƚ�װ�ù�˾ | 防止计算机软件侵权的系统和方法 |
CN1399194A (zh) * | 2001-07-24 | 2003-02-26 | 微软公司 | 创建和使用具有选定功能的操作系统的方法和系统 |
CN1403915A (zh) * | 2001-09-10 | 2003-03-19 | 英业达股份有限公司 | 一种计算机防病毒方法及使用这种方法的计算机 |
US20030163723A1 (en) * | 2002-02-25 | 2003-08-28 | Kozuch Michael A. | Method and apparatus for loading a trustable operating system |
CN1501256A (zh) * | 2002-11-19 | 2004-06-02 | 研扬科技股份有限公司 | 一种具有虚拟软式磁盘驱动器的计算机系统 |
CN1534472A (zh) * | 2003-03-31 | 2004-10-06 | 联想(北京)有限公司 | 动态扩充嵌入式计算机系统的实现方法 |
US20050204205A1 (en) * | 2004-02-26 | 2005-09-15 | Ring Sandra E. | Methodology, system, and computer readable medium for detecting operating system exploitations |
CN1581080A (zh) * | 2004-05-20 | 2005-02-16 | 安徽现代电视技术有限公司 | 嵌入式操作系统的固化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1776615A (zh) | 2006-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107015845B (zh) | Gpu虚拟化 | |
US8484631B2 (en) | Supporting hardware configuration changes in a UEFI firmware component | |
KR101255382B1 (ko) | 운영체제에 친숙한 부트로더 | |
US20060174100A1 (en) | System and method of booting an operating system for a computer | |
US11782645B2 (en) | Efficiently storing computer processor data structures in computer memory | |
US7454547B1 (en) | Data exchange between a runtime environment and a computer firmware in a multi-processor computing system | |
US20050076196A1 (en) | Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension | |
EP3314514B1 (en) | Protecting basic input/output (bios) code | |
US8539214B1 (en) | Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware | |
CN1722092A (zh) | Vex-虚拟扩展框架 | |
US8271707B2 (en) | Method and system for PCI hybrid function | |
US20080168258A1 (en) | Method and Apparatus For Selecting the Architecture Level to Which a Processor Appears to Conform | |
CN1924805A (zh) | 在无线二进制运行环境平台实现动态链接库方法 | |
US20120227056A1 (en) | Method and system for enabling access to functionality provided by resources outside of an operating system environment | |
JP2022058191A (ja) | よりスリムで高速なブートのための早期プラットフォームハードニング技術 | |
CN102262555B (zh) | 加载java三方库的不同版本的方法和装置 | |
JP2009543236A (ja) | マルチタスク仮想マシンのためのヒープ組織 | |
US8726258B2 (en) | Supporting multiple hardware components in UEFI | |
CN100345112C (zh) | 操作系统的构件化扩充方法 | |
US8463972B2 (en) | System and method for dynamic, local retriggered interrupt routing discovery | |
CN1801092A (zh) | 一种嵌入式芯片及其程序空间扩展的方法 | |
US7873807B1 (en) | Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware | |
CN1920731A (zh) | 一种实现操作系统隔离的系统及方法 | |
CN105630530A (zh) | 数字信号处理器多级启动方法及系统 | |
US7178139B2 (en) | Executable file system for an embedded computer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071024 Termination date: 20141125 |
|
EXPY | Termination of patent right or utility model |