CN100377085C - 嵌入式操作系统硬件镜像启动优化的实现方法 - Google Patents

嵌入式操作系统硬件镜像启动优化的实现方法 Download PDF

Info

Publication number
CN100377085C
CN100377085C CNB2006100501161A CN200610050116A CN100377085C CN 100377085 C CN100377085 C CN 100377085C CN B2006100501161 A CNB2006100501161 A CN B2006100501161A CN 200610050116 A CN200610050116 A CN 200610050116A CN 100377085 C CN100377085 C CN 100377085C
Authority
CN
China
Prior art keywords
memory
mirror image
embedded
operating system
page
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
Application number
CNB2006100501161A
Other languages
English (en)
Other versions
CN1825283A (zh
Inventor
陈天洲
胡威
沙峰
连毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CNB2006100501161A priority Critical patent/CN100377085C/zh
Publication of CN1825283A publication Critical patent/CN1825283A/zh
Application granted granted Critical
Publication of CN100377085C publication Critical patent/CN100377085C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种嵌入式操作系统硬件镜像启动优化的实现方法。在嵌入式操作系统结束运行时,不是直接的结束,而是将正在运行的操作系统的状态保存下来,与操作系统微内核一起保存在处理器的片内存储器上,在启动的时候直接加载,回复到嵌入式操作系统结束时的运行状态。本发明的方法可以显著加速系统引导和重新启动的速度,使得嵌入式系统的启动速度显著提升,减少用户等待的时间。

Description

嵌入式操作系统硬件镜像启动优化的实现方法
技术领域
本发明涉及嵌入式操作系统启动优化技术领域,特别是涉及一种嵌入式操作系统硬件镜像启动优化的实现方法。
背景技术
在当前的嵌入式技术中,硬件与软件的关系越来越密切,与硬件相对应软件也是嵌入式系统中的重要组成部分,而且由于当前软件中数以万计的代码是由人手工编写完成,这些软件需要屏蔽不同底层硬件的差异,并要能满足千变万化的应用需求,因此软件相对于硬件而言更复杂,需要耗费的研发成本更多。
由于嵌入式系统是面向特定应用的系统,因此不同嵌入式系统的硬件设计往往千差万别,不能像个人电脑中的BIOS那样有统一的标准化设计,这种非标准化突出体现在嵌入式系统启动程序的设计和嵌入式操作系统硬件抽象层的移植工作中,为了减少重复劳动、提高生产效率,这些工作正在逐步变为由硬件厂商来提供标准的参考解决方案(或定制服务),并提供软件源代码给具体设备的制造商。
嵌入式系统的启动程序一般具有两个功能:一是启动设备,完成硬件自检,为后续操作系统的运行做好准备;另一个是提供开发和调试环境,为后续操作系统的开发和移植提供方便。虽然从理论上来说可以完全不需要启动程序的存在,而直接由操作系统负责启动,但实际上出于开发任务的分解、调试的需要和一些技术上的考虑,一般都会采用一个代码量相对操作系统小得多的启动程序,并首先用各种开发工具将启动程序调试通过。
嵌入式操作系统是嵌入式软件平台中最重要的组成部分,也有很多简单的嵌入式系统不使用操作系统,但是随着应用需求变得越来越复杂,随着人们对提高开发效率、降低研发成本和保证系统稳定性需求的增强,操作系统的使用越来越普及。并且嵌入式系统中的操作系统和通用计算机中的操作系统相比还有一些独特的特点,比如许多应用希望嵌入式操作系统能满足一定的实时性要求、可配置性好、可移植性强、具有功耗管理功能、系统稳定可靠等等。
如果计算机只利用嵌入式处理器和存储器进行计算而离开了对各种输入输出(I/O)设备的操作,就不能获得输入信号,不能显示结果,不能与其他计算设备通讯,不能与使用计算机的人进行交互,那么计算机所能发挥的作用就大为逊色了。驱动程序就是操作系统中用于控制和访问各种输入输出设备的程序,因此驱动程序是嵌入式系统软件平台中的重要性部件。在实际的嵌入式系统开发中,操作系统的内核一般不需要做太多的修改,大量的工作往往是针对独特的硬件平台编写、修改和调试各个外设的驱动程序,这方面的技术需求巨大。
嵌入式系统由于面向特定应用一般资源有限以节约成本,不能像通用计算机那样有完善的应用程序运行环境,因此面向嵌入式应用的中间件软件就应运而生,这些嵌入式中间件软件往往执行效率高,为特定的应用进行了裁减和优化,或者可配置性很强。一些典型的嵌入式系统中的中间件软件包括网络协议栈、Flash文件系统、Java虚拟机、嵌入式数据库等等。
嵌入式系统中必然还有完成特定任务的应用软件,这些软件架构在嵌入式操作系统和中间件软件之上,针对特定的硬件需求完成相应的计算任务,是嵌入式系统功能的最后实现者,其设计和应用需求紧密相关,开发过程与普通应用软件的开发过程类似,是系统设计的最后环节。
嵌入式系统中的硬件资源环境一般比较苛刻,嵌入式微处理器和微控制器的内存一般都不大,要在如此紧张的资源下完成复杂的功能,这就要求嵌入式系统软件必须尽量的小巧、稳定和高效。在此情况下,作为移动嵌入式设备用户,如果面对的是一般的通用操作系统,往往无法忍受漫长的启动时间,同时,对于嵌入式操作系统来说,也要尽量缩短其启动时间,以达到用户的要求,并且启动时间已经成为影响用户对产品选择的重要因素,因此,需要采用新的方法来减少嵌入式操作系统的启动时间。
发明内容
本发明的目的在于提供一种嵌入式操作系统硬件镜像启动优化的实现方法。
本发明解决其技术问题采用的技术方案如下:
1)进程中断状态检测:
①通过控制台激活守护进程;
②守护进程检测进程是否处在中断中,如果是的话,就不进行后续的镜像保存操作;
③建立虚拟终端;
2)镜像的保存:
①结束除内核态进程、僵死进程、当前进程之外所有的进程,释放尽可能多的内存空间;
②向在性能管理模块中注册了的设备发送系统挂起的通知;
③把当前CPU寄存器中的所有修改过的数值存入内存,保存当前状态下的CPU的寄存器的值到内存中,统计一共有多少个内存页面需要保存,并把所述内存页面复制到内存中新的区域;
④锁定除片内存储器外所有使用中的交换设备,把复制好的内存页面写入到片内存储器里面,并把每个交换页的地址保存下来,并将这些交换页的页表目录写入到片内存储器的交换分区;
⑤制作出镜像的头部信息,把镜像头部信息写入到片内存储器的交换分区里面,并使得所有的交换设备可用;
⑥关机或者重新启动系统;
3)镜像的恢复:
①开机启动内核,完成进程的初始化和基本的启动过程,并进行条件检测以确定目标交换分区的块大小;
②创建一个虚拟的控制台;
③检测片内存储器是否为目标交换分区,从片内存储器里读取镜像的头部信息,并对镜像头部信息进行一致性的检测;
④重新在内存中创建页表目录,从片内存储器里面读取出保存的页表目录,从保存的页表里面读取所有的保存的内存页面到内存中;
⑤把刚刚恢复到内存中的页面复制到原来的位置,恢复CPU寄存器的值,释放掉在保存镜像时分配的页;
⑥向在性能管理模块中注册了的设备发送系统恢复的通知;
⑦重新启动在保存镜像过程中暂停的进程。
本发明与背景技术相比,具有的有益的效果是:
本发明是一种基于硬件镜像的嵌入式操作系统启动优化方法,其主要功能是系统在嵌入式CPU内部的片内存储器容量允许的情况下,相对于外部设备总线上的片外Flash来说,其速度提升显著。
(1)高效性。在嵌入式操作系统关闭时,内核镜像保存在片内存储器中,充分利用了现有嵌入式CPU片内存储器的容量、速度日益强大的特点。
(2)启动时间加快。在嵌入式操作系统启动时,从保存在片内存储器上的内核镜像进行启动,可以显著加速系统引导和重新启动的速度,减少用户等待的时间。
附图说明
附图是本发明过程的示意图。
具体实施方式
下面结合附图对本发明作进一步的说明。
一种嵌入式操作系统硬件镜像启动优化的实现方法,其具体实施方法如下:
1)程序中断状态检测:
①在嵌入式操作系统正常启动之后,在控制台中通过命令行方式改变系统交换状态,进而激活守护进程。
②守护进程首先检查代表进程是否可挂起的变量值,如果值不为0,即表示可以进行后续的工作,接下来判断进程是否在中断中执行,如果不是,开始对系统的保存,如果是在中断中执行,就说明发生了错误,就取消保存的操作。
③建立虚拟终端,用于显示调试信息。
2)镜像的保存:
①检查内核中的进程状态,结束除内核态进程、僵死进程、当前进程之外所有的进程,释放尽可能多的内存空间,以减少内存镜像的大小;若想释放一定的内存空间有两种办法:一种是唤醒页面交换进程,调入更多的内存页面;另外一种方法是从内核中释放物理内存页面,这样就达到了释放尽可能多的内存空间的目的。
②接下来对嵌入式操作系统中的驱动程序进行处理,向在性能管理模块中注册了的设备发送系统挂起的通知。
③嵌入式操作系统把当前CPU寄存器中的所有修改过的数值存入内存。这需要通知编译器插入一个内存屏障,但该内存屏障对硬件无效,编译后的代码会把当前CPU寄存器中的所有修改过的数值存入内存,需要这些数据的时候再重新从内存中读出。
保存当前状态下的CPU的寄存器的值到内存中,用来保存这些值的数据具有打包属性,可将其成员变量紧凑排列。
统计一共有多少个内存页面需要保存,创建两个挂起页面目录:“保存页面目录”和“不保存页面目录”,并把内存页面复制到内存中新的区域。
④锁定除片内存储器外所有使用中的交换设备,把复制好的内存页面写入到片内存储器里面,并把每个交换页的地址保存下来,并将这些页表目录写入到片内存储器。
⑤制作出镜像的头部信息,把镜像头部信息写入到片内存储器里面,并使得所有的交换设备可用。
⑥关机或者重新启动系统。
3)镜像的恢复:
①开机之后,启动引导程序装载嵌入式操作系统内核并解压缩,然后启动内核直到创建初始化进程。初始化进程锁定内核,在加载根文件之前,进行基础的设置,加载一些设备的驱动程序,进行一些必要的条件检测,确定目标交换分区的块大小。
②创建一个虚拟的控制台,用来显示调试信息。
③系统首先查看需要的交换分区的块是否为空,如果不空,从片内存储器上获取第一页,检测片内存储器是否为目标交换分区;再从片内存储器里读取镜像的头部信息,检测镜像的头部信息是否正确,并进行一致性的检测,以确定现在的系统是否是休眠前的系统,然后把保存在镜像头部中的相关信息读取出来;
④接下来通过重新分配“不保存页面目录”,一页一页地获得页面目录(读取页面目录里页面的顺序与保存它时的顺序正好相反)。接下来重新在内存中分配页面目录。最后为了安全起见,内存页面的原地址,也就是要把内存页面恢复到的地址与新分配地址不冲突,如果真的发生了冲突,则重新分配,直到不再冲突为止;而后从页表里面读取所有的保存的内存页面到内存中。
⑤把刚刚恢复到内存中的页面复制到原来的位置,恢复CPU寄存器的值,释放掉在休眠时分配的页,以保证内存完全恢复到休眠前的状态。
⑥向在性能管理模块中注册了的设备发送系统恢复的通知。
⑦重新启动在保存镜像过程中暂停的进程,从而将在2)①保存镜像过程中结束掉的所有进程都恢复至运行状态。

