嵌入式操作系統_第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

提交評論