嵌入式操作系统_第1页
嵌入式操作系统_第2页
嵌入式操作系统_第3页
嵌入式操作系统_第4页
嵌入式操作系统_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式操作系统

陈天洲、陈文智

实时性简介

对于什么是实前系盛POSIX1003.b作了

,这样的定义:指系统能够在限定的响应时

间内提供所需水平的服务

;实时系统根据其对于实时性要求的不同,

-可以分为软实时和硬实时两种类型

・一个计算机系统为了提供对于实时性的支

持,它的操作系统必须对于CPU和其他资源

进行有效的调度和管理,即实时调度

实时调度分类

各种实时操作系统的实时调度算法从调度策略上

可以分为如下三种类别:基于优先级的调度算法

.(Priority-drivenscheduling-PD)、基于CPU使用

二比例的共享式的调度算法(Share-driven

scheduling-SD)>以及基于时间的进程调度算法

"(Time-drivenscheduling-TD)

•从调度方式上来讲可以分为:可抢占、不可抢占;

从时间片来分:固定时间片、可变时间片

实时性改造

对操作系统实时性的扩展可以从两方面进

:行:向外扩展和向上扩展

:向外扩展是从范围上扩展,让实时系统支

,持的范围更广,支持的设备更多

:向上扩展是扩充操作系统内核,从功能上

扩充系统的实时处理

Linux的实时性

一般的通用linux已经具备一定的实时性一

但无法满足硬实时的要求

1-运行于linux内核空间的进程(核心态)不能被

;抢先

--在linux中,中断有时候会出于保护临界区操作

的目的而被屏蔽

-通用linux的时间滴答长度为10ms(硬件时钟频

率100HZ),但是这对于时间精度要求很高

(微秒级)的实时进程来说是不够的

嵌入式Linux的实时性改造

:可以引入一个双内核结构

r对Linux内核代码作一些修改Linux本身的任务以

,及Linux内核本身作为一个优先级最低的任务,而

?实时任务作为优先级最高的任务以Linux的内核模

^(LoadableKernelModule,LKM)的形式存在的

•资源核方法:这种方法是为解决传统实时操作系

统中固定优先级抢占式调度策略的局限性而产生

Linux2.6内核实时性分析

2.6中内核自身是可抢占的,它允许自身在执

行任务时被打断

2.6版本的Linux内核使用了由IngoMolnar

开发的新的调度器算法,称为0(1)算法

RTLinux硬实时操作系统简介

IRTLinux是一硬实时操作系统

实现了一个微内核的小的实时操作系统,而将普

通Linux系统作为一个该操作系统中的一个低优先

二级的任务来运行

普通Linux系统中的任务可以通过FIFO和实时任务

进行通信

•通过软件来模拟硬件的中断控制器

•RT-Linux通过将系统的实时时钟设置为单次触发

状态,可以提供十几个微秒级的调度粒度

RTLiiwx内核结构

启动优化基本技术

一、固化各种不可扩展硬件的设置,尽量标准化

可扩展设备的接口,节约设备检测时间。

二、LazyLoading,也即不加载当前非必需的模

,块,这些模块可以在启动后待机时间内加载,或

二者在具体用到之后再加载,把启动时间打散,从

-而缩短对用户来说至关重要的反应时间

(RespondingTime)。

•三、任务并行化,很多系统在启动任务时,是顺

序执行,按部就班。为了减少启动时间,我们可

以考虑任务的并行化,以减少启动时间的消耗。

嵌入式Linux启动过程分析

在内核运行之前需要系统引导程序(Bootloader)完

成加载内核和一些辅助性的工作,然后跳转到内

核代码的起始地址并执行。

整个armlinux内核的启动可分为三个阶段:第一

阶段主要是进行cpu和体系结构的检查、cpu本身

的初始化以及页表的建立等;第二阶段主要是对

系统中的一些基础设施进行初始化;最后则是更

高层次的初始化

嵌入式Linux的启动优化

;系统任务裁减

:-裁减不适合本系统的部分任务

:系统任务并行

