Loading... # macOS 系统精简可行性分析:DAS-CTS 调度机制与 SSV 限制 # 一、问题背景 ## 1. 现象描述 打开活动监视器(Activity Monitor),即使 Mac 处于空闲状态,也会看到数百个进程在运行。在最小化服务的虚拟机中,至少有 500 个进程;而在原生 Mac 的标准设置下,即使没有打开任何应用,进程数量也可能超过 700 个。 ## 2. 用户疑问 其中许多进程如 WindowServer 显然是系统必需的,但是否有可能禁用那些不必要的进程?这是作者经常被问到的问题,本文将尝试给出答案。 ## 3. 研究挑战 ### A. 识别难度 - 需要了解每个进程的功能 - 理解进程之间的相互关系 - 即使是 Apple 内部可能也没有人完全了解所有进程 ### B. 工作量评估 - 假设需要研究 500 个候选进程 - 每个进程平均需要 1 周时间研究 - 总计需要超过 10 人年 - 研究完成时系统可能已发生变化 # 二、案例研究:Time Machine 进程 ## 1. 选择理由 ### A. 易于识别 Time Machine 备份进程是众所周知的进程组,作者自 macOS Sierra 以来一直在研究它们。 ### B. 可移除性 许多用户不使用 Time Machine,而是使用其他备份方案,因此有充分的理由想要移除 backupd 及相关进程。 ### C. 独立性强 虽然 Time Machine 进程依赖其他进程才能运行,但作者不知道有其他子系统依赖 Time Machine,因此它可能具有可处置性。 ## 2. 进程观察 ### A. 进程存在性 在 macOS 26.2 的基础虚拟机中,即使从未启用过 Time Machine,活动监视器中仍会显示其进程。 ### B. 资源占用 即使 Time Machine 完全禁用,backupd 和 backupd-helper 仍会占用少量 CPU。 同时也会占用少量内存,总计约 5.1 MB。虽然单个进程占用不多,但累积到 500 个进程时就变得值得关注。 ## 3. 进程控制机制 ### A. LaunchDaemons 配置 这两个进程由 /System/Library/LaunchDaemons 中的 LaunchDaemons 控制,对应的属性列表文件为: - com.apple.backupd-helper.plist - com.apple.backupd.plist ### B. SSV 限制 这些文件位于签名系统卷(Signed System Volume,SSV)中,这意味着我们无法以任何方式更改它们。 同样的限制适用于其他 417 个 LaunchDaemons 和 460 个 LaunchAgents,它们占据了活动监视器列出的大部分进程。 ### C. 历史对比 在 SSV 出现之前,可以通过编辑属性列表来阻止进程启动。但在现代 macOS 中,这已不再可能。 # 三、进程调度机制:DAS-CTS ## 1. 调度架构演进 ### A. 早期方式(macOS Sierra 之前) Time Machine 备份由 launchd 作为定时事件运行。 ### B. 现代方式(macOS Sierra 及之后) 备份的调度和分发由以下两个系统共同完成: - Duet Activity Scheduler(DAS) - Centralised Task Scheduling(CTS) 它们使用轻量级进程间通信(XPC)进行协调。 ## 2. DAS-CTS 工作原理 ```mermaid graph TB subgraph DAS A[Duet Activity Scheduler] A --> B[管理活动列表] B --> C[com.apple.backupd-auto] A --> D[决策调度] end subgraph CTS E[Centralised Task Scheduling] E --> F[XPC 通信] F --> G[进程分发] end D -->|XPC 请求| F F -->|启动| H[backupd-auto] H -->|完成反馈| E E -->|重新调度| A style A fill:#f9f,stroke:#333,stroke-width:2px style E fill:#9ff,stroke:#333,stroke-width:2px style H fill:#ff9,stroke:#333,stroke-width:2px ```  ### A. DAS 职责 - 管理庞大的活动列表,包括 com.apple.backupd-auto - 决定何时将其分发到 CTS 运行 - 系统启动后的前 5 分钟不会调度,以允许其他进程先运行 ### B. CTS 职责 - 通过 XPC 接收 DAS 的调度指令 - 实际启动和管理进程执行 - 处理进程完成后的状态反馈 ## 3. 调度日志分析 ### A. DAS 决策阶段 ``` 38.738 DAS 0:com.apple.backupd-auto:2052A3, Decision: CP Score: 0.949374 38.738 DAS '0:com.apple.backupd-auto:2052A3' CurrentScore: 0.949374, ThresholdScore: 0.068531 DecisionToRun:1 38.762 DAS REQUESTING START: 0:com.apple.backupd-auto:2052A3 ``` ### B. CTS 分发阶段 ``` 38.762 CTS-XPC DAS told us to run com.apple.backupd-auto (0xb671bcc80) 38.844 CTS-XPC Initiating: com.apple.backupd-auto (0xb671bcc80) 38.846 CTS-XPC _xpc_activity_dispatch: beginning dispatch, activity name com.apple.backupd-auto, seqno 0 38.846 CTS-XPC _xpc_activity_begin_running: com.apple.backupd-auto (0x7a9014280) seqno: 0. 38.878 CTS-XPC Running (PID 537): com.apple.backupd-auto (0xb671bcc80) 38.879 DAS STARTING <_DASActivity: "0:com.apple.backupd-auto:2052A3", Utility, 60s, [1/19/26, 8:50:43 PM - 1/19/26, 9:10:43 PM], Started at 1/19/26, 9:10:38 PM, Group: com.apple.dasd.default, PID: 537> ``` ### C. Time Machine 响应 由于在禁用 Time Machine 的虚拟机中运行: ``` 38.879 Time Machine Skipping scheduled Time Machine backup: Automatic backups disabled ``` ### D. 完成反馈 ``` 38.879 CTS-XPC _xpc_activity_set_state: send new state to CTS: com.apple.backupd-auto (0x7a9014280), 5 38.880 CTS-XPC Completed: com.apple.backupd-auto (0xb671bcc80) ``` ### E. 重新调度 ``` 38.881 CTS-XPC Rescheduling: com.apple.backupd-auto (0xb671bcc80) 38.881 DAS SUBMITTING: 0:com.apple.backupd-auto:B293AE 38.882 DAS Submitted: 0:com.apple.backupd-auto:B293AE at priority 30 with interval 1800 (Mon Jan 19 21:25:38 2026 - Mon Jan 19 21:40:43 2026) ``` ## 4. 调度频率分析 即使 Time Machine 被禁用,DAS-CTS 仍会以大约 1 小时的间隔继续调度自动运行。 整个调度序列在 0.144 秒内完成,使用轻量级进程间通信,资源占用可忽略不计,且仅每小时重复一次。 # 四、系统架构限制 ## 1. SSV(签名系统卷) ### A. 不可修改性 - 所有 LaunchDaemons 和 LaunchAgents 配置文件位于 SSV 中 - 用户无法编辑或修改这些配置 - 无法通过传统方式禁用系统进程 ### B. 安全设计 SSV 是 Apple 的安全设计,防止恶意软件修改系统文件,但也限制了用户对系统的控制能力。 ## 2. DAS-CTS 隔离性 ### A. 用户控制隔离 DAS-CTS 系统与所有用户控制隔离,这意味着用户无法通过系统设置或命令行工具来: - 阻止进程调度 - 修改调度频率 - 禁用特定活动 ### B. 资源占用特点 虽然频繁调度,但: - 使用轻量级 XPC 通信 - 单次执行时间极短(0.144 秒) - 资源占用可忽略不计 ## 3. 系统设计理念 ```mermaid graph LR subgraph 用户层 A[系统设置] B[命令行工具] end subgraph 控制层 C[launchd] D[用户可控配置] end subgraph 保护层 E[SSV 签名系统卷] F[DAS-CTS 调度系统] end subgraph 执行层 G[系统进程] H[后台守护进程] end A -->|可控制| D B -->|可控制| D D --> C C --> G E -->|保护| F F -->|自动调度| H style E fill:#f99,stroke:#333,stroke-width:3px style F fill:#f99,stroke:#333,stroke-width:3px ```  ### A. 设计哲学 macOS 从来就不是传统的 Unix 系统,而是一个: - 闭源的专有操作系统 - 为数百万消费者和普通用户设计 - 通过系统设置暴露控制,而非配置文件或属性列表 ### B. 历史对比 经典 Mac OS 更加模块化,用户可以选择性安装组件,如 Mac OS 9.1 所示。 但在 SSV 时代,选择从一开始就更加有限,真正的选择仅限于: - AI 功能使用的 cryptexes - x86 代码翻译器 Rosetta 2(后者是临时的,可能在明年移除) ## 4. Unix 认证争议 ### A. 技术合规性 macOS 通过了 Open Group 的 Unix 认证,但这仅意味着技术合规性。 ### B. 实际使用差异 管理与 macOS 相比,熟悉 HP-UX 或 AIX 的管理员在面对 macOS Tahoe 时会像鱼离水一样不适应。 ### C. 准确定义 更准确的描述是:macOS 是「基于 Unix」的操作系统,就像它也是「基于 NeXTSTEP」、「基于 Mach」和「基于经典 Mac OS」的。但它既不是 NeXTSTEP、Mach,也不是经典 Mac OS。 # 五、精简可行性结论 ## 1. 技术障碍 ### A. SSV 限制 签名系统卷阻止用户修改系统进程配置,这是最主要的障碍。 ### B. DAS-CTS 隔离 集中式任务调度系统与用户控制完全隔离,无法干预其调度行为。 ### C. 进程复杂性 - 500+ 进程需要逐一研究 - 进程间相互关系复杂 - 系统持续更新变化 ## 2. 实际影响分析 ### A. 资源占用 虽然后台进程众多,但: - 大多数在 Apple silicon Mac 上运行在能效核(E cores)上 - 使用轻量级通信机制 - 单个进程资源占用极小 ### B. 用户感知 对普通用户而言,这些后台进程: - 不会影响系统响应速度 - 不会显著影响电池续航 - 系统会自动管理核心频率和资源分配 ## 3. 社区尝试 ### A. 第三方方案 有用户创建了如「Tahoe Disenshittify」之类的脚本,试图禁用大量 macOS 功能和后台守护进程。 ### B. 副作用警告 这类脚本会: - 破坏 iCloud/桌面和文档同步 - 降级 Spotlight 搜索 - 部分或完全禁用 App Store/iCloud/Push/Continuity 功能 ### C. 作者观点 如果用户需要禁用这么多系统功能,应该考虑使用其他操作系统。 ## 4. 最终结论 无论喜欢与否,现代 macOS 的设计和实现都没有给用户太多选择来控制其运行的进程。架构特性包括: - 签名系统卷(SSV) - DAS-CTS 调度系统 这些特性阻止用户将系统进程削减到任何显著程度。 ### A. 现实建议 对于希望精简系统的用户: 1. 购买尽可能多的统一内存,这是最实用的解决方案 2. 如果需要更多控制,考虑使用其他操作系统 3. 接受 macOS 的设计理念,专注于使用而非定制 ### B. 未来展望 随着 Rosetta 2 可能明年移除,以及 Apple 对服务器导向芯片的开发,可能会有更多变化,但 SSV 和 DAS-CTS 的核心架构不太可能改变。 *** ## 参考资料 1. [Can you slim macOS down? - The Eclectic Light Company](https://eclecticlight.co/2026/01/21/can-you-slim-macos-down/) 2. [Watch your background background activities with DAS & CTS](https://eclecticlight.co/2025/01/29/watch-your-background-background-activities-with-das-cts/) 最后修改:2026 年 01 月 22 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