Mac OS X Programming读书笔记1 - 系统架构

[Mac OS X] 内核、驱动开发资料汇总 Mac  OS  内核、驱动开发资料汇总 一.官方文档: I/O Kit Fundamentals: https://developer.apple.com/library/mac/#documentation/devicedrivers/conceptual/IOKitFundamentals/index.html I/O Kit Device Driver Design Gu 阅读详情

Chapter 1 System Components and Programming Technologies

1.    Mac OS X Introduction

Mac OS X是Apple最新一代的操作系统,基于UNIX,最显著的特点是有着极其漂亮的界面,称之为Aqua:

2.    Mac OS X Architecture

Mac OS X的架构图:

2.1 User Interface – 用户界面层

1.     Aqua是Mac OS X的用户界面

2.     对于一般用户来说, Mac OS X = Aqua

3.     Aqua界面可以用ResEdit / Interface Builder来创建

2.2 Application Environments – 应用程序环境层

 

2.2.1 Classic

1.     Classic Environment是为了兼容Mac OS X以前的Mac OS 8/9而存在的

2.     Classic Environment并非是Mac OS X模拟器。实际上,Mac OS X运行一个 虚拟机,启动一个基本上未作改变的Mac OS 9。Mac OS X替换了Mac OS 9的硬件抽象层,使之将请求传递给Mac OS X本身执行。

2.2.2 Carbon

1.     Carbon是老版本的Mac OS的Macintosh Toolbox API经过删减增强而来,作者认为Carbon = A enhanced subset of Macintosh Toolbox API。

2.     Carbon API很大程度上和老的Macintosh Toolbox API保持兼容,70%的API的Interface保持不变

3.     同时,为了使用Mac OS X新加的功能,Apple往Carbon中加入了不少新的API

4.     部分情况下,Mac OS X下的使用Carbon API的程序可以不加修改在Mac OS 8/9上面运行

5.     Carbon API所写的老程序移植到Mac OS X会相对容易

6.     Carbon API是为C设计的,并非面向对象。比较类似Windows API。C++也可以使用Carbon,其他的可以调用C函数的语言理论上都可以调用Carbon API

2.2.1 Cocoa

1.     Cocoa是特别为Mac OS X设计的一套面向对象的Framework,因此无法在Mac OS 8/9上面运行

2.     编写Cocoa程序的主要语言是Objective-C和Java,推荐使用Objective-C

2.2.1 Java

1.     Mac OS X支持Java程序的执行,支持最新的JDK和VM

2.     Java也可以用来编写Cocoa程序

2.2.1 BSD

1.     BSD环境用于支持BSD工具和应用程序

2.     Mac OS X支持整套BSD API

2.3 Application Services – 应用程序服务层

 

2.3.1 Quartz & Windows

1.     Quartz实现2D绘图和窗口

2.     Quartz是基于PDF的,因此Quartz支持自动PDF生成

3.     Quartz的大部分不能直接用API访问

4.     Quartz比较类似Windows的User32.dll

2.3.2 Quick Draw

1.     Quick Draw是另外一套支持2D绘图的API

2.     Quick Draw可以直接通过API调用大部分功能

3.     Quick Draw比较类似Windows的GDI/GDI+

2.3.3 OpenGL

Open GL是Mac OS X三维绘图的标准API。应该不用多介绍了吧。

2.3.4 Quick Time

1.     Quick Time用于支持Mac OS X的多媒体功能

2.     Quick Time功能可以通过API调用

2.3.5 Others

1.     Process Manager提供对进程的管理

2.     Event Manager提供对事件的管理

3.     Clipboard提供对剪贴板的访问

2.4 Core Services – 核心服务层

2.4.1 Carbon Managers

1.     大量系统服务以Managers的形式提供

2.     File Manager提供对文件的访问

3.     Text Encoding Conversion Manager提供对文本的操作

4.     Memory Manager Utilities提供对内存的访问

5.     Thread Manager提供对线程的访问

6.     等等

2.4.2 Apple Events

1.     Apple Events是应用程序之间互相通讯

2.     应用程序之间可以互相发送Apple Events,并回复Apple Events

3.     Apple Events的主要用途是供第三方程序使用来操作其他程序,如Apple Script

2.4.3 Open Transport

OpenTransport提供对网络的访问和对协议的支持,如TCP/IP等

2.4.4 Core Foundation

Core Foundation提供对一些非常基本的大部分程序都回用到的服务的支持,如日期操作,字符串操作等。

2.5 Kernel Environment – 内核层

Apple的内核又称为Darwin

2.5.1 Mach

1.     Mach是Mac OS X的核心,是在老的Mach,MkLinux, Mac OS X Server, Next OS等基础上面修改而来的

2.     Mach是微内核架构(Micro-Kernel),而一般的Unix Kernel是monolithic kernel。

3.     负责提供最基本的操作系统服务,如进程调度,IPC,SMP,虚拟内存管理等

4.     Mach调度的单位是线程

2.5.2 BSD

1.     Mac OS X在Mach内核的基础上实现了4.4 BSD内核

