ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mac Technology Overview(一)

2020-11-07 02:01:34  阅读:321  来源: 互联网

标签:XPC Overview 应用程序 BSD Mac API 内核 进程 Technology


参考地址: https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/OSX_Technology_Overview/About/About.html#//apple_ref/doc/uid/TP40001067
基于稳定强大的OSX内核以及便利的Cocoa框架,让苹果开发者们能站在巨人的肩膀上高效编程,然而如果仅仅只是局限于API的调用,不了解底层实现和原理,在面对一些问题时候难免会力不从新,当学习的知识达到一定的阶段一定要注重积累,了OSX操作系统,及其运作原理,有助于我们更好的理解iOS开发生态,更快速的学习新的姿势.

OS X整体上苹果分成了四个大的层级

  • 如下图所示,从上至下依次分为了5个层级,越面向底层,越能提供一些定制话的服务,上层框架基本都是基于底层框架封装而来,如UIKit框架部分就将一些常用的CoreAnimation动画进行了封装.

  • 基本层级介绍:

    • Cocoa(Application):从名字上也能看出,它是一个应用层,可以快速的构建应用程序界面,响应用户交互事件,管理App的行为事件。
    • Media: 包含播放、录制和编辑视听媒体以及渲染和动画二维和三维图形的专门技术。
    • Core Services: 包含了很多基础的技术服务,从自动引用技术,底层的网络通信,字符处理,数据格式化封装

    • Core OS: 定义了硬件和网络相关的编程接口,以及CPU和GPU高性能运算任务,核心操作系统层实现与应用程序安全相关的功能。如App Sandbox,Code Signing

    • Kernel and Device Drivers: 由Mach内核环境,设备驱动程序,BSD库函数(libSystem)和其他低级组件组成,包括了对文件系统,网络,安全,进程通信,编程语言,设备驱动程序,内核驱动程序,内核扩展的支持

  • 可以创建不同种类的应用

    • Apps: App应用
    • Frameworks and libraries: 动态或者静态库,共享代码
    • Command-line tools and daemons: 命令行工具,和守护进程充当客户端请求服务器的进程
    • App plug-ins and loadable bundles: 开发扩展其他应用的插件,以及包含应用程序的Bundle,并可以在运行时加载代码和资源。
    • System plug-ins: 系统插件,如音频单元、内核扩展、I/O工具包设备驱动程序、首选项窗格、聚光灯导入程序和屏幕保护程序,扩展了系统的功能。
  • 在移植Cocoa-Touch应用程序时,需注意API的相似性和差异性

    • Cocoa和Cocoa-Touch应用所基于的技术栈有很多相似之处,有些系统框架在每个平台中是相同的,如CoreData,AV Foundation,使得一些基本的数据和底层的API功能容易移植
    • 有些变化太大的API则移植起来不太方便,如AppKitUIKit框架所编写的界面.
  • 苹果上层框架基本大都不开源,但底层框架是开源的,可以在Open Source Development Resources找到源代码

创建Mac平台的应用

