暑假实习期间实习单位安排了调研四种嵌入式操作系统安全启动分析的任务,本人在操作系统方面完全是个小白,所以也着实花了一些功夫。今天将我学习到的知识整理一下,如果有不对的地方请大家指正。
目前市场上比较流行的嵌入式操作系统有Unix、Linux、QNX、VxWorks、ecos和Windows CE&NT等几种,我选了Unix、Linux、QNX和VxWorks作为研究对象,原因嘛当然还是觉得这几种应用范围比较广。
Unix系统:首先是历史悠久的Unix系统,它在江湖上的地位可谓是举足轻重,后来的Linux、Solaris、BSD等等都是起源于它。它是强大的多用户、多任务操作系统,支持多种处理器架构。特点可以概括为以下几点:多任务,多用户啊,并行处理能力,设备无关性,丰富的工具与shell编程,安全可靠以及开放性和可移植性。应用领域呢主要是银行、金融等大型平台。它的启动过程如下图所示:
具体过程就是加电和系统自检后,把主引导程序(MBR)装入内存并把控制权交给主引导程序。在主引导程序的控制下再装入unix的引导程序(引导块),并把控制权交给该引导块。由于该引导块是属于操作系统的,它知道继续引导应该做什么,于是在其控制下系统继续引导,再把核心装入内存后,系统开始进一步的初始化过程。该启动过程首先初始化系统内部的数据结构,然后创建系统的0#进程、设置运行环境,至此,系统的内核启动完成,但是还不能做太多的工作。为此,系统继续初始化,创建1#进程,然后在1#进程的控制下做进一步的初始化工作,直到启动完毕。根据系统配置或所安装软件的不同,在系统启动的过程中,可能要创建或启动很多其他进程。系统启动完毕后,在终端上出现了登录界面,此时用户即可登录。
Linux系统:它是一套免费使用和*传播的类Unix系统。特点有:一切都是文件,每个软件都有特定的用途(某本书上看到的,不知道算不算),完全免费,完全兼容POSIX1.0标准,多用户、多任务,良好的界面,支持多种平台。它的应用领域主要有手机、平板电脑、智能家电、航空系统和银行系统等。下图是Linux系统安全启动过程的分析,整个启动过程的安全总体来说应该分为两个主要阶段硬件平台的引导阶段和操作系统的启动阶段。硬件平台的引导包括从平台加电、运行、到将控制权交给之前,这期间主要是保证硬件环境的可信。操作系统的启动阶段是指从主引导区调入操作系统装载程序一直到操作系统内核运行完毕,并运行进程之前。该阶段主要保证系统的启动过程和操作系统内核的可信。
详细的引导过程见下图:
VxWorks系统:它是美国风河公司开发的典型的嵌入式实时操作系统。它的特点是主机和目标机的开发形式,微内核,高可靠性和高实时性,可裁剪,多任务(具有256个优先级),多处理器支持,优先抢占和轮转调度,遵循POSIX.1标准。由于它的高可靠性和高实时性,主要应用于航空航天、国防、通信等领域。不过也由于其价格比较昂贵,限制了其更广泛的使用。它的启动过程如下图所示,分为三步:
(1)数据段和代码段的装入。系统加电后执行引导代码,首先把引导代码的代码段和数据段从ROM或Flash里装入RAM中。
(2)VxWorks映像的装入。引导代码执行后,把VxWorks映像装入到RAM中,然后跳转到VxWorks映像装入点。
( 3 )系统初始化。执行静态链接在 VxWorks 映像里的系统初始化代码,最终完成系统初始化操作根据第二步的不同,又分为三种方式,分别是可加载型VxWorks映像启动,基于ROM型的和基于ROM驻留型的。
最后,对这四种操作系统做一个对比,如下图所示,如有不对的地方欢迎指出。喜欢的话就关注一下吧