更新時(shí)間:2020-12-15 17:51:17 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2383次
Linux中的各種事物比如像文檔、目錄、鍵盤(pán)、監(jiān)視器、硬盤(pán)、可移動(dòng)媒體設(shè)備、打印機(jī)、調(diào)制解調(diào)器、虛擬終端,還有進(jìn)程間通信(IPC)和網(wǎng)絡(luò)通信等輸入/輸出資源都是定義在文件系統(tǒng)空間下的字節(jié)流。一切都可看作是文件,其最顯著的好處是對(duì)于上面所列出的輸入/輸出資源,只需要相同的一套 Linux 工具、實(shí)用程序和 API。你可以使用同一套API(read, write)和工具(cat , 重定向, 管道)來(lái)處理Linux中大多數(shù)的資源。Linux文件系統(tǒng)基本功能便是基于Linux系統(tǒng)中一切都可看作是文件的前提下實(shí)現(xiàn)的。
設(shè)計(jì)一個(gè)系統(tǒng)的終極目標(biāo)往往就是要找到原子操作,一旦鎖定了原子操作,設(shè)計(jì)工作就會(huì)變得簡(jiǎn)單而有序。“文件”作為一個(gè)抽象概念,其原子操作非常簡(jiǎn)單,只有讀和寫(xiě),這無(wú)疑是一個(gè)非常好的模型。通過(guò)這個(gè)模型,API的設(shè)計(jì)可以化繁為簡(jiǎn),用戶可以使用通用的方式去訪問(wèn)任何資源,自有相應(yīng)的中間件做好對(duì)底層的適配。
磁盤(pán)存儲(chǔ)是文件系統(tǒng)必須的功能,它與之伴生的有一些有趣而且不可或缺的細(xì)節(jié)。很明顯,文件系統(tǒng)是用來(lái)為非易失數(shù)據(jù)的存儲(chǔ)提供空間,這是它的基本功能。然而,它還有許多從需求出發(fā)的重要功能。所有文件系統(tǒng)都需要提供一個(gè)名字空間,這是一種命名和組織方法。它定義了文件應(yīng)該如何命名、文件名的最大長(zhǎng)度,以及所有可用字符集中可用于文件名中字符集子集。它也定義了一個(gè)磁盤(pán)上數(shù)據(jù)的邏輯結(jié)構(gòu),比如使用目錄來(lái)組織文件而不是把所有文件聚集成一個(gè)單一的、巨大的文件混合體。
定義名字空間以后,元數(shù)據(jù)結(jié)構(gòu)是為該名字空間提供邏輯基礎(chǔ)所必須的。這包括所需數(shù)據(jù)結(jié)構(gòu)要能夠支持分層目錄結(jié)構(gòu),同時(shí)能夠通過(guò)結(jié)構(gòu)來(lái)確定硬盤(pán)空間中的塊是已用的或可用的,支持修改文件或目錄的名字,提供關(guān)于文件大小、創(chuàng)建時(shí)間、最后訪問(wèn)或修改時(shí)間等信息,以及位置或數(shù)據(jù)所屬的文件在磁盤(pán)空間中的位置。其他的元數(shù)據(jù)用來(lái)存儲(chǔ)關(guān)于磁盤(pán)細(xì)分的高級(jí)信息,比如邏輯卷和分區(qū)。這種更高層次的元數(shù)據(jù)以及它所代表的結(jié)構(gòu)包含描述文件系統(tǒng)存儲(chǔ)在驅(qū)動(dòng)器或分區(qū)中的信息,但與文件系統(tǒng)元數(shù)據(jù)無(wú)關(guān),與之獨(dú)立。
文件系統(tǒng)也需要一個(gè)應(yīng)用程序接口(API),從而提供了對(duì)文件系統(tǒng)對(duì)象,比如文件和目錄進(jìn)行操作的系統(tǒng)功能調(diào)用的訪問(wèn)。API 也提供了諸如創(chuàng)建、移動(dòng)和刪除文件的功能。它也提供了算法來(lái)確定某些信息,比如文件存于文件系統(tǒng)中的位置。這樣的算法可以用來(lái)解釋諸如磁盤(pán)速度和最小化磁盤(pán)碎片等術(shù)語(yǔ)。
現(xiàn)代文件系統(tǒng)還提供一個(gè)安全模型,這是一個(gè)定義文件和目錄的訪問(wèn)權(quán)限的方案。Linux 文件系統(tǒng)安全模型確保用戶只能訪問(wèn)自己的文件,而不能訪問(wèn)其他用戶的文件或操作系統(tǒng)本身。
最后一塊組成部分是實(shí)現(xiàn)這些所有功能所需要的軟件。Linux 使用兩層軟件實(shí)現(xiàn)的方式來(lái)提高系統(tǒng)和程序員的效率。這兩層中的第一層是 Linux 虛擬文件系統(tǒng)。虛擬文件系統(tǒng)提供了內(nèi)核和開(kāi)發(fā)者訪問(wèn)所有類(lèi)型文件系統(tǒng)的的單一命令集。虛擬文件系統(tǒng)軟件通過(guò)調(diào)用特殊設(shè)備驅(qū)動(dòng)來(lái)和不同類(lèi)型的文件系統(tǒng)進(jìn)行交互。特定文件系統(tǒng)的設(shè)備驅(qū)動(dòng)是第二層實(shí)現(xiàn)。設(shè)備驅(qū)動(dòng)程序?qū)⑽募到y(tǒng)命令的標(biāo)準(zhǔn)集解釋為在分區(qū)或邏輯卷上的特定類(lèi)型文件系統(tǒng)命令。
以上就是關(guān)于Linux文件系統(tǒng)基本功能的描述,在本站的Linux教程中對(duì)Linux文件系統(tǒng)的分析更加透徹,感興趣的小伙伴可以前去觀看學(xué)習(xí),能夠有效地幫助我們更好的理解Linux文件系統(tǒng)。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)