XNU
| 파일:The XNU Kernel Graphic.svg XNU 커널 | |
| 개발자 | 애플 |
|---|---|
| 저장소 |
|
| 엔진 | |
| 운영 체제 | 다윈, iOS & 맥 OS X |
| 종류 | 커널 |
| 라이선스 | 애플 공공 소스 라이선스 2.0 |
| 웹사이트 | opensource.apple.com/source/xnu |
XNU는 맥 OS X 운영 체제에 사용할 목적으로 애플이 인수하고 개발한 컴퓨터 운영 체제 커널이다. 다윈 운영 체제의 일부로서 자유 및 오픈 소스 소프트웨어로 공개되었다. XNU는 X is Not Unix(X는 유닉스가 아니다)를 가리킨다.[1]
원래 NeXT가 NeXTSTEP 운영 체제에 사용할 목적으로 개발된 XNU는 카네기 멜론 대학교가 4.3BSD의 구성요소를 포함하여 개발한 마하 커널의 버전 2.5와, 드라이버 키트(Driver Kit)라는 이름의 객체 지향 API를 합친 하이브리드 커널이다.
애플이 NeXT를 인수한 뒤 마하 구성 요소는 3.0으로 업그레이드되었으며 BSD 구성 요소들은 FreeBSD 프로젝트의 코드 업그레이드와 더불어 업그레이드되었고 드라이버 키트는 입출력 키트로 불리는 드라이버를 기록하기 위해 C++ API로 대체되었다.
커널 디자인
XNU는 하이브리드 커널로, 모놀리식 커널과 마이크로 커널의 특징을 모두 갖고 있다.
Mach
XNU 커널의 기본인 Mach는 간단한 마이크로 커널이다. 그렇기 때문에 OS의 코어 부분을 분리된 프로세스에서 실행할 수 있고, 높은 유연성을 보인다(Mach 코어 상에서 여러 OS를 병렬로 실행할 수 있다). 그러나 커널 모드와 유저모드의 전환과 마이크로커널과 서비스 데몬의 주소 공간 사이의 맵핑과 복사때문에 오버헤드가 발생해, 퍼포먼스가 저하될 수 있다. macOS의 디자이너들은 속도를 올리기 위해 BSD의 기능을 마하 커널에 집어넣었다. 그 결과 마하 커널과 클래식 BSD 커널의 몇몇 장단점을 모두 가지게 되었다.
BSD
커널의 BSD 부분은 POSIX API과 마하 커널 위에서의 유닉스 프로세스 모델, 보안 규칙, 사용자와 그룹id, 권한, 네트워크 프로토콜, 가상 파일 시스템(저널링 단에 독립적인 파일시스템도 포함), HFS/HFS+, 네트워크 파일 시스템 클라이언트와 서버, 암호 프레임워크, 유닉스 시스템 V 프로세스 간 통신(IPC), 유닉스 audit 시스템, 필수 접근 관리 등을 제공한다.[2] XNU의 BSD 코드는 FreeBSD 커널에서 가져왔다. 많은 부분이 상당히 바뀌었지만 애플과 FreeBSD 프로젝트 사이에서의 코드 공유는 계속 일어나고 있다.[3]
K32/K64
맥 OS X 10.6 스노 레퍼드(다윈 버전 10) 이후 버전에 들어간 XNU의 경우 32비트의 K32와 64비트의 K64로 나뉜다.[4] K32는 64비트 애플리케이션을 사용자 공간에서 구동할 수 있다. 맥 OS X 10.6에서 추가된 것은 XNU를 64비트 커널 공간에서 구동할 수 있게 된 것이다. K64는 K32와 비교해서 많은 장점을 갖는다.[5]
- 32GB 이상의 램을 관리할 수 있다.
- 캐시 버퍼 사이즈가 32비트 커널이 허용하는 것보다 큰 사이즈를 가질 수 있어 I/O 성능을 향상시킬 수 있다.
- 높은 성능의 네트워크 기기나 여러 GPU를 사용할 때의 성능이 증가한다. 이는 주변기기들이 아주 큰 직접 메모리 접근 버퍼를 가진다 해도 커널이 모두 64비트 공간에 할당할 수 있기 때문이다.
같이 보기
각주
- ↑ “Porting UNIX/Linux Applications to Mac OS X: Glossary”. Apple Computer. 2005. 2012년 8월 13일에 원본 문서에서 보존된 문서. 2016년 4월 20일에 확인함.
- ↑ Watson, Robert (2008년 8월 2일). “Re: freebsd-advocacy Digest, Vol 248, Issue 1” (메일링 리스트). 《freebsd-advocacy》. 2013년 10월 24일에 확인함.
- ↑ “FreeBSD Quarterly Status Report (Grand Central Dispatch - FreeBSD port)”. April 2009. 2013년 10월 24일에 확인함.
- ↑ Mac OS X 10.6 Snow Leopard: the Ars Technica review, page 5
- ↑ What's New in Mac OS X: Mac OS X v10.6
외부 링크
- 스크립트 오류가 있는 문서
- 잘못된 파일 링크가 포함된 문서
- 웹아카이브 틀 웨이백 링크
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 모놀리식 커널
- MacOS