[-明确任务依赖关系

-—任务并行启动(make-j工具的使用)

电源管理综述

f现在Linux中,最主要的电源管理方案主要

I有三种:APM、ACPI、DPM

■传统的APM(AdvancedPowerManagement)

♦是一种基于bios的电源管理标准

ACPI(AdvancedConfigurationandPower

Interface),它主要是将电源管理的主要执

行者由bios转换成为操作系统,这样可以提

供更大的灵活性以及可扩展性

DPM简介

DPM—DynamicPowerManagement

在面向Linux的DPM架构中,内核中的DPM

子系统负责维持整个系统的电源状态

并把DPM系统的不同电源管理模块联系在

一起。.

•可以把DPM看成是为驱动程序、中间件和

应用程序提供服务的元素

DPM框架

存储管理

多程序模型

-这是没有硬件地址转换的内存管理模型。即使

没有硬件地址转换功能支持,多个程序也可以

共享相同的物理地址

具有地址转换硬件的内存管理模型

-应用程序使用的是虚拟地址,CPU实际执行程

序所示用的是物理地址,从虚拟地址到物理地

址的转换需要操作系统和MMU硬件的参与

高速缓冲(Cache)简介

BufferCache

PageCache

擘SwapCache

HardwareCache

虚拟存储功能

7巨大的寻址空间一

内存映射

公平的物理内存分配

富P共享虚拟内存

主存与辅存层次信息传送

页式虚拟存储器

段式虚拟存储器

段页式虚拟存储器

Linux存储管理

Linux使用了上述第二种存储管理模型。

应用程序在标准Linux中的加载使用了“按

需”分页的策略

Linux的内存管理采取的是分页机制

Linux虚拟内存的实现,需要几种不同的机

制实现:地址映射机制、内存的分配与

机、请求页机制、交换机制、内存共享

O

地址映射机制

地址映射机制,主要完成主存、辅存和虚存

之间的关联

Linux采用一系列的数据结构和一个硬件缓

寸存(TLB)来实现地址映射机制

尊Linux内核的映射机制被设计成三层,在页

面目录和页表之间增设了一层“中间目录”

内存的分配与回收

最近被执行过的地址转换结果会被保留在

MMU的转换后备缓存(TLB)中

页分配使用2的幕数大小的块

Linux使用Buddy算法有效地分配和回收页

Buddy算法

这个算法首先找它请求大小的内存页块,它跟踪

free_area数据结构中的list单元队列中的空闲页的

链表

如果找到的页块大于请求的页块,则该块将被分

开成为合适大小的块

•因为所有的块都是2的幕次的页数组成,所以这个

分割的过程比较简单,你只需要将它平分就可以

了。空闲的块则放到适当的队列,而分配的页块

则返回给调用者。

pCLinux存储管理

其设计针对没有MMU的处理器,不能使用处理器

的虚拟内存管理技术

KLinux仍采用存储器的分页管理,系统在启动时

把实际存储器进行分页

没有MMU管理,所以实际上pCLinux采用实存储

罂管理策略(realmemeorymanagement)

•IJCLinux系统对于内存的访问是直接

二个进程在执行前,系统必须为进程分配足够的

连续地址空间,然后全部载入主存储器的连续空

间中

嵌入式系统的文件系统管理

:嵌入式系统的物理存储

|-Flash存储器由于其安全性高,存储密度大,体

S积小,价格相对便宜,是嵌入式领域中最受欢

r迎的一类存储器

三嵌入式系统中使用Rash存储器,通常有两

一种使用方式

一只进行只读访问

-在系统运行的时候既需要进行读操作,也需要

进行写操作。

存储设备的管理方式

直接访问Rash

一自己编写F2sh的驱动程序(即基本操作函数)

IFlashDisk

三-有些Flash存储设备上附带了控制电路,并且提

二供了IDE的接口。这些设备通常都是模拟了PC

中的IDE之类设备的接口

•专用于Flash的文件系统

-JFFS等文件系统,目前已经非常成熟,并有了

成功的应用

嵌入式文件系统的类型

RAMDISK

-在RAMDISK文件系统中,当系统启动的时候,会把外存中的映像

£文件加压缩到内存中,形成RAMDISK环境,便可以开始运行程序

ETo这种文件系统最大的问题就是,运行的程序的代码在内存和

|外存都占据了空间

cramfs

-cramfs也是一种压缩式的文件系统。但是它不是一次性地把所有

,内容都解压缩到内存中,而所需数据的位置,计算数据在cramfs

一的位置,然后把所需的部分解压缩到内存中,再通过访问内存来

得到所需的数据。由于这个整个过程,包括内存中数据的位置都

是由cramfs文件系统自己来维护。所以对开发人员是透明的,也

节省了空间。

•romfs

-romfs是一种只读文件系统,占用的系统资源也比较小。在romfs

中,文件系统的管理代码占用的空间也比较小,但是romfs的文件

访问权限和属主这些信息尚没有完全实现。此外,由于romfs文件

系统是只读的,所以可以做得很小。

日志文件系统

在嵌入式设备断电可能性比一般的计算机

的可能性要大

日志文件系统相对于普通文件系统,主要

的变化就是增加了日志记录

JFFS与JFFS2文件系统

2000年Axis公司发布了他们开发的日志式

Flash文件系统

JFFS文件系统是开放源代码的文件系统,

可以说是专门用于嵌入式Linux等系统的

JFFS是直接在Flash设备上实现的文件系统

•JFFS2没有为Rash设备专门设计一个转换层

来模拟普通的文件系统,而是直接对日ash

进行操作

输入输出与设备管理概述

1/0设备抽象

I/O调度

缓冲技术

高速缓存

・错误处理

•性能与优化

■/0设备抽象

不同的I/O设备,它们的读写方式不尽相同

对于应用程序来说最好是所有的设备都可

以通过一个相同的界面来进行读写操作

需要通过一套机制对某一类相似的I/。设备

一的具体操作细节进行封装

・在操作系统中是通过设备驱动来实现的

I/O设备抽象层次结构

操作系统内核

r一

操作系统内核I/O子系统

-E软

■LCD马区动触摸屏驱..PCIbus驱

动动

LCD控制触摸屏控PCIbus控

器制器制器

LCD触摸屏PCIbus

1/0调度

i/o调度指的是对一组i/o请求进行安排,决

定它们的执行顺序

操作系统一般会把对某个设备的I/O请求放

,入那个设备的请求队列中去

彳「然后由I/O调度器对这些请求进行重新安排

以改进系统的整体性能

缓冲技术

引入缓冲技术,主要有以下三个原因:

-一、是协调数据产生设备(producer)和数据接收设备

|(consumer)的速度

:-二、是协调数据产生设备和数据接收设备的数据大小

:-三、是因为为了保证写入外设的数据的一致性,要先

把数据转移到内核空间

•在缓冲技术(Bu仟ering)中,两个设备之间或者

二个设备与一个应用程序之间需要传输数据时,

这些数据会先保存在内存中,这个内存区域称为

缓冲区

局速缓存

高速缓存(Caching)是指把低速存储器的

部分数据保存在高速存储器中以提高系统

性能的技术

缓冲技术跟缓存技术的区别:缓冲块中的

数据是独一无二仅此一份的,而缓存中的

数据是低速存储器中的数据的拷贝。

错误处理

使用保护内存

;I/O设备和传输操作在很多情况下都会发生

•错误,有的是暂时性的,有的是永久性的

「操作系统的错误提示能力相对硬件设备来

说一般都比较低

・一个硬件设备可以提供非常丰富和详细的

出错信息,但是操作系统往往会忽略其中

的很多信息

/0性能对系统性能的影响

首先它需要CPU执行设备驱动程序,并对I/O请求

进行调度

,其次,I/O操作造成的程序执行上下文切换

’(contextswitch)也加重了CPU和缓存的负担

;并且I/O是中断操作的主要组成部分,内核的中断

处理性能稍有不足就会在I/O操作中暴露无遗

•最后,I/O操作需要频繁的在设备控制器与内存、

内存中用户空间与内核空间缓冲区之间拷贝数据

性能与优化

减少上下文切换次数。

减少数据在内存与设备之间复制的次数。

通过使用更大的数据传输单元、智能化的设备控

制器和轮循(如果空等可以有效减少)等手段来

减少中断次数。

把一部分I/O处理工作转移到硬件设备中去,使得

外设能够跟CPU形成一定的并行处理,分担CPU的

任务。

•在CPU、存储器、总线和I/O之间平衡工作量。因

为任何一部分的过载都会导致其余部分的等待,

从而造成整体性能下降。

构件化操作系统

传统操作系统及视窗操作系统

I因特网时代应用模型的演变

硬件设备即插即用

,体系结构由固定变为灵活

r声,浏览器成为统一的用户界面

-行.操作系统对XML的支持

一•服务器■中间件■用户”编程模型

•操作系统与虚拟机

•基于中间件技术的嵌入式操作系统

•基于中间件技术的操作系统的技术优势

传统操作系统及视窗操作系统

:因特网时代以前的传统应用软件,大多是

I静态链接而成

I由某一家公司提供,所有功能都集成在同

-一个软件中,一旦链接之后就不可能替换

.其中的软件模块

•那时的操作系统有两大功能:首先它向用

户提供一个分时系统;其次是向用户提供

一组函数库

因特网时代应用模型的演变

程序作为动态构件自动加载运行,而不需

要由用户去逐个启动。

构件支持脚本语言控制,多个构件可以相

互操作,交换信息。

■以浏览器为交互式操作界面,既便于有户

掌握,又为程序开发提供了统一标准。

・网络化资源管理,程序自动下载运行,不

需要用户介入。

因特网时代应用模型的演变

•OMF

图表连续图像解压)音频

