已閱讀5頁,還剩105頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
保密 2年 申請(qǐng)同濟(jì) 大學(xué)工學(xué) 碩 士學(xué)位論文 二七 年 一 月 “和欣”操作系統(tǒng) 跨平臺(tái)虛擬機(jī)研究與實(shí)現(xiàn) ( 國家 863 計(jì)劃資助項(xiàng)目 編號(hào): 2001 培養(yǎng)單位: 電子信息與工程學(xué)院 一級(jí)學(xué)科: 計(jì)算機(jī)科學(xué)與技術(shù) 二級(jí)學(xué)科: 計(jì)算機(jī)軟件與理論 研 究 生: 鄭錕 指導(dǎo)教師: 陳榕 教授 副 指導(dǎo)教師 :顧偉楠 教授 保密 2 年 A in 2007 by 63 “和欣”操作系統(tǒng) 跨平臺(tái)虛擬機(jī)研究與實(shí)現(xiàn) 學(xué)位論文版權(quán)使用授權(quán)書 本人完全了解同濟(jì)大學(xué)關(guān)于收集、保存、使用學(xué)位論文的規(guī)定,同意如下各項(xiàng)內(nèi)容:按照學(xué)校要求提交學(xué)位論文的印刷本和電子版本;學(xué)校有權(quán)保存學(xué)位論文的印刷本和電子版,并采用影印、縮印、掃描、數(shù)字化或其它手段保存論文;學(xué)校有權(quán)提供目錄檢索以及提供本學(xué)位論文全文或者部分的閱覽服務(wù);學(xué)校有權(quán)按有關(guān)規(guī)定向國家有關(guān)部門或者機(jī)構(gòu)送 交論文的復(fù)印件和電子版;在不以贏利為目的的前提下,學(xué)??梢赃m當(dāng)復(fù)制論文的部分或全部?jī)?nèi)容用于學(xué)術(shù)活動(dòng)。 學(xué)位論文作者簽名: 年 月 日 同濟(jì)大學(xué)學(xué)位論文原創(chuàng)性聲明 本人鄭重聲明:所呈交的學(xué)位論文,是本人在導(dǎo)師指導(dǎo)下,進(jìn)行研究工作所取得的成果。除文中已經(jīng)注明引用的內(nèi)容外,本學(xué)位論文的研究成果不包含任何他人創(chuàng)作的、已公開發(fā)表或者沒有公開發(fā)表的作品的內(nèi)容。對(duì)本論文所涉及的研究工作做出貢獻(xiàn)的其他個(gè)人和集體,均已在文中以明確方 式標(biāo)明。本學(xué)位論文原創(chuàng)性聲明的法律責(zé)任由本人承擔(dān)。 學(xué)位論文作者簽名: 年 月 日摘要 I 摘要 本課題基于“和欣”操作系統(tǒng) ( ,目的是在 其它操作系統(tǒng)上實(shí)現(xiàn) 與 “和欣”操作系統(tǒng)具有相同語義的跨平臺(tái)虛擬機(jī) ( 。 課題的主要難點(diǎn)有三個(gè)方面:一是如何屏蔽不同操作系統(tǒng)之間的差異;二是如何在其它操作系統(tǒng)上做到“和欣”應(yīng)用程序的加載;三是如何在其它操作系統(tǒng)上實(shí)現(xiàn)“和欣”操作 系統(tǒng)的內(nèi)核對(duì)象。 針對(duì)第一個(gè)問題,本文研究了兩個(gè)主流操作系統(tǒng) 心語義,分析了它們與“和欣”操作系統(tǒng) 對(duì)應(yīng)關(guān)系,從而提出了平臺(tái)適配層 ( 的概念,較好地解決了跨平臺(tái)的問題。針對(duì)第二個(gè)問題,本文研究了“和欣”操作系統(tǒng)應(yīng)用程序所采用的 件格式的細(xì)節(jié),研究了目標(biāo)操作系統(tǒng)采用的進(jìn)程地址空間策略 和對(duì)虛擬 內(nèi)存 的支持 ,在 實(shí)現(xiàn)了一個(gè)完全功能的 執(zhí)行程序加載器。 針對(duì)第三個(gè)問題,本文 研究了“和欣”內(nèi)核對(duì)象的語義,隨著研究的不同階段,在 ,分別采用共享內(nèi)存、 服務(wù)進(jìn)程和偽驅(qū)動(dòng)三種方式,在用戶態(tài)和內(nèi)核態(tài)分別實(shí)現(xiàn)了“和欣”內(nèi)核對(duì)象。本文針對(duì)這三種方式的優(yōu)缺點(diǎn)進(jìn)行了分析和討論。 本課題在進(jìn)行中參考和對(duì)比了幾個(gè)成熟的虛擬機(jī)實(shí)現(xiàn),從而加快了工作的進(jìn)度。 最后,本文完成了課題的既定計(jì)劃,實(shí)現(xiàn)了“和欣”操作系統(tǒng) 跨平臺(tái)虛擬機(jī) 的原型開發(fā)。目前,該項(xiàng)目已由上??铺┦兰o(jì)有限公司進(jìn)行工程化開發(fā)。 關(guān)鍵 詞: 和欣 操作系統(tǒng), 虛擬機(jī) , 跨平臺(tái)技術(shù) , 內(nèi)核對(duì)象 , 件格式 I is of to a To is to on is to a PE on do E is to To it is to a AL is by To E to be A PE is by To it is to in of in To to In A PE 錄 錄 第 1 章 引言 . 1 題的目的和意義 . 1 擬機(jī)技術(shù)的分類和研究現(xiàn)狀 . 1 文的組織和結(jié)構(gòu) . 4 第 2 章 相關(guān)內(nèi)容的分析和討論 . 5 “和欣”操作系統(tǒng) . 5 程與線程 . 5 步機(jī)制 . 7 執(zhí)行程序格式 . 9 它 . 9 E 可執(zhí)行文件 . 9 E 文件格式 . 9 E 文件的加載 . 11 和欣”操作系統(tǒng)內(nèi)核對(duì)象 . 11 程對(duì)象 . 11 程對(duì)象 . 12 步對(duì)象 . 12 第 3 章 總體設(shè)計(jì) . 16 層的設(shè)計(jì) . 16 臺(tái)適配層 . 17 擬層 . 18 動(dòng)與服務(wù) ( . 18 第 4 章 平臺(tái)適配層和內(nèi)核對(duì)象的設(shè)計(jì)與實(shí)現(xiàn) . 19 目錄 接口設(shè)計(jì)及其實(shí)現(xiàn) . 19 本數(shù)據(jù)類型 . 19 本宏定義 . 21 誤處理 . 21 柄管理 . 23 程管理 . 23 程管理 . 27 程局部存儲(chǔ) . 30 塊加載 . 31 子操作 . 34 步 . 35 符集轉(zhuǎn)換 . 39 件目錄操作 . 40 件內(nèi)存映射 . 41 統(tǒng)信息函數(shù) . 42 行時(shí)幫助函數(shù) . 44 執(zhí)行模塊的加載與釋放 . 49 執(zhí)行模塊管理 . 49 E 文件的加載 . 51 件的加載 . 52 塊的釋放 . 53 別的處理 . 53 核對(duì)象的實(shí)現(xiàn)算法 . 53 核對(duì)象的管理 . 54 柄管理 . 55 象同步算法 . 56 同實(shí)現(xiàn)技術(shù)與對(duì)比 . 58 享內(nèi)存 方式 . 59 務(wù)進(jìn)程方式 . 59 目錄 V 驅(qū)動(dòng)方式 . 59 種實(shí)現(xiàn)方式的分析和對(duì)比 . 60 第 5 章 擬層和 的實(shí)現(xiàn) . 62 擬層 . 62 程的實(shí)現(xiàn) . 62 程的實(shí)現(xiàn) . 64 步對(duì)象的實(shí)現(xiàn) . 66 . 68 件系統(tǒng)服務(wù)的實(shí)現(xiàn) . 68 卡驅(qū)動(dòng)的實(shí)現(xiàn) . 68 標(biāo)驅(qū)動(dòng)的實(shí)現(xiàn) . 69 第 6 章 總結(jié)和展望 . 70 致謝 . 71 參考文獻(xiàn) . 72 附錄 A 件 . 73 第 1 章 引言 1 第 1章 引言 課題的目的和意義 本課題基于“和欣”操作系統(tǒng)( 6,目的是在 欣”操作系統(tǒng)具有相同語義的跨平臺(tái)虛擬機(jī)( “和欣”操作系統(tǒng) 是基于 務(wù)計(jì)算模型的操作系統(tǒng) ?;?務(wù)計(jì)算模型的 操作系統(tǒng)根據(jù)不同安全、運(yùn)營、用戶需求,動(dòng)態(tài)控制應(yīng)用軟件, 著不同 務(wù) 加載,用戶對(duì)應(yīng)用軟件,具有“無限選擇” ?;?務(wù)計(jì)算模型的 操作系統(tǒng) 必須有一套完善的基于構(gòu)件的編程模型與之對(duì)應(yīng)。在“和欣”操作系統(tǒng)中,就是 件編程模型。 , 即 有“零件”的意思; “部件”、“組裝”的意思,所以從字面上理解, 是在運(yùn)行時(shí)對(duì)軟件構(gòu)件進(jìn)行組裝并最終完成預(yù)計(jì)功能的一種軟件技術(shù)。 技術(shù)類似,都是基于構(gòu)件編程的技術(shù)。但 是, 有使用 采用的中間代碼的形式,而是在內(nèi)部采用了C/C+來實(shí)現(xiàn),直接生成機(jī)器代碼。 這樣的實(shí)現(xiàn)策略使得 件系統(tǒng)的運(yùn)行效率非常高,特別適用于現(xiàn)在具有巨大市場(chǎng)價(jià)值的嵌入式市場(chǎng)。 但是,直接采用機(jī)器碼,也帶來了跨平臺(tái)運(yùn)行的問題。本課題,就是要在一定程度上解決 在嵌入式領(lǐng)域,特別是 3G 智能手機(jī)領(lǐng)域,已經(jīng)有一些構(gòu)件系統(tǒng)的應(yīng)用,如智能手機(jī)上的 本,可是,目前這些應(yīng)用的效率大多數(shù)都不能令人滿意。因此 ,研究 件的跨平臺(tái)技術(shù),有助于推廣 件編程模型, 從而 ,在 不影響 功能的前提下,提高嵌入式軟件的運(yùn)行效率。 虛擬機(jī)技術(shù)的 分類和 研究現(xiàn)狀 要使 件能夠跨平臺(tái)運(yùn)行 ,就必須在不同的平臺(tái)上為 件編程模型提供其運(yùn)行基礎(chǔ),類似于 的虛擬機(jī),這里,就是 作第 1 章 引言 2 系統(tǒng)環(huán)境,即 作系統(tǒng)虛擬機(jī) 虛擬機(jī)就是 一個(gè)抽象的計(jì)算機(jī) , 它 是在一臺(tái)計(jì)算機(jī)上模擬另一種計(jì)算機(jī)的環(huán)境的技術(shù)。虛擬機(jī)是軟件跨平臺(tái)運(yùn)行的重要手段。根據(jù)具體需要的不同,虛擬機(jī)的實(shí)現(xiàn)技術(shù)也分若干種。 下面 對(duì)這些技術(shù)做一個(gè)簡(jiǎn)要的介紹。 一、 硬件級(jí)的虛擬機(jī) 硬件 級(jí)的虛擬機(jī)是指在一種指令集的計(jì)算機(jī)上模擬另一種或相同指令集的計(jì)算機(jī)。這種虛擬機(jī)是基于 令集和計(jì)算機(jī)各種設(shè)備的完全模擬。對(duì)于在虛擬機(jī)上運(yùn)行的軟件(如操作系統(tǒng))來說,軟件根本意識(shí)不到它們是運(yùn)行在一臺(tái)虛擬機(jī)上。因此,這種虛擬機(jī)的模擬程度最好,但是效率也最低。它主要用來 運(yùn)行一個(gè) 完整的 操作系統(tǒng),或者在對(duì)操作系統(tǒng)和其上運(yùn)行的應(yīng)用程序調(diào)試開發(fā)時(shí)使用。 比較成熟的硬件級(jí)虛擬機(jī)有 86 虛擬機(jī), 擬機(jī),C 虛擬機(jī)和 擬機(jī)等。 硬件級(jí)的虛擬機(jī)在實(shí)現(xiàn) 上 也有軟件 解釋執(zhí)行和即時(shí)編譯執(zhí)行等不同的技術(shù)。而且,不同的實(shí)現(xiàn)技術(shù)也有不同的優(yōu)缺點(diǎn),這里就不展開討論了。 二、 半虛擬化虛擬機(jī) 半虛擬化虛擬機(jī)的主要目的是在同一臺(tái)計(jì)算機(jī)上運(yùn)行多個(gè)不同的操作系統(tǒng),同時(shí),還希望能保持運(yùn)行的高效率。半虛擬化虛擬機(jī)在裸機(jī)上搭建了一個(gè)用來管理 物理 內(nèi)存和其它硬件設(shè)備的虛擬層,它再將其上運(yùn)行的操作系統(tǒng)隔離起來。對(duì)于其上運(yùn)行的操作系統(tǒng),都認(rèn)為自己是運(yùn)行在一臺(tái)獨(dú)立的計(jì)算機(jī)上。當(dāng)然,對(duì)于操作系統(tǒng)來說,半虛擬機(jī)是一臺(tái)新的“機(jī)器”,因此,它們必須針對(duì)這臺(tái)“機(jī)器”進(jìn)行移植才能在其上運(yùn)行。 目前,半虛擬化虛 擬機(jī)還處在研究階段,具有代表性的成果就是英國牛津大學(xué)的 擬機(jī)項(xiàng)目。 三、 中間代碼的虛擬機(jī) 基于中間代碼的虛擬機(jī)是目前運(yùn)用最多的虛擬機(jī) 。比如 擬機(jī)和 為這種虛擬機(jī)運(yùn)行特殊的中間代碼,因此,它們不受實(shí)際計(jì)算機(jī)指令集和操作系統(tǒng)的影響,同樣的程序可以運(yùn)行在不同的計(jì)算機(jī)環(huán)境中。當(dāng)然,前提就是該計(jì)算機(jī)環(huán)境安裝了相應(yīng)的虛擬機(jī)。由于中間代碼是解釋執(zhí)行的,所以,通常基于中間代碼的虛擬機(jī)的執(zhí)行效率都比較差。為了解決這個(gè)問題,人們提出了即時(shí)編譯等優(yōu)化措施,這對(duì)基于中間代碼的虛擬機(jī)的執(zhí)行效率有了較大的 提高。 目前,在基于 應(yīng)用和企業(yè)計(jì)算中,基于中間代碼的虛擬機(jī)已經(jīng)有了大量成功的應(yīng)用。但是在近幾年興起的嵌入式浪潮中,這種虛擬機(jī)的第 1 章 引言 3 效率卻不能讓人滿意。 四、 基于軟件 虛擬機(jī) 在一些特定的應(yīng)用環(huán)境中 ,我們并不需要完全硬件級(jí)的虛擬環(huán)境,比如,我們并不想在我們的應(yīng)用中運(yùn)行任意的操作系統(tǒng),而只 是 希望為我們的應(yīng)用軟件提供一個(gè)有效的運(yùn)行環(huán)境。 而通常的應(yīng)用軟件都是使用系 統(tǒng)提供的一些 不是直接依賴于硬件,如 圖 1 所示。 圖 1 硬件、操作系統(tǒng)和應(yīng)用軟件 因此,在這個(gè)理論前提下產(chǎn)生了一些基于軟件 虛擬機(jī)。比如, 擬機(jī) 是其中較為成功的。與一些運(yùn)行時(shí)庫 (如不同的是,這種虛擬機(jī)可以直接運(yùn)行二進(jìn)制程序,而不用 對(duì)應(yīng)用程序的源代碼進(jìn)行 重新編譯。這就使得使用相同 令集的應(yīng)用程序能夠最大限度的跨平臺(tái)運(yùn)行。 基于軟件 虛擬機(jī)是所有虛擬機(jī)中運(yùn)行效率最高的,當(dāng)然,它也有一個(gè)顯著的缺點(diǎn),就是不能跨 越 不同的 令集。 表 1 對(duì)不同類型的虛擬機(jī)進(jìn)行了比較。 綜合對(duì)不同虛擬機(jī)實(shí)現(xiàn)技術(shù)的比較,根據(jù)課題的需求,即為 件運(yùn)行平臺(tái),提供高效率的虛擬操作系統(tǒng)環(huán)境。最終,我們選擇了基于軟件 虛擬機(jī)實(shí)現(xiàn)技術(shù)。 硬件 操作系統(tǒng) 應(yīng)用軟件 第 1 章 引言 4 表 1 不同類型虛擬機(jī)的比較 類型 跨平臺(tái)支持 與宿主操作系統(tǒng)通訊 提供軟件 用 類型 效率 硬件級(jí)的虛擬機(jī) 指令集 /操作系統(tǒng) 虛擬網(wǎng)絡(luò) 否 開發(fā) /運(yùn)行操作系統(tǒng) 低 半虛擬化虛擬機(jī) 無 無 是 開發(fā) /運(yùn)行操作系統(tǒng) 較高 中間代碼的虛擬機(jī) 指令集 /操作系統(tǒng) 開發(fā) /運(yùn)行應(yīng)用程序 較低 基于軟件 操作系統(tǒng) 開發(fā) /運(yùn)行應(yīng)用程序 高 論文的組織和結(jié)構(gòu) 接下來 ,本文 的 內(nèi)容 都是圍繞 設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié) 而展開的 。 第二章介紹了和 關(guān)的一些內(nèi)容。首先 , 介紹了 欣”操作系統(tǒng)的一些內(nèi)容,通過對(duì)這些內(nèi)容的分析,對(duì)平臺(tái)適配層進(jìn)行了設(shè)計(jì)。 接著, 我們介紹了 執(zhí)行文件 格式 ,以此為基礎(chǔ),在 作系統(tǒng)上實(shí)現(xiàn)一個(gè)完全功能的 執(zhí)行程序加載器。 最后,介紹了“和欣”操作系統(tǒng)的內(nèi)核對(duì)象的語義。 第三章從工程方面介紹了 總體設(shè)計(jì)。 分層設(shè)計(jì)的,在這一章里, 描述 了 個(gè)子層之間的關(guān)系以及它們的大致內(nèi)容。 第四章詳細(xì)論述了平臺(tái)適配層 “和欣”內(nèi)核對(duì)象的設(shè)計(jì)與實(shí)現(xiàn)。這兩部分是 核心。在這一章里介紹了三種實(shí)現(xiàn)方式 : 共享內(nèi)存方式,服務(wù)進(jìn)程方式和偽驅(qū)動(dòng)方式,并對(duì)它們各自的優(yōu)缺點(diǎn)進(jìn)行了討論。 第五章詳細(xì)論述了 擬層和 。 這兩層是 “和欣”操作系統(tǒng) 應(yīng)用程序 的接口。 第 六章對(duì)課題進(jìn)行了總結(jié),分析了仍然存在的問題,并對(duì) 發(fā)展做了展望。 最后,列出的是本文的一些參考文獻(xiàn)和資料。 第 2 章 相關(guān)內(nèi)容的分析和討論 5 第 2章 相關(guān)內(nèi)容的分析和討論 “和欣”操作系統(tǒng) 作系統(tǒng)是 個(gè)人計(jì)算機(jī)和小型服務(wù)器領(lǐng)域內(nèi)最通用的兩個(gè)計(jì)算機(jī)操作系統(tǒng)。它們都是 32 位的操作系統(tǒng)系統(tǒng),具有多進(jìn)程,多線程,多優(yōu)先級(jí)調(diào)度,虛擬儲(chǔ)存管理的特點(diǎn)。 “和欣”操作系統(tǒng) 以 嵌入式設(shè)備,特別是3G 智能手機(jī)為目標(biāo),構(gòu)建在 32 位帶有內(nèi)存管理單元( 嵌入式處理器之上。 “和欣”操作系統(tǒng)同樣是具有多進(jìn)程, 多線程,多優(yōu)先級(jí)調(diào)度,虛擬儲(chǔ)存管理的特 點(diǎn) ,同時(shí)它針對(duì)嵌入式應(yīng)用進(jìn)行了 設(shè)計(jì),支持優(yōu)先級(jí)搶占,軟實(shí)時(shí)調(diào)度等特點(diǎn)。 對(duì)于應(yīng)用程序,“和欣”操作系統(tǒng)支持與桌面操作系統(tǒng)同樣 豐富的 功能。 進(jìn)程 與線程 在 作系統(tǒng) 47中,進(jìn)程通常被定義為一個(gè)正在運(yùn)行的程序的實(shí)例,它由兩個(gè)部分組成: 一個(gè)是操作系統(tǒng)用來管理進(jìn)程的內(nèi)核對(duì)象。內(nèi)核對(duì)象也是系統(tǒng)用來存放關(guān)于進(jìn)程的統(tǒng)計(jì)信息的地方。 另一個(gè)是地址空間,它包含所有可執(zhí)行模塊或 塊的代碼和數(shù)據(jù)。它還包含動(dòng)態(tài)內(nèi)存分配的空間。如線程堆棧和堆分配空間。 進(jìn)程是不 活潑的。若要使進(jìn)程完成某項(xiàng)操作,它必須擁有一個(gè)在它的環(huán)境中運(yùn)行的線程,該線程負(fù)責(zé)執(zhí)行包含在進(jìn)程的地址空間中的代碼。實(shí)際上,單個(gè)進(jìn)程可能包含若干個(gè)線程,所有這些線程都“同時(shí)”執(zhí)行進(jìn)程地址空間中的代碼。為此,每個(gè)線程都有它自己的一組 C P U 寄存器和它自己的堆棧。每個(gè)進(jìn)程至少擁有一個(gè)線程,來執(zhí)行進(jìn)程的地址空間中的代碼。如果沒有線程來執(zhí)行進(jìn)程的地址空間中的代碼,那么進(jìn)程就沒有存在的理由了,系統(tǒng)就將自動(dòng)撤消該進(jìn)程和它的地址空間。 同樣,線程也是由兩個(gè)部分組成的: 一個(gè)是線程的內(nèi)核對(duì)象,操作系統(tǒng)用它來對(duì)線程實(shí)施管 理。內(nèi)核對(duì)象也第 2 章 相關(guān)內(nèi)容的分析和討論 6 是系統(tǒng)用來存放線程統(tǒng)計(jì)信息的地方。 另一個(gè)是線程堆棧,它用于維護(hù)線程在執(zhí)行代碼時(shí)需要的所有函數(shù)參數(shù)和局部變量。 在早期的 作系統(tǒng)和其 它 一些 作系統(tǒng)中,并不存在內(nèi)核支持的線程,線程是由用戶態(tài)的庫函數(shù)提供的。 在 后 2,內(nèi)核中添加了輕量級(jí)進(jìn)程的概念。 輕量級(jí)進(jìn)程在功能上與線程的功能類似,目前, 統(tǒng)上的一些線程庫也是用輕量級(jí)進(jìn)程實(shí)現(xiàn)的。 圖 2是線程與輕量級(jí)進(jìn)程的區(qū)別。 圖 2 線程和輕量級(jí)進(jìn)程 從圖中可以看出 , 線程屬于某個(gè)進(jìn)程,進(jìn)程擁有地址空間和文件表等資源,屬于同一個(gè)進(jìn)程的線程共享這些資源。 輕量級(jí)進(jìn)程直接引用它們自己的地址空間和文件表,但是,兩個(gè)輕量級(jí)進(jìn)程可以同時(shí)引用相同的地址空間和文件表 ,這時(shí),這兩個(gè) 輕量級(jí)進(jìn)程實(shí)際上就相當(dāng)于同一個(gè)進(jìn)程內(nèi)的兩個(gè)線程 ,如圖中的輕量級(jí)進(jìn)程一 和輕量級(jí)進(jìn)程二。 在 統(tǒng)中,可以用輕量級(jí)進(jìn)程模擬出線程。 “和欣”操作系統(tǒng)中的進(jìn)程與線程概念與 常相似,只不過“和欣 ”操作系統(tǒng)的 基于構(gòu)件的,因此,用戶是通過 口訪問進(jìn)程和線程對(duì)象的。 進(jìn)程 線程一 線程二 線程三 地址空間 文件表 輕量級(jí)進(jìn)程一 輕量級(jí)進(jìn)程二 輕量級(jí)進(jìn)程三 地址空間 1 文件表 1 地址空間 2 文件表 2 第 2 章 相關(guān)內(nèi)容的分析和討論 7 同步機(jī)制 同步機(jī)制非常豐富,有信號(hào)量( 對(duì)象 、事件( 象 和互斥( 對(duì)象 以及關(guān)鍵代碼段( 等 。 前 三種同步對(duì)象都能夠進(jìn)行進(jìn)程間的同步 ,關(guān)鍵代碼段則屬于用戶方式對(duì)象,它只能進(jìn)行一個(gè) 進(jìn)程內(nèi)線程之間的同步。 關(guān)鍵代碼段是指一個(gè)小代碼段,在代碼能夠執(zhí)行前,它必須獨(dú)占對(duì)某些共享資源的訪問權(quán)。這是讓若干行代碼能夠“以原子操作方式”來使用資源的一種方法。所謂 原子操作方式,是指該代碼知道沒有別的線程要訪問該資源。當(dāng)然,系統(tǒng)仍然能夠抑制你的線程的運(yùn)行,而搶先安排其 它 線程的運(yùn)行。不過,在線程退出關(guān)鍵代碼段之前,系統(tǒng)將不給想要訪問相同資源的其它任何線程進(jìn)行調(diào)度。 信號(hào)量 對(duì)象 用于對(duì)資源進(jìn)行計(jì)數(shù)。它包含兩個(gè)帶符號(hào)的 32 位值,一個(gè)是最大資源數(shù)量,一個(gè)是當(dāng)前資源數(shù)量。最大資源數(shù)量用于標(biāo)識(shí) 信號(hào)量 對(duì)象 能夠控制的資源的最大數(shù)量,而當(dāng)前資源數(shù)量則用于標(biāo)識(shí)當(dāng)前可以使用的資源的數(shù)量。信號(hào)量 對(duì)象 的使用規(guī)則如下: 如果當(dāng)前資源的數(shù)量大于 0,則發(fā)出 信號(hào)。 如果當(dāng)前資源數(shù)量是 0,則不發(fā)出 信號(hào)。 系統(tǒng)決不允許當(dāng)前資源的數(shù)量為負(fù)值。 當(dāng)前資源數(shù)量決不能大于最大資源數(shù)量。 事件 對(duì)象 包含一個(gè)用于指明該事件是個(gè)自動(dòng)重置的事件還是一個(gè)人工重置的事件的布爾值,另一個(gè)用于指明該事件處于已通知狀態(tài)還是未通知狀態(tài)的布爾值。 事件對(duì)象 能夠通知一個(gè)操作已經(jīng)完成。有兩種不同類型的事件對(duì)象。一種是人工重置的事件,另一種是自動(dòng)重置的事件。當(dāng)人工重置的事件得到通知時(shí),等待該事件的所有線程均變?yōu)榭烧{(diào)度線程。當(dāng)一個(gè)自動(dòng)重置的事件得到通知時(shí),等待該事件的線程中只有一個(gè)線程變?yōu)榭烧{(diào)度線程。 互斥對(duì)象 能夠確保線程擁有對(duì)單個(gè)資 源的互斥訪問權(quán)。 互斥對(duì)象 包含一個(gè)使用數(shù)量,一個(gè)線程 一個(gè)遞歸計(jì)數(shù)器。 互斥對(duì)象 的行為特性與關(guān)鍵代碼段( 相同,但是互斥對(duì)象屬于內(nèi)核對(duì)象,而關(guān)鍵代碼段則屬于用戶方式對(duì)象。這意味著互斥對(duì)象的運(yùn)行速度比關(guān)鍵代碼段要慢。但是這也意味著不同進(jìn)程中的多個(gè)線程能夠訪問單個(gè)互斥對(duì)象,并且這意味著線程在等待訪第 2 章 相關(guān)內(nèi)容的分析和討論 8 問資源時(shí)可以設(shè)定一個(gè)超時(shí)值。 于標(biāo)識(shí)系統(tǒng)中的哪個(gè)線程當(dāng)前擁有互斥對(duì)象,遞歸計(jì)數(shù)器用于指明該線程擁有互斥對(duì)象的次數(shù)。互斥對(duì)象有許多用途,屬于最常用的內(nèi)核對(duì)象之一。通常來說,它們用于保護(hù) 由多個(gè)線程訪問的內(nèi)存塊。如果多個(gè)線程要同時(shí)訪問內(nèi)存塊,內(nèi)存塊中的數(shù)據(jù)就可能遭到破壞?;コ鈱?duì)象能夠保證訪問內(nèi)存塊的任何線程擁有對(duì)該內(nèi)存塊的獨(dú)占訪問權(quán),這樣就能夠保證數(shù)據(jù)的完整性。互斥對(duì)象的使用規(guī)則如下: 如果線程 0(這是個(gè)無效 互斥對(duì)象不被任何線程所擁有,并且發(fā)出該互斥對(duì)象的通知信號(hào)。 如果 個(gè)非 0 數(shù)字,那么一個(gè)線程就擁有互斥對(duì)象,并且不發(fā)出該互斥對(duì)象的通知信號(hào)。 與所有其 它 內(nèi)核對(duì)象不同, 互斥對(duì)象在操作系統(tǒng)中擁有特殊的代碼,允許它們違反正常的規(guī)則 :系統(tǒng)要查看試圖獲取互斥對(duì)象的線程 的 否與互斥對(duì)象中記錄的線程 同。如果兩個(gè)線程 同,即使互斥對(duì)象處于未通知狀態(tài),系統(tǒng)也允許該線程保持可調(diào)度狀態(tài)。 作系統(tǒng)的同步對(duì)象相對(duì)要少一些,最常用的是信號(hào)量( 核不提供事件( 象和互斥( 象。 的一些線程函數(shù)庫,如 程庫提供 對(duì)象,但這些實(shí)現(xiàn)中的 都只能在進(jìn)程內(nèi)部工作 ,不能跨越不同地址空間的進(jìn)程。 “和欣”中的同步對(duì)象與 似,語義也基本相同,這主要是因?yàn)樵谠O(shè)計(jì)“和欣” 操作系統(tǒng)時(shí),考慮到 作系統(tǒng)的普及程度,因此,盡量在功能上保持與 近。 但是,“和欣”操作系統(tǒng)還添加了兩個(gè)同步對(duì)象:條件變量( 象和讀寫鎖( 象。 在 節(jié) , 將對(duì)“和欣”操作系統(tǒng)的內(nèi)核對(duì)象進(jìn)行詳細(xì)介紹。 因?yàn)椤昂托馈辈僮飨到y(tǒng)與 作系統(tǒng)語義和功能上的接近, 所以 在實(shí)現(xiàn) 的平臺(tái)適配層( ,非常的簡(jiǎn)單。在 基礎(chǔ)上,才進(jìn)一步搭建了具 有構(gòu)件語義的 擬層,而這一層以 基礎(chǔ),在 是一樣的,甚至是二進(jìn)制兼容的。 因此,在本文之后介紹設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié)時(shí),主要是在 統(tǒng)上展開的。 第 2 章 相關(guān)內(nèi)容的分析和討論 9 可執(zhí)行程序格式 “和欣”操作系統(tǒng)與 作系統(tǒng)一樣,采用了 式的可執(zhí)行文件。 式文件的特點(diǎn)是功能強(qiáng)大并且結(jié)構(gòu)簡(jiǎn)單。它能夠支持動(dòng)態(tài)鏈接庫 的 概念。我們將在下一節(jié)進(jìn)行詳細(xì)介紹。 作系統(tǒng)支持多種文件格式,如 式、 式等。并且, 統(tǒng)支持對(duì)可執(zhí)行文件格式支持的擴(kuò)展。為了以二進(jìn)制兼容的方式運(yùn)行“和欣”操作系統(tǒng)的應(yīng)用程序 ,本文在 實(shí)現(xiàn)了一個(gè)完全功能的 式加載器,將在后文中對(duì)其進(jìn)行詳細(xì)討論和介紹。 其它 還有許多其它方面的功能,如字符集轉(zhuǎn)換,系統(tǒng)時(shí)間獲取,系統(tǒng)內(nèi)存獲取等,雖然在每個(gè)操作系統(tǒng)上的接口細(xì)節(jié)不同,但都有 相似功能的 我們實(shí)現(xiàn) ,用平臺(tái)適配層( 這些 行了封裝。 在后文論述 能看到相關(guān)的討論。 執(zhí)行文件 件 格式 件格式 ( 是從 T 入的一種新可執(zhí)行文件格式。 件格式在制定過程中主要參照了 作系統(tǒng)所通用的范,同時(shí)為了保證與舊版本 作系統(tǒng)的兼容, 常見的 部,因此 件最開始的兩個(gè)字符是 不是 件被稱為是可移植的,并非是指 式的可執(zhí)行文件可以在不同的平臺(tái)(如 等)上執(zhí)行,而是指不同平臺(tái)上加載該 件的加 載器無需經(jīng)過完全重寫就可以達(dá)到加載 件的目的。 件格式被組織為一個(gè)線性的數(shù)據(jù)流,它由一個(gè) 部開始,接著是一個(gè) 實(shí) 模式的程序殘余以及一個(gè) 件標(biāo)志, 之后緊接著 件頭和可選頭部。這些之后是節(jié)表 , 節(jié) 頭 表 之后跟隨著所有的 節(jié) 實(shí)體。我將所有這些第 2 章 相關(guān)內(nèi)容的分析和討論 10 成分列于 圖 3。 圖 3 件結(jié)構(gòu) 的存在主要是為了兼容 作系統(tǒng), 和實(shí)模式程序 殘余 實(shí)際上是一個(gè)完整的 序,在 作系統(tǒng)中運(yùn)行時(shí),它會(huì)輸出“ be OS 。 在 32 位的 作系統(tǒng)中執(zhí)行時(shí),操作系統(tǒng)會(huì)跳過這兩個(gè) 部 分,去執(zhí)行有效的 32 位代碼段。 接下來的 件頭,說明了一些該 件的信息,包括這個(gè)二進(jìn)制程序可以在什么機(jī)器上運(yùn)行 ,它有多少個(gè)節(jié), 鏈接 的時(shí)間,是一個(gè)動(dòng)態(tài)鏈接庫( 是可執(zhí)行程序等等。 在可執(zhí)行文件(包
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職肌電圖技術(shù)(肌電圖基礎(chǔ))試題及答案
- 2025年高職應(yīng)用化工(化工工藝設(shè)計(jì))試題及答案
- 2025年大學(xué)三年級(jí)(檔案學(xué))檔案保管綜合測(cè)試題及答案
- 2025年大學(xué)核化工技術(shù)(核化工應(yīng)用)試題及答案
- 2025年中職中餐烹飪(閩菜制作)試題及答案
- 2025年高職(市政工程技術(shù))橋梁養(yǎng)護(hù)技術(shù)階段測(cè)試題及答案
- 2025年中職休閑體育服務(wù)與管理(健身課程指導(dǎo))試題及答案
- 2025年大學(xué)護(hù)理(中醫(yī)護(hù)理理論)試題及答案
- 初二語文(專題突破)2027年上學(xué)期單元測(cè)試卷
- 2025年高職模具設(shè)計(jì)與制造(模具加工工藝)試題及答案
- 工業(yè)AI《2025年》機(jī)器視覺應(yīng)用測(cè)試題
- new共青團(tuán)中央所屬單位2026年度高校畢業(yè)生公開招聘66人備考題庫及完整答案詳解
- (更新)卵巢癌分子病理檢測(cè)臨床應(yīng)用指南解讀課件
- 2025云南昆明巫家壩城市發(fā)展建設(shè)有限公司社會(huì)招聘14人參考筆試題庫及答案解析
- 跨境電商物流解決方案方案模板
- 無創(chuàng)正壓通氣護(hù)理技術(shù)團(tuán)體標(biāo)準(zhǔn)2026
- 鋼結(jié)構(gòu)廠房拆除施工方案設(shè)計(jì)
- 2026共青團(tuán)中央所屬單位高校畢業(yè)生招聘66人考試筆試備考題庫及答案解析
- 多維并舉:河南省周口市農(nóng)村養(yǎng)老服務(wù)體系的困境與突破
- 2025中國企業(yè)出海競(jìng)爭(zhēng)力指數(shù)報(bào)告
- 2026屆湖南省長(zhǎng)沙市長(zhǎng)郡集團(tuán)物理八年級(jí)第一學(xué)期期末復(fù)習(xí)檢測(cè)模擬試題含解析
評(píng)論
0/150
提交評(píng)論