




已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
【畢業(yè)學(xué)位論文】基于ARM的嵌入式MINIX3操作系統(tǒng)的移植-計(jì)算數(shù)學(xué).pdf 免費(fèi)下載
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
蘭州大學(xué)碩士學(xué)位論文基于鵬申請(qǐng)學(xué)位級(jí)別:碩士專業(yè):數(shù)學(xué) 計(jì)算數(shù)學(xué)指導(dǎo)教師:周宇斌20080501蘭州大學(xué)2008屆碩士學(xué)位論文摘 要嵌入式操作系統(tǒng)是嵌入式系統(tǒng)應(yīng)用的核心。完成簡(jiǎn)單功能的嵌入式系統(tǒng)一般不需要操作系統(tǒng),但是隨著所謂后入式系統(tǒng)設(shè)計(jì)日趨復(fù)雜,嵌入式操作系統(tǒng)就必不可少了。一般而言,嵌入式操作系統(tǒng)不同于一般意義的計(jì)算機(jī)操作系統(tǒng),它有占用空間小、執(zhí)行效率高、方便進(jìn)行個(gè)性化定制和軟件要求固化存儲(chǔ)等特點(diǎn)。本文在討論了嵌入式操作系統(tǒng)的基本理論之后,論述了操作系統(tǒng)的特點(diǎn),指出了向嵌入式操作系統(tǒng)方面發(fā)展的意義和可行性。建立可移植代碼是操作系統(tǒng)移植的首要步驟和重要途徑,本文又論述了建立可移植代碼的一般方法和過程。而后深入分析了操作系統(tǒng)的內(nèi)核結(jié)構(gòu)及組成部分,重組了內(nèi)核目錄樹,列出了移植已有代碼的基礎(chǔ)上,分離了一部分機(jī)器相關(guān)代碼和體系結(jié)構(gòu)不相關(guān)代碼,建立了相應(yīng)的可移植代碼。提到嵌入式,就不能不提文就是針對(duì)中簡(jiǎn)單介紹了且對(duì)應(yīng)內(nèi)核的部分代碼。最后在深入分析了合軟實(shí)時(shí)操作系統(tǒng)進(jìn)程調(diào)度特點(diǎn)和要求,改進(jìn)了進(jìn)程調(diào)度策略,使之適合軟實(shí)時(shí)操作系統(tǒng)的要求,并給出了修改后的相關(guān)源代碼。關(guān)鍵詞:嵌入式操作系統(tǒng);機(jī)器不相關(guān)代碼;機(jī)器相關(guān)代碼;內(nèi)核驅(qū)動(dòng)程序模型:非搶占式調(diào)度算法;軟實(shí)時(shí)進(jìn)程調(diào)度蘭州大學(xué)2008屆碩士學(xué)位論文is of he be to t C as it a of up on OM O of is to a so a of be t to RM is a ,it in is of 翎性聲明本人鄭重聲明:本人所里交的學(xué)位論文,是在導(dǎo)師的指器下獨(dú)立進(jìn)幸亍研究所取得的成果。學(xué)位論文中熙引用他人已經(jīng)發(fā)表竣未發(fā)表的成采、數(shù)攥、觀點(diǎn)等,均已明確注暖密處。除文中已經(jīng)注明引用的內(nèi)容外,不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫過的科研成果。對(duì)本文的研究成果做出羨要貢獻(xiàn)的個(gè)人和集體,均已在文中戩明確方式標(biāo)明。艫篙黧全赴縋 論文作者簽名:矧參鬟弩關(guān)于學(xué)位論文使用授權(quán)的聲明本人在導(dǎo)師指導(dǎo)下所完成熬論文及耀關(guān)熬職務(wù)作品,知識(shí)產(chǎn)權(quán)羥震蘭攤大學(xué)。本天完全了解蘭州大學(xué)有關(guān)保存、使用學(xué)位論文的規(guī)定。同意學(xué)校保存或向國(guó)家有關(guān)部門絨機(jī)構(gòu)送交論文的紙質(zhì)舨和電子版,允許論文被套闋和借閱;本人授權(quán)蘭州大學(xué)可以將本學(xué)位論文的全部絨部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用任何復(fù)制手段保存和匯編本學(xué)位論文。本人離校后發(fā)表、使用學(xué)位論文或與該論文童接相關(guān)的學(xué)術(shù)論文或成果時(shí),第一署名萃位仍然為蘭矧大學(xué)。保密論文在解密后應(yīng)遵守此規(guī)定。, 論文作者籜名:洶 導(dǎo)師簽名:虐敞基麓:拳。蘭州大學(xué)2008屆碩士學(xué)位論文第1章緒論11嵌入式系統(tǒng)概述隨著多媒體技術(shù)、通信技術(shù)相結(jié)合的信息時(shí)代的快速發(fā)展,互聯(lián)網(wǎng)的廣泛應(yīng)用,嵌入式系統(tǒng)和嵌入式技術(shù)已經(jīng)和人們的生活緊密相連。嵌入式系統(tǒng)的應(yīng)用涉及眾多領(lǐng)域,深入到了社會(huì)、生活的各個(gè)方而。其中主要有:家用電器、通信設(shè)備工業(yè)、儀器儀表、導(dǎo)航控制、商業(yè)和金融、辦公設(shè)備、交通運(yùn)輸、建筑和醫(yī)療等領(lǐng)域。嵌入式系統(tǒng)已經(jīng)有近30年的發(fā)展歷史,其發(fā)展過程是硬件和軟件交替進(jìn)行的雙螺旋式發(fā)展。最早的單片機(jī)是1976年的些早期的單片機(jī)均含有256字節(jié)的個(gè)8位并行接口、一個(gè)全雙工串行接口、兩個(gè)20世紀(jì)80年代,8048的基礎(chǔ)上研制成功了8051。1981年該內(nèi)核包含了許多傳統(tǒng)操作系統(tǒng)的特征,包括任務(wù)管理、任務(wù)間通信、同步與互斥、中斷支持、內(nèi)存管理等功能。這個(gè)實(shí)時(shí)內(nèi)核可以運(yùn)行在8051單片機(jī)上。嵌入式微控制器的出現(xiàn)使計(jì)算機(jī)工程應(yīng)用史上的一個(gè)里程碑,隨著微電子技術(shù)的飛速發(fā)展,可能的情況下,各種機(jī)電設(shè)備已經(jīng)或者正在嵌入前,中、高檔8位嵌入式微控制器,2位嵌入式微控制器,以及一些專用嵌入式微控制器(如數(shù)字信號(hào)處理、數(shù)字圖像處理、通信控制單片機(jī)等)已在通信系統(tǒng)、因特網(wǎng)系統(tǒng)、非嵌入式計(jì)算機(jī)系統(tǒng)、工業(yè)測(cè)控系統(tǒng)、機(jī)器人感知行走系統(tǒng)、分布式測(cè)控系統(tǒng)、快速多機(jī)實(shí)時(shí)處理系統(tǒng)和圖像系統(tǒng)中成為不可缺少的重要組成部分。111 嵌入式系統(tǒng)的定義我們用計(jì)算機(jī)系統(tǒng)來處理并管理各種數(shù)據(jù),這里所說的數(shù)據(jù)包括文字、數(shù)字、圖片以及各種指令。人們希望能制造出各種智能機(jī)器,這些機(jī)器需要一個(gè)系統(tǒng)來管理,而這些機(jī)器又可能很小,小如手機(jī),這就需要一個(gè)嵌入在其中的管理系統(tǒng),而這個(gè)系統(tǒng)如何管理這些機(jī)器,就要看它的軟件了。我們把帶有微處理器的專用軟硬件系統(tǒng)統(tǒng)稱為嵌入式計(jì)算機(jī)系統(tǒng),通常稱為嵌入式系統(tǒng)。但是不一定符合以上要求的計(jì)算機(jī)系統(tǒng)就能被稱為嵌入式系統(tǒng)。例如一臺(tái)安裝了此,際電器和電子工程師協(xié)會(huì))對(duì)嵌入式系統(tǒng)的定義是:用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置(to or of or 可以看出此定義是從應(yīng)用方面考慮的,嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)電等附屬裝置。蘭州大學(xué)2008屆碩士學(xué)位論文功能層 泣甩程序蜀平臺(tái)板級(jí)支持包嵌入式操作系統(tǒng)中間層 硬件抽象層(月魁)板級(jí)支持包(件層 D用接口加 :嵌入式系統(tǒng)的組成綜合各方面,我們得出嵌入式系統(tǒng)的一般的定義: “以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可剪裁,功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)?!?12 嵌入式系統(tǒng)的組成總體上嵌入式系統(tǒng)可劃分成硬件和軟件兩部分,硬件一般由高性能的微處理器和外圍的接口電路組成,軟件一般由硬件抽象層、嵌入式操作系統(tǒng)、板級(jí)支持包。硬件層:硬件是整個(gè)嵌入式操作系統(tǒng)和應(yīng)用程序運(yùn)行的平臺(tái),包括輸入和輸出接N驅(qū)動(dòng)電路、處理器、存儲(chǔ)器、定時(shí)器、串口、中斷控制器、外設(shè)器件、圖形控制器及相關(guān)系統(tǒng)電路等部分。中間層:硬件抽象層(負(fù)責(zé)對(duì)各種硬件功能提供軟件接口,包括硬件初始化、硬件時(shí)鐘、中斷板級(jí)支持包、計(jì)時(shí)器時(shí)鐘、總線管理、內(nèi)存地址映射等。嵌入式操作系統(tǒng):實(shí)現(xiàn)對(duì)資源的訪問和管理,完成任務(wù)調(diào)度,支持應(yīng)用軟件的運(yùn)行及開發(fā)。板級(jí)支持包(供與硬件相關(guān)的設(shè)備驅(qū)動(dòng)。應(yīng)用平臺(tái):應(yīng)用開發(fā)商提供的可重用的應(yīng)用平臺(tái),封裝一些常用功能,同時(shí)提供于二次開發(fā)。應(yīng)用軟件:應(yīng)用軟件層位于嵌入式系統(tǒng)層次結(jié)構(gòu)的最頂層,直接與用戶交互。113 嵌入式系統(tǒng)的特點(diǎn)嵌入式系統(tǒng)是一種針對(duì)于特定任務(wù)、特殊環(huán)境而進(jìn)行特殊設(shè)計(jì)的定制產(chǎn)品,所以與傳統(tǒng)的計(jì)算機(jī)系統(tǒng)相比,有以下特點(diǎn):1操作系統(tǒng)內(nèi)核小,資源少2蘭州大學(xué)2008屆碩士學(xué)位論文2專用性強(qiáng)3系統(tǒng)穩(wěn)定持久4軟硬件結(jié)合緊密5開發(fā)需專門的環(huán)境和開發(fā)工具6軟件要求固態(tài)化存儲(chǔ)7實(shí)時(shí)性要求高114嵌入式系統(tǒng)的分類由于嵌入式系統(tǒng)的用途廣泛,種類繁多,人們對(duì)嵌入式系統(tǒng)的理解也各不相同,所以其分類方法也存在著多種方式:1根據(jù)嵌入方式分為:整機(jī)式嵌入、部件式嵌入、芯片式嵌入。2根據(jù)嵌入式軟件類型分為單線程程序嵌入式系統(tǒng)、事件驅(qū)動(dòng)程序嵌入式系統(tǒng)。3根據(jù)實(shí)時(shí)性可分為實(shí)時(shí)系統(tǒng)和非實(shí)時(shí)系統(tǒng)。4根據(jù)嵌入式系統(tǒng)的復(fù)雜程度,可分為單微處理器嵌入式系統(tǒng)、組件嵌入式系統(tǒng)、分布式嵌入式系統(tǒng)。115 嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)(是一種特殊的嵌入式軟件,是基于嵌入式操作系統(tǒng)的嵌入式系統(tǒng)中軟件層的基礎(chǔ),其它應(yīng)用都是建立在嵌入式操作系統(tǒng)之上。它實(shí)際上是段系統(tǒng)復(fù)位后首先執(zhí)行的程序,主要負(fù)責(zé)嵌入式系統(tǒng)的全部軟、硬件資源的分配、調(diào)度,控制、協(xié)調(diào)并發(fā)活動(dòng),它將斷、定時(shí)器存儲(chǔ)器、供給用戶的是一個(gè)標(biāo)準(zhǔn)的入式操作系統(tǒng)必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過裝卸某些模塊來達(dá)到系統(tǒng)所要求的功能。許多早期的嵌入式系統(tǒng)開發(fā)者認(rèn)為嵌入式系統(tǒng)不需要操作系統(tǒng)。但現(xiàn)在除了最簡(jiǎn)單的系統(tǒng)外,越來越多的嵌入式系統(tǒng)引入了操作系統(tǒng)。比如中斷驅(qū)動(dòng)系統(tǒng)在引入嵌入式操作系統(tǒng)之后,系統(tǒng)的可靠性、安全性、可擴(kuò)展性、功能性、靈活性、可管理性都有了大大的提高。在很多嵌入式操作系統(tǒng)中封裝了越來越多的功能。除了對(duì)任務(wù)的切換、高度通信、同步、互斥、中斷管理、時(shí)鐘管理等,還可進(jìn)一步封裝內(nèi)存管理、網(wǎng)絡(luò)通信協(xié)議、文件管理等功能這些功能可根據(jù)需要進(jìn)行剪裁。1131 嵌入式操作系統(tǒng)的特點(diǎn)除了具備一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機(jī)制、中斷處理、文件處理等外,還有以下特點(diǎn):3蘭州大學(xué)2008屆碩士學(xué)位論文1可裝卸性。開放性、可伸縮性的體系結(jié)構(gòu)。2強(qiáng)實(shí)時(shí)性。用于各種設(shè)備控制當(dāng)中。3統(tǒng)一的接口。提供各種設(shè)備驅(qū)動(dòng)接口。4操作方便、簡(jiǎn)單。提供友好的圖形G。5提供強(qiáng)大的網(wǎng)絡(luò)功能。支持供各種移動(dòng)計(jì)算設(shè)備預(yù)留接口。6強(qiáng)穩(wěn)定性,弱交互性。7固化代碼。在嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式系統(tǒng)計(jì)算機(jī)的152 嵌入式操作系統(tǒng)的分類 。按經(jīng)營(yíng)模式分,目前市場(chǎng)上主流的嵌入式操作系統(tǒng)可分為商用和開源兩類;按實(shí)時(shí)性劃分,嵌入式操作系統(tǒng)可分為實(shí)時(shí)嵌入式操作系統(tǒng)和非實(shí)時(shí)嵌入式操作系統(tǒng)。1193 幾種典型的嵌入式操作系統(tǒng)的比較 一1典型的商用操作系統(tǒng)。其友好的開發(fā)環(huán)境、高性能的系統(tǒng)內(nèi)核,在實(shí)時(shí)操作系統(tǒng)領(lǐng)域是首屈一指的。定性和可靠性,具有可裁剪的微內(nèi)核結(jié)構(gòu)、高效的任務(wù)管理、靈活的任務(wù)間通信、微秒級(jí)的中斷處理,支持多種物理介質(zhì)及標(biāo)準(zhǔn)的、完整的持多種處理器,如家族成員有E 30,T 0等。疑是中是一種針對(duì)小容量、移動(dòng)式、智能化、32位、模塊化實(shí)時(shí)嵌入式操作系統(tǒng)。3嵌入式最大的特點(diǎn)是源代碼的公開并且遵循入式且有著龐大的開發(fā)人員群體,網(wǎng)絡(luò)功能優(yōu)秀,支持硬件數(shù)量龐大。嵌入式蘭州大學(xué)2008屆碩士學(xué)位論文12 來編程和學(xué)習(xí)一個(gè)完整的操作系統(tǒng)。當(dāng)時(shí)其它可用的操作系統(tǒng),例如商業(yè)化的產(chǎn)品,而它的許可證是不允許在課堂上使用或者研究源代碼的。如果只講解理論,會(huì)使學(xué)生對(duì)操作系統(tǒng)產(chǎn)生片面地理解。為了避免這種情況,就是用戶的角度看,是從內(nèi)部實(shí)現(xiàn)來看,它是與的組織結(jié)構(gòu)比塊化,而并非在又很多可用的開源的操作系統(tǒng),其中最著名的要數(shù)中于我來說,要通過以上一種系統(tǒng)去學(xué)懂操作系統(tǒng)太難了。這些系統(tǒng)擁有很多特性所以非常復(fù)雜?,F(xiàn)在有很多專家都在從事這些系統(tǒng)的開發(fā),而這些專家團(tuán)體非常龐大而且還在增長(zhǎng)。很小、高效而且快速。保持代碼的獨(dú)立性、整個(gè)系統(tǒng)的可擴(kuò)展性和穩(wěn)定性。在早期的時(shí)候,核心沒有使用硬件的一些功能,以保持對(duì)舊系統(tǒng)的兼容和對(duì)其他系統(tǒng)的可移植性。例如,到這篇論文書寫的時(shí)候,還不支持虛擬內(nèi)存,盡管大部分系統(tǒng)都硬件支持虛擬內(nèi)存以簡(jiǎn)化軟件的實(shí)現(xiàn)。但是些新特性使得21關(guān)于到2004年,以推出了。這個(gè)版本是為支持許多舊的體系結(jié)構(gòu),像8000,早期的核部分進(jìn)行了重新構(gòu)造,將幾乎所有的設(shè)備驅(qū)動(dòng)程序都放到了用戶空間,只保留了時(shí)鐘任務(wù)和系統(tǒng)任務(wù),進(jìn)一步減少了內(nèi)核空問的進(jìn)程,使得內(nèi)核更加簡(jiǎn)潔、穩(wěn)定。新版本可用于嵌入式系統(tǒng)。尤其是對(duì)于嵌入式應(yīng)用來說,簡(jiǎn)潔、模塊化和可靠性是非常關(guān)鍵的。13目標(biāo)平臺(tái)簡(jiǎn)介一種用于微控制器微處理器領(lǐng)域的觀能不說是一個(gè)奇跡??梢哉J(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。1991年要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。目前,采用)核的微處理器,即我們通常所說的6濃遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無(wú)線系統(tǒng)等各類產(chǎn)品市場(chǎng),基5蘭州大學(xué)2008屆碩士學(xué)位論文于上的市場(chǎng)份額,為知識(shí)產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),轉(zhuǎn)讓設(shè)計(jì)許可由合作公司生產(chǎn)各具特色的:卷片,世界各大半導(dǎo)體生產(chǎn)商從據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐?,從而形成自己的前,全世界有幾十家大的半?dǎo)體公司都使用此既使得造、軟件的支持,義使整個(gè)系統(tǒng)成本降低,使產(chǎn)品更容易進(jìn)入市場(chǎng)被消費(fèi)者所接受,更具有競(jìng)爭(zhēng)力先進(jìn)性就體現(xiàn)在它的處理器結(jié)構(gòu)的模塊化上。l,分別針對(duì)不同需求的應(yīng)用。 。本文實(shí)驗(yàn)選用的實(shí)驗(yàn)工具箱的驗(yàn)儀器硬件配置如圖12。14 向嵌入式操作系統(tǒng)移植的可行性類用戶的層次上來看是與是在內(nèi)部結(jié)構(gòu)上來講則是完全不同的。由于以比加模塊化的設(shè)計(jì)理念,整個(gè)操作系統(tǒng)就是所有系統(tǒng)進(jìn)程的集合,比起然要更加安全,更加穩(wěn)定。統(tǒng)一直采用了層次化的結(jié)構(gòu),從版本核空間中只保留最為核心的部分和設(shè)備驅(qū)動(dòng)程序,文件系統(tǒng)等其它的系統(tǒng)進(jìn)程則放到了用戶空間。到了統(tǒng)的內(nèi)核部分進(jìn)一步減小,內(nèi)核中只保留了三個(gè)進(jìn)程:統(tǒng)任務(wù)和時(shí)鐘任務(wù),而將剩下的設(shè)備驅(qū)動(dòng)程序都放到了用戶空間,使得內(nèi)核部分的可執(zhí)行代碼只有不到4000行,這大大減少了內(nèi)核出錯(cuò)崩潰的可能性,進(jìn)一步提高了系統(tǒng)的穩(wěn)定性。在非微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)的內(nèi)核中,驅(qū)動(dòng)程序通常都是包含錯(cuò)誤最多的部分,一個(gè)驅(qū)動(dòng)程序出錯(cuò)就有可能引起操作系統(tǒng)的崩潰。而在中,這種情況不可能出現(xiàn),即使驅(qū)動(dòng)程序崩潰,也不會(huì)影響到操作系統(tǒng),而崩潰的驅(qū)動(dòng)程序也可以統(tǒng)過用戶空間的再生服務(wù)器(S)重新啟動(dòng)。而且需要添加一個(gè)新的驅(qū)動(dòng)程序的時(shí)候?qū)Σ僮飨到y(tǒng)內(nèi)核的影響也不會(huì)很大??梢哉f,從推出以來,結(jié)一下,操作系統(tǒng)向嵌入式操作系統(tǒng)領(lǐng)域發(fā)展的優(yōu)勢(shì)有:操作系統(tǒng)采用微內(nèi)核結(jié)構(gòu),內(nèi)核小,內(nèi)核可執(zhí)行代碼部分只有不到4000行。6蘭州大學(xué)2008屆碩士學(xué)位論文配置名稱 型號(hào) 說明片三星作頻率20394H 32M*2=64片,10100 8寸16B 個(gè)共陰極個(gè)個(gè)個(gè)個(gè)個(gè)處理器的4電位器控制輸入468線直接擴(kuò)展持雙語(yǔ)音通信記本硬盤,(:50C FA 個(gè)10位4針、20事:試驗(yàn)平臺(tái)配置系統(tǒng)占用資源少,可以在嵌入式系統(tǒng)有限的硬件資源上發(fā)揮出性能。系統(tǒng)采用高度的模塊化設(shè)計(jì),系統(tǒng)具有良好的伸縮性、擴(kuò)展性、開放性等都符合嵌入式系統(tǒng)可剪裁、開放性等要求。系統(tǒng)的結(jié)構(gòu)從根本上決定了它必定是一個(gè)安全的、穩(wěn)定的、持久的操作系統(tǒng),這也是嵌入式系統(tǒng)所要求的。為設(shè)備驅(qū)動(dòng)程序提供了一個(gè)與系統(tǒng)其它部分一樣的接口:將請(qǐng)求的消息發(fā)送給驅(qū)動(dòng)程序,然后驅(qū)動(dòng)程序根據(jù)消息中的操作碼和參數(shù)執(zhí)行相應(yīng)的操作。的內(nèi)存管理并沒有使用虛擬內(nèi)存管理,這個(gè)特性在某種程度上也使得它易于向嵌入式系統(tǒng)移植。7蘭州大學(xué)2008屆碩士學(xué)位論文15本文的主要工作借鑒目前國(guó)內(nèi)外對(duì)人進(jìn)行了操作系統(tǒng)向文完成了以下工作:1對(duì)嵌入式系統(tǒng)進(jìn)行了學(xué)習(xí)研究,歸納總結(jié)了嵌入式系統(tǒng)的特征。2對(duì)的內(nèi)核結(jié)構(gòu)、代碼組織進(jìn)行了深入的研究,并針對(duì)移植對(duì)內(nèi)核部分源代碼進(jìn)行了劃分,分離了機(jī)器相關(guān)部分和不相關(guān)部分代碼,并對(duì)分離后的代碼進(jìn)行了重新組織。3本人閱讀了M部分源代碼,分析了中進(jìn)程調(diào)度的原理和實(shí)現(xiàn)。4修改了內(nèi)核中進(jìn)程調(diào)度部分相關(guān)代碼,對(duì)向文的組織圍繞以上工作展開。第1章介紹了嵌入式系統(tǒng)和嵌入式操作系統(tǒng)的定義和特征,對(duì)操作系統(tǒng)向嵌入式系統(tǒng)進(jìn)行移植的優(yōu)勢(shì)和便利進(jìn)行了分析。第2章是移植代碼的前期工作,分析了如何在保持現(xiàn)有布局的基礎(chǔ)上劃分代碼,內(nèi)核驅(qū)動(dòng)程序模型的建立。然后講述了代碼中使用的匯編語(yǔ)言。第3章首先分析了操作系統(tǒng)的內(nèi)部結(jié)構(gòu)以及系統(tǒng)各部分的功能,重新建立代碼樹。后又分析了中的進(jìn)程調(diào)度,并對(duì)相關(guān)代碼進(jìn)行了移植的嘗試。第4章是這篇論文的結(jié)論。8蘭州大學(xué)2008屆碩士學(xué)位論文第2章移植的準(zhǔn)備當(dāng)要移植一個(gè)操作系統(tǒng)的時(shí)候,通常要從已存在的代碼開始。如果運(yùn)氣好的話,這些代碼已經(jīng)列出了機(jī)器相關(guān)代碼(很快能找到它們,那么要找機(jī)器不相關(guān)代碼(入口也很容易,移植也會(huì)簡(jiǎn)單而快速。如果不是這樣的話,就需要一個(gè)合理的方法去區(qū)分代碼,但是要這樣做經(jīng)驗(yàn)和常識(shí)很重要。第2章”移植的準(zhǔn)備”將在所有的入口點(diǎn)都知道的情況下給出建立移植代碼的方法。當(dāng)然也會(huì)說明在這樣建立移植代碼的過程中如何轉(zhuǎn)換現(xiàn)有的代碼,并保持現(xiàn)有的布局設(shè)計(jì)。21移植一個(gè)操作系統(tǒng)移植一個(gè)操作系統(tǒng)第一件要做的事情是了解所有有關(guān)目標(biāo)平臺(tái)的東西在這篇論文中指的是以二件事情是理解植系統(tǒng)時(shí)會(huì)頻繁地遇到由后又會(huì)遇到由機(jī)器相關(guān)代碼中的函數(shù)產(chǎn)生的問題,而這些函數(shù)正是需要我們移植的。越快找到出錯(cuò)的函數(shù),移植也就越容易。追蹤一個(gè)系統(tǒng)函數(shù)找到問題將會(huì)是一項(xiàng)困難的工作,如果能夠知道這個(gè)函數(shù)從會(huì)對(duì)這個(gè)函數(shù)的追蹤有很大的幫助。還需要知道當(dāng)前系統(tǒng)的組成(在本文中是2位系統(tǒng)),當(dāng)然不需要像目標(biāo)系統(tǒng)那樣知道一些具體的細(xì)節(jié),但是一些基本的東西還是需要了解。編寫一個(gè)操作系統(tǒng)需要熟悉目標(biāo)體系結(jié)構(gòu),而對(duì)體系結(jié)構(gòu)的認(rèn)識(shí)程度取決于經(jīng)驗(yàn),這可能需要幾年的專業(yè)經(jīng)驗(yàn),任何沒有經(jīng)驗(yàn)的人應(yīng)該耐心地去積累經(jīng)驗(yàn),經(jīng)驗(yàn)不會(huì)一夜之間獲得或者靠讀一兩本書而獲得。211完整的系統(tǒng)一個(gè)操作系統(tǒng)的組成不光只有一個(gè)內(nèi)核,它還擁有許多程序和公用程序(以管理計(jì)算機(jī)和使計(jì)算機(jī)運(yùn)行起來。一個(gè)真正的操作系統(tǒng)還應(yīng)該能提供一個(gè)開發(fā)環(huán)境,用來創(chuàng)建程序。提供了一個(gè)庫(kù),并且它們擁有遵循要移植一個(gè)操作系統(tǒng)的時(shí)候,不僅要移植內(nèi)核,還必須要移植庫(kù)。這些庫(kù)被系統(tǒng)編譯器用來創(chuàng)建程序和公用程序,當(dāng)然也包括編譯器自己在大多數(shù)情況下系統(tǒng)軟件用低級(jí)語(yǔ)言和高級(jí)語(yǔ)言共同來編寫。低級(jí)語(yǔ)言是目標(biāo)機(jī)的匯編語(yǔ)言,而高級(jí)語(yǔ)言可以是C,C+或者混合使用在開始移植之前應(yīng)該看看此系統(tǒng)在目標(biāo)機(jī)上有沒有相同的高級(jí)語(yǔ)言的編譯器。M【N由編寫,對(duì)在有一個(gè)非常好編譯器:些人認(rèn)為至有這樣的編譯器,將語(yǔ)言后再調(diào)用蘭州大學(xué)2008屆碩士學(xué)位論文當(dāng)編譯器使用了高級(jí)功能,例如特殊類型,或者比特位的對(duì)齊方法,總會(huì)帶來兼容性問題。如果在編程時(shí)避免使用一些非標(biāo)準(zhǔn)的技巧,那么會(huì)使將來可能的移植變得簡(jiǎn)單很多。所有的程序代碼都被分為兩部分:機(jī)器相關(guān)代碼(機(jī)器不相關(guān)代碼(如果不是這樣,那么我們就只能編寫通用代碼,比如編譯成的者只能編寫供一個(gè)體系結(jié)構(gòu)使用的代碼,像匯編代碼。在這里規(guī)律是簡(jiǎn)單的:使用的語(yǔ)言越接近硬件,那么可移植性越小。由源文件編譯而成的目標(biāo)代碼非常依賴于硬件和軟件,比如中以它永遠(yuǎn)是不可移植的。移植一個(gè)操作系統(tǒng)就是所有關(guān)于從一個(gè)體系結(jié)構(gòu)向另一個(gè)體系結(jié)構(gòu)重寫機(jī)器相關(guān)部分代碼的過程。而建立可移植代碼是系統(tǒng)移植的一個(gè)重要途徑。編寫可移植代碼的基礎(chǔ)是分離機(jī)器相關(guān)代碼和機(jī)器不相關(guān)代碼,這樣的話我們可以清楚地知道機(jī)器相關(guān)代碼是哪一部分,而這部分代碼的重寫也可能就變得簡(jiǎn)單了。的源代碼樹由兩部分組成:以確定的是所有的這些匯編代碼都不能在以所有這些匯編代碼提供的功能都必須移植到然是有可能這些代碼中仍然存在機(jī)器相關(guān)性,因?yàn)檫@些代碼直接或間接地同硬件打交道。我們要做的就是找到軟件的相同點(diǎn),而重新編寫不同點(diǎn)。比如在設(shè)備I存在很多這種情況。原因是由于端口的使用方式不同。綜合地說,要讓須要從硬件那里得到特定的關(guān)鍵服務(wù),例如時(shí)鐘系統(tǒng)每秒鐘提供的604時(shí)鐘中斷。這些東西存在于終端、存儲(chǔ)器和時(shí)鐘系統(tǒng)中。這些服務(wù)必須跟一般內(nèi)核管理代碼分離,例如進(jìn)程調(diào)度的代碼或者進(jìn)程間通信的代碼。的原始代碼并沒有區(qū)分在”內(nèi)核中的”驅(qū)動(dòng)程序和剩下的管理部分代碼,但是在這里我們需要將它們分離,也就是內(nèi)核中種分離方法將在下一節(jié)中說明。為了移植,我們要在原始代碼的基礎(chǔ)上建立可移植代碼,驅(qū)動(dòng)程序模型正是用來將機(jī)器相關(guān)代碼從機(jī)器不相關(guān)代碼中分離中出來的。212可移植代碼的創(chuàng)建要?jiǎng)?chuàng)建一個(gè)可移植的系統(tǒng),必須在機(jī)器相關(guān)代碼和機(jī)器不相關(guān)代碼之間做一個(gè)分離。分離做得越好,那么移植也就越容易。拿內(nèi)核來說吧,理想情況下,當(dāng)前體系結(jié)構(gòu)下內(nèi)核的兩部分代碼都能不相干的單獨(dú)編譯,并且能鏈接形成內(nèi)核。但這樣的意思不是說為它們有著不同的機(jī)器指令。編譯的機(jī)器相關(guān)代碼和機(jī)器不相關(guān)代碼部分必須屬于一樣的體系結(jié)構(gòu)。代碼的分離增強(qiáng)了設(shè)計(jì)的模塊化,這是一件非常好的事情,因?yàn)槿绻龅谜_,可以增強(qiáng)內(nèi)核的擴(kuò)展性和安全性。當(dāng)許多人從事內(nèi)核的開發(fā)工作時(shí),他們的代碼都擁有自己的特點(diǎn)和模式,互相之間的使用只限于互相調(diào)用功能。10蘭捌大學(xué)2008弱碩士學(xué)位論文只有兩釋本質(zhì)鷯情況決定代碼是否是祝器耱關(guān)的。所寅戇匯編代瑪和瑟有囊接訪問系統(tǒng)硬件的代碼都是機(jī)器相關(guān)的。大多數(shù)情況下,直接訪問硬件的代碼都存在于設(shè)備驅(qū)動(dòng)程序巾。對(duì)內(nèi)核來說,這部分代碼包括使用常的系統(tǒng)驅(qū)動(dòng)程序一般被認(rèn)戈是系統(tǒng)相關(guān)斡,毽是也森鍘夕。鍘魏雖然中使用”動(dòng)程序,但是它們不直接訪問硬件,所以它們可以被認(rèn)為是硬件無(wú)關(guān)的。為了保持代碼的獨(dú)立性將要?jiǎng)?chuàng)建更多的文件,為了組織它們而使耀了新的爨秉結(jié)構(gòu)。珂以在原來的目錄結(jié)構(gòu)中藥每個(gè)體系結(jié)構(gòu)逶翔的源文傳建立相應(yīng)目錄,例如在內(nèi)核根目錄中新增翻錄項(xiàng)如圖21:棱代碼根目錄)器相關(guān)代碼目錄)h(內(nèi)核接口文件)核目錄中其他文2代碼實(shí)現(xiàn))圈21:重建內(nèi)核目錄結(jié)構(gòu)其中,我們將新的項(xiàng)目命名為新且簧重薪鏈接志核進(jìn)程。重藪編譯后要薪建一令薪熬瘁,包含個(gè)庫(kù)為內(nèi)核的機(jī)器不相關(guān)代碼提供所有的訪問硬件的入口(函數(shù))。為了詿視器相關(guān)代碼和瓿器不耱關(guān)代碼鏈接起來竣磊箋夠正常工作,必矮要有一個(gè)接口。這個(gè)接口描述了機(jī)器相關(guān)代碼庫(kù)中每個(gè)函數(shù)的輸入?yún)?shù)和運(yùn)行結(jié)果。應(yīng)該稱之為”內(nèi)核硬件接口”(I),是處于內(nèi)核中機(jī)器相關(guān)代碼和機(jī)器不楣關(guān)代碼之闋鯰一個(gè)接鑫,;蓼者負(fù)責(zé)與硬件打交邋,后者負(fù)責(zé)與系統(tǒng)進(jìn)程麓交互。為了定義和識(shí)別接口函數(shù),我們使用了一個(gè)”驅(qū)動(dòng)程序模烈”。使用這種方式的原因是在中這是一種建立驅(qū)動(dòng)程序前端的默認(rèn)方法。更一般地,這種編程結(jié)構(gòu)被用來將代碼鷙裝進(jìn)一個(gè)邏輯模型或?qū)ο笾?。?qū)動(dòng)程序模戮的使用霉冬在下一小繁討論。如果有一種想法認(rèn)為么就可得出結(jié)論:童接訪問就意味著一個(gè)完備系統(tǒng)所有的機(jī)器相關(guān)代碼都應(yīng)該位于設(shè)備溪?jiǎng)又?。使臻這樣一個(gè)提供所裔兩這到了可移植的豳的,它也給了整個(gè)系統(tǒng)代碼一個(gè)統(tǒng)一的編程風(fēng)格。要完成上麗這些工作,無(wú)疑增加了代碼編譯的復(fù)雜度,但是使用州大學(xué)2008屆碩士學(xué)位論文2121創(chuàng)建可移植代碼的3種方式有三種主要的方式創(chuàng)建可移植代碼,首選的方法列在最前面:1創(chuàng)建附加文件,重新實(shí)現(xiàn)函數(shù)2使用類型重定義3使用編譯程序指令下面分別來介紹這三種方式。第一種方式:使用第一種方式,編程者至少要建立兩個(gè)對(duì)象文件。一個(gè)包含個(gè)包含動(dòng)程序?qū)嶋H上就是包含一次向一個(gè)新的體系結(jié)構(gòu)的移植都會(huì)導(dǎo)致在操作系統(tǒng)中新增加一個(gè)義在一個(gè)普通頭文件中的接口將給出一個(gè)個(gè)問是首選的方式,因?yàn)樗岢隽藢Ⅱ?qū)動(dòng)程序分離到一個(gè)文件中。本質(zhì)上說,這種方法是在在重新定義函數(shù)。下圖為一個(gè)例子:圖22:多體系結(jié)構(gòu)為接口文件提供函數(shù)實(shí)現(xiàn)在圖22中,接口文件會(huì)包含一個(gè)函數(shù)原型的列表。當(dāng)為某一個(gè)體系結(jié)構(gòu)編譯代碼的時(shí)候,通常需要文件和編譯后的目標(biāo)文件。有多少種體系結(jié)構(gòu),就有多少個(gè)版本,但只有目標(biāo)體系結(jié)構(gòu)的這個(gè)版本會(huì)被編譯,為接口頭文件中的函數(shù)原型提供函數(shù)實(shí)現(xiàn)。后面的兩個(gè)源文件是為一個(gè)驅(qū)動(dòng)程序存在的,由接口定義,被文件使用。第二種方式:12蘭州大學(xué)2008屆碩士學(xué)位論文第二種方式需要細(xì)心地編程,但是卻能實(shí)現(xiàn)功能強(qiáng)大的類型重定義。這種重定義不包括重新定義編譯器使用的簡(jiǎn)單的或標(biāo)準(zhǔn)的類型,只包括由義的高級(jí)數(shù)據(jù)類型。這種數(shù)據(jù)結(jié)構(gòu)可以包含簡(jiǎn)單數(shù)據(jù)成員,也可以包含高級(jí)數(shù)據(jù)成員。為了提高效率,這種方法要求在這些重定義的數(shù)據(jù)結(jié)構(gòu)中相應(yīng)的成員擁有相同的名字和語(yǔ)義。當(dāng)在手寫匯編語(yǔ)言文件中使用這些數(shù)據(jù)結(jié)構(gòu)時(shí),它們?cè)趦?nèi)存中的布局就會(huì)很重要了。這時(shí)重新定義的結(jié)構(gòu)體中,”關(guān)鍵”成員必須是相同的排列順序,否則一樣的偏移量指向的是結(jié)構(gòu)中的另一個(gè)成員。當(dāng)這些數(shù)據(jù)結(jié)構(gòu)只在據(jù)成員的布局會(huì)在每一次編譯時(shí)由編譯器計(jì)算的。級(jí))結(jié)構(gòu)體,它們定義了當(dāng)進(jìn)程被輪換出一個(gè)結(jié)構(gòu)體”包含進(jìn)程指針、程序計(jì)數(shù)器和通用目的寄存器的序列。另一個(gè)”含段指示符,定義了進(jìn)程的內(nèi)存設(shè)置。??蚪Y(jié)構(gòu)體的一些成員被一些特定的系統(tǒng)調(diào)用使用,例如”所以這些成員需要一個(gè)通用的名字。幸運(yùn)的是每一個(gè)系統(tǒng)都有??虻某蓡T所指向的組件,所有的系統(tǒng)都有程序計(jì)數(shù)器,棧指針和一些類似的東西。必須提供這些通用名以便于機(jī)器不相關(guān)部分代碼在需要時(shí)可以找到并修改它們。大部分的通用寄存器也需要被存儲(chǔ),而且由于每一個(gè)體系結(jié)構(gòu)需要的空問不一樣,所以要在進(jìn)程表的表項(xiàng)中留出足夠的空間。而重定義的結(jié)構(gòu)體”以使用類型霞定義將會(huì)”自動(dòng)地”在進(jìn)程表中創(chuàng)建空間。下面就來具體說明如何在編譯中重定義目標(biāo)體系結(jié)構(gòu)的類型。文件(大多數(shù)是頭文件,但也可能是任何文件)可以以兩種形式被包含:相對(duì)當(dāng)前源文件的位置和在可被搜索到的目錄列表中。在源文件中被包含的文件用引號(hào)或者尖括號(hào)標(biāo)明。我們不提倡相對(duì)包含的方式,因?yàn)檫@種方式總是要求我們寫出頭文件的路徑,從而使對(duì)一個(gè)文件的包含產(chǎn)生了局限性。大多數(shù)的編譯器使用一個(gè)編譯選項(xiàng)來添加搜索列表的目錄。通過這種方式,我們就可以根據(jù)編譯對(duì)應(yīng)的目標(biāo)體系結(jié)構(gòu)而選擇包含不同的頭文件,這些文件中包含了相應(yīng)體系結(jié)構(gòu)的類型的重定義。我們就用這種方式實(shí)現(xiàn)對(duì)不同體系結(jié)構(gòu)的類型重定義的頭文件的包含,而保持源文件中原來的樣做的優(yōu)點(diǎn)是我們不需要對(duì)源文件的代碼做出相應(yīng)的修改。這種方法需要一個(gè)體系結(jié)構(gòu)單獨(dú)的”錄外加一個(gè)標(biāo)準(zhǔn)的系統(tǒng)”目錄。只有目標(biāo)體系結(jié)構(gòu)的目錄被添加到這個(gè)列表。如果出現(xiàn)如下這種情況,被包含的兩個(gè)文件都定義了類型a,那么將得到一個(gè)類型重定義的警告,而這個(gè)問題是很好解決的。下一步要做的就要對(duì)所有的文件都需要重定義一個(gè)數(shù)據(jù)結(jié)構(gòu)類型編譯器用選項(xiàng)”一r用來將一個(gè)目錄加入目錄列表,編譯器在這個(gè)列表中搜索包含的文件所以當(dāng)編譯2位體系結(jié)構(gòu)時(shí)我們可能要在編譯命令上加入”在下圖中,在文件中的指令#被處理為文件。對(duì)于文件將被處理為見圖23。13蘭州大學(xué)2008屆碩士學(xué)位論文( 23:多體系結(jié)構(gòu)提供的同一個(gè)數(shù)據(jù)結(jié)構(gòu)類型這些目錄不能在標(biāo)準(zhǔn)(或者系統(tǒng))如目錄,因?yàn)檫@樣會(huì)引起搜索沖突。大多數(shù)的編譯器使用第一個(gè)搜索到的相匹配的文件。這樣做可能導(dǎo)致上面提到的錯(cuò)誤很難被發(fā)現(xiàn),因?yàn)榫幾g器不會(huì)給出任何警告信息。第三種方式:最后一種方式把需要編譯的代碼用編譯程序指令做一些修改,比如指令”橢撕f和”#。這些代碼都是全局定義,上述指令告訴編譯器相應(yīng)代碼應(yīng)該被包含或者被忽略??磮D24中的代碼,宏定義段代碼保存在一個(gè)全局文件中,所以所有的源文件都共享相同的定義。它必須是全局的,以保證圖24中我們用”明了編譯的目標(biāo)機(jī)器。1舟A(瑚卟汜撐789并1 11 2并C)l 3141 516并:編譯程序指令舉例不使用編譯程序指令不會(huì)有任何問題,但是這樣有一個(gè)巨大的缺陷,那就是導(dǎo)致了系統(tǒng)的不可擴(kuò)展性。當(dāng)我們將操作系統(tǒng)向另一個(gè)體系結(jié)構(gòu)移植時(shí),我們需要附加一個(gè),銜塊。這樣就使得每一次移植都需要更新源代碼文件,這不是我們想要的。理想情況是盡可能地創(chuàng)建一個(gè)新的移植而不觸動(dòng)原來的源文件。在上面這個(gè)例子中在兩條指令之間的代碼行數(shù)很少,但是大多數(shù)情況下代碼行數(shù)會(huì)在一個(gè)正常的數(shù)量。但是使用這種結(jié)構(gòu)又會(huì)帶來另一個(gè)缺陷,那就是失去了可讀性,這個(gè)源代碼應(yīng)該具備的很重要的性質(zhì)。當(dāng)在代碼模塊之中使用編譯程序指令時(shí),就會(huì)失去可讀性??梢约僭O(shè)一下,當(dāng)代碼在執(zhí)行的時(shí)候在編譯程序指令之間的部分只是從屏幕上滾動(dòng)而過,根本就沒有經(jīng)過編譯。在代碼模塊中應(yīng)該避免這樣,因?yàn)檫@樣會(huì)導(dǎo)致死代碼。新接觸代碼的程序員可能需要很困難、很長(zhǎng)的一段時(shí)間去讀懂這段代碼。如果這樣使用是不可避免的,那么應(yīng)該有一種方式使得這種代碼占用的行數(shù)不多。如果可能的話劃分這些文件,然后使用條件包含指令包含這些文件。有幾個(gè)條件包含指令就新建多少個(gè)文件,然后把條件包含指令之間的代碼寫入相應(yīng)的新文件,然后再代碼出現(xiàn)的地方用”衢含這個(gè)文件。上面這些改變的影響應(yīng)該是局部的,并且應(yīng)該能被清楚地看到。例如機(jī)器相關(guān)模塊可能還涉及其它設(shè)備,或者每個(gè)模塊需要不同的參數(shù)。大多數(shù)情況下,這些代碼的影響只有很少的幾行。這時(shí),可以使用編譯程序指令編寫上述代碼。但是為了完整性,也有一些例外,例如庫(kù)的頭文件也使用編譯程序指令,而這些指令的影響不止少數(shù)的幾行代碼。這些指令通常用來定義基本系統(tǒng)類型。2122從現(xiàn)存的文件創(chuàng)建可移植代碼當(dāng)你需要去讀原始文件然后判斷”函數(shù)”或者”定義”是否是機(jī)器相關(guān)的時(shí)候,是有一些技巧的。在大多數(shù)情況下,要決定帶有機(jī)器相關(guān)選項(xiàng)的管理代碼是很容易的,這些代碼用來初始化或者通信。第一件要做的事情是刪除所有已確定的機(jī)器相關(guān)代碼(剩下管理代碼(然后編譯和鏈接管理代碼,編譯器起將會(huì)列出未定義的依賴關(guān)系代碼、函數(shù)和標(biāo)識(shí)符。這就給了我們一個(gè)提示:下來用刪除的機(jī)器相關(guān)代碼創(chuàng)建一個(gè)新的源文件,標(biāo)識(shí)符和函數(shù)都是原始的。然后來在一個(gè)聯(lián)結(jié)這里最好避免使用全局標(biāo)識(shí)符和定義,因?yàn)樵诓煌w系結(jié)構(gòu)之間,設(shè)備局”定義可能完全不同。例如一個(gè)體系結(jié)構(gòu)可能沒有設(shè)備D,或者這個(gè)端口可能在設(shè)備個(gè)好的接口不應(yīng)該隨著體系結(jié)構(gòu)的改變而變化,如果不是這樣,那么它就是不好的。接口的更新不應(yīng)該導(dǎo)致原來的體系結(jié)構(gòu)的更新,而應(yīng)該只是忽略這個(gè)更新而已。只要找到在編譯器指令之間的代碼,就像圖24中展示的那樣,就應(yīng)該把這些代碼移到新的機(jī)器相關(guān)代碼源文件中去。注意如果存在這些機(jī)器相關(guān)代碼的有依賴關(guān)系的代碼,而這些代碼也不在系統(tǒng)庫(kù)中,那么它們也應(yīng)該被轉(zhuǎn)移。最后,所有的源文件都應(yīng)該能互不影響的編譯。唯一共同的東西就是使用指令#含的接口文件。只要按照規(guī)則來做,這樣建立的可移植15蘭州大學(xué)2008屆碩士學(xué)位論文代碼應(yīng)該和一部分一部分建立起來的可移植代碼沒有什么不同。最后,我們把管理代碼放在”左邊”(把機(jī)器相關(guān)代碼放在”右邊”(2123驅(qū)動(dòng)程序編程模型驅(qū)動(dòng)程序模型是用來保證內(nèi)核內(nèi)部的驅(qū)動(dòng)程序的機(jī)器相關(guān)代碼和機(jī)器無(wú)關(guān)代碼的分離,我們也使用它來使里使用的(低等級(jí))驅(qū)動(dòng)模型符合以下準(zhǔn)則:1便于將來移植2邏輯上的分塊3對(duì)代碼的目的有一個(gè)清楚而并非模糊的的認(rèn)識(shí)盡管這兩部分代碼有可能被認(rèn)為是密不可分的,但是上述的這個(gè)規(guī)則的集合可以保證將它們分開。就像前面說的,代碼分為兩種:機(jī)器相關(guān)代碼和機(jī)器無(wú)關(guān)代碼,這正證明了上面列出的第二個(gè)規(guī)則。最終一個(gè)真正的驅(qū)動(dòng)只包含通過驅(qū)動(dòng)程序接口來訪問的機(jī)器相關(guān)代碼,這樣就做到了邏輯上的分塊。在內(nèi)核中使用驅(qū)動(dòng)程序模型的目的是使把與內(nèi)核不相關(guān)部分(機(jī)器相關(guān)代碼)獨(dú)立出來。而與內(nèi)核相關(guān)部分指的是:內(nèi)核如何使得內(nèi)存能夠被訪問的方法,調(diào)度進(jìn)程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建省東山縣第二中學(xué)2025屆化學(xué)高二下期末聯(lián)考試題含解析
- 校外培訓(xùn)用戶管理辦法
- 極端氣候預(yù)警管理辦法
- 沖擊地壓防治管理辦法
- 河南省核查員管理辦法
- 星級(jí)管理辦法舉措建議
- 江蘇沛縣公墓管理辦法
- 合肥廠區(qū)定位管理辦法
- 計(jì)算機(jī)視覺中的深度估計(jì)技術(shù)綜述與展望
- 技術(shù)管理中心的職能與職責(zé)解析
- 企業(yè)消防安全責(zé)任制模板
- 2025屆黑龍江省哈爾濱四十七中學(xué)七年級(jí)英語(yǔ)第二學(xué)期期末統(tǒng)考試題含答案
- 人工智能通識(shí)課程開課方案
- 2025-2030中國(guó)智慧政務(wù)行業(yè)發(fā)展策略及投資潛力預(yù)測(cè)報(bào)告
- 【中考真題】2025年福建中考數(shù)學(xué)真題試卷(含解析)
- 2025年四川省宜賓市中考數(shù)學(xué)真題試卷及答案解析
- 2025年時(shí)事政治考試題及答案(300題)
- 楊浦區(qū)“十五五”規(guī)劃綱要及專項(xiàng)規(guī)劃編制工作方案
- 海姆立克急救法PPT
- YS/T 534.3-2007氫氧化鋁化學(xué)分析方法第3部分:二氧化硅含量的測(cè)定鉬藍(lán)光度法
- GB/T 13822-2017壓鑄有色合金試樣
評(píng)論
0/150
提交評(píng)論