Darwin
개요
Darwin은 Apple Inc.가 개발한 오픈소스 Unix 계열 운영체제 커널 및 기반 시스템이다. macOS, iOS, iPadOS, tvOS, watchOS의 핵심 구성 요소로 사용된다. Darwin은 NeXTSTEP과 BSD 계열 기술, 그리고 Mach 마이크로커널을 결합한 하이브리드 Unix 운영체제이다.
Darwin은 2000년에 Apple이 NeXT 인수 이후 개발한 통합 OS 플랫폼의 기반으로 등장했다. Mach 커널(NeXTSTEP에서 사용된 것)을 기반으로 하고, FreeBSD 및 NetBSD의 소스 코드를 통합하여 POSIX 호환성과 고급 I/O, 네트워킹 기능을 갖춘 하이브리드 아키텍처를 구현했다.
Darwin은 오픈소스로 공개되어 있으며, 그 위에 Aqua 그래픽 환경과 Cocoa/Carbon API가 결합되어 macOS 및 iOS 제품군이 완성된다.
역사
- 1989년 – NeXTSTEP 개발 (Mach 2.5 + BSD 4.3 기반)
- 1996년 – Apple이 NeXT 인수, 차세대 OS 프로젝트 시작
- 2000년 – Darwin 1.0 발표 (오픈소스 공개)
- 2001년 – Mac OS X 10.0 (Cheetah) 출시 – Darwin 1.3 기반
- 2003년 – Darwin 7.0 – Mac OS X 10.3 Panther 기반
- 2007년 – Darwin 9.x – iPhone OS (iOS의 전신) 기반
- 2015년 – Darwin 15.x – macOS 10.11 El Capitan
- 2021년 – Darwin 21.x – macOS Monterey, iOS 15
- 2024년 – Darwin 24.x – macOS Sequoia, iOS 18
기술적 구조
Darwin은 하이브리드 커널 구조를 가진 Unix 기반 OS로, Mach 마이크로커널과 BSD 계층을 결합해 높은 안정성과 이식성을 제공한다.
| 계층 | 주요 구성 요소 | 설명 |
|---|---|---|
| Mach 계층 | Mach 3.0 Kernel | 프로세스 스케줄링, 메모리, IPC 관리 |
| BSD 계층 | FreeBSD/NetBSD 기반 코드 | POSIX 호환 API, 네트워크, 파일 시스템 |
| I/O Kit 계층 | IOKit Framework | C++ 기반 장치 드라이버 아키텍처 |
| 사용자 계층 | Core OS, Launchd, Frameworks | 사용자 공간 서비스 및 런처 |
커널 구조
Darwin의 커널은 공식적으로 XNU(“X is Not Unix”)라 불리며, Mach과 BSD를 통합한 하이브리드 구조를 갖는다.
| 구성 요소 | 설명 |
|---|---|
| Mach | 스케줄링, 메모리, IPC, 메시지 기반 커널 |
| BSD Layer | 파일 시스템, 소켓, 프로세스, 신호 처리 |
| I/O Kit | 객체지향 C++ 드라이버 프레임워크 |
| Libkern | 커널 공용 라이브러리 계층 |
| DriverKit | 사용자 공간 드라이버 개발용 프레임워크 (macOS Catalina 이후) |
파일 시스템
Darwin은 기본적으로 APFS를 사용하며, 이전에는 HFS+를 사용했다. 또한 UFS, exFAT, NTFS (읽기 전용), FAT32 등을 지원한다.
- APFS (Apple File System) – 2017년 이후 기본 파일 시스템
- 스냅샷, 암호화, 복제(clone) 기능 지원
- SSD 성능 최적화 구조
- HFS+ – macOS 10.12 이하 버전 기본 FS
네트워크
- BSD 소켓 기반 네트워크 스택
- IPv4, IPv6, IPsec, Wi-Fi, Bluetooth, USB, Thunderbolt 지원
- mDNSResponder(Bonjour) – 제로컨피그 네트워킹 구현
개발 및 빌드 시스템
Darwin은 Apple Open Source를 통해 부분적으로 공개되어 있으며, LLVM, Clang, XNU, libdispatch, launchd 등의 컴포넌트가 포함된다.
- 빌드 툴체인: Xcode, Clang/LLVM
- 스크립트 언어 지원: Bash, zsh, Python, Perl
- API: POSIX, Core Foundation, IOKit
Darwin과 macOS의 관계
Darwin은 macOS의 핵심 구성요소이지만, macOS의 GUI, 프레임워크(Aqua, Cocoa 등)는 비공개 상용 구성이다.
| 항목 | Darwin | macOS |
|---|---|---|
| 커널 | XNU (Mach + BSD) | XNU (동일) |
| 파일 시스템 | APFS | APFS |
| 그래픽 환경 | 없음 (CLI 중심) | Aqua (GUI), Metal, Quartz |
| API 계층 | POSIX, IOKit, Core OS | Cocoa, Carbon, Core Foundation |
| 라이선스 | APSL (Apple Public Source License) | 상용 (폐쇄형) |
Darwin 버전 대응
| Darwin 버전 | 대응 OS | 출시 연도 |
|---|---|---|
| 1.x | Mac OS X 10.0–10.1 | 2001 |
| 5.x | Mac OS X 10.1 Puma | 2001 |
| 7.x | Mac OS X 10.3 Panther | 2003 |
| 9.x | Mac OS X 10.5 Leopard / iPhone OS 1 | 2007 |
| 13.x | OS X 10.9 Mavericks / iOS 7 | 2013 |
| 17.x | macOS 10.13 High Sierra / iOS 11 | 2017 |
| 21.x | macOS 12 Monterey / iOS 15 | 2021 |
| 24.x | macOS 15 Sequoia / iOS 18 | 2024 |
보안
Darwin은 macOS와 동일한 고급 보안 구조를 공유한다.
- Sandboxing – 앱 권한 격리
- Code Signing – 서명된 코드만 실행
- System Integrity Protection (SIP) – 루트 권한 보호
- Gatekeeper – 서명되지 않은 앱 차단
- TCC (Transparency, Consent, Control) – 사용자 데이터 접근 제어
라이선스
Darwin의 공개 소스 코드는 APSL(Apple Public Source License)로 배포된다. 이는 오픈소스이지만, 수정 배포 시 Apple에 알림을 요구하는 약간의 제한이 있다. FreeBSD 및 Mach 코드의 일부는 BSD 라이선스로 유지된다.
| 구성 요소 | 라이선스 |
|---|---|
| XNU Kernel | APSL + BSD |
| IOKit, Libkern | APSL |
| BSD Layer | BSD 2-Clause |
| Mach Layer | Carnegie Mellon University License |
파생 및 활용
- macOS – 데스크톱 OS
- iOS – 모바일 OS
- tvOS – Apple TV용
- watchOS – 웨어러블용
- bridgeOS – T2 칩용 보조 OS
- audioOS – HomePod 내장 OS
영향
- FreeBSD 및 Mach 기반 하이브리드 아키텍처 확립
- macOS와 iOS의 기술적 근간 제공
- LLVM, Clang, launchd, libdispatch 등 핵심 기술 발전
- XNU 커널의 구조는 Linux 및 QNX 연구에도 참고됨
같이 보기
참고 문헌
- Apple Open Source – opensource.apple.com/source/xnu/
- “Inside Mac OS X: System Overview”, Apple Developer Documentation, 2001
- Amit Singh, “Mac OS X Internals: A Systems Approach”, Addison-Wesley, 2006
- “Darwin: The Core of macOS and iOS”, Ars Technica, 2019
- “The Evolution of XNU”, ACM Queue, 2022