macOS文件系统结构的简单介绍
为什么在 Mac OS 中文件可以在使用时移动位置
正在打开的文件允许移动,有几种情况:
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了正蓝免费建站欢迎大家使用!
1. 操作系统以及文件系统驱动允许,注意这是软件允许,并非文件系统本身的结构。
2. 该软件在打开文件以后,获取完文件内容就关闭了文件(比如Windows的记事本)。
3. 软件访问文件时使用了特定的共享标识符(比如SHARE_DELETE)。
后两种都是软件行为,暂且不提,只解释第一种。
很多人都认为是文件系统结构的限制,其实不是,是否允许移动正在访问的文件,完全是操作系统的行为,Windows也有办法移动/删除正在访问的文件,比如unlocker这一类的软件就能做到。
Windows对于每个打开着的文件,对应着内核里的一个FILE_OBJECT结构,这个结构里有两个东西:SectionObjectPointer和PrivateCacheMap,这两个东西是维护Windows Cache Manager的东西。换句话说,所有绝大多数打开的文件都要在创建一个Cache对象才能访问,而Cache对象又是由内核维护的,还是一个链表,这个东西一旦被破坏,整个内核就挂了。
要想访问文件,就必须有SectionObjectPointer,要删除文件,必须要关闭SectionObjectPointer,不关闭SectionObjectPointer直接删文件,轻则内存泄露,重则内核崩溃,因为Cache Manager就是内核的一部分。
所以,根本原因是Windows的内核Cache设计和文件绑的太死了,没办法做到分离,自然就没办法删除一个正在使用的文件(360文件粉碎机就是挂钩子到MmFlushImageSection上,本质上就是当尝试关闭SectionObjectPointer时直接返回成功,绕过内核检查)。
而其它操作系统(Mac不了解,Linux了解)的文件系统和Cache部分跟内核绑的并不死,自然是有办法移动和删除一个正在打开的文件。
说到底,这是设计问题。Windows能不能改变这种策略?能是肯定能,问题是这涉及到内核最核心的部分,轻易不敢改,所以保留这种行为也是正常的。
Mac OS X的文件系统格式是什么? FAT32兼容吗?
Mac OS X的文件系统格式是HFS+,FAT32兼容。
HFS+文件系统是目前的Apple电脑中默认的最常见的文件系统。HFS+来源于UNIX,但是又不用于UNIX,它增加了许多新的特性,同时也有许多不同于Windows、UNIX等系统的概念。HFS+是苹果公司为替代他们的分层文件系统(HFS)而开发的一种文件系统。
它被用在macintosh电脑(或者其他运行Mac OS的电脑)上。它也是iPod上使用的其中一种格式。HFS+也被称为Mac OS Extended(或误称为“HFS Extended”)。在开发过程中,苹果公司也把这个文件系统的代号命名为“Sequoia”。
HFS+是一个HFS的改进版本,支持更大的文件,并用Unicode来命名文件或文件夹,代替了Mac OS Roman或其他一些字符集. 和HFS一样,HFS+也使用B树来存储大部分分卷元数据。
扩展资料:
HFS+特点
1、支持更多的块
Mac系统把硬盘内的空间分为一个个的逻辑块,每个逻辑块大小为512字节,所以逻辑块其实就是扇区。文件系统中文件的分配单元并不是扇区,而是分配块,每个分配块的大小为2扇区,所以分配块也就相当于FAT文件系统及NTFS文件系统中的簇。
HFS用16位记录块的数量,这样在一个宗卷中最多可以管理2个块。而HFS+用32为记录块的数量,所以一个宗卷中最多可以管理2个块。
对于相同大小的宗卷,块数增加了就意味着可以减小块的大小,这样就可以减小存储空间的浪费,同时也能够增加文件系统中存储文件的个数。
2、支持更大的文件
在HFS文件系统中,文件的大小用32位描述,而在HFS+文件系统中用64为描述,所以能够支持更大的文件。
3、支持更长的文件名
HFS文件系统的文件名只能达到31个字符的长度,而HFS+文件系统则支持255个字符长度的Unicode码文件名。
4、支持更大的节点
HFS文件系统的节点大小为512字节,而HFS+文件系统则支持4096字节的节点。
参考资料来源:百度百科-HFS+
苹果mac os系统文件是什么格式
最常用的MAC OS X的文件系统叫 HFS+,这是一种LINUX的文件格式,而且WINDOWS对这种文件格式完全不兼容。
一般格式化苹果机的时候都选择一个叫带日志记录的MAC OS X扩展文件系统,该文件系统稳定性非常好 效率非常高。
尽管HFS像其它大多数文件系统一样被视为专有的格式,但是只有它为大多数最新的操作系统提供了很好的通用解决方法以访问HFS格式磁盘。
扩展资料
组成一个HFS卷需要下面的五个结构:
1、卷的逻辑块0和1是启动块,它包含了系统启动信息。例如,启动时载入的系统名称和壳(通常是Finder)文件。
2、逻辑块2包含主目录块(Master Directory Block,简称MDB)。
3、逻辑块3是卷位图(Volume Bitmap)的启动块,它追踪分配块使用状态。
4、总目录文件(Catalog File)是一个包含所有文件的记录和储存在卷中目录的B*-tree。
5、扩展溢出文件(Extent Overflow File)是当最初总目录文件中三个扩展占用后,另外一个包含额外扩展记录的分配块对应信息的B*-tree。
参考资料来源:百度百科—HFS
什么是Mac OS扩展(日志式)和MS-DOS(FAT)
“Mac OS 扩展(日志式)”格式文件系统是 macOS Sierra 及更早版本的默认文件系统。它使用日志技术帮助保护层级文件系统的完整性,并提供可保护磁盘数据的加密选项。
它被 macOS High Sierra 上的 Apple 文件系统 (APFS) 取代,现为配备固态硬盘的 Mac 电脑的默认文件系统。
MS-DOS一般指MS-DOS;
最基本的MS-DOS系统由一个基于主引导记录(硬盘才有主引导记录,软碟没有主引导记录)启动磁区位于第0轨的磁区中,内容上与硬盘的MBR略有不同的BOOT引导程序和三个文件模块组成。
拓展资料
磁盘格式
windows下主要有FAT16、FAT32、NTFS 等,最新格式为exFAT,不同的磁盘格式有不同的特性FAT格式基本上已经不再使用。
linux下的格式为ext系列,ext4,ext3等。
Mac OS X的硬盘格式是APFS。
exFAT(Windows Vista SP1及以上)单文件大小最大可达16EB(18 446 744 073 709 551 616字节,就是(理论值,16×1024×1024TB),1TB=1024G),簇大小可高达32MB ,采用了剩余空间分配表,剩余空间分配性能改进 ,同一目录下最大文件数可达65 536个 。
NTFS(Windows):支持最大分区2TB,最大文件2TB
FAT16(Windows):支持最大分区2GB,最大文件2GB
FAT32(Windows):支持最大分区124.55GB,除非不再使用“scandisk”,最大文件4GB
HPFS(OS/2):支持最大分区2TB,最大文件2GB
EXT2和EXT3(Linux):支持最大分区16TB,最大文件2TB
EXT4(Linux):使用了B+树索引数据extent的文件系统(有别于EXT2/EXT3),支持最大分区1EB,最大文件16TB
JFS(AIX):支持最大分区4P(block size=4k),最大文件4P
XFS(IRIX):这是个正经的64位的文件系统,可以支持9E(2的63次方)的分区
mac os扩展 日志式 区分大小写什么意思
就是区分大小写格式。
Mac OS扩展日志式格式文件系统是macOS Sierra及更早版本的默认文件系统。它使用日志技术帮助保护层级文件系统的完整性,并提供可保护磁盘数据的加密选项。
macOS介绍
macOS是一套由苹果开发的运行于Macintosh系列电脑上的操作系统。macOS是首个在商用领域成功的图形用户界面操作系统。macOS是基于XNU混合内核的图形化操作系统,一般情况下在普通PC上无法安装的操作系统。网上也有在PC上运行的macOS(Hackintosh)。另外,疯狂肆虐的电脑病毒几乎都是针对Windows的,由于macOS的架构与Windows不同,所以很少受到电脑病毒的袭击。
macos分区有哪些
你好,根据你的描述,Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。mac磁盘分区格式一般分为三种:HFS+、FAT32和exFAT。
HFS+即Hierarchical File System Plus的缩写,名为分层文件系统,这也是mac系统独有的文件格式,对于保障系统安全HFS+起到重要的作用,不支持Windows等其他操作系统。
FAT32即File Allocation Table32的缩写,是一种通用的分区格式,可应用于Mac以及Windows系统。该格式是32位的文件分配表,增强磁盘的管理能力。
exFAT即Extended File Allocation Table File System也叫做FAT64,是FAT32的升级版,支持macOS 10.6.5及以上系统以及Windows 8或是更高版本的系统。
本文标题:macOS文件系统结构的简单介绍
链接URL:http://scyanting.com/article/hdoips.html