周建濤等
摘要:C語言作為計算機設(shè)計的高級語言,擁有很廣泛的用途,該文講述了使用C語言如何去實現(xiàn)模擬一個簡單的Linux文件系統(tǒng),對于我們學(xué)習(xí)操作系統(tǒng)知識有很好的借鑒作用。
關(guān)鍵詞:C語言;Linux;文件系統(tǒng)
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)14-0058-03
Linux作為全球目前最大的一個自由免費軟件,是一個能夠與windows操作系統(tǒng)所能所相媲美的操作系統(tǒng)linux系統(tǒng)的發(fā)展是充滿傳奇色彩的;在1991年,以為來自芬蘭的名叫Linus的學(xué)生參照Minix,自己重新開發(fā)的一個操作系統(tǒng),他用自己的名字與UNIX相結(jié)合起來用來命名他所開發(fā)的這個系統(tǒng)Linux。當(dāng)時他把0.02版的Linux系統(tǒng)放在Minix的新聞組上并呼吁所有與他一樣有興趣的人員一同來發(fā)展這個系統(tǒng)[1]。這樣,在1994年,Linux1.0版本推出。作為開源式的的操作系統(tǒng),Linux具有下面這些特點:
1) 它是一款自由的軟件,開放源代碼,我們可以不用花費任何費用就可以得到它以及它的源代碼,并且可以根據(jù)自己的需要來對他進行改寫;不受任何約束的對其進行傳播。
2) 是所有操作系統(tǒng)中運行平臺最多的。
3) 能夠與UNIX系統(tǒng)兼容,擁有一個非常好的用戶群體。
文件系統(tǒng)作為操作系統(tǒng)中最為重要的組成部分之一,它的主要功能就是對文件進行管理。文件系統(tǒng)位于操作系統(tǒng)的頂層[1]。我們?nèi)粘I钪性谑褂糜嬎銠C的時候與文件系統(tǒng)打的交道是做多的,比如我們查找文件,新建文件,清除文件等等。在操作系通的接口中文件系統(tǒng)扮演著十分重要的地位,他把我們使用計算機操作的抽象數(shù)據(jù)轉(zhuǎn)換為能夠在計算機物理設(shè)備上存放的具體數(shù)據(jù),并且給我們提供訪問和諧數(shù)據(jù)的結(jié)構(gòu)和方法。而在Linux系統(tǒng)中,我們可以通過虛擬文件系統(tǒng)來支持各種各樣的文件系統(tǒng),其中ext2文件系統(tǒng)是使用的最廣泛的[1]。而本文就是論述如何使用C語言來實現(xiàn)一個簡單的模擬Linux文件系統(tǒng),文章里面介紹了對于這次設(shè)計的設(shè)計思想,怎樣進行文件系統(tǒng)的實現(xiàn),以及對這個簡單的模擬Linux文件系統(tǒng)的功能描述。
1 設(shè)計思想
我們的設(shè)計任務(wù)是在任一OS下,建立一個大文件,把它假象成一張盤,在其中實現(xiàn)一個簡單的模擬Linux文件系統(tǒng) 。我們?yōu)槠湓O(shè)計了作為一個文件系統(tǒng)所具有的基本功能;首先,在設(shè)計中我們設(shè)計了兩個用戶,一個是普通用戶,他可以在系統(tǒng)中進行文件的讀寫操作,同樣也可以讀文件進行刪除和編輯,但是有權(quán)限限制;另一個就是管理員用戶,他同樣可以對文件進行讀寫操作,與普通用戶不同的是他的權(quán)限級別更高,他可以對普通用戶所建立的文件進行刪除和讀寫,但是普通用戶對他所建立的文件只能讀,而不能進行刪除;除此之外,對于系統(tǒng)的其他功能設(shè)計描述如下,這個簡單的模擬linux文件系統(tǒng)主要功能有以下幾點,能夠顯示當(dāng)前系統(tǒng)中的文件目錄,然后能夠進入這些目錄中去查看目錄下的文件,并對這些文件進行操作,比如讀文件內(nèi)容,查看文件屬性,對文件重命名,刪除文件,當(dāng)然在進行文件或者目錄刪除時是有權(quán)限限制的,如果該文件屬于用戶建立那么管理員個用戶都可以對其進行操作,如果屬于管理員所建立的,那么有些操作用戶是不能進行操作的,該權(quán)限只屬于管理員所擁有;同時系統(tǒng)中我們還可以對文件進行重命名。對于這一切簡單功能的實現(xiàn)我們都是基于c語言來實現(xiàn)的,同時對于文件的存儲我們使用的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)。
2 文件系統(tǒng)的實現(xiàn)
系統(tǒng)通過調(diào)用函數(shù)實現(xiàn)了用戶的登錄、創(chuàng)建目錄、更改目錄、創(chuàng)建文件、修改文件以及用戶權(quán)限管理等功能。系統(tǒng)主要的數(shù)據(jù)結(jié)構(gòu)設(shè)計有一下幾部分,目錄結(jié)構(gòu),超級塊結(jié)構(gòu),讀取文件的物理塊;對于系統(tǒng)的功能實現(xiàn)我們是通過系統(tǒng)調(diào)用相關(guān)函數(shù)來實現(xiàn)的,對于這個簡單的文件系統(tǒng),我們在其中主要的函數(shù)有:文件的創(chuàng)建函數(shù),權(quán)限的判斷函數(shù),文件刪除函數(shù)等等。
1)數(shù)據(jù)結(jié)構(gòu)設(shè)計:
3 結(jié)束語
在操作系統(tǒng)的學(xué)習(xí)中,項目設(shè)計是該門學(xué)科重要的實踐教學(xué)環(huán)節(jié),通過項目設(shè)計我們可以更加具體的去理解操作系統(tǒng)的相關(guān)知識和理論。這次項目設(shè)計的目的有兩個方面,一方面是使我們能夠更好的理解操作系統(tǒng)中文件系統(tǒng)的基本概念和工作原理,使之更為具體化讓我們更能容易理解;另一方面,通過項目的設(shè)計來提升我們的動手實踐能力,培養(yǎng)我們獨立分析問題、解決問題、應(yīng)用知識的能力和創(chuàng)新精神。在項目設(shè)計的過程中,遇到各種各樣的困難是在所難免的,同時在項目設(shè)計的過程中我們都發(fā)現(xiàn)了自己的不足之處,對以前老師所教授的知識理解的不夠深刻,掌握的不夠透徹;不過最終在老師的辛勤指導(dǎo)下我們終于將項目設(shè)計完成。同時,這次項目設(shè)計中,我們在老師的身上學(xué)到很多實用的知識,再次表示感謝!同時,對給過我們小組幫助的所有同學(xué)和各位老師再次表示衷心的感謝!
參考文獻:
[1] 任愛華,侯雷.操作系統(tǒng)實用教程[M].3版.清華大學(xué)出版社,2010.
[2] 李春葆.數(shù)據(jù)結(jié)構(gòu)教程[M]. 4版.清華大學(xué)出版社,2013.
[3] 張莉莉,王衛(wèi)華.Linux文件系統(tǒng)的模擬實現(xiàn)[J].軟件導(dǎo)刊,2010(11).
[4] 博韋,西斯特. 深入理解LINUX內(nèi)核[M]. 陳莉君,瓊聲,張宏偉,譯.3版.中國電力出版社,2007.
[5] 王浩亮.模擬Unix文件系統(tǒng)的設(shè)計與實現(xiàn)[J].多媒體技術(shù)及其應(yīng)用,2006(08).