来自不同软件开发商的软件模块动态组织起来运行

硬件设备即插即用

因特网时代要求硬件设备能即插即用

解决方案只能是在驱动程序对象中加入非执行的描述信息,

这种描述信息就是通常所说的元数据(metadata),它可

以“告诉”访问者它有哪些特性和功能。

:元数据可以是XML形式、二进制或两者兼有。我们知道对

象加上元数据就是构件。

•操作系统可以根据构件中的元数据生成中间件。这种在内

核里动态生成的中间件是连接驱动构件与用户程序的“桥

梁”,

•而这“桥梁”是内核根据硬件设备的元数据动态生成的,此

时的新型操作系统仍然是“以不变应万变”

体系结构由固定变为灵活

操作系统体系结构大致分为两种:大内核

*(MonolithicKernel)和微内核(MicroKernel)

I大内核操作系统将图形、设备驱动、文件系统等

£全部功能在操作系统内核中实现,运行在内核状

E态、同一地址空间。优点是减少进程间通信和状

p态切换的系统开销,获得较好的运行效率。缺点

二是内核庞大,占用资源多,剪裁不易,并且一旦

一个别驱动程序运行出错,就会导致整个系统崩溃,

稳定性、安全性不好。

•微内核在内核中只实现那些必须由内核实现的基

