是什么使Unix文件系统比Windows文件系统更优越?

时间:2020-03-05 18:45:19  来源:igfitidea点击:

我承认我不知道unix操作系统的内部工作原理,所以我希望有人可以对此主题有所了解。

为什么Unix文件系统比Windows文件系统更好?

grep在Windows上是否能同样出色地工作,或者在本质上有所不同,使其在Unix机器上更强大?

例如我听说在Unix系统中,给定目录中文件的数量不会减慢文件访问的速度,而在Windows上,直接访问将随着给定文件夹中文件数量的增加而降低,是吗?

更新:
布拉德,没有unix文件系统这样的东西吗?

解决方案

回答

我对文件系统的胆识还不够了解,无法回答第一个问题,只是当我阅读NTFS的第一个描述时,听起来像Berkley Fast Filesystem一样可怕。

至于第二个,Windows则有很多问题。过去不得不使用Windows时,我总是首先安装Cygwin。

回答

我觉得你有点困惑。没有" Unix"和" Windows"文件系统。 * nix文件系统家族包括ext3,ZFS,UFS等。Windows主要具有对FAT16 / 32和它们自己的文件系统NTFS的支持。但是,今天的linux系统可以读取和写入NTFS。此处有更多文件系统

我不能告诉你为什么一个可以比另一个更好。

回答

首先,没有" Unix文件系统"之类的东西。

第二,论据基于什么前提?我们是否听到有人说它很棒?也许,如果我们提供一些资料,我们可以批评具体的论点。

编辑:好的,根据http://en.wikipedia.org/wiki/Comparison_of_file_systems,NTFS的绿框比UFS1和UFS2都多。如果绿色框代表我们"更好",则NTFS是"更好"。

仍然是一个愚蠢的问题。 :-p

回答

  • nix文件系统在实际文件管理方面比fat16 / 32或者NTFS做得更好。 * nix系统试图防止在Windows上进行碎片整理的操作……什么都没有?除此之外,我真的不知道哪个会比另一个更好。

回答

Unix和Windows在文件系统语义上的根本区别之一是inode的概念。

在Windows上,文件名直接添加到文件数据中。这意味着操作系统会阻止某人删除当前打开的文件。在某些版本的Windows上,我们可以重命名当前打开的文件,而在某些版本上则不能。

在Unix上,文件名是指向inode的指针,inode是文件数据实际存储的位置。这有两个含义:

  • 我们可以使用两个不同的文件名来引用相同的基础文件。这通常称为硬链接。文件数据只有一个副本,因此通过一个文件名进行的更改将显示在另一个文件中。
  • 我们可以删除(也称为"取消链接")当前打开的文件。发生的所有事情都是删除了目录条目,但这不会影响可能仍打开文件的任何其他进程。打开文件的过程挂在索引节点上,而不是目录条目上。当进程关闭文件时,操作系统将删除该索引节点,因为不再有指向该索引节点的目录条目,并且在索引节点打开的情况下也不再有进程。

这种差异很重要,但与grep的性能无关。

回答

Windows和Unix操作系统向用户公开磁盘驱动器的方式以及驱动器空间的分区方式都存在差异。

两种操作系统之间最大的区别在于,Unix本质上将所有物理驱动器视为一个逻辑驱动器。 (这并不是它的工作方式,但是应该提供足够好的图像。)由于没有驱动器号需要处理,因此从用户角度来看,这可以简化文件系统。我有一个名为/ usr / bin的文件夹,该文件夹可以跨越多个物理驱动器。如果需要扩展该分区,可以通过添加新驱动器,重新映射文​​件夹并移动文件来实现。 (再次,有些简化,但这很重要。)

另一个区别是,格式化驱动器时,会预留一定的数量(默认情况下,作为管理员,我们可以根据需要将大小更改为0),以供" root"帐户(管理员帐户)使用。即使用户已填满磁盘并收到"磁盘空间不足"消息,admin几乎也始终能够登录到计算机。

回答

我一点也不熟悉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,因此如果系统库(例如内核和libc)的所有源代码都存储在/ usr / local / src中,那么对来自某些系统库胆量的特定错误消息进行递归grep就是很多比将内容布置为/ usr / local / library-name / [bin | src | doc | etc]更为简单。但是,如果我们已经知道要搜索的位置,那么cygwin grep在Windows下的性能会很好。实际上,对于全文搜索,我发现从grep获得的结果要比Windows内置的搜索功能更好!

回答

答案与文件系统无关,与文件系统访问驱动程序无关。

特别是,与ext2 / ext3相比,Windows上NTFS的实现非常慢。同样在Windows上,即使NTFS应该能够支持它,也"无法删除正在使用的文件"。