最近對Linux的學習呢,有很多很多不懂,不熟悉的命令。不過印象很深刻的一句話是,Linux下,一切皆文件。雖然不懂,但是覺得這話逼格真高哈哈。那么,就針對這一句話,加深理解看看吧。
“一切皆文件”,指的是,對所有文件(目錄、字符設備、塊設備、套接字、打印機等)操作,讀寫都可用fopen()/fclose()/fwrite()/fread()等函數進行處理。屏蔽了硬件的區別,所有設備都抽象成文件,提供統一的接口給用戶。雖然類型各不相同,但是對其提供的卻是同一套操作界面。更進一步,對文件的操作也可以跨文件系統執行。
然后,發現一個概念:Linux的VFS(Virtual File System)虛擬文件系統。
VFS正是以上Linux特性的關鍵所在。
1. ?這里先記錄下一些基礎的概念,以便理解
文件系統:操作系統中負責管理和存儲文件信息的軟件機構。指定命名文件的規則。這些規則包括文件名的字符數最大量,哪種字符可以使用,以及某些系統中文件名后綴可以有多長。文件系統是操作系統用于明確磁盤或分區上的文件的方法和數據結構,即磁盤上組織文件的方法。各文件系統的信息對比可參考維基百科:https://en.wikipedia.org/wiki/Comparison_of_file_systems
windows和linux文件系統的差異:
1)規范方面的差異
linux只有一個單獨的頂級目錄結構。所有的一切從“root”開始,用‘/’代表,并且延伸到子目錄。DOS/Windows有不同的分區,同時目錄都存于分區上。可以簡單的說:Windows的目錄結構屬于分區,而Linux分區‘加載’與目錄結構。
2)權限上的差異
Windows用戶分為兩類:admin和limited,在安裝一些軟件的時候才有用戶的限制。
Linux用戶分為四類:超級管理員(也就是root權限),普通用戶,同組用戶,其他用戶。root用戶可以擁有任何操作,普通用戶擁有自己的主目錄和文件并擁有文件分配權限,可對其他用戶授權。(權限分:讀、寫、運行)linux可對每一個文件進行授權,而用戶只能對自己有權限的文件進行授權。
參考:https://www.zhihu.com/question/21135526
2. ?VFS虛擬文件系統
VFS,是Linux 內核中的一個軟件層,用于給用戶空間的程序提供文件系統接口;同時,它也提供了內核中的一個抽象功能,允許不同的文件系統共存。系統中所有的文件系統不但依賴 VFS 共存,而且也依靠 VFS 協同工作。
除了Linux標準的文件系統Ext2/Ext3/Ext4,Windows的vfat NTFS等,還有很多種文件系統,比如reiserfs,xfs,網絡文件系統nfs(這些目前我都不大懂啦=。=)。Linux通過VFS這個中間層對這些文件系統提供支持。
VFS,向上,對應用層提供一個標準的文件操作接口。向下,對文件系統提供一個標準的接口,以便其他操作系統的文件系統可以方便的移植到Linux上。
VFS為底層文件系統提供了一個盡量大的通用模型,使得這個模型包含所有文件系統功能的合集。因此VFS封裝了底層文件系統的所有功能和抽象,VFS負責把應用層的請求轉發給特定的文件系統。
參考:http://blog.csdn.net/kickxxx/article/details/9468761
更詳細的學習參考:http://blog.csdn.net/heikefangxian23/article/details/51579971