ARM匯編語言程序設(shè)計(jì)基礎(chǔ) 第8章嵌入式系統(tǒng)
《ARM匯編語言程序設(shè)計(jì)基礎(chǔ) 第8章嵌入式系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《ARM匯編語言程序設(shè)計(jì)基礎(chǔ) 第8章嵌入式系統(tǒng)(93頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、第第8章章 嵌入式系統(tǒng)軟件及操作系統(tǒng)基礎(chǔ)嵌入式系統(tǒng)軟件及操作系統(tǒng)基礎(chǔ)8.1 嵌入式軟件基礎(chǔ)嵌入式軟件基礎(chǔ)n8.1.1 嵌入式軟件的特點(diǎn)n應(yīng)用在嵌入式計(jì)算機(jī)系統(tǒng)當(dāng)中的各種軟件統(tǒng)稱為嵌入式軟件,作為嵌入式系統(tǒng)的一個組成部分,目前嵌入式軟件的種類和規(guī)模都得到了極大的發(fā)展,形成了一個完整、獨(dú)立的體系。除了具有通用軟件的一般特性,同時還具有一些與嵌入式系統(tǒng)密切相關(guān)的特點(diǎn),如:n(l)規(guī)模較小n在一般情況下,嵌入式系統(tǒng)的資源多是比較有限的,要求嵌入式軟件必須盡可能地精簡,多數(shù)的嵌入式軟件都在幾MB以內(nèi)。n(2)開發(fā)難度大n嵌入式系統(tǒng)由于硬件資源的有限,使得嵌入式軟件在時間和空間上都受到嚴(yán)格的限制,需要開發(fā)
2、人員對編程語言、編譯器和操作系統(tǒng)有深刻的了解,才有可能開發(fā)出運(yùn)行速度快、存儲空間少、維護(hù)成本低的軟件。嵌入式軟件一般都要涉及到底層軟件的開發(fā),應(yīng)用軟件的開發(fā)也是直接基于操作系統(tǒng)的,這就要求開發(fā)人員具有扎實(shí)的軟、硬件基礎(chǔ),能靈活運(yùn)用不同的開發(fā)手段和工具,具有較豐富的開發(fā)經(jīng)驗(yàn)。嵌入式軟件的運(yùn)行環(huán)境和開發(fā)環(huán)境比PC機(jī)復(fù)雜,嵌入式軟件是在目標(biāo)系統(tǒng)上運(yùn)行的,而嵌入式軟件的開發(fā)工作則是在另外的開發(fā)系統(tǒng)中進(jìn)行,當(dāng)應(yīng)用軟件調(diào)試無誤后,再把它放到目標(biāo)系統(tǒng)上去。 n(3)高實(shí)時性和可靠性要求n具有實(shí)時處理的能力是許多嵌入式系統(tǒng)的基本要求,實(shí)時性要求軟件對外部事件做出反應(yīng)的時間必須要快,在某些情況下還要求是確定的、
3、可重復(fù)實(shí)現(xiàn)的,不管系統(tǒng)當(dāng)時的內(nèi)部狀態(tài)如何,都是可以預(yù)測的。同時,對于事件的處理一定要在限定的時間期限之前完成,否則就有可能引起系統(tǒng)的崩潰。 n在航天控制、核電站、工業(yè)機(jī)器人等實(shí)時系統(tǒng)對嵌入式軟件的可靠性要求是非常高的,一旦軟件出了問題,其后果是非常嚴(yán)重的。n(4)軟件固化存儲n為了提高系統(tǒng)的啟動速度、執(zhí)行速度和可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲器芯片或微處理器中。8.1.2嵌入式軟件的分類n1系統(tǒng)軟件系統(tǒng)軟件n系統(tǒng)軟件控制和管理嵌入式系統(tǒng)資源,為嵌入式應(yīng)用提供支持的各種軟件,如設(shè)備驅(qū)動程序、嵌入式操作系統(tǒng)、嵌入式中間件等。n2應(yīng)用軟件應(yīng)用軟件n應(yīng)用軟件是嵌入式系統(tǒng)中的上層軟件,它定義了
4、嵌入式設(shè)備的主要功能和用途,并負(fù)責(zé)與用戶進(jìn)行交互。應(yīng)用軟件是嵌入式系統(tǒng)功能的體現(xiàn),如飛行控制軟件、手機(jī)軟件、MP3播放軟件、電子地圖軟件等,一般面向于特定的應(yīng)用領(lǐng)域,。n3支撐軟件支撐軟件n支撐軟件指輔助軟件開發(fā)的工具軟件,如系統(tǒng)分析設(shè)計(jì)工具、在線仿真工具、交叉編譯器、源程序模擬器和配置管理工具等。n在嵌入式系統(tǒng)當(dāng)中,系統(tǒng)軟件和應(yīng)用軟件運(yùn)行在目標(biāo)平臺的(即嵌入式設(shè)備上),而對于各種軟件開發(fā)工具來說,它們大部分都運(yùn)行在開發(fā)平臺(PC機(jī))上,運(yùn)行Windows或Linux操作系統(tǒng)。8.1.3 嵌入式軟件的體系結(jié)構(gòu)n1無操作系統(tǒng)的嵌入式軟件無操作系統(tǒng)的嵌入式軟件n早期在嵌入式系統(tǒng)的應(yīng)用范圍主要集中在
5、控制領(lǐng)域,硬件的配置比較低,嵌入式軟件的設(shè)計(jì)主要是以應(yīng)用為核心,應(yīng)用軟件直接建立在硬件上,沒有專門的操作系統(tǒng),軟件的規(guī)模也很小。n無操作系統(tǒng)的嵌入式軟件主要采用循環(huán)輪轉(zhuǎn)和中斷(前后臺)兩種實(shí)現(xiàn)方式。n(1)循環(huán)輪轉(zhuǎn)方式n循環(huán)輪轉(zhuǎn)方式的基本設(shè)計(jì)思想是:把系統(tǒng)的功能分解為若干個不同的任務(wù),放置在一個永不結(jié)束的循環(huán)語句當(dāng)中,按照時間順序逐一執(zhí)行。當(dāng)程序執(zhí)行完一輪后,又回到程序的開頭重新執(zhí)行,循環(huán)不斷。n循環(huán)輪轉(zhuǎn)方式的程序簡單、直觀、開銷小、可預(yù)測。軟件的開發(fā)可以按照自頂向下、逐步求精的方式,將系統(tǒng)要完成的功能逐級劃分成若干個小的功能模塊進(jìn)行編程,最后組合在一起。循環(huán)輪轉(zhuǎn)方式的軟件系統(tǒng)只有一條執(zhí)行流程
6、和一個地址空間,不需要任務(wù)之間的調(diào)度和切換,其程序的代碼都是固定的,函數(shù)之間的調(diào)用關(guān)系也是明確的,整個系統(tǒng)的執(zhí)行過程是可預(yù)測的。n循環(huán)輪轉(zhuǎn)方式的缺點(diǎn)是程序必須按順序執(zhí)行,無法處理異步事件,缺乏并行處理的能力。缺乏硬件上的時間控制機(jī)制,無法實(shí)現(xiàn)定時功能。 n(2)中斷方式n中斷方式又稱為前后臺系統(tǒng)形式,系統(tǒng)在循環(huán)輪轉(zhuǎn)方式的基礎(chǔ)上增加了中斷處理功能。ISR(Interrupt Service Routine,中斷服務(wù)程序)負(fù)責(zé)處理異步事件,即前臺程序(foreground),也稱為事件處理級程序。而后臺程序(background)是一個系統(tǒng)管理調(diào)度程序,一般采用的是一個無限的循環(huán)形式,負(fù)責(zé)掌管整個
7、嵌入式系統(tǒng)軟、硬件資源的分配、管理以及任務(wù)的調(diào)度。后臺程序也稱為任務(wù)級程序。一般情形下,后臺程序會檢查每個任務(wù)是否具備運(yùn)行條件,通過一定的調(diào)度算法來完成相應(yīng)的操作。而一些對實(shí)時性有要求的操作通常由中斷服務(wù)程序來完成,大多數(shù)的中斷服務(wù)程序只做一些最基本的操作,如標(biāo)記中斷事件的發(fā)生等,其余的事情會延遲到后臺程序去完成。n2有操作系統(tǒng)的嵌入式軟件有操作系統(tǒng)的嵌入式軟件n從20世紀(jì)80年代開始,操作系統(tǒng)出現(xiàn)在嵌入式系統(tǒng)上。如今,嵌入式操作系統(tǒng)在嵌入式系統(tǒng)中廣泛應(yīng)用,尤其是在功能復(fù)雜、系統(tǒng)龐大的應(yīng)用中顯得愈來愈重要。在應(yīng)用軟件開發(fā)時,程序員不是直接面對嵌入式硬件設(shè)備,而是采用一些嵌入式軟件開發(fā)環(huán)境,在操
8、作系統(tǒng)的基礎(chǔ)上編寫程序。n在控制系統(tǒng)中,采用前后臺系統(tǒng)體系結(jié)構(gòu)的軟件,在遇到強(qiáng)干擾時,可能會使應(yīng)用程序產(chǎn)生異常、出錯,甚至死循環(huán)的現(xiàn)象,從而造成系統(tǒng)的崩潰。而采用嵌入式操作系統(tǒng)管理的系統(tǒng),在遇到強(qiáng)干擾時,可能只會引起系統(tǒng)中的某一個進(jìn)程被破壞,但這可以通過系統(tǒng)的監(jiān)控進(jìn)程對其進(jìn)行修復(fù),系統(tǒng)具有自愈能力,不會造成系統(tǒng)崩潰。n在嵌入式操作系統(tǒng)環(huán)境下,開發(fā)一個復(fù)雜的應(yīng)用程序,通??梢园凑哲浖こ痰乃枷?,將整個程序分解為多個任務(wù)模塊,每個任務(wù)模塊的調(diào)試、修改幾乎不影響其他模塊。利用商業(yè)軟件提供的多任務(wù)調(diào)試環(huán)境,可大大提高系統(tǒng)軟件的開發(fā)效率,降低開發(fā)成本,縮短開發(fā)周期。n嵌入式操作系統(tǒng)本身是可以剪裁的,嵌入
9、式系統(tǒng)外設(shè)、相關(guān)應(yīng)用也可以配置,所開發(fā)的應(yīng)用軟件可以在不同的應(yīng)用環(huán)境、不同的處理器芯片之間移植,軟件構(gòu)件可復(fù)用,有利于系統(tǒng)的擴(kuò)展和移植。n嵌入式軟件的體系結(jié)構(gòu)圖如圖8.1.2所示,最底層的是嵌入式硬件系統(tǒng),包括嵌入式微處理器、存儲器、鍵盤、LCD顯示器等輸入輸出設(shè)備。在硬件層之上的是設(shè)備驅(qū)動層,它負(fù)責(zé)與硬件直接打交道,并為操作系統(tǒng)層軟件提供所需的驅(qū)動支持。操作系統(tǒng)層可以分為基本部分和擴(kuò)展部分,基本部分是操作系統(tǒng)的核心,負(fù)責(zé)整個系統(tǒng)的任務(wù)調(diào)度、存儲管理、時鐘管理和中斷管理等功能;擴(kuò)展部分為用戶提供網(wǎng)絡(luò)、文件系統(tǒng)、圖形用戶界面GUI、數(shù)據(jù)庫等擴(kuò)展功能,擴(kuò)展部分的內(nèi)容可以根據(jù)系統(tǒng)的需要來進(jìn)行剪裁。在
10、操作系統(tǒng)的上面是一些中間件軟件。最上層是網(wǎng)絡(luò)瀏覽器、MP3播放器、文本編輯器、電子郵件客戶端、電子游戲等各種應(yīng)用軟件,實(shí)現(xiàn)嵌入式系統(tǒng)的功能。圖8.1.2 嵌入式軟件體系結(jié)構(gòu)8.1.4 嵌入式系統(tǒng)的設(shè)備驅(qū)動n嵌入式系統(tǒng)的設(shè)備驅(qū)動層用來完成嵌入式系統(tǒng)硬件設(shè)備所需要的一些軟件初始化和管理。設(shè)備驅(qū)動層直接對硬件進(jìn)行管理和控制,并為上層軟件提供所需的驅(qū)動支持。n1板級支持包板級支持包n設(shè)備驅(qū)動層也稱為BSP(Board Support Package, 板級支持包),在BSP中把所有與硬件相關(guān)的代碼都封裝起來,為操作系統(tǒng)提供一個虛擬的硬件平臺,操作系統(tǒng)運(yùn)行在這個虛擬的硬件平臺上。在BSP當(dāng)中,使用一組定
11、義好的編程接口來與BSP進(jìn)行交互,并通過BSP來訪問真正的硬件。在嵌入式系統(tǒng)中,BSP類似于PC系統(tǒng)中的BIOS和驅(qū)動程序。BSP把嵌入式操作系統(tǒng)與具體的硬件平臺隔離開來。n一般來說,BSP是針對某個特定的單板而設(shè)計(jì)的,系統(tǒng)都會提供相應(yīng)的演示版本的BSP(最小系統(tǒng)BSP)。BSP對于用戶(指系統(tǒng)開發(fā)人員)是開放的,用戶可以根據(jù)不同的硬件需求對其進(jìn)行改動或二次開發(fā)。在實(shí)際開發(fā)一個嵌入式系統(tǒng)的時候,通常可以找到一個與自己的硬件系統(tǒng)相近的演示版本的BSP,并以此為基礎(chǔ),進(jìn)行修改和完善,以適應(yīng)不同單板的需求。BSP主要包括BootLoader(引導(dǎo)加載程序)和設(shè)備驅(qū)動程序兩個方面的內(nèi)容。n對于不同的嵌
12、入式操作系統(tǒng),BSP的具體結(jié)構(gòu)和組成是不相同的。n2BootLoadernBootLoader(引導(dǎo)加載程序)是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一小段程序。通過這段程序,初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境設(shè)置到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。BootLoader用來完成整個系統(tǒng)的加載啟動任務(wù)。通常在系統(tǒng)上電或復(fù)位時,BootLoader程序從地址0 x00000000處開始執(zhí)行。nBootLoader的功能與嵌入式系統(tǒng)的硬件平臺直接相關(guān),不同的CPU體系結(jié)構(gòu)和板級設(shè)備配置,BootLoader的功能不同。一般來說,BootLoader主要包含片級初始化
13、、板級初始化和加載內(nèi)核等一些基本功能。n(1)片級初始化n片級初始化是一個純硬件的初始化過程,把微處理器從上電時的默認(rèn)狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。片級初始化主要完成設(shè)置微處理器的核心寄存器和控制寄存器、微處理器的核心工作模式及其局部總線模式等初始化。n(2)板級初始化n板級初始化是一個同時包含有軟件和硬件在內(nèi)的初始化過程,通過正確地設(shè)置各種寄存器的內(nèi)容來完成微處理器以外的其他硬件設(shè)備的初始化。例如,初始化LED顯示設(shè)備、定時器、串口通信和內(nèi)存控制器,建立內(nèi)存空間的地址映射,設(shè)置中斷控制寄存器和某些軟件的數(shù)據(jù)結(jié)構(gòu)和參數(shù)等。n(3)加載內(nèi)核n將操作系統(tǒng)和應(yīng)用程序的映像從Flash存儲器復(fù)制
14、到系統(tǒng)的內(nèi)存當(dāng)中,然后跳轉(zhuǎn)到系統(tǒng)內(nèi)核的第一條指令處繼續(xù)執(zhí)行。n3設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序n在一個嵌入式系統(tǒng)中,可以沒有操作系統(tǒng),但設(shè)備驅(qū)動程序是必不可少的。設(shè)備驅(qū)動程序是一組庫函數(shù),用來對硬件進(jìn)行初始化和管理,并向上層軟件提供訪問接口。n不同功能的硬件設(shè)備,它們的設(shè)備驅(qū)動程序是不同的。但大多數(shù)的設(shè)備驅(qū)動程序都具有硬件啟動(初始化)、硬件關(guān)閉(關(guān)機(jī))、硬件停用(暫停)、硬件啟用(重新啟用)、讀操作(讀取數(shù)據(jù))、寫操作(寫入數(shù)據(jù))等基本功能。n設(shè)備驅(qū)動程序通??梢酝瓿梢恍┨囟ǖ墓δ埽@些功能一般采用函數(shù)的形式來實(shí)現(xiàn),這些函數(shù)有分層結(jié)構(gòu)和混合結(jié)構(gòu)兩種組織結(jié)構(gòu)形式。n在分層結(jié)構(gòu)中,設(shè)備驅(qū)動程序中的函數(shù)
15、分為硬件接口和調(diào)用接口兩種類型。硬件接口直接跟硬件打交道的,直接去操作和控制硬件設(shè)備;調(diào)用接口不直接與硬件打交道,它們調(diào)用硬件接口當(dāng)中的函數(shù),與上層軟件(包括操作系統(tǒng)、中間件和應(yīng)用軟件)打交道的。分層結(jié)構(gòu)把所有與硬件有關(guān)的細(xì)節(jié)都封裝在硬件接口當(dāng)中,在硬件要升級時,只需要改動硬件接口當(dāng)中的函數(shù)即可,而上層接口當(dāng)中的函數(shù)不用做任何修改。n在混合結(jié)構(gòu)中,上層接口和硬件接口的函數(shù)是混在一起、相互調(diào)用的,之間沒有明確的層次關(guān)系。8.1.5 嵌入式中間件n中間件是一種軟件平臺技術(shù),在銀行、證券、電信等行業(yè)的大型計(jì)算機(jī)應(yīng)用系統(tǒng)中廣泛應(yīng)用。近年來,中間件技術(shù)也被引入到嵌入式系統(tǒng)的設(shè)計(jì)中,并與實(shí)時多任務(wù)操作系統(tǒng)
16、緊密結(jié)合。利用中間件技術(shù)可以使用戶把精力集中到系統(tǒng)功能的實(shí)現(xiàn)上,實(shí)現(xiàn)嵌入式系統(tǒng)的軟硬件協(xié)同設(shè)計(jì)。 n嵌入式中間件是指不包括操作系統(tǒng)內(nèi)核、設(shè)備驅(qū)動程序和應(yīng)用軟件在內(nèi)的所有系統(tǒng)軟件。嵌入式中間件把原本屬于應(yīng)用軟件層的一些通用的功能模塊抽取出來,形成獨(dú)立的一層軟件,為應(yīng)用軟件提供一個靈活、安全、移植性好、相互通信、協(xié)同工作的平臺。n嵌入式中間件可以分為消息中間件、對象中間件、遠(yuǎn)程過程調(diào)用(Remote Procedure Calls,RPC)、數(shù)據(jù)庫訪問中間件、安全中間件等不同的類型。n一些公司可提供嵌入式中間件集成解決方案,如Sun公司的嵌入式Java,微軟公司的.NET Compact Fram
17、e-work,OMG(Object Management Group)的嵌入式CORBA等。8.2嵌入式操作系統(tǒng)基礎(chǔ)嵌入式操作系統(tǒng)基礎(chǔ)n8.2.1嵌入式操作系統(tǒng)的功能n在嵌入式系統(tǒng)中工作的操作系統(tǒng)稱為EOS(Embedded Operating System,嵌入式操作系統(tǒng)),EOS的基本功能主要體現(xiàn)在以下兩個方面:n1構(gòu)成一個易于編程的虛擬機(jī)平臺nEOS構(gòu)成一個虛擬機(jī)平臺,EOS把底層的硬件細(xì)節(jié)封裝起來,為運(yùn)行在它上面的軟件(如中間件軟件和各種應(yīng)用軟件)提供了一個抽象的編程接口。軟件開發(fā)在這個編程接口的上進(jìn)行,而不直接與機(jī)器硬件層打交道。EOS所提供的編程接口實(shí)際上就是操作系統(tǒng)對外提供的系統(tǒng)
18、調(diào)用函數(shù)。n2系統(tǒng)資源的管理者nEOS是一個系統(tǒng)資源的管理者,負(fù)責(zé)管理系統(tǒng)當(dāng)中的各種軟硬件資源,如處理器、內(nèi)存、各種I/O設(shè)備、文件和數(shù)據(jù)等,使得整個系統(tǒng)能夠高效、可靠地運(yùn)轉(zhuǎn)。n運(yùn)行在嵌入式環(huán)境中的EOS其目標(biāo)是為了完成某一項(xiàng)或有限項(xiàng)功能,而非通用型的操作系統(tǒng),因此在性能和實(shí)時性方面有嚴(yán)格的限制,能耗、成本和可靠性通常是影響設(shè)計(jì)的重要因素,要求占用資源少,適合在有限存儲空間運(yùn)行,要求系統(tǒng)功能可以根據(jù)產(chǎn)品的設(shè)計(jì)要求進(jìn)行剪裁、調(diào)整。n所有的EOS都有一個內(nèi)核(kernel),內(nèi)核是系統(tǒng)當(dāng)中的一個組件,它包含了任務(wù)管理、存儲管理、輸入輸出(I/O)設(shè)備管理和文件系統(tǒng)管理四個功能模塊。其中:n 任務(wù)管
19、理:對嵌入式系統(tǒng)中的運(yùn)行軟件進(jìn)行描述和管理,并完成處理機(jī)資源的分配與調(diào)度;n 存儲管理:用來提高內(nèi)存的利用率,方便用戶的使用,并提供足夠的存儲空間;n I/O設(shè)備管理:方便設(shè)備的使用,提高CPU和輸入輸出設(shè)備的利用率;n 文件管理:解決文件資源的存儲、共享、保密和保護(hù)等問題。n注意:不同的嵌入式系統(tǒng)的EOS所包含的組件可能各不相同,內(nèi)核設(shè)計(jì)也可能各不相同的,完全取決于系統(tǒng)的設(shè)計(jì)以及實(shí)際的應(yīng)用需求。8.2.2嵌入式操作系統(tǒng)的分類nEOS可以按照系統(tǒng)的類型、響應(yīng)時間和軟件結(jié)構(gòu)等不同的標(biāo)準(zhǔn)來分類。n1按系統(tǒng)的類型分類按系統(tǒng)的類型分類n按照系統(tǒng)的類型,可以把EOS分為商業(yè)化系統(tǒng)、專用系統(tǒng)和開放源代碼系
20、統(tǒng)三大類。n(1)商業(yè)化系統(tǒng)n商業(yè)化的EOS有風(fēng)河公司(WindRiver)的VxWorks,微軟公司的Windows CE,Palm公司的PalmOS等等,其特點(diǎn)是功能強(qiáng)大,性能穩(wěn)定,輔助軟件工具齊全,應(yīng)用范圍廣泛,但成本較高。n(2)專用系統(tǒng)n專用系統(tǒng)是一些專業(yè)廠家為本公司產(chǎn)品特制的嵌入式操作系統(tǒng),一般不提供給應(yīng)用開發(fā)者使用。n(3)開放源代碼系統(tǒng)n開放源代碼的嵌入式操作系統(tǒng)有C/OS和各類嵌入式Linux系統(tǒng)等,具有免費(fèi)、開源、性能優(yōu)良、資源豐富、技術(shù)支持強(qiáng)等優(yōu)點(diǎn),是近年來發(fā)展迅速的一類操作系統(tǒng)。n2按響應(yīng)時間分類按響應(yīng)時間分類n按照系統(tǒng)對響應(yīng)時間的敏感程度,EOS可以分為RTOS(Re
21、al Time Operating Systems ,實(shí)時操作系統(tǒng))和非實(shí)時操作系統(tǒng)兩大類:。nRTOS對響應(yīng)時間有非常嚴(yán)格的要求,當(dāng)某一個外部事件或請求發(fā)生時,相應(yīng)的任務(wù)必須在規(guī)定的時間內(nèi)完成相應(yīng)的處理。RTOS可以分為硬實(shí)時和軟實(shí)時兩種情形。n(1)硬實(shí)時系統(tǒng)n硬實(shí)時系統(tǒng)對響應(yīng)時間有嚴(yán)格的要求,如果響應(yīng)時間不能滿足可能會引起系統(tǒng)的崩潰或致命的錯誤。n(2)軟實(shí)時系統(tǒng)n軟實(shí)時系統(tǒng)對響應(yīng)時間有要求,如果響應(yīng)時間不能滿足,將需要支付能夠接受的額外代價。n非實(shí)時系統(tǒng)對響應(yīng)時間沒有嚴(yán)格的要求,各個進(jìn)程分享處理器,以獲得各自所需要的運(yùn)行時間。n3按軟件結(jié)構(gòu)分類按軟件結(jié)構(gòu)分類n按照軟件的體系結(jié)構(gòu),EOS
22、可以分為單體結(jié)構(gòu)、分層結(jié)構(gòu)和微內(nèi)核結(jié)構(gòu)三大類,如8.2.18.2.3所示。n(1)單體結(jié)構(gòu)n單體結(jié)構(gòu)是一種常見的組織結(jié)構(gòu),嵌入式Linux操作系統(tǒng)、Jbed RTOS、C/OS-II和PDOS都屬于單體內(nèi)核系統(tǒng)。在單體結(jié)構(gòu)(monolithic)的操作系統(tǒng)中,中間件和設(shè)備驅(qū)動程序通常就集成在系統(tǒng)內(nèi)核當(dāng)中,整個系統(tǒng)通常只有一個可執(zhí)行文件,里面包含了所有的功能組件。n單體結(jié)構(gòu)的操作系統(tǒng)由一組功能模塊組成,系統(tǒng)的各個模塊之間可以相互調(diào)用,通信開銷比較小,系統(tǒng)高度集成和相互關(guān)聯(lián),系統(tǒng)剪裁、修改、調(diào)試和維護(hù)不方便。圖8.2.1 單體結(jié)構(gòu) 圖8.2.2 分層結(jié)構(gòu) n采用分層結(jié)構(gòu)(layered)的操作系統(tǒng)
23、內(nèi)部分為若干個層次(0N),各個層次之間的調(diào)用關(guān)系是單向的,即某一層次上的代碼只能調(diào)用比它低層的代碼。分層結(jié)構(gòu)要求在每個層次上都要提供一組API接口函數(shù),增加了系統(tǒng)的額外開銷,但系統(tǒng)的開發(fā)和維護(hù)較為簡單。典型代表有MS-DOS,其結(jié)構(gòu)就是一個有代表性的、組織良好的分層結(jié)構(gòu)。n(3)微內(nèi)核結(jié)構(gòu)n微內(nèi)核( microkernel )結(jié)構(gòu)把操作系統(tǒng)的大部分功能都剝離出去,在內(nèi)核中只保留最核心的功能單元(如進(jìn)程管理和存儲管理),大部分的系統(tǒng)功能都位于內(nèi)核之外,例如,將所有的設(shè)備驅(qū)動程序都被置于內(nèi)核之外,如圖8.2.3所示。n在微內(nèi)核操作系統(tǒng)中,大部分的系統(tǒng)功能被放置在內(nèi)核之外,客戶單元和服務(wù)器單元的內(nèi)
24、存地址空間是相互獨(dú)立的,系統(tǒng)具有更高的安全性。新的功能組件也可以被動態(tài)地添加進(jìn)來,擴(kuò)展、調(diào)試、移植方便。在微內(nèi)核操作系統(tǒng)中,核內(nèi)組件與核外組件之間的通信方式是消息傳遞,而不是直接的函數(shù)調(diào)用,運(yùn)行速度可能會慢一些。另外,由于它們的內(nèi)存地址空間是相互獨(dú)立的,在切換的時候,也會增加額外的開銷。nOS-9、C Executive、VxWorks,CMX-RTX、Nucleus Plus和QNX等EOS采用的都是微內(nèi)核結(jié)構(gòu)。圖8.2.3 微內(nèi)核結(jié)構(gòu)8.2.3常見的嵌入式操作系統(tǒng)簡介n嵌入式操作系統(tǒng)是操作系統(tǒng)研究領(lǐng)域中的一個重要分支,有許多公司在從事相關(guān)方面的研究,開發(fā)了數(shù)以百計(jì)的各具特色的嵌入式操作系統(tǒng)
25、產(chǎn)品,其中比較有影響的系統(tǒng)有VxWorks、嵌入式Linux、Windows CE、C/OS-II和PalmOS等。n1VxWorksn美國WindRiver System公司開發(fā)的嵌入式實(shí)時操作系統(tǒng)VxWorks采用基于微內(nèi)核的體系結(jié)構(gòu),整個系統(tǒng)由四百多個相對獨(dú)立、短小精練的目標(biāo)模塊組成,用戶可以根據(jù)自己的需要選擇適當(dāng)?shù)哪K,進(jìn)行裁減和配置。VxWorks采用GNU類型的編譯和調(diào)試器,專有的API函數(shù),支持x86、Motorola MC68xxx、Coldfire、PowerPC、MIPS、ARM、i960等主流的32位處理器,具有良好的可靠性和卓越的實(shí)時性,是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛
26、、市場占有率最高的商業(yè)系統(tǒng)之一。n在VxWorks操作系統(tǒng)中,主要包含有實(shí)時微內(nèi)核Wind、I/O處理系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)處理模塊、虛擬內(nèi)存模塊VxVMI、板級支持包BSP等功能模塊。其中:n實(shí)時微內(nèi)核Wind包括基于優(yōu)先級的任務(wù)調(diào)度、任務(wù)間的通信、同步和互斥、中斷處理、定時器和內(nèi)存管理機(jī)制等功能。與ANSI C兼容的I/O系統(tǒng)包括UNIX標(biāo)準(zhǔn)的緩沖I/O和POSIX標(biāo)準(zhǔn)的異步I/O。文件系統(tǒng)主要包括與MS-DOS兼容的文件系統(tǒng)、與RT-11兼容的文件系統(tǒng)、Raw Disk文件系統(tǒng)和SCSI磁帶設(shè)備。網(wǎng)絡(luò)處理模塊能與如TCP/IP、NFS、UDP、SNMP、FTP等許多運(yùn)行其他協(xié)議的網(wǎng)絡(luò)進(jìn)行通
27、信。虛擬內(nèi)存模塊VxVMI主要用于對指定內(nèi)存區(qū)的保護(hù),以加強(qiáng)系統(tǒng)的安全性。板級支持包BSP由初始化和驅(qū)動程序兩部分組成,用來管理硬件的功能模塊,對各種板卡的硬件功能提供統(tǒng)一的接口。n2嵌入式嵌入式Linuxn嵌入式Linux(Embedded Linux)是指對標(biāo)準(zhǔn)Linux進(jìn)行小型化剪裁處理之后,可固化在存儲器或單片機(jī)中,適合于特定嵌入式應(yīng)用場合的專用Linux操作系統(tǒng)。常見的嵌入式Linux有Clinux、RT-Linux、Embedix和Hard Hat Linux等,具有如下特點(diǎn):n 具有高性能、可裁剪的內(nèi)核,其獨(dú)特的模塊機(jī)制使用戶可以根據(jù)自己的需要,實(shí)時地將某些模塊插入到內(nèi)核或從內(nèi)核
28、中移走,很適合于嵌入式系統(tǒng)的小型化的需要。n 具有完善的網(wǎng)絡(luò)通信和文件管理機(jī)制,支持所有標(biāo)準(zhǔn)的Internet網(wǎng)絡(luò)協(xié)議,支持ext2,nfat16, fat32, romfs等文件系統(tǒng)。n 可提供完整的工具鏈(Tool Chain),利用GNU的gcc做編譯器,用gdb, kgdb, xgdb做調(diào)試工具,能夠方便地實(shí)現(xiàn)從操作系統(tǒng)到應(yīng)用軟件各個級別的調(diào)試。n 嵌入式Linux是開放源碼的自由操作系統(tǒng),用戶可以根據(jù)自己的應(yīng)用需要方便地對內(nèi)核進(jìn)行修改和優(yōu)化。n 支持x86、ARM、MIPS、Alpha、PowerPC等多種體系結(jié)構(gòu),支持各種主流硬件設(shè)備和最新硬件技術(shù)。n 幾乎每一種通用程序在Linu
29、x上都能找到,具有豐富的軟件資源。n C linux主要針對沒有MMU的微處理器;RT-Linux是最早實(shí)現(xiàn)硬實(shí)時支持的Linux版本;Embedix采用模塊化的設(shè)計(jì)方案,方便系統(tǒng)剪裁;Hard Hat Linux是一個嵌入式實(shí)時系統(tǒng),可以針對硬件環(huán)境進(jìn)行配置,以獲得最佳的性能和最小的容量。n3Windows CEnWindows CE是一個基于優(yōu)先級的多任務(wù)嵌入式操作系統(tǒng),提供了256個優(yōu)先級別,基本內(nèi)核需要至少200KB的ROM,支持Win32API子集、支持多種用戶界面硬件、支持多種串行和網(wǎng)絡(luò)通信技術(shù)。Windows CE不是一個硬實(shí)時系統(tǒng)。nWindows CE主要包含內(nèi)核模塊、內(nèi)核系
30、統(tǒng)調(diào)用接口模塊、文件系統(tǒng)模塊、圖形窗口和事件子系統(tǒng)模塊和通信模塊五個功能模塊。其中:內(nèi)核模塊支持進(jìn)程和線程處理及內(nèi)存管理等基本服務(wù)。內(nèi)核系統(tǒng)調(diào)用接口模塊允許應(yīng)用軟件訪問操作系統(tǒng)提供的服務(wù)。文件系統(tǒng)模塊支持DOS等格式的文件系統(tǒng)。圖形窗口和事件子系統(tǒng)模塊控制圖形顯示,并提供Windows GUI圖形界面。通信模塊允許同其他的設(shè)備進(jìn)行信息交換。nWindows CE操作系統(tǒng)集成了大量的Windows XP Professional的特性,能提供與PC機(jī)類似的桌面、任務(wù)欄、窗口、圖標(biāo)、控件等圖形界面和各種應(yīng)用程序。熟悉Windows操作系統(tǒng)的用戶可以很快地使用基于Windows CE的嵌入式設(shè)備。另
31、外,微軟公司提供了Visual Studio.NET、Embedded Visual C+、Embedded Visual Basic等一組功能強(qiáng)大的應(yīng)用程序開發(fā)工具,專門用于對Windows CE操作系統(tǒng)的開發(fā)。n4 C/OS-IInC/OS-II是一種免費(fèi)、開放源代碼、結(jié)構(gòu)小巧、基于可搶占優(yōu)先級調(diào)度的實(shí)時操作系統(tǒng),其內(nèi)核提供任務(wù)調(diào)度與管理、時間管理、任務(wù)間同步與通信、內(nèi)存管理和中斷服務(wù)等功能。名稱C/OS-II來源于術(shù)語Micro-Controller Operating System(微控制器操作系統(tǒng)),它通常也稱為MUCOS或者UCOS。nC/OS-II內(nèi)核在2KB 10KB數(shù)量級,具
32、有執(zhí)行效率高、占用空間小、實(shí)時性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn),主要面向中小型嵌入式系統(tǒng)。C/OS-II內(nèi)核提供最基本的系統(tǒng)服務(wù),例如信號量、郵箱、消息隊(duì)列、內(nèi)存管理、中斷管理等。C/OS-II內(nèi)核本身并不支持文件系統(tǒng),但它具有良好的擴(kuò)展性能,可以根據(jù)需要自行加入。C/OS-II具有良好的可移植性。C/OS-II的大部分代碼都是用C語言寫成的,只有與處理器的硬件相關(guān)的一部分代碼采用匯編語言編寫。C/OS-II并不是一個商業(yè)實(shí)時操作系統(tǒng),但C/OS-II的穩(wěn)定性和實(shí)用性卻被數(shù)百個商業(yè)級的應(yīng)用所驗(yàn)證,C/O S-II不已在眾多的商業(yè)領(lǐng)域中獲得了廣泛的應(yīng)用。nC/OS-II支持ARM、PowerPC、MI
33、PS、68k/ColdFire和x86等多種體系結(jié)構(gòu)。8.3 嵌入式系統(tǒng)的任務(wù)管理嵌入式系統(tǒng)的任務(wù)管理n8.3.1 單道程序設(shè)計(jì)和多道程序設(shè)計(jì)n嵌入式操作系統(tǒng)可以分為單道程序設(shè)計(jì)和多道程序設(shè)計(jì)(mufti-programming)兩種類型。n1單道程序設(shè)計(jì)類型單道程序設(shè)計(jì)類型n采用單道程序設(shè)計(jì)的操作系統(tǒng)在任何時候只能有一個程序在運(yùn)行。n例如:有兩個程序甲和乙,它們在運(yùn)行過程中都要用到CPU和I/O設(shè)備。如圖8.3.1所示,圖中我們采用不同的方框來表示這兩個程序?qū)煞N資源的使用情況,方框的長度表示使用的時間。n在單道程序設(shè)計(jì)的環(huán)境下,在任何時候,系統(tǒng)中只能有一個程序在運(yùn)行,因此,甲和乙這兩個程序
34、只能一個接一個的執(zhí)行。如圖8.3.1所示,首先執(zhí)行程序甲,從t0時刻開始,到t6時刻結(jié)束。然后再執(zhí)行程序乙,從t6時刻開始,一直到它所有的工作都已完成。n2. 多道程序設(shè)計(jì)類型多道程序設(shè)計(jì)類型n采用多道程序設(shè)計(jì)的操作系統(tǒng)允許多個程序同時存在并運(yùn)行,采用多道程序技術(shù)可以有效提高系統(tǒng)資源的利用率。n在多道程序設(shè)計(jì)的環(huán)境下,允許多個程序同時運(yùn)行,當(dāng)一個程序在訪問I/O設(shè)備時,會主動把CPU交出來,讓另一個程序去運(yùn)行,從而提高系統(tǒng)資源的使用效率。如圖8.3.1所示,從t0到t1,甲在使用I/O設(shè)備,乙處于等待狀態(tài)。在到達(dá)了t1時刻后,甲釋放剛剛占用的I/O設(shè)備,交給程序乙去使用。因此,在t1到t2期間
35、,程序甲在使用CPU,程序乙在使用I/O設(shè)備。在到達(dá)t2時刻后,乙釋放剛剛占用的I/O設(shè)備,交給程序甲去使用。因此,在t2到t3期間,甲和乙兩個程序相互交換資源,繼續(xù)執(zhí)行。同樣的情形也發(fā)生在t3時刻和t4時刻。但是在t5時刻,甲已經(jīng)使用完了I/O設(shè)備,而乙仍然在使用CPU,所以甲只能處于等待狀態(tài),等到t6時刻再交換資源。這樣一直進(jìn)行下去,在t7時刻,甲執(zhí)行完畢,在t8時刻,乙也執(zhí)行完畢。n從圖8.3.1可見,由于CPU和I/O設(shè)備的使用是并行進(jìn)行的,在總的執(zhí)行時間上要明顯少于單道程序系統(tǒng)。圖8.3.1 單道程序與多道程序的運(yùn)行過程8.3.2進(jìn)程、線程和任務(wù)n1進(jìn)程進(jìn)程n進(jìn)程(process)是
36、在描述多道系統(tǒng)中并發(fā)活動過程引入的一個概念。進(jìn)程和程序是兩個既有聯(lián)系又有區(qū)別的概念,兩者不能混為一談。例如:一個程序主要由代碼和數(shù)據(jù)兩部分內(nèi)容組成。而進(jìn)程是正在執(zhí)行的程序,它是由程序和該程序的運(yùn)行上下文兩部分內(nèi)容組成。程序是靜態(tài)的,而進(jìn)程是一個動態(tài)的,變化的。進(jìn)程和程序之間并不是一一對應(yīng)的。一個進(jìn)程在運(yùn)行的時候可以啟動一個或多個程序,同一個程序也可能由多個進(jìn)程同時執(zhí)行。程序可以以文件的形式存放在硬盤或光盤上,作為一種軟件資源長期保存。而進(jìn)程則是一次執(zhí)行過程,它是暫時的,是動態(tài)地產(chǎn)生和終止的。 n一個進(jìn)程通常包含有以下幾個方面的內(nèi)容:n 相應(yīng)的程序:進(jìn)程是一個正在運(yùn)行的程序,有相應(yīng)程序的代碼和數(shù)
37、據(jù)。n CPU上下文:程序在運(yùn)行時,CPU中含有PC(Program Counter,程序計(jì)數(shù)器)、PSW(Program Status Word, 程序狀態(tài)字)、通用寄存器、段寄存器、棧指針寄存器等各種寄存器的當(dāng)前值內(nèi)容,例如:在PC中記錄的將要取出的指令的地址,在PSW中用于記錄處理器的運(yùn)行狀態(tài)信息,通用寄存器存放的數(shù)據(jù)或地址;段寄存器存放的程序中各個段的地址;棧指針寄存器記錄的棧頂?shù)漠?dāng)前位置。n 一組系統(tǒng)資源:包括操作系統(tǒng)用來管理進(jìn)程的數(shù)據(jù)結(jié)構(gòu)、進(jìn)程的內(nèi)存地址空間、進(jìn)程正在使用的文件等。n 總而言之,進(jìn)程包含了正在運(yùn)行的一個程序的所有狀態(tài)信息。進(jìn)程具有動態(tài)性,進(jìn)程是一個正在運(yùn)行的程序,程
38、序的運(yùn)行狀態(tài)都在不斷地變化,如PC寄存器的值、堆和棧的內(nèi)容、通用寄存器存放數(shù)據(jù)和地址等。進(jìn)程具有獨(dú)立性,一個進(jìn)程是一個獨(dú)立的實(shí)體,占有計(jì)算機(jī)的系統(tǒng)資源,每個進(jìn)程都有自己的運(yùn)行上下文和內(nèi)部狀態(tài),在它運(yùn)行的時候獨(dú)立于其他的進(jìn)程。進(jìn)程具有并發(fā)性,在系統(tǒng)中同時有多個進(jìn)程存在,它們相互獨(dú)立地運(yùn)行。n2線程線程n線程(thread)是一個比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位。所謂的線程,就是進(jìn)程當(dāng)中的一條執(zhí)行流程。n從資源組合的角度來看,進(jìn)程把一組相關(guān)的資源組合起來,構(gòu)成了一個資源平臺(資源環(huán)境),其中包括運(yùn)行上下文、內(nèi)存地址空間、打開的文件等,在圖8.3.2中用深色的方框來表示。從程序運(yùn)行的角度來看,進(jìn)程就
39、是一個正在運(yùn)行的程序,在圖8.3.2中用一條帶有箭頭的線段來表示。從圖8.3.2可見,可以把進(jìn)程看成是程序代碼在這個資源平臺上的一條執(zhí)行流程(線程),也就是可以認(rèn)為進(jìn)程等于線程加上資源平臺。n如圖8.3.2所示,在一個進(jìn)程當(dāng)中,或者說在一個資源平臺上,可以同時存在多個線程??梢杂镁€程來作為CPU的基本調(diào)度單位,使得各個線程之間可以并發(fā)執(zhí)行。對于同一個進(jìn)程當(dāng)中的各個線程來說,運(yùn)行在相同的資源平臺上,可以共享該進(jìn)程的大部分資源(如內(nèi)存地址空間、代碼、數(shù)據(jù)、文件等),但也有一小部分資源是不能共享的,每個線程都必須擁有各自獨(dú)立的一份(如CPU運(yùn)行上下文(如PC寄存器、PSW寄存器、通用寄存器和棧指針等
40、)和棧)。 圖8.3.2 線程與進(jìn)程的資源關(guān)系n3任務(wù)任務(wù)n在一些嵌入式系統(tǒng)中,把能夠獨(dú)立運(yùn)行的實(shí)體稱為“任務(wù)”(task),并沒有使用“進(jìn)程”或“線程”這兩個概念。任務(wù)到底是進(jìn)程還是線程,在研究一個具體的嵌入式操作系統(tǒng)的時候,要注意加以區(qū)分。n在任務(wù)的創(chuàng)建過程需要定義的主要參數(shù)有任務(wù)的優(yōu)先級、??臻g的大小和函數(shù)名。任務(wù)具有獨(dú)立的優(yōu)先級和??臻g,CPU上下文一般也是存放在棧空間中。對于不同的任務(wù),它們也能夠訪問相同的全局變量,在這些任務(wù)之間,可以很方便地、直接地去使用共享的內(nèi)存,而不需要經(jīng)過系統(tǒng)內(nèi)核來進(jìn)行通信。n通常認(rèn)為,在嵌入式操作系統(tǒng)中“任務(wù)”就是線程,如在VxWorks、C/OS-II、
41、 Jbed、嵌入式Linux等嵌入式操作系統(tǒng)中。8.3.3任務(wù)的實(shí)現(xiàn)n1任務(wù)的層次結(jié)構(gòu)任務(wù)的層次結(jié)構(gòu)n任務(wù)的層次結(jié)構(gòu)如圖8.3.3所示。在多道程序的嵌入式操作系統(tǒng)中,同時存在著多個任務(wù),嵌入式內(nèi)核啟動時,只有一個任務(wù)存在,然后由該任務(wù)派生出其他所有任務(wù),這些任務(wù)采用層狀結(jié)構(gòu),存在著父子關(guān)系。圖8.3.3 任務(wù)的層次結(jié)構(gòu)n2.任務(wù)的創(chuàng)建與終止任務(wù)的創(chuàng)建與終止n(1)任務(wù)的創(chuàng)建n在一個嵌入式操作系統(tǒng)中,在系統(tǒng)初始化、任務(wù)運(yùn)行過程中、人機(jī)交互等過程中都可以創(chuàng)建任務(wù)。n在系統(tǒng)初始化時,一般都會創(chuàng)建系統(tǒng)與用戶進(jìn)行交互的一些前臺任務(wù),以及完成鍵盤掃描、系統(tǒng)狀態(tài)檢測、時間統(tǒng)計(jì)等一些特定功能的后臺任務(wù)。在任務(wù)
42、運(yùn)行過程中,也能夠使用相應(yīng)的系統(tǒng)調(diào)用來創(chuàng)建新的任務(wù),以幫助它完成自己的工作。在一些具有交互功能的嵌入式系統(tǒng)中,用戶可以通過輸入命令或單擊圖標(biāo)的方式,讓系統(tǒng)啟動一個新的任務(wù)。n創(chuàng)建任務(wù)的基本方法是在一個已經(jīng)存在的任務(wù)當(dāng)中,通過調(diào)用相應(yīng)的系統(tǒng)函數(shù)來創(chuàng)建一個新的任務(wù)。n在嵌入式操作系統(tǒng)當(dāng)中,任務(wù)的創(chuàng)建主要采用fork/exec和spawn兩種模型。fork/exec模型源于IEEE/ISO POSIX 1003.1標(biāo)準(zhǔn),而spawn模型是從它派生出來的。n兩種模型創(chuàng)建任務(wù)的過程非常相似,包括為新任務(wù)分配相應(yīng)的數(shù)據(jù)結(jié)構(gòu),存放各種管理信息,分配內(nèi)存空間,存放任務(wù)的代碼和數(shù)據(jù)。當(dāng)這個新任務(wù)準(zhǔn)備就緒后,就可
43、以啟動它運(yùn)行了。n在fork/exec模型,首先調(diào)用fork函數(shù)為新任務(wù)創(chuàng)建一份與父任務(wù)完全相同的內(nèi)存空間,然后再調(diào)用exec函數(shù)裝入新任務(wù)的代碼,并用它來覆蓋原有的屬于父任務(wù)的內(nèi)容。對于新創(chuàng)建的子任務(wù)來說,它可以從父任務(wù)那里繼承代碼、數(shù)據(jù)等各種屬性。而spawn模型在創(chuàng)建新任務(wù)的時,直接為它分配一個全新的地址空間,然后將新任務(wù)的代碼裝入并運(yùn)行。 n(2)任務(wù)的終止n任務(wù)的終止可能有多種原因,正常退出、錯誤退出、被其他任務(wù)踢出等情況可以使任務(wù)終止。n當(dāng)一個任務(wù)完成了所有的工作,需要結(jié)束運(yùn)行,提出退出要求,稱為正常退出。n當(dāng)一個任務(wù)在執(zhí)行過程中,出現(xiàn)了致命的錯誤(例如執(zhí)行了非法指令、內(nèi)存訪問錯誤
44、等),系統(tǒng)中止該任務(wù)的運(yùn)行,強(qiáng)制性地讓該任務(wù)退出,稱為錯誤退出。n在一些操作系統(tǒng)中可以提供一些系統(tǒng)調(diào)用函數(shù),用來把一個任務(wù)從系統(tǒng)中清除出局,稱為被其他任務(wù)踢出。n在一些嵌入式系統(tǒng)中,某些任務(wù)被設(shè)計(jì)為“死循環(huán)”的模式,任務(wù)不會自行終止。 n3任務(wù)的狀態(tài)任務(wù)的狀態(tài)n在多道程序系統(tǒng)中,任務(wù)是獨(dú)立運(yùn)行的實(shí)體,需要競爭系統(tǒng)資源,而任務(wù)所擁有的資源是在不斷變化中的,使得任務(wù)的狀態(tài)也在不斷的變化。一般來說,任務(wù)具有運(yùn)行(running)、就緒(ready)和阻塞(blocked)三種基本狀態(tài)。n任務(wù)在運(yùn)行狀態(tài)時占有CPU并在CPU上運(yùn)行,在任何一個時刻,處于運(yùn)行狀態(tài)的任務(wù)個數(shù)必須小于或等于CPU的數(shù)目。如果
45、在一個系統(tǒng)中只有一個CPU的話,那么最多只能有一個任務(wù)處于運(yùn)行狀態(tài)。n當(dāng)一個任務(wù)已具備運(yùn)行條件,但由于CPU正在運(yùn)行其他的任務(wù),暫時不能運(yùn)行該任務(wù)時,稱為就緒狀態(tài)。不過,只要把CPU分給該任務(wù),它就能夠立刻執(zhí)行。n任務(wù)因?yàn)檎诘却撤N事件的發(fā)生而暫時不能運(yùn)行稱為阻塞狀態(tài),也叫等待狀態(tài)(waiting)。此時,即使CPU已經(jīng)空閑下來了,該任務(wù)也還是不能運(yùn)行。n如圖8.3.4所示,在一定條件下,任務(wù)會在不同的狀態(tài)之間來回轉(zhuǎn)換,存在運(yùn)行阻塞、運(yùn)行就緒、就緒運(yùn)行、阻塞就緒四種轉(zhuǎn)換關(guān)系。圖8.3.4 任務(wù)間的狀態(tài)轉(zhuǎn)換圖n4任務(wù)控制塊任務(wù)控制塊nTCB(Task Control Block,任務(wù)控制塊)是
46、在操作系統(tǒng)當(dāng)中用來描述和管理一個任務(wù)的數(shù)據(jù)結(jié)構(gòu)。通過對各個任務(wù)的TCB的操作來實(shí)現(xiàn)任務(wù)管理。利用TCB這個數(shù)據(jù)結(jié)構(gòu)可以描述任務(wù)的基本情況,以及它的運(yùn)行變化過程??梢园裈CB看成是任務(wù)存在的唯一標(biāo)志。當(dāng)需要創(chuàng)建一個新任務(wù)的時候,就為它生成一個TCB,并初始化這個TCB的內(nèi)容;當(dāng)需要終止一個任務(wù)的時候,只要回收它的TCB即可。對任務(wù)的組織和管理可以通過對它們的TCB的組織和管理來實(shí)現(xiàn)。TCB主要包括任務(wù)的管理信息、CPU上下文信息、資源管理信息等內(nèi)容。 n(1)任務(wù)的管理信息n任務(wù)的管理信息包括任務(wù)的標(biāo)識ID、任務(wù)的狀態(tài)、任務(wù)的優(yōu)先級、任務(wù)的調(diào)度信息、任務(wù)的時間統(tǒng)計(jì)信息、各種隊(duì)列指針等。n(2)C
47、PU上下文信息nCPU上下文信息包括通用寄存器、PC寄存器、程序狀態(tài)字、棧指針等各種CPU寄存器的當(dāng)前值。在實(shí)際的嵌入式系統(tǒng)中,CPU上下文信息不一定直接存放在TCB當(dāng)中,而是存放在任務(wù)的棧當(dāng)中,可以通過相應(yīng)的棧指針來訪問。n(3)資源管理信息n在操作系統(tǒng)中,任務(wù)表示的是進(jìn)程,則還應(yīng)包含一些資源管理方面的信息,如段表地址、頁表地址等存儲管理方面的信息,根目錄、文件描述字等文件管理方面的信息。n5任務(wù)切換任務(wù)切換n任務(wù)切換(context switching)是指一個任務(wù)正在CPU上運(yùn)行,由于某種原因,系統(tǒng)需要調(diào)度另一個任務(wù)去運(yùn)行,那么這時就需要進(jìn)行把當(dāng)前任務(wù)的運(yùn)行上下文保存起來,并設(shè)置新任務(wù)的
48、上下文,這一過程稱為任務(wù)切換。n任務(wù)切換通常包含有以下幾個基本步驟:n(1)將處理器的運(yùn)行上下文保存在當(dāng)前任務(wù)的TCB中;n(2)更新當(dāng)前任務(wù)的狀態(tài),從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)或阻塞狀態(tài)。n(3)按照一定的策略,從所有處于就緒狀態(tài)的任務(wù)中選擇一個去運(yùn)行。n(4)修改新任務(wù)的狀態(tài),從就緒狀態(tài)變成運(yùn)行狀態(tài)。n(5)根據(jù)新任務(wù)的TCB的內(nèi)容,恢復(fù)它的運(yùn)行上下文環(huán)境。n6任務(wù)隊(duì)列任務(wù)隊(duì)列n在一個多任務(wù)的操作系統(tǒng)中,各個任務(wù)的狀態(tài)是經(jīng)常變化的,有時處于運(yùn)行狀態(tài),有時處于就緒狀態(tài),有時又處于阻塞狀態(tài)。通常采用任務(wù)隊(duì)列的方式來組織它的所有任務(wù),以提高對這些任務(wù)的管理效率。n操作系統(tǒng)用一組隊(duì)列來表示系統(tǒng)當(dāng)中所有任
49、務(wù)的當(dāng)前狀態(tài)。例如,處于運(yùn)行狀態(tài)的所有任務(wù)構(gòu)成了運(yùn)行隊(duì)列,處于就緒狀態(tài)的所有任務(wù)構(gòu)成了就緒隊(duì)列,而對于處于阻塞狀態(tài)的任務(wù),則要根據(jù)它們阻塞的原因,分別構(gòu)成相應(yīng)的阻塞隊(duì)列。不同的狀態(tài)用不同的隊(duì)列來表示。然后,對于系統(tǒng)當(dāng)中的每一個任務(wù),根據(jù)它的狀態(tài)把它的TCB加入到相應(yīng)的隊(duì)列當(dāng)中去。如果一個任務(wù)的狀態(tài)發(fā)生變化,就要把它的TCB從一個狀態(tài)隊(duì)列中脫離出來,加入到另一個隊(duì)列當(dāng)中去。8.3.4 任務(wù)的調(diào)度n1任務(wù)調(diào)度概述任務(wù)調(diào)度概述n在多道程序操作系統(tǒng)中,當(dāng)有兩個或多個任務(wù)同時處于就緒狀態(tài)時,而系統(tǒng)中只有一個CPU而且這個CPU己經(jīng)空閑下來了,就會出現(xiàn)多個任務(wù)同時去競爭這個CPU的情況。通常利用調(diào)度器(s
50、cheduler)選擇就緒隊(duì)列中的那些任務(wù)中的一個去運(yùn)行,調(diào)度器是CPU這個資源的管理者。調(diào)度器在決策過程中所采用的算法稱為調(diào)度算法。 n一般來說,在一個新的任務(wù)被創(chuàng)建時、在一個任務(wù)運(yùn)行結(jié)束時、在一個任務(wù)由于I/O操作、信號量或其他原因被阻塞時、在一個I/O中斷發(fā)生時、在一個時鐘中斷發(fā)生時這五種調(diào)度時機(jī)都可能會發(fā)生任務(wù)的調(diào)度。n任務(wù)調(diào)度存在可搶占調(diào)度(preemptive)和不可搶占調(diào)度(nonpreemptive)兩種調(diào)度方式。n(1)在可搶占調(diào)度方式,當(dāng)一個任務(wù)正在運(yùn)行的時候,出現(xiàn)調(diào)度時機(jī)當(dāng)中的五種情況之一,都有可能會發(fā)生調(diào)度。調(diào)度程序可以去打斷它,并安排另外的任務(wù)去運(yùn)行。實(shí)時操作系統(tǒng)大都
51、采用可搶占的調(diào)度方式。n(2)在不可搶占調(diào)度方式,一個任務(wù)長時間地占用著CPU系統(tǒng)也不會強(qiáng)制它中止。當(dāng)出現(xiàn)新任務(wù)創(chuàng)建、任務(wù)運(yùn)行結(jié)束及任務(wù)被阻塞的調(diào)度時機(jī)時,有可能會發(fā)生調(diào)度。而對于發(fā)生的各種中斷,并不會去調(diào)用調(diào)度程序,而是在中斷處理完成后,又會回到剛才被打斷的任務(wù)中繼續(xù)執(zhí)行。n在嵌入式操作系統(tǒng)中,存在著許多的調(diào)度算法,每一種算法都有各自的優(yōu)點(diǎn)和缺點(diǎn)??梢愿鶕?jù)響應(yīng)時間、周轉(zhuǎn)時間、調(diào)度開銷、公平性、均衡性、吞吐量等指標(biāo)來評價一個調(diào)度算法的好壞。其中:n 調(diào)度器為一個就緒任務(wù)進(jìn)行上下文切換時所需的時間,以及任務(wù)在就緒隊(duì)列中的等待時間稱為響應(yīng)時間( response time )。n 一個任務(wù)從提交到
52、完成所經(jīng)歷的時間稱為周轉(zhuǎn)時間(turnaround time )。n 調(diào)度器在做出調(diào)度決策時所需要的時間和空間開銷稱為調(diào)度開銷(overhead)。n 公平性(fairness )是指大致相當(dāng)?shù)膬蓚€任務(wù)所得到的CPU時間也應(yīng)該是大致相同的。另外,要防止饑餓(starvation)情況出現(xiàn),即某一個任務(wù)始終得不到處理器去運(yùn)行。n 均衡性(balance)是指要盡可能使整個系統(tǒng)的各個部分(CPU,I/O)都忙起來,提高系統(tǒng)資源的使用效率。n 單位時間內(nèi)完成的任務(wù)數(shù)量稱為吞吐量(throughput )。n對于一個調(diào)度算法來說,這些指標(biāo)中一些是共存的,而另一些是相互牽制的,這些指標(biāo)不可能全部都實(shí)現(xiàn),
53、而是需要根據(jù)系統(tǒng)的要求,綜合權(quán)衡和折中選擇。n2先來先服務(wù)算法(先來先服務(wù)算法(First Come First Served,F(xiàn)CFS)nFCFS(First Come First Served,先來先服務(wù)算法)是一種最簡單的調(diào)度算法。 FCFS的基本思想就是按照任務(wù)到達(dá)的先后次序來進(jìn)行調(diào)度,它是一種不可搶占的調(diào)度方式。FCFS也叫做FIFO(First In First Out,先進(jìn)先出算法)。nFCFS的最大優(yōu)點(diǎn)就是簡單,易于理解也易于實(shí)現(xiàn)。缺點(diǎn)是一批任務(wù)的平均周轉(zhuǎn)時間取決于各個任務(wù)到達(dá)的順序,如果短任務(wù)位于長任務(wù)之后,那么將增大平均周轉(zhuǎn)時間。n3短作業(yè)優(yōu)先算法(短作業(yè)優(yōu)先算法(Shor
54、test Job First,SJF)n在SJF(Shortest Job First,短作業(yè)優(yōu)先算法)中,在各個任務(wù)在開始執(zhí)行前,事先預(yù)計(jì)好各任務(wù)的執(zhí)行時間,調(diào)度算法根據(jù)這些預(yù)計(jì)時間,安排執(zhí)行時間較短的任務(wù)優(yōu)先執(zhí)行??梢宰C明,對于一批同時到達(dá)的任務(wù),采用SJF算法將得到一個最小的平均周轉(zhuǎn)時間。nSJF算法有不可搶占方式和可搶占方式兩種實(shí)現(xiàn)方案。在不可搶占方式,只有任務(wù)運(yùn)行完畢或者是被阻塞時,才會讓出CPU進(jìn)行新的調(diào)度。而在可搶占方式,當(dāng)前任務(wù)正在運(yùn)行的時候,來了一個比它執(zhí)行時間更短的任務(wù),而且它的運(yùn)行時間要小于當(dāng)前正在運(yùn)行的任務(wù)的剩余時間,那么這個新任務(wù)就會搶占CPU去運(yùn)行。這種方法也稱為S
55、RTF(Shortest Remaining Time First,最短剩余時間優(yōu)先算法)n不可搶占的SJF算法如圖8.3.5所示,由于任務(wù)T3的執(zhí)行時間最短,所以首先被調(diào)度運(yùn)行,其次是T1和T2。圖8.3.5 SJF算法示意圖n4時間片輪轉(zhuǎn)算法(時間片輪轉(zhuǎn)算法(Round Robin,RR)nRR算法如圖8.3.6所示。在RR(Round Robin,時間片輪轉(zhuǎn)算法)中,把系統(tǒng)當(dāng)中的所有就緒任務(wù)按照先來先服務(wù)的原則進(jìn)行排列,然后,在每次調(diào)度的時候,處理器分派給隊(duì)列當(dāng)中的第一個任務(wù)一小段CPU執(zhí)行時間(time slice,時間片)。當(dāng)這個時間片結(jié)束的時候,如果任務(wù)還沒有執(zhí)行完的話,將會發(fā)生時
56、鐘中斷,調(diào)度器將會暫停當(dāng)前任務(wù)的執(zhí)行,并把這個任務(wù)送到就緒隊(duì)列的末尾,然后再執(zhí)行當(dāng)前的隊(duì)列的第一個任務(wù)。如果一個任務(wù)在分配給它的時間片結(jié)束前就已經(jīng)運(yùn)行結(jié)束了或者是被阻塞了,那么它就會立即讓出CPU給其他的任務(wù)。n采用RR算法,各個就緒任務(wù)平均地分配CPU的使用時間,例如有n個就緒任務(wù),那么每個任務(wù)將得到1/n的CPU時間。n采用RR算法時,時間片q既不能太大,也不能太小。q太大,每個任務(wù)都在一個時間片內(nèi)完成,這就失去了RR算法的意義。如果q太小,每個任務(wù)都需要更多的時間片才能運(yùn)行完,增加了在任務(wù)之間的切換次數(shù),增大了系統(tǒng)的管理開銷,降低了CPU的使用效率。 圖8.3.6 RR算法示意圖n5優(yōu)先
57、級算法(優(yōu)先級算法(priority)n在優(yōu)先級調(diào)度算法(priority)中,給每一個任務(wù)都設(shè)置一個優(yōu)先級,然后在任務(wù)調(diào)度的時候,在所有處于就緒狀態(tài)的任務(wù)中選擇優(yōu)先級最高的那個任務(wù)去運(yùn)行。例如,在短作業(yè)優(yōu)先算法中,以時間為優(yōu)先級,運(yùn)行時間越短,優(yōu)先級越高。n優(yōu)先級算法可以分為可搶占和不可搶占兩種方式。在可搶占方式中,當(dāng)一個任務(wù)正在運(yùn)行的時候,如果這時來了一個新的任務(wù),其優(yōu)先級更高,則立即搶占CPU去運(yùn)行這個新任務(wù)。而不可搶占方式則是需要等當(dāng)前任務(wù)運(yùn)行完后再決定。n可以采用靜態(tài)方式和動態(tài)方式確定任務(wù)的優(yōu)先級。靜態(tài)優(yōu)先級方式根據(jù)任務(wù)的類型或重要性,在創(chuàng)建任務(wù)的時候就確定任務(wù)的優(yōu)先級,并且一直保持
58、不變直到任務(wù)結(jié)束。動態(tài)優(yōu)先級方式在創(chuàng)建任務(wù)的時候確定任務(wù)的優(yōu)先級,但是該優(yōu)先級可以在任務(wù)的運(yùn)行過程中動態(tài)改變,以便獲得更好的調(diào)度性能。動態(tài)優(yōu)先級方式可以克服在靜態(tài)優(yōu)先級方式中高優(yōu)先級的任務(wù)一直占用著CPU,而那些低優(yōu)先級的任務(wù)可能會長時間地得不到CPU的情況。n在優(yōu)先級算法中,對于優(yōu)先級相同的兩個任務(wù),通常是把任務(wù)按照不同的優(yōu)先級進(jìn)行分組,然后在不同組的任務(wù)之間使用優(yōu)先級算法,而在同一組的各個任務(wù)之間使用時間片輪轉(zhuǎn)法。8.3.5 實(shí)時系統(tǒng)調(diào)度n許多嵌入式操作系統(tǒng)都是實(shí)時操作系統(tǒng)(RTOS),實(shí)時系統(tǒng)的調(diào)度追求的是實(shí)時性,RTOS調(diào)度器要讓每個任務(wù)都在其最終時間期限(deadline)之前完成,
59、而各任務(wù)之間的公平性并不是最重要的指標(biāo)。RTOS調(diào)度器多采用基于優(yōu)先級的可搶占調(diào)度算法。n1RTOS任務(wù)模型任務(wù)模型nRTOS任務(wù)模型如圖8.3.7所示,在RTOS任務(wù)模型中,每一個任務(wù)用一個三元組來表示(執(zhí)行時間、周期、時間期限)。其中:執(zhí)行時間(execution time)E(i)是指對于第i個任務(wù),當(dāng)它所需要的資源都己具備時,它的執(zhí)行所需要的最長時間。周期(period)P(i)是指第i個任務(wù)的連續(xù)兩次運(yùn)行之間的最小時間間隔。時間期限(deadline)是指D(i)第i個任務(wù)所允許的最大響應(yīng)時間(從任務(wù)啟動到運(yùn)行結(jié)束所需的時間)。一般來說,一個任務(wù)的周期時間同時也是它的時間期限,因?yàn)樵?/p>
60、任務(wù)必須在它的下一個周期開始之前,完成此次運(yùn)行。啟動時間t(i)是指第i個任務(wù)的第i次執(zhí)行的開始時間。圖8.3.7 RTOS任務(wù)模型n2單調(diào)速率調(diào)度算法(單調(diào)速率調(diào)度算法(Rate Monotonic Scheduling,RMS)nRMS(Rate Monotonic Scheduling,單調(diào)速率調(diào)度算法)是一種靜態(tài)優(yōu)先級調(diào)度算法。nRMS算法假設(shè):所有的任務(wù)都是周期性任務(wù);任務(wù)的時間期限等于它的周期;任務(wù)在每個周期內(nèi)的執(zhí)行時間是一個常量;任務(wù)之間不進(jìn)行通信,也不需要同步;任務(wù)可以在任何位置被搶占,不存在臨界區(qū)的問題。nRMS算法的基本思路是任務(wù)的優(yōu)先級與它的周期表現(xiàn)為單調(diào)函數(shù)的關(guān)系,任務(wù)
61、的周期越短,優(yōu)先級越高;任務(wù)的周期越長,優(yōu)先級越低。nRMS算法是一種最優(yōu)調(diào)度算法。如果存在一種基于靜態(tài)優(yōu)先級的調(diào)度順序,使得每個任務(wù)都能在其期限時間內(nèi)完成,那么 RMS算法總能找到這樣的一種可行的調(diào)度方案。n在任務(wù)比較多的情況下,RMS可調(diào)度的CPU使用率上限為ln20.69,CPU使用率如此低,對于大多數(shù)系統(tǒng)來說是不可接受的。另外,在一個實(shí)際的系統(tǒng)中,任務(wù)之間通常都需要進(jìn)行通信和同步。 n3最早期限優(yōu)先算法(最早期限優(yōu)先算法(Earliest Deadline First,EDF)nEDF(Earliest Deadline First,最早期限優(yōu)先)調(diào)度算法是一種動態(tài)優(yōu)先級調(diào)度算法。nE
62、DF算法的基本思路是:根據(jù)任務(wù)的截止時間來確定其優(yōu)先級,對于時間期限最近的任務(wù),分配最高的優(yōu)先級。當(dāng)有一個新的任務(wù)處于就緒狀態(tài)時,各個任務(wù)的優(yōu)先級就有可能要進(jìn)行調(diào)整。nEDF算法假設(shè)條件除了它不要求系統(tǒng)中的任務(wù)都必須是周期任務(wù)外,其他的假設(shè)條件與RMS相同。nEDF算法可調(diào)度上限為100。對于給定的一組任務(wù),只要它們的CPU使用率小于或等于1,EDF就能找到合適的調(diào)度順序,使得每個任務(wù)都能在自己的時間期限內(nèi)完成。8.4 嵌入式系統(tǒng)的存儲管理n8.4.1嵌入式存儲管理方式的特點(diǎn)n 嵌入式系統(tǒng)的存儲管理方式與系統(tǒng)的實(shí)際應(yīng)用領(lǐng)域及硬件環(huán)境密切相關(guān),不同的嵌入式系統(tǒng)采用不同的存儲管理方式,需要考慮硬件
63、條件、實(shí)時性要求、系統(tǒng)規(guī)模、可靠性要求等因素。系統(tǒng)的實(shí)時性要求直接影響到存儲管理的實(shí)現(xiàn)方式,為了確保系統(tǒng)的實(shí)時性,快速和確定是內(nèi)存管理的基本要求,即在存儲管理方面的開銷不能太大,對于每一項(xiàng)工作都要有明確的實(shí)時約束,即必須在某個限定的時刻之前完成。在實(shí)時系統(tǒng)中,存儲管理方法就比較簡單,甚至不提供存儲管理功能。而對一些實(shí)時性要求不高,可靠性要求比較高、比較復(fù)雜的應(yīng)用系統(tǒng),需要實(shí)現(xiàn)對操作系統(tǒng)或任務(wù)的保護(hù),在存儲管理方式上就相對較為復(fù)雜。n在嵌入式微處理器中,MMU(Memory Management Unit, 存儲管理單元)提供了一種內(nèi)存保護(hù)的硬件機(jī)制。內(nèi)存保護(hù)用來防止地址越界和防止操作越權(quán)。采用
64、內(nèi)存保護(hù)機(jī)制的每個應(yīng)用程序都有自己獨(dú)立的地址空間,當(dāng)一個應(yīng)用程序要訪問某個內(nèi)存單元時,由硬件檢查該地址是否在限定的地址空間內(nèi),如果不是的話就要進(jìn)行地址越界處理;二是防對于允許多個應(yīng)用程序共享的某塊存儲區(qū)域,每個應(yīng)用程序都有自己的訪問權(quán)限,如果違反了權(quán)限規(guī)定,則要進(jìn)行操作越權(quán)處理。n操作系統(tǒng)通常利用MMU來實(shí)現(xiàn)系統(tǒng)內(nèi)核與應(yīng)用程序的隔離,以及應(yīng)用程序與應(yīng)用程序之間的隔離。防止應(yīng)用程序去破壞操作系統(tǒng)和其他應(yīng)用程序的代碼和數(shù)據(jù),防止應(yīng)用程序?qū)τ布闹苯釉L問。MMU通常只在一些對安全性和可靠性的要求比較高、系統(tǒng)比較復(fù)雜的嵌入式系統(tǒng)中存在。8.4.2存儲管理的實(shí)模式與保護(hù)模式n 實(shí)模式和保護(hù)模式是嵌入式操
65、作系統(tǒng)中常見的兩個存儲管理方式。n 1實(shí)模式存儲管理實(shí)模式存儲管理 n在實(shí)模式存儲管理方式中,系統(tǒng)不使用MMU;不劃分“系統(tǒng)空間”和“用戶空間”,整個系統(tǒng)只有一個地址空間,即物理內(nèi)存地址空間;應(yīng)用程序和系統(tǒng)程序都能直接對所有的內(nèi)存單元進(jìn)行隨意訪問,無須進(jìn)行地址映射;操作系統(tǒng)的內(nèi)核與外圍應(yīng)用程序在編譯連接后,兩者通常被集成在同一個系統(tǒng)文件中;系統(tǒng)中的 “任務(wù)”或“進(jìn)程”均是內(nèi)核線程,只有運(yùn)行上下文和棧是獨(dú)享的,其他資源都是共享的。n在實(shí)模式存儲管理方式中,系統(tǒng)的內(nèi)存地址空間一般可以分為text、data、bss、堆、棧五個部分。其中:.text:(代碼段)用來存放操作系統(tǒng)和應(yīng)用程序的所有代碼。.
66、data:(數(shù)據(jù)段)用來存放操作系統(tǒng)和應(yīng)用程序當(dāng)中所有帶有初始值的全局變量。.bss:用來存放操作系統(tǒng)和應(yīng)用程序當(dāng)中所有未帶初始值的全局變量。堆為動態(tài)分配的內(nèi)存空間,在系統(tǒng)運(yùn)行時,可以通過類似于malloc/free之類的函數(shù)來申請或釋放一段連續(xù)的內(nèi)存空間。棧用來保存運(yùn)行上下文以及函數(shù)調(diào)用時的局部變量和運(yùn)行參數(shù)。n對于實(shí)時系統(tǒng)來說,實(shí)模式方案簡單、存儲管理的開銷確定,比較適合于規(guī)模較小、簡單和實(shí)時性要求較高的系統(tǒng)。其缺點(diǎn)是沒有存儲保護(hù)、安全性差,在應(yīng)用程序中出現(xiàn)的任何一個小錯誤或蓄意攻擊都有可能導(dǎo)致整個系統(tǒng)的崩潰。n 2保護(hù)模式存儲管理n在保護(hù)模式存儲管理方式中,微處理器必須具有MMU硬件并啟用它。n在保護(hù)模式存儲管理方式中,系統(tǒng)內(nèi)核和用戶程序有各自獨(dú)立的地址空間,操作系統(tǒng)和MMU共同完成邏輯地址到物理地址的映射;每個應(yīng)用程序只能訪問自己的地址空間,對于共享的內(nèi)存區(qū)域,也必須按照規(guī)定的權(quán)限規(guī)則來訪問,具有存儲保護(hù)功能。n保護(hù)模式存儲管理方式的安全性和可靠性較好,適合于規(guī)模較大、較復(fù)雜和實(shí)時性要求不太高的系統(tǒng)。8.4.3分區(qū)存儲管理n分區(qū)存儲管理適合在多道程序操作系統(tǒng)中應(yīng)用。分區(qū)存儲管理
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案