『壹』 请问1:FAT32与NTFS的区别(为什么C盘是FAT32其他盘是NTFS)2:.rar与.zip的区别
1、比较 NTFS 和 FAT 文件系统
文件系统是计算机用于组织硬盘上的数据的基本结构。如果要安指衫装新硬盘,则需要使用文件系统对其进行分区和格式化, 然后才能开始存储数据或程序。在 Windows 中,可以从中进行选择的三个文件系统选项为:NTFS、FAT32 以及现在很少使用的较早的 FAT(也称为 FAT16)。
NTFS
NTFS 是此 Windows 版本的首选文件系统。与早期的 FAT32 文件系统相比,它有许多优点,其中包括:
能够从某些与磁盘相关的错误中自动恢复,而 FAT32 则不能。
改善了对较大硬盘的支持。
由于可以使用权限和加密来限制许可用户访问特定文件,因此安全性更好。
FAT32
FAT32 以及更少使用的 FAT 用于早期版本的 Windows 操作系统,包括 Windows 95、Windows 98 和 Windows Millennium Edition。FAT32 不具有 NTFS 提供的安全性, 因此如果您的计算机上有 FAT32 分区或卷,则访问您的计算机的任何用户都可以读取上面的文件。FAT32 还有大小限制。您 不能在此 Windows 版本中中敏创建大于 32GB 的 FAT32 分区,也不能在 FAT32 分区上存储大于 4GB 的文件。
使用 FAT32 的主要卖逗枝原因是计算机有时需要运行 Windows 95、Windows 98 或 Windows Millennium Edition,有时又需要运行此 Windows 版本,这称为多重引导配置。如果是这种情况,则需要在 FAT32 或 FAT 分区上安装早期版本的操作系统并确保它是主分区(可以驻留操作系统的分区)。使用这些早期的 Windows 版本时,需要访问的其他任何分区也必须使用 FAT32 格式化。这些早期 的 Windows 版本可以访问网络上的 NTFS 分区或卷,但不能访问计算机上的 NTFS 分区或卷。
此 Windows 版本为 vista home premium
来源:Windows帮助与支持
2、第一个区别:WinZip 只有英文版+汉化包的,而且安装程序体积较大
WinRAR 则有官方的简体中文版,安装程序体积较小(还不到 1MB)
第二个区别:WinZip 支持的压缩包格式虽然很多,但都已经过时了,而且也没有新的特性
WinRAR 支持的压缩包格式也不少,但都是现在最流行的,支持的格式也在增加
第三个区别:WinZip 压缩文件只能压缩成 ZIP 格式,而且压缩率较低,速度较慢
WinRAR 却兼容 Zip 格式,而且有其他的扩展压缩方法,提高了压缩率
『贰』 linux文件系统特点
Linux之所以能在嵌人式系统领域取得如此辉煌的成绩,与其自身的优良特性是分不开的。与其他操作系统相比,Linux具有以下一系列显著的特点。
1.模块化程度高
Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;其独特的模块机制可根据用户的需要,实时地将某些模块插入或从内核中移走,使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。
2.源码公开
由于Linux系统的开发从一开始就与GNU项目紧密地结合起来,所以它的大多数组成部分都直接来自GNU项目。任何人、任何组织只要遵守GPL条款,就可以自由使用Linux 源代码,为用户提供了最大限度的自由度。这一点也正投嵌入式系统所好,因为嵌入式系统应用千差万别,设计者往往需要针对具体的应用对源码进行修改和优化,所以是否能获得源代码 对于嵌入式系统的开发是至关重要的。加之Linux的软件资源十分丰富,每种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。这一切就使设计者在其基础之上进行二次开发变得非常容易。另外,由于Linux源代码公开,也使用户不用担心有“后闸”等安全隐患。
同时,源码开放给各教育机构提供极大的方便,从而也促进了Linux的学习、推广和应用。
3.广泛的硬件支持
Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器。目前已成功地移植到数十种硬件平台,几乎能运行在所有流行的处理器上。
由于世界范围内有众多开发者在为Linux的扩充贡献力量,所以Linux有着异常丰富的驱动程序资源,支持各种主流硬件设各和最新的硬件技术,甚至可在没有存储管理单元MMU 的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。
4.安全性及可靠性好
内核高效稳定。Linux内核的高效和稳定已在各个领域内得到了大量事实的验证。
Linux中大量网络管理、网络服务等方面的功能,可使用户很方便地建立高效稳定的防火墙、路由器、工作站、服务器等。为提高安全性,它还提供了大量的网络管理软件、网络分析软件和网络安全软件等。
5.具有优秀的开发工具
开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调试工具是在线仿真器(In Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。在线仿真器的价格非常高,而且只适合做非常底层的调试。如果使用的是嵌人式Linux,一旦软硬件能支持正常的串口功能,即使不用在线仿真器,也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),能够很方便地实现从操作系统到应用软件各个级别的调试。
6.有很好的网络支持利文件系统支持
Linux从诞生之日起就与Internet密不可分,支持各种标准的Internet网络协议,并且很容易移植到嵌入式系统当中。目前,Linux几乎支持所有主流的网络硬件、网络协议和文件系统,因此它是NFS的一个很好的平台。
另一方面,由于Linux有很好的文件系统支持(例如,它支持Ext2、FAT32、romfs等文件系统),是数据各份、同步和复制的良好平台,这些都为开发嵌入式系统应用打下了坚实的基础。
7.与UNIX完全兼容
目前,在Linux中所包含的工具和实用程序,可以完成UNIX的所有主要功能。
但由于Linux不是为实时而设计的,因而这就成了Linux在实时系统中应用的最大遗憾。不过,目前有众多的自由软件爱好者正在为此进行不懈的努力,也取得了诸多成果
『叁』 ipod touch文件系统中哪些是是装‘其他’的求大师解答
包括你越狱后下迹蠢缓载的第三方软件档誉、插件姿模。和你在平常使用中产生的缓存文件还有在同步过程中因传输错误导致文件损坏的音频、视频、图片等文件。
『肆』 Mac磁盘存储空间里的“其他”里是什么东西啊
Mac磁盘存储空间里的“其他”不能被系统识别为音频,图片,照片,应用程序和备份的所有其他文件,都归类为其他。
mac磁盘HFS+、FAT32以及exFAT。HFS+:
HFS+即Hierarchical File System Plus的缩写,名为分层文件系统,这也是mac系统独特的磁盘文件格式,同时我们也可在只读媒体如CD-ROM上见到。对于保障系统安全HFS+有着不容小觑的作用,遗憾的是,它并不支持Windows等其他操作系统。
(4)文件系统是其他扩展阅读:
macOS操作系统界面非常独特,突出了形象的图标和人机对话(图形化的人机对话界面最初来自施乐公司的Palo Alto研究中心,苹果借鉴了其成果开发了自己的图形化界面,后来又被微软的Windows所借鉴并在Windows中广泛应用)。
苹果公司能够根据自己的技术标准生产电脑、自主开发相对应的操作系统,可见它的技术和实力非同一般,打个比方,苹果公司就像是Dell和微软的联合体,在软硬件方面“才貌双全”。
『伍』 Linux文件系统的特点
类似于 Windows下的C、D、E等各个盘,Linux系统也可以将磁盘、Flash等存储设备划分为若干个分区,在不同分区存放不同类别的文件。与Windows的C盘类似,Linux一样要在一个分区上存放系统启动所必需的文件,比如内核映象文件(在嵌入式系统中,内核一般单独存放在一个分区中)内核启动后运行的第一-个程序( init)给用户提供操作界面的 shell程序、应用程序所依赖的库等。这些必需、基本的文件早氏合称为根文件系统,它们存放在一个分区中。Linux 系统启动后首先挂接这个分区,称为挂接( mount)根文件系统。其他分梁睁数区上所有目录、文件的集合,也称为文件系统。Linux 中并没有C、D、E等盘符的概念,它以树状结构管理所有目录、文件,其他分区挂接在某个目录上,这个目录被称为挂接点或安装点(mount point),然后就可以通过这个目录来访问这个分区上的文件了。比如根文件系统被挂接在根目录“I”上后,在根目录下就有根文件系统的各个目录、文件:/bin、/sbin、/mnt等;再将其他分区挂接到/mnt目录上,/mnt目录下就有这个分区.的各个目录、文件。在一个分区上存储文件时,需要遵循一定的格式,这种格式称为文橡首件系统类型,比如fat16、fat32、ntfs、ext2、ext3、jffs2、yaffs 等。除这些拥有实实在在的存储分区的文件系统类型外,Linux还有几种虚拟的文件系统类型,比如proc、sysfs 等,它们的文件并不存储在实际的设备上,而是在访问它们时由内核临时生成。比如 proc文件系统下的uptime文件,读取它时可以得到两个时间值(用来表示系统启动后运行的秒数、空闲的秒数),每次读取时都由内核即刻生成,每次读取结果都不一样。“文件系统类型”常被简称为“文件系统”,比如“硬盘第二个分区上的文件系统是EXT2”指的就是文件系统类型。所以“文件系统”这个术语,有时候指的是分区上的文件集合,有时候指的是文件系统类型,需要根据语境分辨,在阅读各类文献时需要注意这点。
『陆』 为什么C盘文件系统是FAT32格式其他磁盘是NTFS格式
楼主,你好:(我用最简单、最直接的李芹带语言首滚来回答你)
1、不管是FAT32还是NTFS都是硬盘的一种分区格式,你可以理解为是硬盘的一种协议、合同。它规定了硬盘的一些功能。
2、FAT32是原先老的硬盘分区格式(只是相对NTFS分区格式来讲),但是也是兼容性最好的硬盘格式,所以现在的U盘都是FAT32格式。但是缺点是无法存放超过单个4GB的文件(比如大小为4.2GB的一个压缩包,就不能存放到分区格式为FAT32的硬盘中)
3、NTFS是最新的硬盘分区格式,也是符合现时代硬盘使用的一种格式哪芦,它可以存放单个超过4GB的文件,比如说现在一个高清电影有的高达10GB大小,那么它就只能存放到NTFS分区格式的硬盘中。
4、一般装系统的时候为了兼容性考虑,就会把C盘分区为FAT32格式,但是现在兼容性已经不是问题,你可以自己改为NTFS格式的,只需要输入几个命令即可。不会损害任何数据,绝对安全。当然C盘也可以继续使用FAT32格式,因为我们一般存放东西也不再C盘的啊。
5、C盘FAT32转NTFS方法:
在运行中输入"cmd"(不加引号),然后输入"convert c: /fs:ntfs"(不加引号),然后再按提示操作就行了
专业回答,敬请采纳!
『柒』 程序员必备知识(操作系统5-文件系统)
本篇与之前的第三篇的内存管理知识点有相似的地方
对于运行的进程来说,内存就像一个纸箱子, 仅仅是一个暂存数据的地方, 而且空间有限。如果我们想要进程结束之后,数据依然能够保存下来,就不能只保存在内存里,而是应该保存在 外部存储 中。就像图书馆这种地方,不仅空间大,而且能够永久保存。
我们最常用的外部存储就是 硬盘 ,数据是以文件的形式保存在硬盘上的。为了管理这些文件,我们在规划文件系统的时候,需要考虑到以下几点。
第一点,文件系统要有严格的组织形式,使得文件能够 以块为单位进行存储 。这就像图书馆里,我们会给设置一排排书架,然后再把书架分成一个个小格子,有的项目存放的资料非常多,一个格子放不下,就需要多个格子来进行存放。我们把这个区域称为存放原始资料的 仓库区 。
第二点,文件系统中也要有 索引区 ,用来方便查找一个文件分成的多个块都存放在了什么位置。这就好比,图书馆的书太多了,为了方便查找,我们需要专门设置一排书架,这里面会写清楚整个档案库有哪些资料,资料在哪个架子的哪个格子上。这样找资料的时候就不用跑遍整个档案库,在这个书架上找到后,直奔目标书架就可以了。
第三点,如果文件系统中有的文件是热点文件,近期经常被读取和写入,文件系统应该有 缓存层 。这就相当于图书馆里面的热门图书区,这里面的书都是畅销书或者是常常被借还的图书。因为借还的次数比较多,那就没必要每次有人还了之后,还放回遥远的货架,我们可以专门开辟一个区域, 放置这些借还频次高的图书。这样借还的效率就会提高。
第四点,文件应该用 文件夹 的形式组织起来,方便管理和查询。这就像在图书馆里面,你可以给这些资料分门别类,比如分成计算机类.文学类.历史类等等。这样你也容易管理,项目组借阅的时候只要在某个类别中去找就可以了。
在文件系统中,每个文件都有一个名字,这样我们访问一个文件,希望通过它的名字就可以找到。文件名就是一个普通的文本。 当然文件名会经常冲突,不同用户取相同的名字的情况还是会经常出现的。
要想把很多的文件有序地组织起来,我们就需要把它们成为 目录 或者文件夹。这样,一个文件夹里可以包含文件夹,也可以包含文件,这样就形成了一种 树形结构 。而我们可以将不同的用户放在不同的用户目录下,就可以一定程度上避免了命名的冲突问题。
第五点,Linux 内核要在自己的内存里面维护一套数据结构,来保存哪些文件被哪些进程打开和使用 。这就好比,图书馆里会有个图书管理系统,记录哪些书被借阅了,被谁借阅了,借阅了多久,什么时候归还。
文件系统是操作系统中负责管理持久数据的子系统,说简单点,就是负责把用户的文件存到磁盘硬件中,因为即使计算机断电了,磁盘里的数据并不会丢失,所以可以持久化的保存文件。
文件系统的基本数据单位是 文件 ,它的目的是对磁盘上的文件进行组织管理,那组织的方式不同,就会形成不同的文件系统。
Linux最经典的一句话是:“一切皆文件”,不仅普通的文件和目录,就连块设备、管道、socket 等,也都是统一交给文件系统管理的。
Linux文件系统会为每个文件分配两个数据结构: 索引节点(index node) 和 目录项(directory entry) ,它们主要用来记录文件的元信息和目录层次结构。
●索引节点,也就是inode, 用来记录文件的元信息,比如inode编号、文件大小访问权限、创建时间、修改时间、 数据在磁盘的位置 等等。 索引节点是文件的唯一标识 ,它们之间一一对应, 也同样都会被 存储在硬盘 中,所以索引节点同样占用磁盘空间。
●目录项,也就是dentry, 用来记录文件的名字、索引节点指针以及与其他目录项的层级关联关系。多个目录项关联起来,就会形成 目录结构 ,但它与索引节点不同的是,目录项是由内核维护的一个数据结构,不存放于磁盘,而是 缓存在内存 。
由于索引节点唯一标识一个文件,而目录项记录着文件的名,所以目录项和索引节点的关系是多对一,也就是说,一个文件可以有多个别字。比如,硬链接的实现就是多个目录项中的索引节点指向同一个文件。
注意,目录也是文件,也是用索引节点唯一标识,和普通文件不同的是,普通文件在磁盘里面保存的是文件数据,而目录文件在磁盘里面保存子目录或文件。
(PS:目录项和目录不是一个东西!你也不是一个东西(^_=), 虽然名字很相近,但目录是个文件。持久化存储在磁盘,而目录项是内核一个数据结构,缓存在内存。
如果查询目录频繁从磁盘读,效率会很低,所以内核会把已经读过的目录用目录项这个数据结构缓存在内存,下次再次读到相同的目录时,只需从内存读就可以,大大提高了 文件系统的效率。
目录项这个数据结构不只是表示目录,也是可以表示文件的。)
磁盘读写的最小单位是 扇区 ,扇区的大小只有512B大小,很明显,如果每次读写都以这么小为单位,那这读写的效率会非常低。
所以,文件系统把多个扇区组成了一个 逻辑块 ,每次读写的最小单位就是逻辑块(数据块) , Linux中的逻辑块大小为4KB,也就是一次性读写 8个扇区,这将大大提高了磁盘的读写的效率。
以上就是索引节点、目录项以及文件数据的关系,下面这个图就很好的展示了它们之间的关系:
索引节点是存储在硬盘上的数据,那么为了加速文件的访问,通常会把索引节点加载到内存中。
另外,磁盘进行格式化的时候,会被分成三个存储区域,分别是超级块、索引节点区和数据块区。
●超级块,用来存储文件系统的详细信息,比如块个数、块大小、空闲块等等。
●索引节点区,用来存储索引节点;
●数据块区,用来存储文件或目录数据;
我们不可能把超级块和索引节点区全部加载到内存,这样内存肯定撑不住,所以只有当需要使用的时候,才将其加载进内存,它们加载进内存的时机是不同的.
●超级块:当文件系统挂载时进入内存;
●索引节点区:当文件被访问时进入内存;
文件系统的种类众多,而操作系统希望 对用户提供一个统一的接口 ,于是在用户层与文件系统层引入了中间层,这个中间层就称为 虚拟文件系统(Virtual File System, VFS) 。
VFS定义了一组所有文件系统都支持的数据结构和标准接口,这样程序员不需要了解文件系统的工作原理,只需要了解VFS提供的统一接口即可。
在Linux文件系统中,用户空间、系统调用、虚拟机文件系统、缓存、文件系统以及存储之间的关系如下图:
Linux支持的文件系统也不少,根据存储位置的不同,可以把文件系统分为三类:
●磁盘的文件系统,它是直接把数据存储在磁盘中,比如Ext 2/3/4. XFS 等都是这类文件系统。
●内存的文件系统,这类文件系统的数据不是存储在硬盘的,而是占用内存空间,我们经常用到的/proc 和/sys文件系统都属于这一类,读写这类文件,实际上是读写内核中相关的数据。
●网络的文件系统,用来访问其他计算机主机数据的文件系统,比如NFS. SMB等等。
文件系统首先要先挂载到某个目录才可以正常使用,比如Linux系统在启动时,会把文件系统挂载到根目录。
在操作系统的辅助之下,磁盘中的数据在计算机中都会呈现为易读的形式,并且我们不需要关心数据到底是如何存放在磁盘中,存放在磁盘的哪个地方等等问题,这些全部都是由操作系统完成的。
那么,文件数据在磁盘中究竟是怎么样的呢?我们来一探究竟!
磁盘中的存储单元会被划分为一个个的“ 块 ”,也被称为 扇区 ,扇区的大小一般都为512byte.这说明即使一块数据不足512byte,那么它也要占用512byte的磁盘空间。
而几乎所有的文件系统都会把文件分割成固定大小的块来存储,通常一个块的大小为4K。如果磁盘中的扇区为512byte,而文件系统的块大小为4K,那么文件系统的存储单元就为8个扇区。这也是前面提到的一个问题,文件大小和占用空间之间有什么区别?文件大小是文件实际的大小,而占用空间则是因为即使它的实际大小没有达到那么大,但是这部分空间实际也被占用,其他文件数据无法使用这部分的空间。所以我们 写入1byte的数据到文本中,但是它占用的空间也会是4K。
这里要注意在Windows下的NTFS文件系统中,如果一开始文件数据小于 1K,那么则不会分配磁盘块来存储,而是存在一个文件表中。但是一旦文件数据大于1K,那么不管以后文件的大小,都会分配以4K为单位的磁盘空间来存储。
与内存管理一样,为了方便对磁盘的管理,文件的逻辑地址也被分为一个个的文件块。于是文件的逻辑地址就是(逻辑块号,块内地址)。用户通过逻辑地址来操作文件,操作系统负责完成逻辑地址与物理地址的映射。
不同的文件系统为文件分配磁盘空间会有不同的方式,这些方式各自都有优缺点。
连续分配要求每个文件在磁盘上有一组连续的块,该分配方式较为简单。
通过上图可以看到,文件的逻辑块号的顺序是与物理块号相同的,这样就可以实现随机存取了,只要知道了第一个逻辑块的物理地址, 那么就可以快速访问到其他逻辑块的物理地址。那么操作系统如何完成逻辑块与物理块之间的映射呢?实际上,文件都是存放在目录下的,而目录是一种有结构文件, 所以在文件目录的记录中会存放目录下所有文件的信息,每一个文件或者目录都是一个记录。 而这些信息就包括文件的起始块号和占有块号的数量。
那么操作系统如何完成逻辑块与物理块之间的映射呢? (逻辑块号, 块内地址) -> (物理块号, 块内地址),只需要知道逻辑块号对应的物理块号即可,块内地址不变。
用户访问一个文件的内容,操作系统通过文件的标识符找到目录项FCB, 物理块号=起始块号+逻辑块号。 当然,还需要检查逻辑块号是否合法,是否超过长度等。因为可以根据逻辑块号直接算出物理块号,所以连续分配支持 顺序访问和随机访问 。
因为读/写文件是需要移动磁头的,如果访问两个相隔很远的磁盘块,移动磁头的时间就会变长。使用连续分配来作为文件的分配方式,会使文件的磁盘块相邻,所以文件的读/写速度最快。
连续空间存放的方式虽然读写效率高,但是有 磁盘空间碎片 和 文件长度不易扩展 的缺陷。
如下图,如果文件B被删除,磁盘上就留下一块空缺,这时,如果新来的文件小于其中的一个空缺,我们就可以将其放在相应空缺里。但如果该文件的大小大于所
有的空缺,但却小于空缺大小之和,则虽然磁盘上有足够的空缺,但该文件还是不能存放。当然了,我们可以通过将现有文件进行挪动来腾出空间以容纳新的文件,但是这个在磁盘挪动文件是非常耗时,所以这种方式不太现实。
另外一个缺陷是文件长度扩展不方便,例如上图中的文件A要想扩大一下,需要更多的磁盘空间,唯一的办法就只能是挪动的方式,前面也说了,这种方式效率是非常低的。
那么有没有更好的方式来解决上面的问题呢?答案当然有,既然连续空间存放的方式不太行,那么我们就改变存放的方式,使用非连续空间存放方式来解决这些缺陷。
非连续空间存放方式分为 链表方式 和 索引方式 。
链式分配采取离散分配的方式,可以为文件分配离散的磁盘块。它有两种分配方式:显示链接和隐式链接。
隐式链接是只目录项中只会记录文件所占磁盘块中的第一块的地址和最后一块磁盘块的地址, 然后通过在每一个磁盘块中存放一个指向下一 磁盘块的指针, 从而可以根据指针找到下一块磁盘块。如果需要分配新的磁盘块,则使用最后一块磁盘块中的指针指向新的磁盘块,然后修改新的磁盘块为最后的磁盘块。
我们来思考一个问题, 采用隐式链接如何将实现逻辑块号转换为物理块号呢?
用户给出需要访问的逻辑块号i,操作系统需要找到所需访问文件的目录项FCB.从目录项中可以知道文件的起始块号,然后将逻辑块号0的数据读入内存,由此知道1号逻辑块的物理块号,然后再读入1号逻辑块的数据进内存,此次类推,最终可以找到用户所需访问的逻辑块号i。访问逻辑块号i,总共需要i+ 1次磁盘1/0操作。
得出结论: 隐式链接分配只能顺序访问,不支持随机访问,查找效率低 。
我们来思考另外一个问题,采用隐式链接是否方便文件拓展?
我们知道目录项中存有结束块号的物理地址,所以我们如果要拓展文件,只需要将新分配的磁盘块挂载到结束块号的后面即可,修改结束块号的指针指向新分配的磁盘块,然后修改目录项。
得出结论: 隐式链接分配很方便文件拓展。所有空闲磁盘块都可以被利用到,无碎片问题,存储利用率高。
显示链接是把用于链接各个物理块的指针显式地存放在一张表中,该表称为文件分配表(FAT, File Allocation Table)。
由于查找记录的过程是在内存中进行的,因而不仅显著地 提高了检索速度 ,而且 大大减少了访问磁盘的次数 。但也正是整个表都存放在内存中的关系,它的主要的缺点是 不适 用于大磁盘 。
比如,对于200GB的磁盘和1KB大小的块,这张表需要有2亿项,每一项对应于这2亿个磁盘块中的一个块,每项如果需要4个字节,那这张表要占用800MB内存,很显然FAT方案对于大磁盘而言不太合适。
一直都在,加油!(*゜Д゜)σ凸←自爆按钮
链表的方式解决了连续分配的磁盘碎片和文件动态打展的问题,但是不能有效支持直接访问(FAT除外) ,索引的方式可以解决这个问题。
索引的实现是为每个文件创建一个 索引数据块 ,里面存放的 是指向文件数据块的指针列表 ,说白了就像书的目录一样,要找哪个章节的内容,看目录查就可以。
另外, 文件头需要包含指向索引数据块的指针 ,这样就可以通过文件头知道索引数据块的位置,再通过索弓|数据块里的索引信息找到对应的数据块。
创建文件时,索引块的所有指针都设为空。当首次写入第i块时,先从空闲空间中取得一个块, 再将其地址写到索引块的第i个条目。
索引的方式优点在于:
●文件的创建、增大、缩小很方便;
●不会有碎片的问题;
●支持顺序读写和随机读写;
由于索引数据也是存放在磁盘块的,如果文件很小,明明只需一块就可以存放的下,但还是需要额外分配一块来存放索引数据,所以缺陷之一就是存储索引带来的开销。
如果文件很大,大到一个索引数据块放不下索引信息,这时又要如何处理大文件的存放呢?我们可以通过组合的方式,来处理大文件的存储。
先来看看 链表+索引 的组合,这种组合称为 链式索引块 ,它的实现方式是在 索引数据块留出一个存放下一个索引数据块的指针 ,于是当一个索引数据块的索引信息用完了,就可以通过指针的方式,找到下一个索引数据块的信息。那这种方式也会出现前面提到的链表方式的问题,万一某个指针损坏了,后面的数据也就会无法读取了。
还有另外一种组合方式是 索引+索引 的方式,这种组合称为多级索引块,实现方式是通过一个索引块来存放多个索引数据块,一层套一层索引, 像极了俄罗斯套娃是吧๑乛◡乛๑
前面说到的文件的存储是针对已经被占用的数据块组织和管理,接下来的问题是,如果我要保存一个数据块, 我应该放在硬盘上的哪个位置呢?难道需要将所有的块扫描一遍,找个空的地方随便放吗?
那这种方式效率就太低了,所以针对磁盘的空闲空间也是要引入管理的机制,接下来介绍几种常见的方法:
●空闲表法
●空闲链表法
●位图法
空闲表法
空闲表法就是为所有空闲空间建立一张表,表内容包括空闲区的第一个块号和该空闲区的块个数,注意,这个方式是连续分配的。如下图:
当请求分配磁盘空间时,系统依次扫描空闲表里的内容,直到找到一个合适的空闲区域为止。当用户撤销一个文件时,系统回收文件空间。这时,也需顺序扫描空闲表,寻找一个空闲表条目并将释放空间的第一个物理块号及它占用的块数填到这个条目中。
这种方法仅当有少量的空闲区时才有较好的效果。因为,如果存储空间中有着大量的小的空闲区,则空闲表变得很大,这样查询效率会很低。另外,这种分配技术适用于建立连续文件。
空闲链表法
我们也可以使用链表的方式来管理空闲空间,每一个空闲块里有一个指针指向下一个空闲块,这样也能很方便的找到空闲块并管理起来。如下图:
当创建文件需要一块或几块时,就从链头上依次取下一块或几块。反之,当回收空间时,把这些空闲块依次接到链头上。
这种技术只要在主存中保存一个指针, 令它指向第一个空闲块。其特点是简单,但不能随机访问,工作效率低,因为每当在链上增加或移动空闲块时需要做很多1/0操作,同时数据块的指针消耗了一定的存储空间。
空闲表法和空闲链表法都不适合用于大型文件系统,因为这会使空闲表或空闲链表太大。
位图法
位图是利用二进制的一位来表示磁盘中一个盘块的使用情况,磁盘上所有的盘块都有一个二进制位与之对应。
当值为0时,表示对应的盘块空闲,值为1时,表示对应的盘块已分配。它形式如下:
在Linux文件系统就采用了位图的方式来管理空闲空间,不仅用于数据空闲块的管理,还用于inode空闲块的管理,因为inode也是存储在磁盘的,自然也要有对其管理。
前面提到Linux是用位图的方式管理空闲空间,用户在创建一个新文件时, Linux 内核会通过inode的位图找到空闲可用的inode,并进行分配。要存储数据时,会通过块的位图找到空闲的块,并分配,但仔细计算一下还是有问题的。
数据块的位图是放在磁盘块里的,假设是放在一个块里,一个块4K,每位表示一个数据块,共可以表示4 * 1024 * 8 = 2^15个空闲块,由于1个数据块是4K大小,那么最大可以表示的空间为2^15 * 4 * 1024 = 2^27个byte,也就是128M。
也就是说按照上面的结构,如果采用(一个块的位图+ 一系列的块),外加一(个块的inode的位图+一系列的inode)的结构能表示的最大空间也就128M,
这太少了,现在很多文件都比这个大。
在Linux文件系统,把这个结构称为一个 块组 ,那么有N多的块组,就能够表示N大的文件。
最终,整个文件系统格式就是下面这个样子。
最前面的第一个块是引导块,在系统启动时用于启用引导,接着后面就是一个一个连续的块组了,块组的内容如下:
● 超级块 ,包含的是文件系统的重要信息,比如inode总个数、块总个数、每个块组的inode个数、每个块组的块个数等等。
● 块组描述符 ,包含文件系统中各个块组的状态,比如块组中空闲块和inode的数目等,每个块组都包含了文件系统中「所有块组的组描述符信息」。
● 数据位图和inode位图 ,用于表示对应的数据块或inode是空闲的,还是被使用中。
● inode 列表 ,包含了块组中所有的inode, inode 用于保存文件系统中与各个文件和目录相关的所有元数据。
● 数据块 ,包含文件的有用数据。
你可以会发现每个块组里有很多重复的信息,比如 超级块和块组描述符表,这两个都是全局信息,而且非常的重要 ,这么做是有两个原因:
●如果系统崩溃破坏了超级块或块组描述符,有关文件系统结构和内容的所有信息都会丢失。如果有冗余的副本,该信息是可能恢复的。
●通过使文件和管理数据尽可能接近,减少了磁头寻道和旋转,这可以提高文件系统的性能。
不过,Ext2 的后续版本采用了稀疏技术。该做法是,超级块和块组描述符表不再存储到文件系统的每个块组中,而是只写入到块组0、块组1和其他ID可以表示为3、5、7的幂的块组中。
在前面,我们知道了一个普通文件是如何存储的,但还有一个特殊的文件,经常用到的目录,它是如何保存的呢?
基于Linux 一切切皆文件的设计思想,目录其实也是个文件,你甚至可以通过vim打开它,它也有inode, inode 里面也是指向一些块。
和普通文件不同的是, 普通文件的块里面保存的是文件数据,而目录文件的块里面保存的是目录里面一项一项的文件信息 。
在目录文件的块中,最简单的保存格式就是 列表 ,就是一项一项地将目录下的文件信息(如文件名、文件inode.文件类型等)列在表里。
列表中每一项就代表该目录下的文件的文件名和对应的inode,通过这个inode,就可以找到真正的文件。
通常,第一项是「则」,表示当前目录,第二项是.,表示上一级目录, 接下来就是一项一项的文件名和inode。
如果一个目录有超级多的文件,我们要想在这个目录下找文件,按照列表一项一项的找,效率就不高了。
于是,保存目录的格式改成 哈希表 ,对文件名进行哈希计算,把哈希值保存起来,如果我们要查找一个目录下面的文件名,可以通过名称取哈希。如果哈希能够匹配上,就说明这个文件的信息在相应的块里面。
Linux系统的ext文件系统就是采用了哈希表,来保存目录的内容,这种方法的优点是查找非常迅速,插入和删除也较简单,不过需要一些预备措施来避免哈希冲突。
目录查询是通过在磁盘上反复搜索完成,需要不断地进行/0操作,开销较大。所以,为了减少/0操作,把当前使用的文件目录缓存在内存,以后要使用该文件时只要在内存中操作,从而降低了磁盘操作次数,提高了文件系统的访问速度。
感谢您的阅读,希望您能摄取到知识!加油!冲冲冲!(发现光,追随光,成为光,散发光!)我是程序员耶耶!有缘再见。<-biubiu-⊂(`ω´∩)
『捌』 文件系统有什么区别FAT32,NTFS~~
FAT32和NTFS的区别:
1、什么是NTFS-新(N)技术(T)文件(F)系统(S)?
想要了解NTFS,我们首先应该认识一下FAT。FAT(FileAllocationTable)是“文件分配表”的意思。对我们来说,它的意义在于对硬盘分区的管理。FAT16、FAT32、NTFS是目前最常
见的三种文件系统。
FAT16:我们以前用的DOS、Windows95都使用FAT16文件系统,现在常用的Windows98/2000/XP等系统均支持FAT16文件系统。它最大可以管理大到2GB的分区,但每个分区最多只能有65525个簇(簇是磁盘空?br/>涞呐渲玫ノ唬�K孀庞才袒蚍智�萘康脑龃螅�扛龃厮�嫉目占浣�嚼丛酱螅�佣�贾掠才炭占涞睦朔选?
FAT32:随着大容量硬盘的出现,从Windows98开始,FAT32开始流行。它是FAT16的增强版本,可以支持大到2TB(2048G的分区。FAT32使用的簇比FAT16小,从
而有效地节约了硬盘空间。
NTFS:微软WindowsNT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。随着以NT
为内核的Windows2000/XP的普及,很多个人用户开始用到了NTFS。NTFS也是以簇为单位来存储数据文件,但NTFS中簇的大小并不依赖于磁
盘或分区的大小。簇尺寸的缩小不但降低了磁盘空间的浪费,还减少了产生磁盘碎片的可能。NTFS支持文件加密管
理功能,可为用户提供更高层次的安全保证。
2、什么系统可以支持NTFS文件系统?
只有WindowsNT/2000/XP才能识别NTFS系统,Windows9x/Me以及DOS等操作系统都不能支持、识别NTFS格式的磁盘。由于DOS系统不支持NTFS系统,所以最好不要将C:盘制作
为NTFS系统,这样在系统崩溃后便于在DOS系统下修复。
NTFS与操作系统支持情况如下:
FAT16 windows95/98/me/nt/2000/xpunix,linux,dos
FAT32 windows95/98/me/2000/xp
NTFS windowsnt/2000/xp
3、我们需要NTFS吗?
Windows2000/XP在文件系统上是向下兼容的,它可以很好地支持FAT16/FAT32和NTFS,其中NTFS是WindowsNT/2000/XP专用格式,它能更充分有效地利用磁盘空间、支持文件级压缩、具备更好的文件安全性。如果你只安装Windows2000/XP,建议选择NTFS文件系统。如果多重引导系统,则系统盘(C盘)必须为FAT16或FAT32,否则不支持多重引导。?br/>比唬�渌�智�奈募�低晨梢晕狈TFS。
4、如何将FAT分区转换为NTFS?
Windows2000/XP提供了分区格式转换工具“Convert.exe”。Convert.exe是Windows2000附带的一个DOS命令行程序,通过这个工具可以直接在不破坏FAT文件系统的前提下,将FAT转换为NTFS。它的?br/>梅ê芗虻ィ�仍赪indows2000环境下切换到DOS命令行窗口,在提示符下键入:D:\>convert需要转换的盘符/FS:NTFS。如系统E盘原来为FAT16/32,现在需要转换为NTFS,可使用如下格式:D:\>converte:/FS:NTFS。所有的转换将在系统重新启动后完成。
此外,你还可以使用专门的转换工具,如著名的硬盘无损分区工具PowerquestPartitionMagic7.0,软件下载页面[url]http://soft.km169.net/soft/html/196...[/url]中选择“ConvertPartition”按钮,或者是从界面菜单条“Operations”项下拉菜单中选择“Convert”命令。激活该项功能界面。
在界面中选择转换输出为“NTFS”,之后单击“OK”按钮返回程序主界面。单击界面右下角的“Apply”添加设置?br/>4撕笙低郴嶂匦乱�计舳��⑼瓿煞智�袷降淖�徊僮鳌?
5、如何在NTFS格式分区下找回意外删除丢失的文件?
你可以使用专门的软件,如FinalDataforNTFS,或者是GetDataBackforNTFS1.04。这两个软件的文件恢复效果都不错。本人推荐使用GetDataBackforFAT1.05/NTFS1.04(是2个软件),下载地址[url]http://download-tipp.de/cgi-bin/suc...[/url]奈募�指椿乩础?/a>
6、如果Windows2000/XP安装在C盘(NTFS格式),当Windows崩溃时在DOS状态下不能进入C盘,怎么办?
你可以使用Windows2000/XP的安装光盘启动来修复Windows,或者是制作Windows2000/XP的安装启动应急盘。注意:Windows2000的安装盘制作程序在程序的安装光盘中,而WindowsXP的应急盘制作是独立提供的,需要从微软的网站下载。
7、FinalDataforNTFS或GetDataBackforNTFS可以修复被意外格式化的硬盘吗?
这两个软件都可以恢复格式化删除的数据(低级格式化除外)。常规格式化删除的只是数据信息,低级格式化则删
除全部数据区,当硬盘技术还不像现在这样发达的时候,磁盘表面很容易磨损。硬盘使用者对经常出现的读错误,
往往采用低级格式化。修复被格式化的硬盘,只能将这个硬盘拆下来,安装到其他的计算机中,之后执行文件修复
操作。FinalData甚至可以修复由CIH病毒破坏的硬盘。
8、Windows98(FAT系统)下如何直接读写NTFS文件系统
当电脑安装有Windows98和Windows2000/XP两个操作系统,如何在FAT系统下直接读写NTFS文件系统?虽然FAT系统可以转换为NTFS系统,但是有时我们需要
在机器中同时安装Windows98和Windows2000/XP。此时的麻烦就来了,由于Windows98不能读取Windows2000的NTFS,那么如何进行数据交换呢?实际上我们只需要使用一个小小的软件NTFSforWindows98就可以让Windows98轻松读取、甚至写入NTFS分区。首先,到该工具的下载网址[url]http://down.hothost.com/list.asp?id=514[/url]下载NTFSforWindows98 1.07版(能读、写!)。安装结束后会出现一个配置界面,在该界面中的“NTFSSystemFiles”项中需要设置的是程序可以借用的Windows2000/XP系统的相关文件保存路径。由于读取NTFS文件系统必须使用到Windows2000/XP的一些系统文件,所以事先需要在Windows2000/XP下,将如下9个文件复制到FAT分区中的任意一个文件夹下,这些文件分别是:
NTFS.SYS:存谟凇磜innt〉system32driverstfs.sys
NTOSKRNL.EXE:存在于〈winnt〉
system32toskrnl.exe
AUTOCHK.EXE:存在于〈winnt〉
system32utochk.exe
NTDLL.DLL:存在于〈winnt〉system32tdll.dll
C_437.NLS:存在于〈winnt〉system32-437.nls
C_1252.NLS:存在于〈winnt〉system32-1252.nls
L_INTL.NLS:存在于〈winnt〉system32_intl.nls
(注意:WindowsXP的目录是WINDOWS,而不是WINNT,如果你是全新或升级安装的话)
在“DriveLetterAssignments”项中提供的设置是设置允许可以识别的NTFS分�谭��柚玫囊谰菘梢圆慰荚赪indows2000/XP下的盘符顺序。如果单击界面中的“Advanced”按钮,在关联界面中提供了针对设置的NTFS分区高级设置,其中包括设置为只读属性“Read-Only”、允许写入“Write-Through”。对于检查点间隔“CheckpointInterval”和写回间隔“Writebacknterval”,使用程序提供的默认设置即可。到此设置完成,单击OK按钮保存设置并退出。重启后就可以在Windows
98下访问NTFS分区了!
9、如何在DOS系统下直接读写NTFS文件系统?
WinternalsSoftwareLP公司提供了工具软件解决了这个问题。用一张MS-DOS启动盘就可以作到以前不可能作到的事,修改,删除,更新NTFS上的文件,实际NTFSDOSpro是在WindowsNT出问题时的一个修复工具。
10、在NTFS系统下,如何保护自己的文件、文件夹?
由于NTFS文件分区格式具有良好的安全性,如果你不希望自己在硬盘中的文件被其他人调用或查看,使用权限控制方式加密是非常有效的方法。设置方法非常简单:以系统管理员身份登录,使用鼠标右键单击需要加密的文件夹,选择“Properties”,切换到“Security”选项卡。在“Groupofusernames”项中设置允许访问的用户只有Administrator和自己。删除其他的所有用户。保存设置退出即可。此后,其他用户将不能访问该文件夹。使用这项功能需要注意的是:一定要保证只有你一个人知道Administrator密码,并?br/>疑柚闷渌�没Р荒苁粲赢dministrator。此外,你还可以详细的给每个用户设置权限,包括设置读取权限、写入权限、删除权限等,这样使用起来就更加灵活。你还可以设置权限,控制一个磁盘,或者磁盘分区只为自己使用,这样其他人就不能看到你的任何东西了。
『玖』 什么是文件系统
在搜索引擎上有很多朋友咨询文件系统是指的相关信息,下面由小编为大家统一解答文件系统是指。
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
还想搜其他与文件系统是指相关信息,请点击下方更多的答案。