最近對(duì)Linux的學(xué)習(xí)呢,有很多很多不懂敏释,不熟悉的命令库快。不過(guò)印象很深刻的一句話是,Linux下钥顽,一切皆文件义屏。雖然不懂,但是覺(jué)得這話逼格真高哈哈。那么闽铐,就針對(duì)這一句話蝶怔,加深理解看看吧。
“一切皆文件”兄墅,指的是踢星,對(duì)所有文件(目錄、字符設(shè)備察迟、塊設(shè)備斩狱、套接字、打印機(jī)等)操作扎瓶,讀寫(xiě)都可用fopen()/fclose()/fwrite()/fread()等函數(shù)進(jìn)行處理所踊。屏蔽了硬件的區(qū)別,所有設(shè)備都抽象成文件概荷,提供統(tǒng)一的接口給用戶秕岛。雖然類型各不相同,但是對(duì)其提供的卻是同一套操作界面误证。更進(jìn)一步继薛,對(duì)文件的操作也可以跨文件系統(tǒng)執(zhí)行。
然后愈捅,發(fā)現(xiàn)一個(gè)概念:Linux的VFS(Virtual File System)虛擬文件系統(tǒng)遏考。
VFS正是以上Linux特性的關(guān)鍵所在。
1. ?這里先記錄下一些基礎(chǔ)的概念蓝谨,以便理解
文件系統(tǒng):操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)灌具。指定命名文件的規(guī)則。這些規(guī)則包括文件名的字符數(shù)最大量譬巫,哪種字符可以使用咖楣,以及某些系統(tǒng)中文件名后綴可以有多長(zhǎng)。文件系統(tǒng)是操作系統(tǒng)用于明確磁盤(pán)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu)芦昔,即磁盤(pán)上組織文件的方法诱贿。各文件系統(tǒng)的信息對(duì)比可參考維基百科:https://en.wikipedia.org/wiki/Comparison_of_file_systems
windows和linux文件系統(tǒng)的差異:
1)規(guī)范方面的差異
linux只有一個(gè)單獨(dú)的頂級(jí)目錄結(jié)構(gòu)。所有的一切從“root”開(kāi)始咕缎,用‘/’代表珠十,并且延伸到子目錄。DOS/Windows有不同的分區(qū)凭豪,同時(shí)目錄都存于分區(qū)上宵睦。可以簡(jiǎn)單的說(shuō):Windows的目錄結(jié)構(gòu)屬于分區(qū)墅诡,而Linux分區(qū)‘加載’與目錄結(jié)構(gòu)。
2)權(quán)限上的差異
Windows用戶分為兩類:admin和limited,在安裝一些軟件的時(shí)候才有用戶的限制末早。
Linux用戶分為四類:超級(jí)管理員(也就是root權(quán)限)烟馅,普通用戶,同組用戶然磷,其他用戶郑趁。root用戶可以擁有任何操作,普通用戶擁有自己的主目錄和文件并擁有文件分配權(quán)限姿搜,可對(duì)其他用戶授權(quán)寡润。(權(quán)限分:讀、寫(xiě)舅柜、運(yùn)行)linux可對(duì)每一個(gè)文件進(jìn)行授權(quán)梭纹,而用戶只能對(duì)自己有權(quán)限的文件進(jìn)行授權(quán)。
參考:https://www.zhihu.com/question/21135526
2. ?VFS虛擬文件系統(tǒng)
VFS致份,是Linux 內(nèi)核中的一個(gè)軟件層变抽,用于給用戶空間的程序提供文件系統(tǒng)接口;同時(shí)氮块,它也提供了內(nèi)核中的一個(gè)抽象功能绍载,允許不同的文件系統(tǒng)共存。系統(tǒng)中所有的文件系統(tǒng)不但依賴 VFS 共存滔蝉,而且也依靠 VFS 協(xié)同工作击儡。
除了Linux標(biāo)準(zhǔn)的文件系統(tǒng)Ext2/Ext3/Ext4,Windows的vfat NTFS等蝠引,還有很多種文件系統(tǒng)阳谍,比如reiserfs,xfs立肘,網(wǎng)絡(luò)文件系統(tǒng)nfs(這些目前我都不大懂啦=边坤。=)。Linux通過(guò)VFS這個(gè)中間層對(duì)這些文件系統(tǒng)提供支持谅年。
VFS茧痒,向上,對(duì)應(yīng)用層提供一個(gè)標(biāo)準(zhǔn)的文件操作接口融蹂。向下旺订,對(duì)文件系統(tǒng)提供一個(gè)標(biāo)準(zhǔn)的接口,以便其他操作系統(tǒng)的文件系統(tǒng)可以方便的移植到Linux上超燃。
VFS為底層文件系統(tǒng)提供了一個(gè)盡量大的通用模型区拳,使得這個(gè)模型包含所有文件系統(tǒng)功能的合集。因此VFS封裝了底層文件系統(tǒng)的所有功能和抽象意乓,VFS負(fù)責(zé)把應(yīng)用層的請(qǐng)求轉(zhuǎn)發(fā)給特定的文件系統(tǒng)樱调。
參考:http://blog.csdn.net/kickxxx/article/details/9468761
更詳細(xì)的學(xué)習(xí)參考:http://blog.csdn.net/heikefangxian23/article/details/51579971