Mac OS X和Device Driver的主要功能

  • XPC Interprocess Communication and Service: XPC是一种进程通信技术,通过权限分离的机制来补充应用的沙盒机制,根据每个应用程序所需要的系统访问资源将应用程序分成多个部分,这种机制叫做XPC服务.

    • XPC是通过GCD的调度来实现,当创建XPC连接时,其消息将通过与GCD调度队列关联来实现通信。
    • 当应用程序启动时,系统会自动找到它的每个XPC服务注册到应用程序可见的命令空间中,如Location服务,应用程序与它的一个XPC服务建立连接,并向他们发送消息,其中包含服务处理的事件.Creating XPC Services, Daemons and Services Programming Guide.
  • Caching API:

    • libcache API是一个低级的可清除的缓存API。主动缓存是最大化应用程序性能的一项重要技术。但是,当缓存需求超过可用内存时,系统必须根据需要释放内存以处理新的请求
    • 应用程序还可以通过创建缓存来帮助你,操作系统可以根据内存压力的需要优先清除这些缓存。libcache库和foundationframework的NSCache类可以帮助您创建这些可清除的缓存
  • In-Kernel Video Capture: I/O视频提供了一个内核级C++编程接口,用于编写视频捕获设备驱动程序。I/O视频取代了QuickTime序列抓取器API,作为将视频导入OS X的一种方式。

  • Mach: 它是操作系统的核心,提供了系统操作的关键功能,CPU使用率和内存,处理机调度,内存保护,并为本地和远程进程通信提供了以消息为中心的通信基础,它具有以下特点

    • Protected memory: 内存保护,用户空间和系统内核空间区分,通过两种不同的状态(用户态和核心态)保护系统资源
    • Preemptive multitasking: 抢占式多任务处理,合理调度任务,确保系统,应用程序有序高效的运行
    • Advanced virtual memory: 维护虚拟内存的地址映射表,控制任务的虚拟地址到物理地址之间的转换,如应用程序的装入内存后的page管理
    • Real-time support: 保证对时间敏感的媒体应用程序的处理器资源进行低延迟访问
  • Device-Driver Support: Darwin为开发设备驱动程序提供了一个面向对象的框架,称为I/okit框架。这个框架促进了OSX驱动程序的创建,并提供了他们需要的大部分基础设施。写在一个受限的C++子集,并被设计成支持一系列设备系列,I/O套件既模块化又可扩展

  • Network Kernel Extensions: Darwin允许开发者通过创建网络内核扩展(NKEs)向操作系统添加网络功能。NKEs工具允许您创建网络模块甚至整个协议栈,这些模块可以动态加载到内核中并从中卸载。NKEs还可以自动配置协议栈。

  • BSD: 包含了很多POSIX API,高级应用程序也可以使用这些API来实现基本的应用程序功能,BSDOS X文件系统和网络设施的基础,同时也提供了多种编程接口和服务,包括

    • 进程模型: 进程ID,PCB
    • 基本的安全策略: 如文件权限,用户和组ID
    • 线程支持: POSIX线程,TCB
    • 网络支持: BSD Socket
  • IPC and Notification Mechanisms:

    • File System Events: 当系统文件改变后会触发FSEvents
    • Kernel queues and kernel events: 这些机制允许截获内核级事件,以接收有关套接字、进程、文件系统和系统其他方面的更改的通知。内核队列和事件是操作系统FreeBSD层的一部分,在kqueue和kevent手册页中有描述。
    • BSD notifications: 程序可以通过包括Mach端口、信号和文件描述符的机制接收BSD通知。此外,该技术轻量级、高效,并且能够合并通知。
    • Sockets and ports: 套接字的端口通信,套接字表示本地或跨网络的两个进程之间通信通道的一端
    • Streams: 进程之间的数据流,配合Runloop循环去检测进程之间的数据流,并分发给对应的线程进行处理
    • Pipes: 通过一个管道连接父子进程,维持一个固定的缓冲区大小用于发送数据
    • Shared memory: 实现进程的内存共享,所有操作系统都具备的功能,实际开发中跨平台数据访问也常用到这一点,比如Flutter中图片资源的访问和传递.如果能通过共享空间则会大大提高图片解码效率,而不用反复的从磁盘读取
    • Apple Event:

内核的基本架构

  • 下面Kernel environment就是系统内核部分的组成,这里细分为如下几个部分
  • Mach:

    • 非类型的进程间通信(IPC)
    • 远程过程调用(RPC)
    • 对称多道处理的调度程序支持(SMP)
    • 支持实时服务,如流媒体
    • 虚拟内存支持,物理内存到虚拟内存的映射管理
    • 支持寻呼机
    • 模块化体系结构

    • BSD:

      • 文件系统: 文件管理,目录索引
      • 网络: 不包括底层的硬件部分处理,基于套接字的通信
      • UNIX security model:安全策略管理,如用户组权限
      • syscall support: 支持系统调用,提供应用程序接口,它暴露了很多POXIS API
      • 提供BSD进程模型,用于管理进程资源,信号量控制进程访问
      • FreeBSD kernel APIs
      • kernel support for pthreads (POSIX threads)
  • Networking

    • TCP/IP堆栈和套接字API
    • 支持IP和DDP(AppleTalk传输)
    • 报文复用和分用
    • 多播支持
    • 拥塞调整
    • 包过滤
    • Mac OS Classic支持(通过过滤器)

    • I/O Kit

      • 真正的即插即用
      • 动态设备管理
      • 驾驶员动态(“按需”)装载
      • 桌面系统和便携式设备的电源管理
      • 多处理器功能

标签:XPC,Overview,应用程序,BSD,Mac,API,内核,进程,Technology
来源: https://www.cnblogs.com/wwoo/p/mac-technology-overview-yi.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有