版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、摘要.3 關(guān)鍵詞.3 引言.4 第1 章 linux 系統(tǒng)概述.5 1.1 linux 系統(tǒng)的誕生和發(fā)展5 1.2 linux 系統(tǒng)的主要特點.5 1.3 linux 操作系統(tǒng)的研究現(xiàn)狀及未來發(fā)展方向.6 第2 章 linux 系統(tǒng)內(nèi)核簡析.6 2.1 linux 系統(tǒng)內(nèi)核概述.6 2.2 linux 系統(tǒng)內(nèi)核體系結(jié)構(gòu)簡析.7 2.2.1 gnu/linux 操作系統(tǒng)基本體系結(jié)構(gòu).7 2.2.2 linux 系統(tǒng)內(nèi)核體系結(jié)構(gòu).8 2.3 linux 系統(tǒng)內(nèi)核配置和編譯方法.10 2.4 研究linux 系統(tǒng)內(nèi)核的意義.11 第3 章 linux 文件系統(tǒng)簡析.13 3.1 linux 文件系統(tǒng)
2、概述.13 3.1.1 linux 文件系統(tǒng)基本定義.13 3.1.2 linux 文件系統(tǒng)文件類型.14 3.1.3 現(xiàn)今流行的linux 文件系統(tǒng)版本.14 3.2 linux 文件系統(tǒng)基本體系結(jié)構(gòu).16 3.3 linux ext2 文件系統(tǒng)簡析.17 3.3.1 linux ext2 文件系統(tǒng)整體結(jié)構(gòu)和布局.18 3.3.2 linux ext2 文件系統(tǒng)磁盤空間分配.18 3.3.3 linux ext2 文件系統(tǒng)主要數(shù)據(jù)結(jié)構(gòu).19 3.3.4 linux ext2 文件系統(tǒng)位示圖和i 節(jié)點圖. 20 3.4 linux ext2文件系統(tǒng)讀/寫操作分析.22 3.4.1 linux
3、ext2 文件系統(tǒng)寫操作分析.22 3.4.2 linux ext2 文件系統(tǒng)讀操作分析.33 總結(jié)34 參考文獻35 致謝:.36 2 linux 文件系統(tǒng)分析 隨著計算機和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,linux 系統(tǒng)作為一個優(yōu)秀開源系統(tǒng)的重要意義逐步顯現(xiàn)。本文首先介紹了linux 系統(tǒng)概念.誕生過程以及l(fā)inux 系統(tǒng)當(dāng)前和未來的發(fā)展方向。結(jié)合當(dāng)前實際情況,揭示了linux 系統(tǒng)研究的重要理論和現(xiàn)實意義。本文采用linux 內(nèi)核2.4.0 版本進行研究,重點放在ext2 文件系統(tǒng)的讀/寫操作分析上。在研究過程中,本文對linux 系統(tǒng)的研究經(jīng)過了理論知識準(zhǔn)備.系統(tǒng)概要分析.文件系統(tǒng)寫操作的詳細(xì)分析
4、等幾個步驟。在了解了linux 系統(tǒng)內(nèi)核基本框架和基本數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,具體對 linux ext2 文件系統(tǒng)的讀/寫操作的實現(xiàn)算法進行了詳細(xì)的分析。本文的主要目的就是對 linux 系統(tǒng)文件系統(tǒng)的各種功能進行深入的研究,以求能掌握 linux 文件系統(tǒng)的基本原理和實現(xiàn)方式,進而從內(nèi)核代碼層面上理解linux 系統(tǒng)的基本原理和實現(xiàn)方法。 :linux系統(tǒng);內(nèi)核;文件系統(tǒng);ext2;讀/寫操作; analysis of the linux file system abstract: with the rapid development of computers and network techn
5、ology, linux system as an excellent open-source system the importance of gradually appear. this dissertation introduces the concept of a linux system. birth process and the development direction of linux systems from present to the future .with the current actual situation, and show the linux system
6、 study of the important theoretical and practical significance. in this dissertation, focusing on the ext2 file system read / write operations analysis on the linux kernel version 2.4.0 . in the course of the study, this dissertation on the linux system on a theoretical knowledge of the preparations
7、. system summary analysis . file system write operation a detailed analysis of several steps. to understand the core of the linux system that the basic framework and the basic data structure on the basis of specific linux ext2 file system read / write operations of the algorithm to achieve a detaile
8、d analysis. this article main purpose is conducts the thorough research to linux system file systems each kind of function, can know the linux filing systems basic principle and realize the way in order to, then from the essence code stratification plane understood that the linux systems basic princ
9、iple and realize. keywords:linux system;kernel;file system;ext2;read/write operations; 計算機和互聯(lián)網(wǎng)的出現(xiàn)和蓬勃發(fā)展對人類生活的影響是革命性的,因為它徹底改變了人們獲取信息乃至生活的方式,人們越來越多地在日常生活中頻繁地使用到計算機和互聯(lián)網(wǎng)。 人們?yōu)榱四芎啽?快捷而準(zhǔn)確地享用計算機技術(shù)飛速發(fā)展帶來的成果,對一個簡 3 單.高效.安全的操作系統(tǒng)需要也越來越大?,F(xiàn)今的主流操作系統(tǒng)主要有windows系.unix系列和linux系列三種。三個系列操作系統(tǒng)各有自己的局限性:windows系列操作系統(tǒng)價格昂貴.相對安
10、全性和效率較低,但用戶界面設(shè)計技術(shù)成熟;unix系列操作系統(tǒng)價格過于昂貴,且需要具有相當(dāng)專業(yè)計算機知識才能對其進行操作;linux系列操作系統(tǒng)也存在用戶界面不友好的問題,但是近些年,無數(shù)的有志之士對該系列的操作系統(tǒng)進行了全方位.深層次的改進,基本已經(jīng)克服了用戶界面的問題。而且在功能上也得到了很大的發(fā)展和豐富。最重要的一點是linux系列的系統(tǒng)與windows系列.unix系列操作系統(tǒng)相比,幾乎是完全免費的,而功能卻能與前兩者媲美,并且所有源程序和應(yīng)用程序的源代碼都是公開的,我們可以很輕松的獲得。因此,如果我們想要學(xué)習(xí)操作系統(tǒng)原理或者尋找一個便捷.實用的操作系統(tǒng)替代昂貴的windows系列.un
11、ix系列操作系統(tǒng),對于廣大的個人用戶和中小企業(yè)來說,linux系列操作系統(tǒng)無疑是最好的選擇之一。 近年來,linux系統(tǒng)在全球范圍內(nèi)掀起了一個又一個熱潮,人們越來越意識到linux系統(tǒng)的優(yōu)越性。本文也是在這種情況下誕生的。 本文的第一章對linux系統(tǒng)的定義.歷史和現(xiàn)狀做了詳細(xì)的闡述。總結(jié)了linux系統(tǒng)對當(dāng)今和未來世界的影響。 本文的第二章對linux系統(tǒng)的內(nèi)核做了一個比較全面的介紹,主要從發(fā)展歷史.設(shè)計目標(biāo).代碼特點.內(nèi)核體系結(jié)構(gòu)以及研究內(nèi)核的重要意義幾個方面入手,為后面的深入研究打下理論基礎(chǔ)。 本文的第三章,基本內(nèi)容主要從一下幾個方面著手:文件系統(tǒng)概述.基本體系結(jié)構(gòu).ext2文件系統(tǒng)簡析
12、.ext2文件系統(tǒng)讀/寫操作相關(guān)源代碼分析。這也是本文的分析重點。之所以選擇ext2文件系統(tǒng),是因為該文件系統(tǒng)作是一個專門為linux系統(tǒng)開發(fā)的可擴展和強大的文件系統(tǒng)。它至少在 linux 社區(qū)中是最成功也是最流行的文件系統(tǒng),是所有當(dāng)前的 linux 發(fā)布版的基礎(chǔ),其重要性和代表性不言而喻。 嚴(yán)格意義上來說,linux 操作系統(tǒng)是 unix 操作系統(tǒng)的一種克隆系統(tǒng)。它誕生于1991 年的10 月5 日(這是第一次正式向外公布的時間)。以后借助于internet 網(wǎng)絡(luò),并經(jīng)過全世界各地計算機愛好者的共同努力下,現(xiàn)已成為今天世界上使用最 4 多的一種unix 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。
13、linux 操作系統(tǒng)的誕生、發(fā)展和成長過程始終依賴著以下五個重要支柱:unix 操作系統(tǒng)、minix 操作系統(tǒng)、gnu 計劃、posix 標(biāo)準(zhǔn)和internet 網(wǎng)絡(luò)。 對上述linux 的五大支柱可以歸納如下: (1) unix 操作系統(tǒng) - unix 于1969 年誕生在bell 實驗室。linux 就是unix 的一種克隆系統(tǒng)。unix 的重要性就不用多說了。 (2) minix 操作系統(tǒng) - minix 操作系統(tǒng)也是unix 的一種克隆系統(tǒng),它于1987 年由著名計算機教授andrew s. tanenbaum 開發(fā)完成。由于minix 系統(tǒng)的出現(xiàn)并且提供源代碼(只能免費用于大學(xué)內(nèi))在
14、全世界的大學(xué)中刮起了學(xué)習(xí) unix 系統(tǒng)旋風(fēng)。linux 剛開始就是參照minix 系統(tǒng)于1991 年才開始開發(fā) (3) gnu 計劃- 開發(fā)linux 操作系統(tǒng),以及l(fā)inux 上所用大多數(shù)軟件基本上都出自gnu 計劃。linux 只是操作系統(tǒng)的一個內(nèi)核,沒有g(shù)nu 軟件環(huán)境(比如說bash shell),則linux 將寸步難行。 (4) posix 標(biāo)準(zhǔn) - 該標(biāo)準(zhǔn)在推動 linux 操作系統(tǒng)以后朝著正規(guī)路上發(fā)展起著重要的作用。是linux 前進的燈塔。 (5) internet - 如果沒有 intenet 網(wǎng),沒有遍布全世界的無數(shù)計算機駭客的無私奉獻,那么linux 最多只能發(fā)展到0
15、.13(0.95)版的水平。 linux 系統(tǒng)的工作方式類似于unix 操作系統(tǒng),擁有現(xiàn)代操作系統(tǒng)的所有內(nèi)容,例如: 真正的搶先式多任務(wù)處理,支持多用戶 內(nèi)存保護 虛擬內(nèi)存 支持對稱多處理機smp(symmetric multiiprocessing),幾多個cpu 及其,以及通常的單cpu 機器 符合posix 標(biāo)準(zhǔn) 聯(lián)網(wǎng) 圖形用戶接口和多個桌面環(huán)境 速度和穩(wěn)定性 隨著linux 應(yīng)用范圍的迅速擴大,企業(yè)對linux 技術(shù)人才的需求空前膨脹,但 5 與廣闊的市場需求相對應(yīng)的卻是linux 人才的嚴(yán)重匱乏。目前所擁有的專業(yè)人才遠(yuǎn)遠(yuǎn)不能滿足linux 迅速發(fā)展的需要,不僅高級的專業(yè)型linux
16、技術(shù)人才寥寥無幾,就連基礎(chǔ)應(yīng)用人才也沒有形成規(guī)模。linux 內(nèi)核本身的發(fā)展方向主要是硬件支持,嵌入系統(tǒng)和分布系統(tǒng)三個方面。提供更多高性能的硬件驅(qū)動程序,讓更新,更好的硬件迅速在linux 系統(tǒng)下工作是linux 普及和廣泛應(yīng)用的基礎(chǔ)。面隊巨大的電子產(chǎn)品市場和潛在用戶群,嵌入式軟件的應(yīng)用前景十分廣闊,而linux 系統(tǒng)本身的開放特性以及穩(wěn)定的性能都比較適合作為開發(fā)嵌入系統(tǒng)的原型,國內(nèi)外都有這樣的研究項目,也有相當(dāng)成功的案例。分布式系統(tǒng)是當(dāng)前操作系統(tǒng)發(fā)展的另一個重要領(lǐng)域,以linux 內(nèi)核為基礎(chǔ),按照自由軟件開發(fā)模式,發(fā)展高性能的自由分布操作系統(tǒng)發(fā)展的必然趨勢。此外,linux 上的桌面系統(tǒng),應(yīng)
17、用系統(tǒng),尤其是軟件開發(fā)工具是linux發(fā)展的重要方面。桌面系統(tǒng)直接關(guān)系到linux 界面的友好性與易用性。應(yīng)用軟件關(guān)系到系統(tǒng)的可用性,而在自由軟件開發(fā)模式中引入軟件工程新技術(shù)和成功經(jīng)驗有助于快速開發(fā)linux 平臺上的應(yīng)用軟件。 如果單單說linux,它其實只是一個內(nèi)核的標(biāo)識,不同于我們平時所說的redhat linux,debian gnu/linux 等發(fā)行版本,這些發(fā)行版本除了內(nèi)核外還包括不同的外部應(yīng)用程序以方便用戶使用和管理操作系統(tǒng)。 內(nèi)核(kernel)是操作系統(tǒng)的內(nèi)部核心程序,它向外部提供了對計算機設(shè)備的核心管理調(diào)用。 一般來講,操作系統(tǒng)上運行的代碼可以分成兩個部分:內(nèi)核所在的地址
18、空間稱作內(nèi)核空間;而在內(nèi)核以外,剩下的程序統(tǒng)稱為外部管理程序,它們大部分是對外圍設(shè)備的管理和界面操作。外部管理程序與用戶進程所占據(jù)的地址空間稱為外部空間或用戶空間。通常,一個程序會跨越這兩個空間。當(dāng)執(zhí)行到內(nèi)核空間的一段代碼時,我們稱程序處于內(nèi)核態(tài),而當(dāng)程序執(zhí)行到外部空間代碼時,我們稱程序處于用戶態(tài)。內(nèi)核負(fù)責(zé)對計算機硬件的管理和抽象,并合理分配這些資源給各個執(zhí)行程序共享使用。 一個完整的操作系統(tǒng)主要由四部分構(gòu)成:硬件.操作系統(tǒng)內(nèi)核.操作系統(tǒng)服務(wù)和 6 用戶應(yīng)用程序。而一個標(biāo)準(zhǔn)的gnu/linux 操作系統(tǒng)的基本體系結(jié)構(gòu)如下圖: 圖2.1 gnu/linux 操作系統(tǒng)基本體系結(jié)構(gòu) fig 2.1
19、gnu/linux os basic architecture 最上面是用戶(或應(yīng)用程序)空間。這是用戶應(yīng)用程序執(zhí)行的地方。用戶空間之下是內(nèi)核空間,linux 內(nèi)核正是位于這里。 gnu c library (glibc)也在這里。它提供了連接內(nèi)核的系統(tǒng)調(diào)用接口,還提供了在用戶空間應(yīng)用程序和內(nèi)核之間進行轉(zhuǎn)換的機制。這點非常重要,因為內(nèi)核和用戶空間的應(yīng) 用程序使用的是不同的保護地址空間。每個用戶空間的進程都使用自己的虛擬地址空間,而內(nèi)核則占用單獨的地址空間。 linux 內(nèi)核可以進一步劃分成 3 層。最上面是系統(tǒng)調(diào)用接口,它實現(xiàn)了一些基本的功能,例如 read 和 write。系統(tǒng)調(diào)用接口之下是
20、內(nèi)核代碼,可以更精確地定義為獨立于體系結(jié)構(gòu)的內(nèi)核代碼。這些代碼是 所支持的所有處理器體系結(jié)構(gòu)所通用的。在這些代碼之下是依賴于體系結(jié)構(gòu)的代碼,構(gòu)成了通常稱為 bsp(board support package)的部分。這些代碼用作給定體系結(jié)構(gòu)的處理器和特定于平臺的代碼。 linux 內(nèi)核主要由五個模塊組成,它們分別是:進程調(diào)度模塊.內(nèi)存管理模塊.文件系統(tǒng)模塊.進程間通信模塊.網(wǎng)絡(luò)接口模塊。 7 在linux 系統(tǒng)內(nèi)核中,系統(tǒng)內(nèi)核是關(guān)鍵的核心部分,完成了操作系統(tǒng)的基本任務(wù)。linux 系統(tǒng)支持多進程的并發(fā)運行,每個進程都請求系統(tǒng)資源,比如處理能力、內(nèi)存、網(wǎng)絡(luò)連接和其他一些資源等。內(nèi)核作為大的可執(zhí)行
21、代碼,負(fù)責(zé)處理所有這些請求。根據(jù)內(nèi)核完成任務(wù)的不同,可將內(nèi)核功能分成如下幾部分: (1)進程調(diào)度:進程調(diào)度功能負(fù)責(zé)創(chuàng)建和撤銷進程以及處理它們和外部世界的連接(輸入和輸出)。不同進程之間的通信(通過信號、管道或進程間通信原語)是整個系統(tǒng)的基本功能,因此也由內(nèi)核處理。除此之外,控制進程如何共享cpu 的調(diào)度程序也是進程管理的一部分。概括地說,內(nèi)核的進程管理活動就是在單個或多個cpu 上實現(xiàn)多個進程的抽象。 (2)內(nèi)存管理:內(nèi)存是計算機的主要資源之一,用來管理內(nèi)存的策略是決定系統(tǒng) 性能的一個關(guān)鍵因素。內(nèi)核在有限的可用資源上為每個進程都創(chuàng)建了一個虛擬尋 址空間。內(nèi)核的不同部分在和內(nèi)存管理子系統(tǒng)交互時使
22、用一套相同的系統(tǒng)調(diào)用, 包括從簡單的malloc/free 對到其他一些不常用的系統(tǒng)調(diào)用。 (3)文件系統(tǒng):linux 在很大程度上依賴于文件系統(tǒng)的概念,linux 中的每個對象 幾乎都可以被看作文件。內(nèi)核在沒有結(jié)構(gòu)的硬件上構(gòu)造結(jié)構(gòu)化的文件系統(tǒng),所構(gòu) 造的文件系統(tǒng)抽象在整個系統(tǒng)中廣泛使用。另外, linux 支持多種文件系統(tǒng)類型,即在物理介質(zhì)上組織數(shù)據(jù)的不同方式。例如,可以把磁盤格式化為符合linux 標(biāo)準(zhǔn)的ext2/ext3 文件系統(tǒng),也可格式化為常用的fat 文件系統(tǒng)。這方面的內(nèi)核功能將是本文討論的主要內(nèi)容。 (4)設(shè)備控制:幾乎每個系統(tǒng)操作最終都會映射到物理設(shè)備上。除了處理器、內(nèi) 存以及
23、其他很有限的幾個實體之外,所有設(shè)備控制操作都由與被控制設(shè)備相關(guān)的 代碼來完成。這段代碼就叫做設(shè)備驅(qū)動程序,內(nèi)核必須為系統(tǒng)中的每件外設(shè)嵌入 相應(yīng)的驅(qū)動程序,包括硬盤驅(qū)動器、鍵盤和網(wǎng)口等。 (5)網(wǎng)絡(luò)功能:網(wǎng)絡(luò)功能也必須由操作系統(tǒng)來管理,因為大部分網(wǎng)絡(luò)操作都和具體進程無關(guān),數(shù)據(jù)包的傳入是異步事件。在某個進程處理這些數(shù)據(jù)包之前,數(shù)據(jù)包必須已經(jīng)被收集、標(biāo)識和分發(fā)。系統(tǒng)負(fù)責(zé)在應(yīng)用程序和網(wǎng)絡(luò)接口之間傳遞數(shù)據(jù)包,并根據(jù)網(wǎng)絡(luò)活動控制程序的執(zhí)行。另外,所有的路由和地址解析問題都由內(nèi)核處理。linux的優(yōu)良特性之一就是能夠在運行時動態(tài)地擴展內(nèi)核,這就意味著當(dāng)系統(tǒng)正在運行時也可以給內(nèi)核增添新的功能。所以,當(dāng)系統(tǒng)添加
24、新的設(shè)備時,就可以動態(tài)的給linux內(nèi)核添加新的設(shè)備驅(qū)動程序以支持新的設(shè)備。linux 內(nèi)核具有可裁減性,并不是一 8 成不變的。我們通常所說的嵌入式 linux 操作系統(tǒng),一般就是指經(jīng)過一定裁減的linux 操作系統(tǒng)。 這幾個模塊的依賴關(guān)系如下圖: 圖2.2 linux 內(nèi)核模塊依賴關(guān)系 fig 2.2 linux kernel module reliant connection 由圖可以看出,所有的模塊都與進程調(diào)度模塊存在依賴關(guān)系,因為它們都需要依靠進程調(diào)度程序來掛起或重新運行它們的進程。 其他幾個模塊的依賴關(guān)系不太明顯,但同樣也很重要。進程調(diào)度模塊需要使用內(nèi)存管理模塊來調(diào)整特定進程所使用
25、的物理內(nèi)存空間。進程間通信模塊則需要依靠內(nèi)存管理模塊來支持共享內(nèi)存通信機制。這種通信機制允許兩個進程訪問內(nèi)存的同一個區(qū)域以進行進程間信息的交換。虛擬文件系統(tǒng)也會使用網(wǎng)絡(luò)接口來支持網(wǎng)絡(luò)文件系統(tǒng)(),同樣也能使用內(nèi)存管理模塊提供內(nèi)存虛擬盤()設(shè)備。而內(nèi)存管理模塊也會使用文件系統(tǒng)來支持內(nèi)存數(shù)據(jù)塊的交換操作。 綜上所述,不難得出系統(tǒng)內(nèi)核的體系結(jié)構(gòu)圖: 9 圖2.3 linux系統(tǒng)內(nèi)核體系結(jié)構(gòu) fig 2.3 linux system kernel architecture 在本小節(jié),主要介紹linux內(nèi)核代碼配置與編譯的方法。編譯內(nèi)核的第一步就是配置內(nèi)核,這是增加或者減少對內(nèi)核特性的支持以及修改內(nèi)核的
26、一些特性發(fā)揮作用的方式的必要步驟。例如,你可以要求內(nèi)核為自己的聲卡指定一個不同的 dma 通道。 為了完成內(nèi)核的配置,必須先切換到 root 用戶,然后轉(zhuǎn)入如下內(nèi)核源程序目錄: cd /usr/src/linux 接著敲入如下命令組: make config 10 make menuconfig make xconfig 這三條命令都可以讓你來配置內(nèi)核,但它們發(fā)揮作用的方式各不相同: make config三種方法中最簡單也是最枯燥的一種。但是最基本的一點是,它可以適應(yīng)任何情況。這種方法通過為每一個內(nèi)核支持的特性向用戶提問的方式來決定在內(nèi)核 中需要包含哪些特性。對于大多數(shù)問題,你只要回答y(y
27、es,把該特性編譯進內(nèi)核中), m(作為模塊編譯)或者 n(no,根本不對該特性提供支持)。在決定之前用戶應(yīng)該考慮清楚,因為這個過程是不可逆的。如果你在該過程中犯了錯誤,就只能按 ctrl+c 退出。 你也可以敲入?以獲取幫助。 make menuconfig一種基于終端的配置機制,用戶擁有通過移動光標(biāo)來進行瀏覽等功能。 make xconfig只有你能夠在 x server 上用 root 用戶身份運行x應(yīng)用程序時,這種配置方式才可以使用(有些偏執(zhí)的用戶就不愿意使用這 種方式)。如上所述,這三種方法都實現(xiàn)了相同的功能:它們都生成在構(gòu)建內(nèi)核時使用的.config文件。而唯一的區(qū)別是在于創(chuàng)建這個
28、文件時的難易程度不同。構(gòu)建內(nèi)核要做的工作要比配置內(nèi)核所做的工作少得多。雖然有幾種方式都能實現(xiàn)這一功能,但是選擇哪一種依賴于你希望怎樣對系統(tǒng)進行設(shè)置。 首先,如果你還不在內(nèi)核源程序目錄中,請先再次轉(zhuǎn)入這一目錄:cd/usr/src/linux,現(xiàn)在,切換到 root 用戶,使用下面顯示的命令生成內(nèi)核?,F(xiàn)在在 shell 中敲入下面的命令:make dep clean zlilo boot modules modules_install。當(dāng)給出了如上多個目標(biāo)時,除非前面所有的目標(biāo)都成功了,否則 make 能夠知道沒有必要繼續(xù)嘗試下面的目標(biāo)。因此,如果 make 能夠運行結(jié)束,成功退出,那么這就意味
29、著所有的目 標(biāo)都正確構(gòu)建了?,F(xiàn)在你可以重新啟動機器以運行新的內(nèi)核。 linux系統(tǒng)開放的源代碼為中國軟件產(chǎn)業(yè)的發(fā)展和騰飛提供了前所未有的機遇,其主要意義體現(xiàn)在以下幾個方面。 1)開發(fā)“自己的”操作系統(tǒng) 操作系統(tǒng)是所有軟件賴以生存的基礎(chǔ)因此it業(yè)強烈地需要擁有自己的操作系統(tǒng)。但是如果搞一套“自己的”體系結(jié)構(gòu),不同國際標(biāo)椎兼容,結(jié)果也會嚴(yán)重阻礙軟件產(chǎn)業(yè)的發(fā)展。目前,國產(chǎn)操作系統(tǒng)cosix沒有占領(lǐng)市場,而windows又幾乎處于 11 壟斷地位,面對這種局面,出路何在? linux系統(tǒng)的出現(xiàn)正符合攏們的所有要求,因為源代碼公開,開發(fā)者可以立即加入開發(fā)行列,不僅開發(fā)速度大大快于任何商業(yè)操作系統(tǒng)而且可以
30、保證操作系統(tǒng)中不存在任何黑洞和隱蔽的問題,不會受制于人。同時linux是國際化的,我們也不必考慮兼容性問題。因此linux系統(tǒng)對于我們來說,是實現(xiàn)民族騰飛的個難得的機遇。 實際上,操作系統(tǒng)的發(fā)展必將出現(xiàn)在某一標(biāo)淮規(guī)范下百花齊放的局面,定制適合自己的操作系統(tǒng)也將不再僅僅是夢想。但是,開發(fā)一個操作系統(tǒng)不是一件容易的事,甚至分析一個現(xiàn)有的操作系統(tǒng)也并不簡單。 linux系統(tǒng)作為開放式操作系統(tǒng),其設(shè)計和實現(xiàn)并沒有采用很多深奧的知識,有些關(guān)鍵的地方設(shè)計思想之簡單,實現(xiàn)技術(shù)之巧妙確實讓人驚嘆。 開發(fā)適合自己的操作系統(tǒng)應(yīng)從何著手呢?本質(zhì)上,linux核心的東西應(yīng)當(dāng)保持不變,如對linux的進程調(diào)度機制、虛擬
31、管理機制等可以來用借鑒的方式,在此基礎(chǔ)上,增加自己所需要的東西,譬如為了提高某件事的效率,可以增加一個相應(yīng)的內(nèi)核線程。linux內(nèi)核本身的組織方式允許增加或減去相應(yīng)的內(nèi)容,但前提條件是必須對內(nèi)核的內(nèi)部比較清楚,這也是我們分析內(nèi)核的主要目的之一。 2 )開發(fā)高水平軟件 自由軟件聯(lián)盟及“中國自由軟件庫”已經(jīng)涵蓋了操作系統(tǒng)、開發(fā)語言、視窗系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡(luò)、文字處理、排版及多媒體等各個領(lǐng)域,還有vcd解壓源程序、路由器源程序等。利用自由軟件讓pc帶十幾個硬盤實現(xiàn)磁盤陣列技術(shù),及其亞微米超大規(guī)模集成電路cad系統(tǒng),可直接輸出生產(chǎn)線控制數(shù)據(jù)等,這能讓我們學(xué)習(xí)到最先進的軟件開發(fā)規(guī)范和開發(fā)技術(shù),linux內(nèi)
32、核的許多面向通信的底層代碼,對開發(fā)我國白己的信息安全沖品有極高的參考價值。 實際上,目前l(fā)inux的源代碼中包含了世界各地幾百名計算機高于的作品分析這些源代碼對于我們掌握核心技術(shù)會起到事半功倍的作用,尤其是各種驅(qū)動程序的編寫,對于我們把軟硬件結(jié)合起來發(fā)展民族信息產(chǎn)業(yè)至關(guān)重要。要改變目前我國軟件開發(fā)在低層次上的重復(fù)過程,必須掌握操作系統(tǒng)的核心技術(shù)。 只要站在“巨人”的肩上,認(rèn)真鉆研,就一定能深入了解它,利用它,研制出自己的解壓芯片、路由器、磁盤陣列產(chǎn)品,開發(fā)出高級的cad系統(tǒng)等,打破國外的技術(shù)封鎖,振興我國的民族信息產(chǎn)業(yè)。 3 ) 計算機科學(xué)的教學(xué)和科研 12 對于從事計算機教學(xué)和科研的人來說,
33、linux具有更多一層的意義,一般商業(yè)出售的unix的完整版本,除了價格高之外,還不提供其核心程序的源代碼,這樣,若想了解unix的內(nèi)核,或在內(nèi)核程序上做一些改進就很困難,更談不上作為操作系統(tǒng)教學(xué)和科研的平臺了。而linux提供了從內(nèi)核到上層的所有軟件的全部源程序,在易于獲得源代碼的條件下,如果能對源代碼的組織結(jié)構(gòu)、實現(xiàn)原理及實現(xiàn)機制進行較詳細(xì)的描述,那么對深入了解源程序?qū)⒂泻艽髱椭?linux也很適合作教學(xué)用操作系統(tǒng),般的操作系統(tǒng)教材只講操作系統(tǒng)的實現(xiàn)原理,學(xué)生覺得既抽象又不能發(fā)現(xiàn)操作系統(tǒng)的重要價值。盡管有些書也是以unix為實例,但學(xué)生也很難接觸到unix操作系統(tǒng),這對學(xué)生真止深入了解操
34、作系統(tǒng)造成困難。 國外很多大學(xué)已經(jīng)把linux作為教學(xué)用操作系統(tǒng),這主要是因為:linux平臺易于建立;linux內(nèi)核源代碼易于獲得;linux結(jié)構(gòu)簡單、清晰:linux的實現(xiàn)采用了大量的數(shù)據(jù)結(jié)構(gòu),可以鍛煉學(xué)生的抽象思維能力和知識應(yīng)用能力。 若要問構(gòu)成一個操作系統(tǒng)最重要的部件是什么?那就莫過于進程管理和文件系統(tǒng)了。事實上,有些操作系統(tǒng)(如一些嵌入式系統(tǒng))可能有進程管理而沒有文件系統(tǒng);而另一些操作系統(tǒng)(如ms-dos)則只有文件系統(tǒng)沒有進程管理??墒?,要是二者都沒有,這個系統(tǒng)就稱不上操作系統(tǒng)了。 首先,文件系統(tǒng)這個詞的含義比較寬泛。其中文件的含義就有狹義和廣義之分。狹義地說,文件是指磁盤文件,進
35、而可以是有組織有次序地存儲于任何介質(zhì)中的一組信息。廣義的說,unix 從一開始就把外部設(shè)備都當(dāng)成了文件,從這個意義上來講,凡是可以產(chǎn)生或小號信息的都是文件。以在網(wǎng)絡(luò)環(huán)境中用來收發(fā)報文的插門機制來說,它就并不代表存儲著的信息,但是插口的發(fā)送端消耗信息,而接收端則產(chǎn)出信息,所以把插口看成文件是合乎邏輯的??墒牵词箳侀_文件這一詞語的寬泛性不說,文件系統(tǒng)這個詞又進一步有幾種不同的含義,要根據(jù)上下文才能加以區(qū)分: (1)指一種特定的文件格式,例如,我們說linux 的文件系統(tǒng)是ext2,ms-dos 的文件系統(tǒng)是fat16,而windows nt 的文件系統(tǒng)是ntfs 或fat32,就是這個意思。 (
36、2)指按特定格式進行了格式化的一塊存儲介質(zhì)。當(dāng)我們說安裝或者拆卸一個文件系統(tǒng)時,指的就是這個意思。 13 (3)指操作系統(tǒng)中(通常是在內(nèi)核中)用來管理文件系統(tǒng)以及對文件進行操作的機制和實現(xiàn)。顯而易見,本論文的主要目的正是在此。 linux 最初采用的是 minix 的文件系統(tǒng),但是 minix 只是一個實驗性的操作系統(tǒng),其文件系統(tǒng)的大小僅限于 64m ,文件名長度限于 14 個字節(jié)。所以,經(jīng)過一段時間的改進和發(fā)展,特別是吸取了多年來對傳統(tǒng)unix 文件系統(tǒng)的各種改進所累積起的經(jīng)驗,最后形成了現(xiàn)在的ext2 和ext3 文件系統(tǒng),這個文件系統(tǒng)可以說就是linux文件系統(tǒng)。 除linux 本身的文
37、件系統(tǒng)外,設(shè)計人員很早就注意到了如何使linux 支持其他各種不同文件系統(tǒng)的問題。要實現(xiàn)這個目的,就要將對各種不同文件系統(tǒng)的操作和管理納入到一個統(tǒng)一的框架中,讓內(nèi)核中的文件系統(tǒng)界面成為一個文件系統(tǒng)的總線,使得用戶程序可以通過同一個文件系統(tǒng)操作界面,也就是同一組系統(tǒng)調(diào)用,對各種不同的文件系統(tǒng)以及文件進行操作。這樣,就可以對用戶程序隱去各種不同文件系統(tǒng)的實現(xiàn)細(xì)節(jié),為用戶程序提供一個統(tǒng)一的抽象的虛擬的文件系統(tǒng)界面,這就是所謂的虛擬文件系統(tǒng) vfs,這個抽象的界面主要由一組標(biāo)準(zhǔn)的抽象的文件系統(tǒng)構(gòu)成,以系統(tǒng)調(diào)用的形式提供于用戶程序。 linux 文件系統(tǒng)文件類型主要有普通文件.目錄.字符設(shè)備或塊設(shè)備文件
38、.套接口文件.符號連接文件幾種。這里就不一一細(xì)說了。 linux 系統(tǒng)所用的文件系統(tǒng)在0.0.1 版時使用的是minix 文件系統(tǒng),直到0.95版才出現(xiàn)了現(xiàn)今通用的虛擬文件系統(tǒng)(vfs)。 在引進了vfs 的概念之后,能夠與linux 系統(tǒng)兼容的文件系統(tǒng)得到了快速的發(fā)展,現(xiàn)今流行的主要有下列幾種: 文件系統(tǒng) 類型名稱 用途 second extended filesystem ext2 最常用的linux 文件系統(tǒng) three extended filesystem ext3 ext2 的升級版,帶日志功能 14 minix filesystem minix minix 文件系統(tǒng),很少用 ra
39、m filesystem ramfs 內(nèi)存文件系統(tǒng),速度超快 network file system(nfs) nfs 網(wǎng)絡(luò)文件系統(tǒng),由sun 發(fā)明,主要用于遠(yuǎn)程文件共享 dos-fat filesystem msdos ms-dos 文件系統(tǒng) vfat filesystem vfat windows95/98 采用的文件系統(tǒng) nt filesystem ntfs windows nt 采用的文件系統(tǒng) hpfs filesystem hpfs os/2 采用的文件系統(tǒng) /proc filesystem proc 虛擬的進程文件系統(tǒng) iso 9660 filesystem iso9660 大部份
40、光盤所用的文件系統(tǒng) ufs filesystem ufs sun os 所用的文件系統(tǒng) apple mac filesystem hfs macintosh 機采用的文件系統(tǒng) novell filesystem ncpfs novell 服務(wù)器所采用的文件系統(tǒng) smb filesystem smbfs samba 的共享文件系統(tǒng) xfs filesystem xfs 由sgi 開發(fā)的先進的日志文件系統(tǒng),支持超大容量文件 jfs filesystem jfs ibm 的aix 使用的日志文件系統(tǒng) reiserfs filesystem reiserfs 基于平衡樹結(jié)構(gòu)的文件系統(tǒng) 15 linux
41、 文件系統(tǒng)基本體系結(jié)構(gòu)直觀表示如下圖: 圖3.1 linux 文件系統(tǒng)基本體系結(jié)構(gòu) fig 3.1 linux file system basic architecture linux 文件系統(tǒng)基本物理結(jié)構(gòu)如下: 16 圖3.2 linux 文件系統(tǒng)基本物理結(jié)構(gòu) fig 3.2 linux file system basic physics configuration ext2(the second extended file system或extended file system verson 2) 被發(fā)明( remy card )作為 linux 一個可擴展和強大的文件系統(tǒng)。它至少在 li
42、nux 社區(qū)中是最成功的文件系統(tǒng),是所有當(dāng)前的 linux 發(fā)布版的基礎(chǔ)。 ext2 文件系統(tǒng),象所有多數(shù)文件系統(tǒng)一樣,建立在文件的數(shù)據(jù)存放在數(shù)據(jù)塊中的前提下。這些數(shù)據(jù)塊都是相同長度,雖然不同的 ext2 文件系統(tǒng)的塊長度可以不同,但是對于一個特定的 ext2 文件系統(tǒng),它的塊長度在創(chuàng)建的時候就確定了(使用 mke2fs )。每一個文件的長度都按照塊取整。如果塊大小是 1024 字節(jié),一個 1025 字節(jié)的文件會占用兩個 1024 字節(jié)的塊。不幸的是這一意味著平均你每一個 文件浪費半個塊。通常計算中你會用磁盤利用來交換 cpu 對于內(nèi)存的使用,這種 情況下, linux 象大多數(shù)操作系統(tǒng)一樣,
43、為了較少 cpu 的負(fù)載,使用相對低效率 的磁盤利用率來交換。不是文件系統(tǒng)中所有的塊都包含數(shù)據(jù),一些塊必須用于放置 17 描述文件系統(tǒng)結(jié)構(gòu)的信息。 ext2 用一個 inode 數(shù)據(jù)結(jié)構(gòu)描述系統(tǒng)中的每一個文 件,定義了系統(tǒng)的拓?fù)浣Y(jié)構(gòu)。一個 inode 描述了一個文件中的數(shù)據(jù)占用了哪些塊 以及文件的訪問權(quán)限、文件的修改時間和文件的類型。 ext2 文件系統(tǒng)中的每一個 文件都用一個 inode 枋觶懇桓?inode 都用一個獨一無二的數(shù)字標(biāo)識。文件 系統(tǒng)的 inode 都放在一起,在 inode 表中。 ext2 的目錄是簡單的特殊文件(它 們也使用 inode 描述),包括它們目錄條目的 ino
44、de 的指針。 ext2 文件系統(tǒng)由一系列邏輯上線形排列的數(shù)據(jù)塊組成,每個數(shù)據(jù)塊具有相同的大小,所有塊又被劃分為若干個塊組,每個塊組包含相同個數(shù)的數(shù)據(jù)塊,整個文件系統(tǒng)的布局如圖所示。 圖3.3 ext2 文件系統(tǒng)布局 fig 3.3 ext2 file system distribution 每個塊組都包含了一份文件系統(tǒng)關(guān)鍵控制信息的拷貝(超級塊和文件系統(tǒng)組描述符表),以及描述組內(nèi)數(shù)據(jù)存儲與控制信息的位示圖、i 節(jié)點位圖和i 節(jié)點表。 對于如何決定磁盤空間分配有如下目標(biāo): 首先,數(shù)據(jù)結(jié)構(gòu)必須是可恢復(fù)的。即如果在向磁盤寫入數(shù)據(jù)的時候發(fā)生錯誤(比如突然斷電),整個文件系統(tǒng)不會丟失數(shù)據(jù)。雖然偶爾丟失某些當(dāng)前正在寫入的數(shù)據(jù)是可接受的,但絕不能丟失磁盤上的所有數(shù)據(jù)。 其次,數(shù)據(jù)結(jié)構(gòu)應(yīng)慮
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 果品綜合檢測結(jié)論與建議
- 北京市存量房屋買協(xié)議
- 交易員考試專項測試題有答案
- 高中語法之動詞時態(tài)
- 高中英語語法之狀語
- 《學(xué)前兒童衛(wèi)生保健》 課件 7.2托幼園所常見的其他衛(wèi)生保健制度(課件)
- 《學(xué)前兒童衛(wèi)生保健》 課件 1.2.8 幼兒神經(jīng)系統(tǒng)的特點及衛(wèi)生保健
- 一起分享課件教學(xué)課件
- 2024屆陜西省延安市實驗中學(xué)高三4月綜合練習(xí)(一模)數(shù)學(xué)試題試卷
- 陜西省延安市富縣2023-2024學(xué)年八年級上學(xué)期期中考試數(shù)學(xué)試卷(含答案)
- 2023年執(zhí)業(yè)藥師繼續(xù)教育考試題庫與答案(通用版)
- 紀(jì)委遴選筆試真題
- 世界外國語小學(xué)英語教材kids-story-1B
- 零售藥店的培訓(xùn)記錄培訓(xùn)計劃培訓(xùn)試題及答案
- 企業(yè)移交清單模板(基礎(chǔ)版)
- 日語學(xué)習(xí)興趣小組課件
- 體外循環(huán)下二尖瓣置換術(shù)的麻醉討論課件
- 山東省濟南市歷城二中2022-2023學(xué)年高二上學(xué)期期中考試語文試題 word版含答案
- 北師大版高中數(shù)學(xué)選修4-6初等數(shù)論初步全套課件
- 三甲級綜合醫(yī)院全科室崗位說明書匯編(專業(yè)完整模板)
- DB37-T 3657-2019地質(zhì)災(zāi)害治理工程設(shè)計技術(shù)規(guī)范
評論
0/150
提交評論