本功能,而将图形、文件系统、设备驱动、通讯

等功能放在内核之外,作为系统服务来提供相应

的功能,这些程序在用户状态下运行。这样做的

优点是有一个精炼的内核,便于剪裁、移植。

灵活内核技术

应用软件应用软件用户状态

_____.、

e用户状态

具旭II,;三宴

,U1J

内根状态

.ezOOM物件支情》m£S!I

内存管理一j心.苏方核优态

硬丽由索层

硬件

浏览器成为统一的用户界面

£

HTML

网页可足置幻

(1

0@

S

«幺

基于

SKIN脚本语

技术的言控制

画面

操作系统对XML的支持

XML文本描述语言的广泛使用将是因特网时

代操作系统的另一明显标志

:XML的每个标签(tag)都可以由用户定义

XML兼顾了对于人的可读性和计算机的处理

效率

・XML已经成了因特网信息交换的标准,未来

的操作系统内核会对XML进行最有效的支持

因特网时代操作系统技术的发展

因特网时代摒作系统发展的技术背景

口网络时代应用

重点的转移:基于桌面应用基于网络应用

□用户界面:图形窗口浏览基

□应用程序:I用尸安装俎件、自动飕

口操作系统的面向桌面系统面向网络系统

发展趋势:定型,固定应EE

(MSWindows)(MicrosoftNet)

□面向网络的关穰技术:萦件的组件技术(OOM)

服务器■中间件■用户”编程模型

操作系统与虚拟机

操作系统可以作为虚拟机,直接提供中间

件的运行环境

操作系统可以对应用程序构件进行各种各

样的控制,使得封装好的构件能够适应不

一同的运行环境和用户要求

二•操作系统利用中间件技术支持和控制应用

程序的运行环境,就形成了因特网时代操

作系统的关键技术

基于中间件技术的嵌入式操作系统

,■鹤翻翻*件技术’提供构件运行的虚拟机环

构件的互操作性定义了编程语言无关、可扩展、跨平台的

二萧二进漱制标薪准a。nr相互作用通过一组称作接口

等提供接口描述语言CDL,为服务器中新功能的实现提供了

•_方便,如脚本语言调用构件对象函数等

运行环境(虚拟机)可以在操作系统上自动生成中间件

(代理杓件),提供构件定位、调管理、中间件自动

生成、构柞通信(进程内、跨进程、网络等不同运行环

境)等机制

•件技术保证了软件互操作性、版本升级独立性和运行环境

透心明工,吐,提供了提高系统安全、软件协同开发、软件容错、

可靠性、软柞复用、软件升级的有效手段

基于中间件技术的操作系统的技术

优势

提供系统的安全保护机制

硬件设备的即插即用

稳定、健壮的系统特性

灵活内核操作系统体系结构

嵌入式Linux的特点

专用嵌入式实时操作系统嵌入式Linux操作系统

版权费每生产一件产品需交纳一份免费

版权费

购买费用数十万元(RMB)免费

技术支持由开发商独家提供有限的技全世界的自由软件开发者提供支

术支持持

网络特性_另加数十万元(RMB)购买免费且性能优异

软件移值难(因为是封闭系统)易,代码开放(有许多应用软件支

持)

应用产品开发周期长,因为可参考的代码有限短,新产品上市迅速,因为有许多I

公开的代码可以参考和移植

实时性能好须改进,可用PT_Linux等模块弥

稳定性_______________W___________较好,但在高性能系统中须改进

主流嵌入式Linux系统

fpCIinux

BEmbedix

.RTLinux

tRTAI

•MontaVistaLinux

•、嵌入式Linux的定义

嵌入式Linux(EmbededLinux)是指对Linux

经过小型化裁剪后,能够固化在容量只有

几十万字节或几十亿字节的存储器芯片或

单片机中,应用于特定嵌入式场合的专用

Linux操作系统

嵌入式Linux的优势

Linux系统是层次结构且内核完全开放

:强大的网络支持功能

Linux具备一整套工具链,容易自行建立嵌

入式系统的开发环境和交叉运行环境,并

一且可以跨越嵌入式系统开发中仿真工具的

障碍

•Linux具有广泛的硬件支持特性

嵌入式Linux面临的挑战

-内核不支持事件优先级和抢占实时特性

-对Linux实时性的扩展可以从两方面进行:

‘一•向外扩展(让实时系统支持的范围更广,支持的设

备更多)

•向上扩展(扩充Linux内核,从功能上扩充Linux的

实时处理和控制系统)

RT-Linux的做法

-Linux本身的任务以及Linux内核本身作为一个

优先级最低的任务

-实时任务作为优先级最高的任务

—实时任务以Linux的内核模块(LoadableKernel

Module,LKM)的形式存在

2、改变Linux内核的体系结构

Monolithic内核体系

MicroKernel体系

量执行效率

°内核的体积

•升级、维护和移植

微内核技术

缺点:操作系统的服务模块在独立的地址

空间运行,使得进程间通信和上下文切换

的系统开销大大增加,降低了系统效率。

3、完善Linux的集成开发环境

Linux在基于图形界面的特定系统定制平台

的研究上,与Windows操作系统相比还存

在差距

POSIX实时扩展

POSIX(PortableOperatingSystem

Interface)是为标准化类UNIX操作系统所

必须具有的特征和接口而制定,其思想就

是为了增强为类UNIX操作系统编写的软件

的可移植性

■嵌入式linux开发

最小的嵌入式Linux系统仅需要三个基本元素:

-引导实用程序

-Linux微内核,由内存管理、进程管理和定时服务构成

-初始化过程

-硬件驱动程序

-一个或多个应用进程,以提供所需功能

面向嵌入式Linux系统的图形用

户界面

MicoroWindows/NanoX

-开放源码

一无任何硬件加速能力

,-图形引擎中存在许多低效算法

-代码质量较差

•OpenGUI

-可移植性稍差

•Qt/Embedded

-低的程序效率、大的资源消耗

•MiniGUI

嵌入式Linux开发

;了解硬件

f针对所用CPU的编译器/汇编器/连接器,相应的库

F工具,目标文件分析/管理工具,符号查看器

■编程器,下载工具和查错器

j安排内存地址

•编写启动代码和机器相关代码:硬件初始化,装

载内核及安装根文件系统以及开始内核执行

•驱动程序

嵌入式Linux的一般开发步骤:

•精简内核

・系统启动7

•驱动程序开发

•界面开发:将X-Window换成MicroWindows

精简内核

F构造内核的常用命令包括:makeconfig>

dep>clean>mrproper>zlmage>bzlmage>

Imodules>modulesinstallo

精简内核的实例

■使用makeconfig去掉多余功能。

./Makefile

./arch/i386/kemel/

Makefile

系统启动

系统启动的相关文件如下:

./arch/$ARCH/boot/

:bootsect.s

./arch/$ARCH/boot/setup.s

./init/main.c

bootsect.S及setup.S

IBM系列PC的启动

•IBM系列PC在电源打开后,由内存中地址FFFF:OOOO开始执

行(这个地址一定在ROMBIOS中,ROMBIOS一般是在

FEOOOh到FFFFFh中),而此处的内容则是一个jump指令,

.jump到另一个位于ROMBIOS中的位置,开始执行一系列的

紧接着系统测试码之后,控制权会转移给ROM中的启动

程序(ROMbootstraproutine)这个程序会将磁盘上的第零轨

第零扇区读入内存物理地址0o70):0000(即07C00h处。而位于

Linux并机磁盘的bootsectorJb的是Linux的bootsect程序。

Linux的启动

Linux是由位于bootsector的bootsect程序负责

把setup及Linux的kernel载入内存中,再将控

制权交给setup。

驱动程序

,在Linux系统里,设备驱动程序提供一组入口

,点,它们由一个结构在设备驱动程序初始化

'的时候向系统进行登记,以便系统在适当的

•时候调用。Linux系统里,通过调用

registerchrdev向系统注册字符型设备驱动程

序。

添加驱动程序

1.直接修改系统核心的源代码,把设备驱动

程序加进核心里J

2.把设备驱动程序作为可加载的模块,由系

统管理员动态地加载它,使之成为核心的一

部分。

驱动程序模块

Linux中,模块可以用C语言编写,用gcc编译

成目标文件(不进行链接,作为*.。文件存

在)。为此需要在gcc命令行里加上-c的参数。

在成功地向系统注册[、设备驱动程序后(调

用registerchrdev),就可以用mknod命令来

把设备映射为一个特别文件。其它程序需要

使用这个设备的时候,对此特别文件进行操

作。

,linux启动流程

:初始化流程

1加电或复位

'2BIOS的启动

3BootLoader

•4操作系统初始化

1加电或复位

冷启动过程开始,中央处理器进入复位状

态,将内存中的所有数据清零,对内存进

行校验,如果没错,CS寄存器将置入

FFFFJP寄存器置入0000,这个CS:IP组合指

向的是BIOS的入口。系统就是这样进入

BIOS启动过程的。

2BIOS启动

上电自检POST(PowerOnSelfTest)

对系统内的硬件设备进行监测和连接

最后,BIOS将从软盘或硬盘上读入Boot

Loader■如果从硬盘启动,BIOS将读入该盘

的零柱面零磁道1扇区(MBR),这个扇区上

就放着BootLoader.

2BIOS启动

:除了启动程序,BIOS还提供了一组中断以

I便于对硬件设备的访问。我们知道,当键

f盘上的某一键被按下,CPU就会产生一个中

■断并把这个键的信息读入。

言在操作系统没有被装入以前(Bootsect.S还

没有被读入),中断的响应程序由BIOS提

供。

3BootLoader

BootLoader是一段汇编代码,存放在MBR

中,它的主要作用就是将系统启动代码读

入内存。

3BootLoader

因为在启动过程中,BIOS会把BootLoader

读入内存,并把控制权交给它。MBR(硬

盘启动)内的代码就是BootLoade「或者它

的一部分,为了说明Bootloader的实现,

先解释磁盘结构。

3BootLoader

一个硬盘在DOS文件系统下可被分为四个基本分区,可以

把一个基本分区定义为一个扩展分区,然后再把这个基本

分区分为一个或多个逻辑分区。

「整个硬盘的分区表存放在硬盘的第一个扇区(MBR),每

个扩展分区也对应一个分区表,它存放在该扩展分区对应

_的第一个扇区里。

•除主引导扇区外,每个基本分区和扩展分区也有自己的引

导扇区,结构与MBR相同,但逻辑分区的引导扇区不能用

于启动。

3BootLoader

如果是硬盘启动,BootLoader将查找主分

区表中标记为活动分区的表项,把该表项

对应的分区的引导扇区读入,然后将控制

权交给该扇区内的引导程序。

3BootLoader

如果计算机上装有不只一个操作系统,仅

仅MS・DOS的BootLoader无法完成这种工

作,需要一个可以多重起动的工具,下面

介绍Linux下最常用的LILO.

3BootLoader

LILO实际上是一个在Linux环境下编写的BootLoader程序,

主要功能是引导Linux操作系统的启动。

LILO的功能实际上是有几个程序共同实现的,它们是:

(1)MapInstaller这是LILO用于管理启动文件的程序。

它将bootloader写入引导分区,创建纪录文件以映射内核

的启动。

(2)Thebootloader它负责把Linux内核或其他操作系统

的引导分区读入内存。还提供命令行接口,让用户选择从

哪个操作系统启动和加入启动参数。

(3)其他文件:主要包括用于存放M叩Installer记录的

map文件和存放LILO配置信息的配置文件。

3BootLoader

从代码分析层次认识LILO运行过程。

4进入操作系统

BootLoader做了这么多工作,一言以蔽之,

只是把操作系统的代码调入内存,所以当

它执行完后,自然该把控制权交给操作系

统,由操作系统的启动程序来完成剩下的

工作。

4进入操作系统

把控制权交给Setups这段程序

进入保护模式,同时把控制权交给Head5

Heads调用/init/mainC中的start_kernel函

数,启动程庠从start_kernel()函数垂续执行

4进入操作系统

(1)Setup.S

首先,Setup.S对已经调入内磊麻作系统代码进行检查,如果没错,

它会通过BIOS中断获取内存容量,硬盘等信息(实模式)

准备让CUP进入保护模式

a,先屏蔽中断信号

b.调用指令lidt和Igdt

c.对8259中断控制器进行编程3

协处理器重新定位

完成这几件事后,Setup.S设置保护模式的标志,重取指令,再用一

条跳转指令jmpi0xl00000zKERNEL_CSo进入保护模式下的启动阶段,

控制权交给Heads

4进入操作系统

(2)Head.S

也要先做屏蔽中断一类的工作

然后对中断向量表做一定的处理

BootLoader读入内存的启动参数和命令行参数,Head.S

■把它们保存在empty_zero_page页中

■检查CUP类型

;对协处理器进行检查

•页初始化,调用setup_paging这个子函数

•因为已进入保护模式,段机制的多任务属性体现

4进入操作系统

(3)main.c中的初始化

■Head.S调用/init/main.c中的start_kernel函

数,把控制权交给它,这个函数是整个操

作系统初始化的最重要的函数,一旦它执

J行完,整个操作系统的初始化也就完成了。

4进入操作系统

(3)main.c中的初始化

计算机在执行start_kernel前以进入了保护

模式,使处理器完全进入了全面执行操作

系统代码的状态。

■,但直到目前为止,这都是针对处理器的。

「而一旦start_kernel开始执行,Linux内核就

一步步展现。

•Start_kernel执行后,就可以以一个用户的

身份登陆和使用Linux了

4进入操作系统一

(3)main.c中的初始化

,较为重要的函数女

:Setup_arch()最基本硬件的初始化

tPaging_init()线性地址空间映射

Trap_init()中断向量表初始化

•Int」RQ与中断有关的初始化

•Sched_init()进程调度初始化

•Console_init()对中断的初始化

4进入操作系统

(3)main.c中的初始化

对文件系统的初始化

inode_initl()i节点管理机制初始化

Name_cache_init()目录缓存机制初始化

Buffer_init()块缓存机制初始化

4进入操作系统

(3)main.c中的初始化

启动到了目前这种状态,只剩下运行/etc下

的启动配置文件。

这时初始化程序并没有完成操作系统各个

部分的初始化,更关键的文件系统的安装

还没有涉及,这是在init进程建立后完成的。

就是start_kernel()最后部分内容。

4进入操作系统

(4)建立init进程

Linux要建立的第一个进程是init进程

:启动所需的Shell脚本文件

a.Linux系统启动所必须的

b.用户登陆后自己设定的

系统启动所必须的脚本存放在系统默认的配

置文件目录/etc下。首先调用的是

/etc/inittab.

四、Linux系统移植的两大部分

内核部分和系统部分

(1)内核部分初始化和控制所有硬件设备

(严格说不是所有,而是绝大部分),为

内存管理、进程管理、设备读写等工作做

好一切准备。

(2)系统部分加载必需的设备,配置各种环

境以便用户可以使用整个系统。

Linux内核可以视为由五个功能部分组成:

进程管理(包括调度和通信)、内存管理、

设备管理、虚拟文件系统、网络

需要改动的就是进程管理、内存管理和设

备管理中被独立出来的那部分即硬件相关

部分的代码

修改的代码

(2)系统移植

一个最小系统的重建过程

类似Linux系统应急盘DiskOnChip

包括:init、libc库、驱动模块、必需的应用

程序和系统配置脚本。

一些Real-TimeLinux简介

工、NMTRT-Linux

KNMT是新墨西哥科技大学(NewMexico

Technology)的缩写

■二Real-timeLinux的鼻祖

一个实时内核负责处理硬件消息,接管中

断,实时任务可在该内核上直接运行

可载入式核心模组(loadablekernelmodule)o

NRTLinuxNRTLinuxNRTLinux

TaskTaskTask

-・.User

syscal1RTFIFO

Kernel

LinuxKerneltask

hardware

Real-TimeApplicationInterface

LKM

在Linux上定义了一组RTHAL(Real-Time

HardwareAbstractionLayer)

•RTAI只使用RTHAL和Linux沟通

RTAI无法直接使用Linux的系统调用

解决的方法:

使用RT-FIFO将一个RTAIreal-time

kernelmodule和真正的Linux进程连接在

一起

•代理:LXRTproxy

NRTLinux

Task

User

Kernel

hardware

MontaVistaLinux2.1

MontaVista软件公司

全球三大嵌入式Linux操作系统及解决方案供应商

之一

MontaVistaLinux2.1支持6种体系结构的20款处

理器,X86/IA-32、PowerPC、StrongARM、

XScale、ARM、MIPS以及SH。

MontaVistaLinux2.1包括KDevelopIDE、目标配

置工具(TargetConfigurationTool)、库优化工

具(LibraryOptimizertool)。另外,它还提供超

过215个应用软件包。

基于Linux2417稳定内核,提供支持x86、MIPS、

SH以及PowerPC体系结构的实时抢占式内核。

跨平台开发,支持14个主机开发环境,包括

RedHat、YellowDogLinux、SuSE>Mandrake、

Solaris以及VMWareonWindowsNT/2000

该版本提供了215多个主机配套工具和嵌入式目标

平台开发组件软件包,包括thttpd嵌入式服务器

和802」lb无线通信标准附加包。

扩展了针对嵌入式跨平台开发的各类开放

源代码工具的支持,提供了首个基于

KDevelop的MontaVista开发环境;

支持x86和PowerPC平台的Linux跟踪工具

(包括内核性能和执行分析器);

ext3日志文件系统。

5、uClinux

专为无(MMU)的微控制器打造的嵌入式Linux操

作系统。

uClinux已移植支持的微控制器和微处理器:

摩托罗拉

DragonBall(M68EZ328),M68328,M68EN322,ColdFire,QUICC(QuadIntegratedCom

municationsController)M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论