@wenshizhang
2017-04-13T12:54:08.000000Z
字数 1903
阅读 440
论文
周报
开题分析
随着互联网时代的到来,搭载智能操作系统的无人机、车载电脑、家庭智能设备等嵌入式终端成为了互联网关键入口和创新平台,目前,全球嵌入式终端市场正在以爆炸性的态势增长,嵌入式终端被应用到工业、医疗、交通、军事等各个领域。为了满足用户的需求,嵌入式设备功能越来越强大,同时启动时间越来越长,严重影响了用户的体验。
根据国际电气和电子工程师协会(IEEE)的定义,嵌入式系统是“控制、监视或者辅助装置,机器和设备运行的装置”。目前国内一个普遍被认同的定义是:以应用为中心,计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用操作系统。因此需要在启动速度、实时性、系统尺寸、电源管理等方面进行优化。近年来,Linux凭借其开源和稳定等优良特性广泛应用与嵌入式系统上。但是,作为原本为PC机设计的操作系统,设计者并没有考虑嵌入式应用对启动时间的要求,导致了其典型的启动时间都在几十秒或者以上,这对于用户来说是不能容忍的。因此加快启动速度已经成为嵌入式待解决的关键问题之一。
RTLinux是由美国新墨西哥州的fsmlabs(finite state machine labs, 有限状态机实验室)公司开发的、利用linux开发的面向实时和嵌入式应用的操作系统。RTLinux是Linux在实时性方面的扩展,采用已获得专利的双核技术:一个微型的RTLinux内核把原始的Linux内核作为它在空闲时的一个线程来运行。遵循传统的Linux启动流程,并没有做太大的优化。
QNX是加拿大Blackberry (黑莓)公司开发的一个分布式、嵌入式实时操作系统。目前QNX系统已普遍应用于车载终端。QNX启动过程是:打开设备电源,自动穷加载器(Boot Loader)为加载操作系统和软件做准备,加载器加载(OS kernel),kernel执行完后启动必要的驱动程序和服务,启动第一个应用程序,应用程序显示界面。为了更好的用户体验,生产商提出开机自动续播技术,在启动后自动续播关机前的播放源。这需要在启动第一个应用程序之后,启动额外的服务判断播放源。因此启动速度是十分不尽人意的。
基于Linux嵌入式系统传统的启动流程是:
BIOS->Bootloader->kernel->service and application
BIOS控制权交给bootloader,bootloader负责载入内核和rootfs的镜像,解压(如果压缩的情况下)镜像,控制权交给kernel,kernel执行结束,启动上层的应用和服务。嵌入式的kernel是裁剪过的、小巧的kernel。整个启动过程中,最耗时间的是上层的应用和服务。
目前,对加快嵌入式Linux启动速度的研究主要有以下三个方面:
安卓采用这种方式优化自身启动,这个过程简单描述就是在关机之前把内存、寄存器和设备状态全部记录在镜像中,保存在外存上。下次开机的时候bootloader检查如果镜像存在,直接载入镜像恢复系统。这种优化方式十分有效,但是也存在以下问题:
1.外存读写比起计算速度慢了很多,如果镜像比较大的话,启动时间反而变长了。
2.suspend to disk是在关机之前需要执行的,读写外存速度很慢,延长了关机时间
3.如果在镜像没有完整存储在外存之前关机了,会导致恢复失败
1.基于镜像的启动优化
2.镜像存储的优化
2.守护进程同步系统状态