Claims (1)

1.一种嵌入式操作系统硬件镜像启动优化的实现方法,其特征在于:
1)进程中断状态检测:
①通过控制台激活守护进程;
②守护进程检测进程是否处在中断中,如果是的话,就不进行后续的镜像保存操作;
③建立虚拟终端;
2)镜像的保存:
①结束除内核态进程、僵死进程、当前进程之外所有的进程,释放尽可能多的内存空间;
②向在性能管理模块中注册了的设备发送系统挂起的通知;
③把当前CPU寄存器中的所有修改过的数值存入内存,保存当前状态下的CPU的寄存器的值到内存中,统计一共有多少个内存页面需要保存,并把所述内存页面复制到内存中新的区域;
④锁定除片内存储器外所有使用中的交换设备,把复制好的内存页面写入到片内存储器里面,并把每个交换页的地址保存下来,并将这些交换页的页表目录写入到片内存储器的交换分区;
⑤制作出镜像的头部信息,把镜像头部信息写入到片内存储器的交换分区里面,并使得所有的交换设备可用;
⑥关机或者重新启动系统;
3)镜像的恢复:
①开机启动内核,完成进程的初始化和基本的启动过程,并进行条件检测以确定目标交换分区的块大小;
②创建一个虚拟的控制台;
③检测片内存储器是否为目标交换分区,从片内存储器里读取镜像的头部信息,并对镜像头部信息进行一致性的检测;
④重新在内存中创建页表目录,从片内存储器里面读取出保存的页表目录,从保存的页表里面读取所有的保存的内存页面到内存中;
⑤把刚刚恢复到内存中的页面复制到原来的位置,恢复CPU寄存器的值,释放掉在保存镜像时分配的页;
⑥向在性能管理模块中注册了的设备发送系统恢复的通知;
⑦重新启动在保存镜像过程中暂停的进程。
CNB2006100501161A 2006-03-31 2006-03-31 嵌入式操作系统硬件镜像启动优化的实现方法 Expired - Fee Related CN100377085C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100501161A CN100377085C (zh) 2006-03-31 2006-03-31 嵌入式操作系统硬件镜像启动优化的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100501161A CN100377085C (zh) 2006-03-31 2006-03-31 嵌入式操作系统硬件镜像启动优化的实现方法