2.     Mach有着部分没有实现的基本内核功能,这部分由BSD Kernel来实现,如I/O,文件系统,网络等

2.5.3 Networking

1.     Mac OS X的网络基于4.4 BSD实现

2.     支持TCP/IP协议栈,Sockets等

2.5.4 I/O Kit

I/O Kit是用于编写Driver的一个面向对象的Framework

2.5.5 File System

1.     Mac OS X支持以前的Mac OS所支持的HPS (Hierarchical Filing System Standard), HPS+文件系统

2.     除此之外,Mac OS X还支持UFS(Unix File System), NFS(Network File System), ISO 9660(for CDROM)

 

 
macOS系统及其编程特点 此外,macOS还支持多种编程语言和框架,如Objective-C、Swift、C++和Python等,使得开发人员可以选择最适合自己的工具和语言进行开发。此外,macOS还提供了多层次的安全机制,包括强大的防火墙、加密技术和应用程序沙箱,以确保用户数据和系统的安全。macOS是由苹果公司开发的操作系统,它是基于Unix的,并且是专门为苹果的Macintosh计算机设计的。UNIX基础:macOS是基于UNIX的操作系统,它继承了UNIX的许多优秀特性,如多用户支持、强大的命令行工具和广泛的网络功能。 阅读详情

相关推荐

book:记录自己的学习:开源项目、知识脉络、读书笔记

目录 一、书籍 计算机网络 《图解http》 GC回收 《垃圾回收的算法和实现》 二、其他 Markdown写作 我的互联网付费 与人交流 三、工具 VSCode插件 snipaste 开发环境 git mac 工具 adb ffmpeg: http://naotu.baidu.com/file/59a6fa3446a1b17ae96f1ec62560fa7d?token=cb4ca26ad9b4b980 当前计划 已完成计划 序号 计划名字 当前进度 资源链接 结论 结束时间 1 《谷歌方法论》 2 《垃圾回收的算法和实现》 3 《Objective-C基础教程》 pdf 已购 了解语法,细节和进阶需后续再学习 短期计划(优先级高) 序号 计划名字 当前进度 资源链接 结论 结束时间 1 长期计划(优先级中 书籍课程): 序号 计划名字 当前进度 资源链接 结论 1 《Shader入门

如何查看Mac的处理器架构‌‌是ARM还是x86

如何查看Mac的处理器架构‌‌是ARM还是x86

AI小美好 2万+

Mac OS X系统架构

Mac OS X作为一款先进的操作系统,整合了稳定的内核以及强大的开发技术来帮助您开发顶级的产品。无论您有无Mac平台开发经验,此文都适合所有对苹果平台开发感兴趣的人阅读。

浅谈iPhone OS(iOS)架构

iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设备的操作系统. 1,Core OS:    是用FreeBSD和Mach所改写的Darwin, 是开源、符合POSIX标准的一个Unix核心。这一层包含或者说是提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以及

空杯子 4214

Cocoa.Programming.for.Mac.OS.X.4th.Edition.pdf+源代码.zip

Cocoa.Programming.for.Mac.OS.X.4th.Edition.pdf+源代码.zip 包括书籍 和 书中代码

wsl + vscode 离线配置 ERROR: Faild to download https://update.code.visualstudio.com

很多情况下是没有现成的VS Code Server程序的,需要手动下载。记住上面的Commit ID,可以通过下面的链接下载 vscode-server-linux-x64.tar.gz。然后将vscode-server-linux-x64.tar.gz上传在服务器上的$HOME/.vscode-server/bin文件夹中,解压。在wsl中下载不了 vscode 的核心。运行下面两行命令,建立空的$HOME/.vscode-server/bin文件夹。重新运行 wsl与vs的链接即可。

点云算法工程师 3790

什么是Cocoa?

在Mac OS X操作系统上,Cocoa和Carbon及Java一样,是一种应用程序环境。它由一组面向对象的软件库和一个运行环境组成,它的集成开发环境和其它应用程序环境相同。 本章将在这个定义的基础上进行扩展,描述Cocoa的目标、能力、和物理形式。作为一个开发者,阅读这个功能描述是理解Cocoa的第一步。 本部分包含如下内容: Cocoa的环境Cocoa应用程序的特性开发环境Co...

a2614555的博客 1345

极速建站!用1Panel面板一键部署Halo博客的保姆级教程 | 企业官网/个人博客搭建教程

个人博客是一种在互联网上发布自己的文章、图片、视频等内容的平台,通常以文字为主要形式,但也可以包含其他媒体。个人博客的用途非常广泛。它可以用来记录博主的日常生活、分享自己的知识和经验、展示自己的作品和技能,以及交流自己的观点和看法。通过个人博客,博主可以与读者建立联系,分享自己的见解和体验,同时也可以从读者那里获得反馈和建议。

zeruns的博客 1832

Mac OS X Programming读书笔记3 - 事件处理

Chapter 3 Events and the Carbon Event Manager1 EventsCarbon Event Manager所支持的事件有两个属性:1.     Event Class,表示事件的类别,如鼠标消息:kEventClassMouse2.     Event Kind,事件的具体类型,如鼠标按键按下消息:kEventMouseDownkEven

