Mac OS X 文件系统
文件系统从体系结构上看,Mac OS X实现了对多文件系统的支持,其中最为重要的文件系统包括有:Mac OS Extended (HFS+),Mac OS Standard (HFS),UFS, ISO 9660, NFS和 AFP。但从用户的角度看,文件系统又是单一的。当用户复制,移动或拖移文件和文件夹时,(会感觉似乎)只存在一个文件系统。
本章从两种角度审视了文件系统并谈论了一些对于软件开发人员有意义的话题。首先它描述了Mac OS X中标准的目录分层,即Mac OS X系统中应用程序,文档,框架和资源放在一个多用户,网络化的计算机环境中。随后还讲述了在各种文件系统之间,特别是在占主导地位的HFS+ 和UFS系统之间,相互操作的区别以及产生的问题。它还解释了HFS资源分支的实现及与此实现相关的策略。 http://www.apple.com.cn/developer/macdev/system_overview/images/newsheader_127.jpg MacOSX文件系统中的几乎每个文件都有其适合放置的存储这一类型文件的标准目录区域。而对用户来说,这并不意味着他们就必须把应用程序和应用程序资源放在被推荐的区域。由于应用程序最终会被打包,因此无论他们被安装在哪里,都能满足自身要求。但假如用户没有把某些内容放在系统软件期望的位置。他们有可能会丧失Mac OSX的一些优势。例如,Finder首先通过搜索应用程序的标准位置来导入应用程序数据库(见“收集应用程序信息”一节)。一旦这样做,结果有可能会造成一个隶属于某个应用程序(但不在那一区域)的文档,不能在双击时被立即打开。
在探究文件系统组织的基本原理之前,首先思考一下文件系统的顶层究竟显示了些什么。列表9-1举例说明了一个假定的安装状况。
列表 9-1 Mac OS X文件系统顶层的样例
/Mac OS X/
/Network/
/OtherVolumes/
文件系统的层次通常被表现为一个以“根(root)”开始的分层结构,在典型的Mac OS X文件系统的根目录中(“根”用起始的“/”符号来表示),它包含以下项目:
·/Mac OS X/--一个特殊的卷,操作系统由它开始启动,系统文件和资源也被安装在 其上。这个卷通常是一个被格式为Mac OS扩展格式(HFS+,Mac OS Extended)的 卷(虽然它也可以是UFS卷)。名称“Mac OS X”是它默认的卷名,但用户也可以 修改它。
·/Network/--作为装载到用户系统上的本地网络的根目录。无论用户是否连接到网 络上,/Network/目录(其图标是一个“地球”)将始终出现。
·/OtherVolumes/--显示一个或多个被连接的外部设备或不是启动卷的内部设备。其 中可以包括有Zip驱动器,CD-ROM驱动器,数码相机,被装载的网络服务器以及硬 盘和它们的分区等。(“OtherVolumes”只是一个真实名称的代表,被连接的卷的 实际名称将会是不同的)。
所有非启动卷在它们被装载时出现,被卸载时消失。对此有一个例外,用户的iDisk卷即使在被卸载后也不会消失。
卷的物理结构与Finder向用户所显示的略有不同。假如用Terminal程序看一下目录结构,您会看到启动卷被装载在根目录层(/),而非启动卷被放在/Volumes/目录中。Finder提供了这种抽象方式,用来在基本的UNIX 系统上提供一个更加传统的Mac OS界面。
像/usr, /bin和/etc等目录都是标准的BSD目录,它们也存在于根目录层,但Finder向用户隐藏了它们。
http://www.apple.com.cn/developer/macdev/system_overview/images/newsheader_128.jpg 在一个控制访问系统资源的多用户系统中,保持系统的稳定性是非常重要的。Mac OS X定义了几个文件系统域,每个域在一组确定的目录中提供了资源的存储。在每个域中对资源的访问由当前用户的权限决定。
有四种文件系统域,在以下列表中描述了每一种域:
·用户:用户域包含了登入系统用户的特定资源。这个域由用户的home目录来定义 ,它可以是在启动卷(/Mac OS X/)上,也可以是在网络上。用户完全控制了这个 域中的一切。
·本地:本地域包含了由一个特定系统上所有用户所共享的应用程序和文档等资源 ,其不要求由系统来运行。本地域并不对应某个单独的物理目录,而是由几个本地 启动(和root)卷上的目录组成。拥有系统管理员权限的用户可以增加,删除和移 动这个域中的项目。
·网络:网络域包含了由一个本地网络上所有用户所共享的应用程序和文档等资源 。这个域中的项目通常放在网络文件服务器上,并由网络管理员控制。
·系统:系统域包含了由Apple安装的系统软件。系统域中的资源要求由系统来运行 。这个域中的项目被放在本地的启动(和root)卷上。用户不可以增加,删除或是 修改这个域中的项目。
特定资源的域决定了其对系统中用户的适用性和可存取性。举个例子来说,一个安装在用户home目录中的字库只有对那个用户可用。如果一个管理员将同一个字库安在网络域,那么所有的网络用户都将能访问它。
Mac OS X在每个域中提供了一套基本目录来组织被包含的资源。Mac OSX在不同的域中都使用相同的目录名来存储相同类型的资源。这种一致性简化了查找用户和系统使用资源的过程,当用系统需要寻找一个资源时,它会按顺序搜索各个域,直到找到这个资源。搜索从用户域开始,然后依次在本地,网络和系统域中进行搜索。
您的程序代码不应假定一个文件系统域中资源的路径,因为这些路径将来可能会被修改。Apple提供了访问标准文件系统路径的公共API。通常情况下您应该使用这些API来定位您的文件资源。关于搜索域中项目的更多信息,请参见“搜索文件系统域”一章。
以下章节更详细的描述了每个文件系统域,包括那些域中提供的标准目录。 http://www.apple.com.cn/developer/macdev/system_overview/images/newsheader_129.jpg 用户域包含了一个单独用户的特定资源。用户域由当前(已登入)用户的home目录来表示。 Mac OSX计算机上的每个用户必须在那台机器或它所连接的本地网络上有一个帐户。每个用户帐号在文件系统中都有一块分配的空间,称为用户home目录。这个目录就是用户程序,资源和文档存放的地方。每个用户的home目录名称都是基于用户的短登入名,它必须是唯一的。
用户域使每个用户能够定制各自的工作环境。当一个用户登入时,Finder会使用用户域中的预置来还原用户的工作环境和针对以前状态的设定。同样,程序和其他系统软件也会使用用户域中的信息来恢复应用程序设置,网络设置,邮件设置,字体设置,ColorSync描述和其他设置。
用户home目录的位置--用户域--是由用户帐号来决定的。如果是计算机的本地用户帐号,用户home目录存在于启动卷的Users目录中。如果是一个网络用户帐号,其home目录是在一个网络服务器上。不用考虑home目录的物理位置,在一些情况下Mac OSX根据UNIX中的习惯,使用“~”符号(代字符)来指明一个用户的home目录。“~”符号(代字符)可以用于连接其他目录或用户名称,来说明特定的用户目录。表9-1说明了这一概念。
图9-1 使用代字符来说明home目录中的位置
~ 当前用户home目录的顶层 ~/Library/Fonts 当前用户home目录中存储字体的位置 ~Steve 用户Steve的home目录的顶层
在每个新用户的home目录中适当的位置上,都存在一些缺省的子目录和资源。用户home目录中的这些子目录映射着在iDisk帐户中所能找到的内容。(关于iDisk的更多信息,请参见http://www.apple.com.上iTools部分)。对于用户home目录中的缺省子目录而言,同样不用考虑home目录是在哪里被创建的。表9-2列出了用户home目录的标准子目录。
表9-2 默认home目录的内容
用户 目录描述 Desktopc 包含了Finder在登入用户桌面上所显示的项目 Documents 包含了用户的个人文档 Library 包含了特定用户的应用程序的设置,预置和其他系统资源。请参见“Library 目录”一章。 Movies 包含了QuickTime和其他格式的数字电影 Music 包含了数字音乐文件(.aiff,.mp3和其它格式) Pictures 包含了各种格式的图像 Public 包含了用户希望与其他用户共享的项目,默认时,这个目录对其他用户是可访问的。 Sites 包含了用户的个人web站点中的web页面。Web Sharing必须在这些页面被其他用户访问前被激活。
当一个用户帐号被创建时,Applications目录不会自动被加到用户home目录中。然而用户可以自己创建一个Applications目录,并将他们自己的应用程序放在其中。系统会自动在这个位置搜索应用程序。
系统通过一组默认权限来保护用户home目录中的文件和目录,以避免外界的干扰,用户也可以随时改变这些权限。用户所创建的任何新的文件夹都会继承其父目录的权限。
除了个人用户的home目录外,Users目录还包含了一个Shared共享子目录。这个目录可以被本地机算机系统上的任何用户访问。任何用户都可以在这个目录中写入文档,从中检索文档和读取文档。虽然这个目录并没有真正与用户域联系起来,但它为用户交换文档和其他文件提供了便利的方法。 http://www.apple.com.cn/developer/macdev/system_overview/images/newsheader_130.jpg 本地域包含了在本地计算机上可用的资源,但它不要求由系统来运行。本地域中的资源通常包含应用程序,实用工具,用户字体和用户启动选项及全局应用程序的设置。启动卷上的Applications应用程序目录和Library库目录包含了本地域中的资源。这些资源对于当前计算机系统上的用户是可用的,但对于其他网络计算机上的用户是不可用的。
如果希望资源能够被系统中所有的用户所共享,计算机管理员可以将这些资源安装到本地域中。Apple将其应用程序装在/Applications和/Applications/Utilities目录下。第三方应用程序和实用工具也应该放置在这些目录中。其他系统资源,例如字体库,ColorSync描述,预置和插件则应该放置在Library目录中的适当的子目录中。关于Library目录的更多信息,请参见“Library 目录”一节。
http://www.apple.com.cn/developer/macdev/system_overview/images/newsheader_131.jpg 网络域包含了对于本地网络的所有用户可用的资源。网络用户可以通过这个域来访问应用程序,文档和其他资源,其包括了AppleShare和Web服务器。网络域确切的组成取决于所采用的协同策略,网络管理员负责网络域的实现。
表9-3列出了在网络域中所提供的标准目录,以及对各个目录内容的描述。
表9-3网络目录
位置 描述 /Network/Applications 包含了本地网络上所有用户都可以运行的应用程序。 /Network/Library 包含了本地网络上所有用户都可用的资源,如插件,声音文件,文档,框架,颜色和字体等。关于Library目录的更多信息,请参见“Library 目录”一节。 /Network/Servers 包含了组成本地网络的NFS文件服务器的装载点 /Network/Users/ 包含了所有本地网络用户的home文件夹。这是home文件夹的默认位置。用户的home文件夹还可以存放在其他的服务器上。
原文
http://www.apple.com.cn/developer/macdev/system_overview/file_system.html lz参与Darwin开发了么? 都开始做高层了。 太详细了。。。 :lol:不错 apple开发者网络值得学习。xcode值得学习。 学习了,感恩。
页:
[1]