2008-08-30 57 views
0

我承認我不知道unix操作系統的內部工作原理,所以我希望有人能夠對這個主題做些說明。是什麼讓Unix文件系統更加優於Windows文件系統?

爲什麼Unix文件系統比windows文件系統更好?

grep會在Windows上工作,還是有一些根本不同,使它在Unix機器上更強大?

例如我聽說在Unix系統中,給定目錄中的文件數量不會減慢文件訪問速度,而在Windows上,直接文件訪問會隨着給定文件夾中文件數量增加而降低,這是真的嗎?

更新: 布拉德,沒有這樣的事情unix file system

+1

當你說「Unix文件系統」時,你是否在意UFS?不,當然你沒有,布拉德在他的反駁中是正確的。順便說一句,不要使用編輯作爲評論。 – Zano 2009-11-14 01:47:06

+0

我想每個人都知道你在談論ext3和NTFS。我不知道他們爲什麼會聰明 - 「沒有Linux或Windows fs的大聲笑」。非常不專業。我提出了這個問題。 – 2015-04-17 13:56:38

回答

0

我不太瞭解文件系統的膽量來回答第一個問題,除非當我讀到NTFS的第一個描述時,它聽起來像伯克利快速文件系統非常多。

至於第二,Windows有很多greps。過去當我不得不使用Windows時,我總是首先安裝Cygwin。

4

我覺得你有點困惑。沒有'Unix'和'Windows'文件系統。 * nix系列文件系統包括ext3,ZFS,UFS等.Windows主要支持FAT16/32和它們自己的文件系統NTFS。然而今天的linux系統可以讀寫NTFS。更多的文件系統here

我不能告訴你爲什麼一個人可以比另一個更好。

8

首先,沒有「Unix文件系統」這樣的東西。

其次,在什麼前提下,你的論點是否存在?你有沒有聽到有人說它優越?也許如果你提供了一些資料,我們可以批評具體的論點。

編輯:好的,根據http://en.wikipedia.org/wiki/Comparison_of_file_systems,NTFS比UFS1和UFS2有更多的綠框。如果綠色框是「更好」的衡量標準,那麼NTFS就是「更好」的。

還是一個愚蠢的問題。 :-p

1

那麼* nix文件系統在實際文件管理方面比fat16/32或NTFS做得好得多。 * nix系統試圖防止需要在Windows上進行碎片整理...沒有任何東西?除此之外,我真的不知道什麼會比另一個更好。

19

Unix和Windows之間文件系統語義的根本區別之一就是inode的思想。

在Windows上,文件名直接附加到文件數據。這意味着操作系統可以防止某人刪除當前打開的文件。在某些版本的Windows上,您可以重命名當前打開的文件,而在某些版本上則不能。

在Unix上,文件名是指向inode的指針,它是文件數據實際存儲的位置。這有幾點含義:

  • 您可以有兩個不同的文件名引用相同的底層文件。這通常被稱爲硬鏈接。文件數據只有一個副本,所以通過一個文件名進行的更改將出現在另一個文件中。
  • 您可以刪除(也稱爲unlink)當前打開的文件。所發生的只是目錄條目被刪除,但這不會影響任何其他可能仍然打開文件的進程。打開文件的過程掛在inode上,而不是掛到目錄條目上。當進程關閉文件時,操作系統會刪除inode,因爲沒有更多目錄條目指向它,並且沒有更多進程打開inode。

這個區別很重要,但它與grep的性能無關。

1

Windows和Unix操作系統如何將磁盤驅動器暴露給用戶以及如何對驅動器空間進行分區方面存在差異。

兩種操作系統最大的區別在於Unix基本上將所有物理驅動器視爲一個邏輯驅動器。 (這不完全是它的工作原理,但應該提供足夠好的圖片。)這允許從用戶角度來看更簡單的文件系統,因爲沒有驅動器號來處理。我有一個名爲/ usr/bin的文件夾,可以跨越多個物理驅動器。如果我需要擴展該分區,我可以通過添加新驅動器,重新映射文​​件夾以及移動文件來實現。 (同樣,有點簡化,但它得到了重點。)

另一個區別是,當你格式化一個驅動器時,一定的數量被擱置(默認情況下,作爲管理員,你可以改變大小爲0,如果您需要)供「root」帳戶(管理員帳戶)使用,即使用戶填滿了磁盤並且正在收到「磁盤空間不足」消息,管理員也幾乎總能登錄到計算機。

3

我完全不瞭解UNIX文件系統的內部工作原理,比如如何存儲位和字節,但實際上這部分是可以互換的(ext3,reiserfs等)。

當人們說UNIX文件系統更好時,他們可能會這樣說:「哦,ext3存儲比特幣的方式比腐敗發生的方式少於NTFS」,但他們也可能在談論設計選擇上面的常用圖層。它們可能指的是文件的路徑不一定對應於任何特定的設備。例如,如果將程序文件移動到第二個磁盤,則可能必須將它們稱爲「D:\ Program Files」,而在UNIX/usr/bin中可能是硬盤驅動器,網絡驅動器,CD ROM或RAM。

另一種可能性是人們使用「文件系統」來表示路徑的組織。例如,像Windows一般喜歡「C:\ Program Files \ CompanyName \ AppName」中的程序,而特定的UNIX發行版可能會將其大部分放在/ usr/local/bin中。在後一種情況下,您可以使用更小的PATH變量從命令行輕鬆訪問更多系統。另外,既然你提到了grep,如果系統庫(如kernel和libc)的所有源代碼都存儲在/ usr/local/src中,那麼對於某些來自某些內容的特定錯誤消息執行遞歸grep系統庫比佈局爲/ usr/local/library-name/[bin | src | doc | etc]要簡單得多。但是,如果你已經知道你要搜索的地方,cygwin grep在Windows下表現相當好。事實上,我發現全文搜索的結果比grep內置的搜索工具更好。

-1

答案結果與文件系統以及與文件系統訪問驅動程序無關。

特別是,與ext2/ext3相比,在Windows上執行NTFS非常慢。同樣在Windows上,「無法刪除正在使用的文件」,即使NTFS應該能夠支持它。

1

一個簡單的答案:

Windows是一種專有的,這意味着沒有人能看到它的除Windows代碼,而unix/linux都是開源的。因爲它是開放源代碼許多更明亮頭腦已經對文件系統做出了貢獻,使它成爲一個強大和高效的,因此有效的命令,如grep來真正需要時我們的救援。