张羿的优快云专栏 3954

【深度学习3】ubuntu22.04从零开始搭建深度学习环境

ubuntu22.04从零开始搭建深度学习开发环境

weixin_43387635的博客 1万+

从BUCK-BOOST到反激:一个‘拆电感’的视角,轻松理解多路输出交叉调整

本文从BUCK-BOOST电路到反激变换器的演变入手,通过‘拆解电感’的独特视角解析多路输出交叉调整机制。深入探讨了反激电路的能量暂存方式、传递路径变化及电压关系,并结合具体参数对比揭示其特性。针对多路输出中的电压平衡问题,提供了绕组排布优化、元器件选型等实战技巧,帮助工程师有效提升电源系统的稳定性与效率。

weixin_33738578的博客 437

Mac OS X Programming读书笔记2 - HelloWorld

2007年03月01日 23:50:00 Chapter 2 Overview of Mac OS X Programming1 Programming Environments1. Metrowerks CodeWarrior,Metrowerks开发的IDE,跨平台,支持多种语言,如C,C++,Object Pascal,Java,Objective-C2. Proj

秦梦瑶的专栏 626

Python实战:动态爬取国家地表水水质实时监测数据(附最新代码解析)

本文详细介绍了使用Python动态爬取国家地表水水质实时监测数据的实战方法。针对动态网站数据加载特点,重点解析了如何利用Selenium模拟浏览器操作、结合BeautifulSoup解析数据,并提供了最新的代码实现与常见问题解决方案,帮助开发者高效获取环境监测数据。

app77的博客 280

Mac OS X Programming读书笔记5 - Controls

Chapter 5 Controls1 Command Signatures and Control IDs1.     可以将Command和Control联系起来,但是当你收到事件的时候,你并不知道当时是哪个Control被按下了。事实上,你也不需要关心,因为Command本来被设计成代表命令,至于是点击Button还是选择菜单都没有关系2.     当你需要知道Control究竟

张羿的优快云专栏 2197

YOLOv8缺陷检测可视化界面实战:PyQt5布局设计与代码实现

本文详细介绍了如何利用PyQt5为YOLOv8缺陷检测模型构建一个专业、易用的可视化界面。通过实战讲解PyQt5的布局管理器设计、信号槽机制与YOLOv8核心的集成,帮助开发者快速将AI模型部署为直观的桌面应用,提升工业质检等场景的落地效率。

redis7keeper的博客 758

让 ABAP BAPI_COSTACTPLN_POSTPRIMCOST 不再沉默:一套可落地的参数一致性校验与排错打法

SAP BAPI_COSTACTPLN_POSTPRIMCOST 沉默失败分析与解决方案 问题现象 使用 BAPI_COSTACTPLN_POSTPRIMCOST 上传计划数据时,接口执行不报错但数据未写入 COSP 等计划表,呈现"沉默失败"现象。 根本原因 索引关联断裂:INDEXSTRUCTURE 中 OBJECT_INDEX 和 VALUE_INDEX 未正确关联 COOBJECT 和 PERVALUE/TOTVALUE 表的数据 对象定义冲突:COOBJECT 中同一行填写了多

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 110

MAC OS X Programming 系统架构

转自:http://blog.youkuaiyun.com/atfield/archive/2007/03/01/1518651.aspxChapter 1 System Components and Programming Technologies1.    Mac OS X IntroductionMac OS X是Apple最新一代的操作系统,基于UNIX,最显著的特点是有着极其漂亮的界面,

1282

Python爬虫实战:携程旅游平台数据爬取(酒店+机票+景点),破解加密与反爬(附完整代码)

携程的反爬机制再复杂,核心逻辑都是“识别非真实用户的请求”,而爬虫的核心就是“让请求看起来像真实用户的行为”。本文的方案从登录态处理、参数加密破解、动态数据抓取,到反爬应对,都是围绕“模拟真实”展开:用Playwright模拟真实浏览器登录,用住宅代理模拟真实用户IP,用随机延迟模拟真实用户的操作频率。掌握了这个核心思路,无论平台的反爬如何升级,都能找到应对方法。当然,爬虫技术是一把双刃剑,合理使用才能发挥其价值。如果你的爬虫项目中遇到了携程的反爬问题,不妨按照本文的步骤试试,大概率能解决问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2607

Mac OS X Programming

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.youkuaiyun.com/topmvp - topmvpMac OS X Programming assumes nothing on the part of its reader, other than common sense and an interest in le

TopMVP 450

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Mac OS X Programming读书笔记4 - Windows

Chapter 4 Windows1 Window Update1.     可以调用ShowWindow和HideWindow来显示/隐藏窗口。2.     DrawString作用是在当前Graphics Pen位置显示字符串3.     MoveTo移动当前Graphics PenWindow绘图的时候发送Update事件:

张羿的优快云专栏 2627

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 如何在程序启动的时候自动挂接Debugger
下一篇: Mac OS X Programming读书笔记2 - HelloWorld
ATField
博客等级 码龄25年 673粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值