Publications (2)

Publication Number Publication Date
CN1825283A CN1825283A (zh) 2006-08-30
CN100377085C true CN100377085C (zh) 2008-03-26

Family

ID=36935969

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100501161A Expired - Fee Related CN100377085C (zh) 2006-03-31 2006-03-31 嵌入式操作系统硬件镜像启动优化的实现方法

Country Status (1)

Country Link
CN (1) CN100377085C (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209501B2 (en) * 2009-05-05 2012-06-26 Microsoft Corporation Capturing and loading operating system states
CN101710253B (zh) * 2009-11-25 2012-06-13 安凯(广州)微电子技术有限公司 嵌入式系统的深度休眠方法
CN102207881B (zh) * 2011-07-07 2014-01-22 电子科技大学 一种基于Android的操作系统快速启动方法
KR101813641B1 (ko) * 2011-11-15 2018-01-02 에스프린팅솔루션 주식회사 화상형성장치 및 하이버네이션 기능을 갖는 화상형성장치를 부팅하는 방법
CN103473081B (zh) * 2012-06-08 2016-10-12 腾讯科技(深圳)有限公司 终端进行系统升级后生效的方法及该终端
CN102779072B (zh) * 2012-06-18 2014-06-25 中国科学院上海微系统与信息技术研究所 一种嵌入式系统及其应用进程的休眠与唤醒方法
CN103514065B (zh) * 2012-06-29 2016-08-10 国基电子(上海)有限公司 具自动检测和恢复功能的电子装置及方法
CN102841674B (zh) * 2012-07-25 2015-02-04 中国科学院上海微系统与信息技术研究所 基于新型存储器的嵌入式系统及其进程的休眠与唤醒方法
CN103106110A (zh) * 2012-11-14 2013-05-15 深圳中兴网信科技有限公司 终端和任务执行方法
CN103729211B (zh) * 2013-12-10 2017-08-04 华为技术有限公司 一种操作系统恢复方法、装置及终端设备
US9600369B2 (en) 2013-12-10 2017-03-21 Huawei Technologies Co., Ltd. Operating system recovery method and apparatus, and terminal device
CN104133691B (zh) * 2014-05-05 2016-08-31 腾讯科技(深圳)有限公司 加速启动的方法及装置
CN104133709B (zh) * 2014-08-06 2018-01-30 曙光信息产业(北京)有限公司 嵌入式系统的升级方法和装置
CN105739961B (zh) * 2014-12-12 2020-11-03 南京中兴新软件有限责任公司 一种嵌入式系统的启动方法和装置
CN104461643B (zh) * 2014-12-16 2017-12-19 中科创达软件股份有限公司 电子设备的控制方法、控制装置及电子设备
US10725791B2 (en) * 2017-08-16 2020-07-28 Harman International Industries, Incorporated Operating system boot up optimizations
CN113296932B (zh) * 2020-07-27 2024-02-13 阿里巴巴集团控股有限公司 实现内存换出-换入的系统及方法
CN112131009B (zh) * 2020-09-30 2024-04-02 Oppo广东移动通信有限公司 一种内存调度方法、装置及计算机可读存储介质
CN116048628B (zh) * 2022-07-21 2023-09-29 荣耀终端有限公司 设备启动方法及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001013221A2 (en) * 1999-08-16 2001-02-22 Gamecraft, Inc. Method and apparatus for embedding operating system in rom
CN1517899A (zh) * 2003-01-14 2004-08-04 联想(北京)有限公司 更新嵌入式设备的操作系统的方法
CN1530796A (zh) * 2003-03-12 2004-09-22 联想(北京)有限公司 一种加快操作系统的引导方法
US6807630B2 (en) * 2000-12-15 2004-10-19 International Business Machines Corporation Method for fast reinitialization wherein a saved system image of an operating system is transferred into a primary memory from a secondary memory
WO2005029325A1 (en) * 2003-08-21 2005-03-31 Ti Technologies Limited (A New Zealand Company) Method and apparatus for booting a computer system
US20050240756A1 (en) * 2003-01-12 2005-10-27 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows.

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001013221A2 (en) * 1999-08-16 2001-02-22 Gamecraft, Inc. Method and apparatus for embedding operating system in rom
US6807630B2 (en) * 2000-12-15 2004-10-19 International Business Machines Corporation Method for fast reinitialization wherein a saved system image of an operating system is transferred into a primary memory from a secondary memory
US20050240756A1 (en) * 2003-01-12 2005-10-27 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows.
CN1517899A (zh) * 2003-01-14 2004-08-04 联想(北京)有限公司 更新嵌入式设备的操作系统的方法
CN1530796A (zh) * 2003-03-12 2004-09-22 联想(北京)有限公司 一种加快操作系统的引导方法
WO2005029325A1 (en) * 2003-08-21 2005-03-31 Ti Technologies Limited (A New Zealand Company) Method and apparatus for booting a computer system

Also Published As

Publication number Publication date
CN1825283A (zh) 2006-08-30

Similar Documents

Publication Publication Date Title
CN100377085C (zh) 嵌入式操作系统硬件镜像启动优化的实现方法
CN100383739C (zh) 嵌入式操作系统镜像启动的启动优化方法
US8370835B2 (en) Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
CN100426238C (zh) Vex-虚拟扩展框架
CN102999369B (zh) 虚拟机升级的方法及装置
CN100365576C (zh) 嵌入式操作系统内存镜像启动优化的实现方法
WO2012149844A1 (zh) 一种虚拟机内存快照生成和恢复方法、装置及系统
WO2016165597A1 (zh) 数据存储的处理方法及装置
JPH04263349A (ja) コンピュータにbiosをロードする装置及び方法
EP3698241A1 (en) Using semantic annotations to control compatibility behaviors
CN114222975A (zh) 使用存储器孔径冲刷顺序的数据保存
CN101894028B (zh) Linux内核镜像数据支持多种CPU的实现方法及装置
CN101894039A (zh) 一种嵌入式设备驱动程序辅助生成方法及系统
CN102096597A (zh) 使用管理引擎的虚拟总线设备
WO2013088818A1 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
WO2017045491A1 (zh) 一种对 sqlite3 型嵌入式数据库进行升级的方法及系统
CN115390996B (zh) 虚拟机迁移方法和装置、计算设备和存储介质
WO2015085755A1 (zh) 一种操作系统恢复方法、装置及终端设备
CN104572161A (zh) 一种基于龙芯便携式计算机的uefi固件实现方法
US7200705B2 (en) Method of checkpointing state of virtual memory for process
CN104407890A (zh) 一种从OTG设备启动Android系统的方法
US10642623B1 (en) Preserving firmware settings during firmware updates
CN111258666A (zh) 计算机文件的读取方法、装置、计算机系统及存储介质
US7484083B1 (en) Method, apparatus, and computer-readable medium for utilizing BIOS boot specification compliant devices within an extensible firmware interface environment
CN100465894C (zh) 一种Java Processor启动时类装载方法

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080326

Termination date: 20120331