Mac OS X 和 iOS 架构
用户体验层
Aqua
Quick Look
Spotlight(iOS)
Accessibility选项
SpringBoard(iOS)
-
应用框架层
- Cocoa(iOS)
Carbon
Java
核心框架
OpenGL
Quick Time
Darwin
内核(kernel)
UNIX Shell 环境
-
UNIX的系统目录
OS X 是一个符合UNIX标准的系统,因此也有那些标准UNIX具有的目录结构:- /bin:UNIX中的二进制程序。这是常用UNIX命令(例如:ls、rm、mv和df等)所在的地方。
/sbin:系统程序。这些二进制程序用于系统管理,例如文件系统观念里和网络配置等。
/usr:User目录。这并不是这个目录是给用户用的,而更像是Windows中的Program Files目录,第三方的软件安装在这里。
/usr:目录中 包含的bin、sbin和lib。/usr/lib用于存放共享的目标文件(类似于Windows中存放DLL文件的\windows\system32目录)。这个目录还包含一个include/子目录,所有标准的C头文件都存放在此。
/etc:其他文件。这个这个目录包含了大部分系统配置文件。在OS X中目录实际上指向/private/etc的符号链接。
/dev:BSD设备文件。这些特殊文件表示了系统中存在的设备(字符设备和块设备)
/tmp:临时目录。在OS X中目录实际上指向/private/etc的符号链接。
/var:各种杂项文件。这个目录实际上是指向/private/etc的符号链接。
OS X 特有的目录
OS X在UNIX目录树种添加了自己特有的目录。在系统根目录下,这些目录包括:/Applications:系统中所有应用程序的默认目录
/Library:系统英语的数据文件、帮助和文档等数据都放在这个目录下。
/Network:用于邻居节点发现和访问的虚拟目录。
/System:系统文件目录。其中只包含一个Library子目录。这个子目录几乎包含了系统中的所有重要组件,例如框架、内核模块和字体等。
/Users:所有用户的主目录所在的目录。每一个用户在这里都会创建一个自己的目录。
/Volumes:可移动媒体和网络文件系统的挂载点所在的目录。
/cores:如果启用了核心转储,那么这个目录保存核心转储文件。
iOS 文件系统的区别
iOS 的文件系统和 OS X 非常类似,但是有以下区别:文件系统(HFSX)是大小写敏感的(而 OS X 的 HFS+能保留大小写但是不敏感)。此外,文件系统是部分加密的。
内核已经以kernelcache的形式将内核扩展打包在内核中(kernelcache在/System/Library/Caches/com.apple.kernelaches中)。 和OS X的内核缓存不同(OS X的内核缓存为压缩镜像)iOS 的内核缓存是加密的Img3文件。
/Applications 可能是指向/var/stash/Applications 的符号链接。这是越狱系统的一个特性。而不是标准iOS的特性。
没有/Users 目录,只有一个/User 目录,而这个目录实际上是指向/var/mobile 的符号链接。
没有/Volumes目录(而且没有必要进行磁盘仲裁,因为在iOS 中午饭在指定系统中添加更多的存储设备)。
Bundle
苹果对bundle的定义:一种标准化的层次结构,保存了可执行代码以及代码所需要的资源。
bundle是应用程序框架、插件、小物件、内核扩展的根基。
OS X 应用程序的bundle结构:
- Content/
_CodeSignature/ 包含CodeResources,用来判断应用程序是否完好无损
info.plist 配置文件
MacOS/ 包含App Store 包中的二进制内容
PkgInfo 包的8字节标识符
Pluglns/
Resources/ nib文件(用于GUI)和lproj文件(用于国际化)和其他资源文件
version.plist 包版本信息
iOS App 的默认目录结构
- Documents / 应用程序保存的数据文件(如游戏的最高分、文档和记录等)
- Library/ 杂项app文件
- tmp 保存临时文件的目录,随时可能被清空。