移动开发iOS移动端开发iOS架构

MacOSX&iOS操作系统之OSX和iOS架构

2016-07-28  本文已影响651人  北辰明

原创文章转载请注明出处,谢谢


介绍的知识点会有点零乱,因为也是书上看来的,这些知识只能通过不断的加深印象才可以记忆下来!

iOS实际上是完整OSX精简之后的版本,和OSX的主要区别在于iOS的架构是基于ARM,OSX是基于x86_64或者Intel x86

OSX和iOS架构概述

基本结构可以分为一下几层:

在上面这些Darwin是完全开源的,是整个系统的基础,同时提供了底层的API;但是上面几层是闭源的;

pic_one.jpg

Darwin的基础架构如下图所示,Darwin实际上是两种技术混合在一起的:Mach和BSD,还包括一些其他的组件,主要是IOKit;

pic_two.jpg

用户体验层

下面主要介绍一下几个基础的组件原理

Auqa

Aqua是OSX的GUI,采用鼠标驱动,系统的第一个用户态进程launchd负责启动GUI,支持GUI工作的主进程是WindowServer,有趣的是这个程序是在CoreGraphics.framework中,不过CoreGraphics.framework又是在ApplicationSerivces.framework中;WindowServer的代码实际上不完成任何实际的工作,所有的工作实际上都是CoreGraphics框架中的CGXServer函数完成的;loginWindow进程同样是由launchd启动;

pic_three.jpg pic_four.jpg

QuickLook

QuickLook是OSX10.5引入的新特性,允许在Finder中快速预览多种不同类型文件。QuickTime采用的是可扩展的架构,使得大部分工作都可以由插件完成,这些插件都可以用Xcode来创建,后缀为.qlgenerator的bundle;只要将插件放入QuickLook的目录,就可以完成插件的安装。quicklooked是系统的"quicklLook服务器"通 过/System/Library/LaunchAgents/com.apple.quicklook.plist文件在登录的时候启动;

pic_five.jpg pic_seven.jpg

Spotlight

Spotlight是在OSX10.4时候引入的一项快速搜索技术,当然这项技术同时也包含在iOS中,Spotlight背后的核心就是一个索引服务器mds,mds在MetaData框架中,而这个框架是系统核心服务器的一部 分/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata ;mds是一个没有GUI的后台服务程序。每当有任何文件操作(创建,修改和删除)发生时,内核都会通知这个后台服务程序。当mds收到通知时,mds会通过工作进程mdworker将各种元数据信息导入数据库,mdworker进程可以加载一个具体的Spotlight Importer(Spotlight导入器)从文件中提取元数据信息。导入器同样可以通过Xcode进行开发,后缀为.mdimporter;

pic_six.jpg pic_eight.jpg pic_nine.jpg

Darwin简介

这里只做一些基础的介绍,OSX包含了好几种shell,在OSX和iOS上SSH都是默认禁止的,但是在OSX上可以通过修改配置开启SSH,但是iOS上只有通过越狱才可以开启SSH;iOS和OSX的文件系统也存在少许的差异,OSX和iOS采用的都是HFS+的文件系统,HFS+总是会保存大小写的区别,但是可以对大小写敏感或者不敏感,iOS上就是采用了HFSX,默认是对大小写敏感的,OSX则不是;同时HFS+还可以选择打开日志功能,通过使用日志,文件系统可以在强行卸载,断电的情况下更加健壮,因为日志文件系统通过一个日志记录文件系统事物完成的过程。如果文件系统在挂载时发现日志中包含了事物,那么既可以完成事物,也可以放弃事物。


OSX的目录结构

OSX是一个符合UNIX标准的系统,所以一些基本的目录结构是相通的。

下面是OSX中特有文件目录

iOS中一些目录特性


应用程序和App的一些目录结构知识

介绍目录结构的知识前,必须要提一下关于bundle的概念

bundle是一种标准化的层次结构,保存了可执行代码以及代码所需的资源,通俗来说bundle可以是一种目录结构就像应用程序的结构一样,也可以是像framework的结构一样是一种文件的目标格式。

以下就是应用程序的目录结构

pic_ten.jpg

以下App的目录结构,但实际上App的目录结构是很混乱的,app的所有文件都可以丢在根目录中。

pic_eleven.jpg

总结

这些知识都是从书上看来的,很零碎,很难讲,我都是当成一份读书笔记来记的,不过后面的可能开始讲些细节的东西的时候会好一点,知识点不至于那么分散。

上一篇下一篇

猜你喜欢

热点阅读