我承认我不知道 unix 操作系统的内部工作原理,所以我希望有人能对这个话题有所了解。
为什么Unix文件系统比windows文件系统好?
grep 在 Windows 上也能正常工作,还是有一些根本不同的东西使它在 Unix 机器上更强大?
例如,我听说在 Unix 系统中,给定目录中的文件数量不会减慢文件访问速度,而在 Windows 上,直接文件访问会随着给定文件夹中文件数量的增加而降低,对吗?
更新:布拉德,没有像unix 文件系统这样的东西吗?
我承认我不知道 unix 操作系统的内部工作原理,所以我希望有人能对这个话题有所了解。
为什么Unix文件系统比windows文件系统好?
grep 在 Windows 上也能正常工作,还是有一些根本不同的东西使它在 Unix 机器上更强大?
例如,我听说在 Unix 系统中,给定目录中的文件数量不会减慢文件访问速度,而在 Windows 上,直接文件访问会随着给定文件夹中文件数量的增加而降低,对吗?
更新:布拉德,没有像unix 文件系统这样的东西吗?
Unix 和 Windows 之间文件系统语义的根本区别之一是 inode 的概念。
在 Windows 上,文件名直接附加到文件数据。这意味着操作系统会阻止某人删除当前打开的文件。在某些版本的 Windows 上,您可以重命名当前打开的文件,而在某些版本上则不能。
在 Unix 上,文件名是指向 inode 的指针,它是文件数据实际存储的位置。这有几个含义:
unlink
)当前打开的文件。所发生的只是删除了目录条目,但这不会影响可能仍然打开文件的任何其他进程。打开文件的进程会挂在 inode 上,而不是挂在目录条目上。当进程关闭文件时,操作系统会删除 inode,因为没有更多目录条目指向它,也没有更多进程打开 inode。这种差异很重要,但与性能无关grep
。
首先,没有“Unix 文件系统”这样的东西。
其次,你的论点建立在什么前提之上?你有没有听到有人说它是优越的?也许如果你提供一些资料,我们可以批评具体的论点。
编辑:好的,根据http://en.wikipedia.org/wiki/Comparison_of_file_systems,NTFS 比 UFS1 和 UFS2 有更多的绿色框。如果绿色框是您衡量“更好”的标准,那么 NTFS 就是“更好”。
仍然是一个愚蠢的问题。:-p
我觉得你有点困惑。没有“Unix”和“Windows”文件系统。*nix 系列文件系统包括 ext3、ZFS、UFS 等。Windows 主要支持 FAT16/32 和它们自己的文件系统 NTFS。然而,今天的 linux 系统可以读写 NTFS。更多文件系统在这里
我不能告诉你为什么一个可以比另一个更好。
我完全不熟悉 UNIX 文件系统的内部工作原理,例如位和字节的存储方式,但实际上这部分是可以互换的(ext3、reiserfs等)。
当人们说 UNIX 文件系统更好时,他们的意思可能是说,“哦,ext3 存储位的方式比 NTFS 发生的损坏要少得多”,但他们也可能是在谈论在上面的公共层做出的设计选择. 他们可能指的是文件的路径不一定对应于任何特定设备。例如,如果您将程序文件移动到第二个磁盘,您可能必须将它们称为“D:\Program Files”,而在 UNIX 中 /usr/bin 可以是硬盘驱动器、网络驱动器、CD ROM ,或内存。
另一种可能性是人们使用“文件系统”来表示路径的组织。例如,Windows 通常喜欢“C:\Program Files\CompanyName\AppName”中的程序,而特定的 UNIX 发行版可能会将大部分程序放在 /usr/local/bin 中。在后一种情况下,您可以使用更小的 PATH 变量轻松地从命令行访问更多系统。
另外,由于您提到了 grep,如果系统库(例如内核和 libc)的所有源代码都存储在 /usr/local/src 中,那么对来自某些系统库的内部的特定错误消息执行递归 grep 就很多了比将内容布置为 /usr/local/library-name/[bin|src|doc|etc] 更简单。但是,如果您已经知道要搜索的位置,则 cygwin grep 在 Windows 下的性能相当不错。事实上,我发现对于全文搜索,我从 grep 获得的结果比 Windows 内置的搜索工具要好!
好吧,*nix 文件系统在实际文件管理方面比 fat16/32 或 NTFS 做得更好。*nix 系统试图阻止对 Windows 进行碎片整理的需要……什么都不做?除此之外,我真的不知道什么会让一个比另一个更好。
Windows 和 Unix 操作系统向用户公开磁盘驱动器的方式以及驱动器空间的分区方式存在差异。
两种操作系统的最大区别在于 Unix 本质上将所有物理驱动器视为一个逻辑驱动器。(这不完全是它的工作原理,但应该给出一个足够好的画面。)从用户的角度来看,这允许一个更简单的文件系统,因为没有驱动器号需要处理。我有一个名为 /usr/bin 的文件夹,它可以跨越多个物理驱动器。如果我需要扩展该分区,我可以通过添加新驱动器、重新映射文件夹和移动文件来实现。(再次,有些简化,但它明白了这一点。)
另一个区别是,当您格式化驱动器时,会留出一定数量(默认情况下,作为管理员,您可以根据需要将大小更改为 0)供“root”帐户(管理员帐户)使用,该帐户允许即使用户已填满磁盘并收到“磁盘空间不足”消息,管理员也几乎总是能够登录机器。
一个简单的答案:
Windows
是专有的,这意味着除了 windows 之外没有人可以看到它的代码,而它unix/linux
是开源的。因此,由于它是开源的,许多更聪明的人为文件系统做出了贡献,使其成为强大而高效的文件系统之一,因此,像 grep 这样的有效命令在真正需要时会派上用场。
我对文件系统的内容了解不多,无法回答第一个问题,除非当我阅读 NTFS 的第一个描述时,它听起来很像 Berkley Fast Filesystem。
至于第二个,有很多适用于 Windows 的 grep。过去我必须使用 Windows 时,我总是首先安装 Cygwin。
答案与文件系统几乎没有关系,而与文件系统访问驱动程序有关。
尤其是在 Windows 上 NTFS 的实现与 ext2/ext3 相比非常慢。同样在 Windows 上,“无法删除正在使用的文件”,即使 NTFS 应该能够支持它。