{{위키데이터 속성 추적}}
{{소프트웨어 정보
| name = XNU 커널
| logo =
| screenshot = The XNU Kernel Graphic.svg
| caption = XNU 커널
| developer = [[애플]]
| latest_release_version =
| latest_release_date =
| operating_system = [[다윈 (운영 체제)|다윈]], [[iOS]] & [[맥 OS X]]
| genre = [[커널 (컴퓨팅)|커널]]
| kernel_type = [[하이브리드 커널|하이브리드]]
| license = [[애플 공공 소스 라이선스]] 2.0
| working_state = 생산 / 개발 중
| website = [http://www.opensource.apple.com/source/xnu/ opensource.apple.com/source/xnu]
}}
'''XNU'''는 [[맥 OS X]] [[운영 체제]]에 사용할 목적으로 [[애플]]이 인수하고 개발한 컴퓨터 [[운영 체제]] [[커널 (컴퓨팅)|커널]]이다. [[다윈 (운영 체제)|다윈]] 운영 체제의 일부로서 [[자유 및 오픈 소스 소프트웨어]]로 공개되었다. XNU는 ''X is Not [[유닉스|Unix]]''(X는 유닉스가 아니다)를 가리킨다.<ref>{{웹 인용 | year=2005 | url=http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/glossary/glossary.html#//apple_ref/doc/uid/TP40002859-DontLinkElementID_28 | title=Porting UNIX/Linux Applications to Mac OS X: Glossary | publisher=Apple Computer | accessdate=2016-04-20 | 보존url=https://www.webcitation.org/69tH6UvBx?url=https://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/glossary/glossary.html#//apple_ref/doc/uid/TP40002859-DontLinkElementID_28 | 보존날짜=2012-08-13 | url-status=dead }}</ref>

원래 [[NeXT]]가 [[NeXTSTEP]] 운영 체제에 사용할 목적으로 개발된 XNU는 [[카네기 멜론 대학교]]가 [[BSD|4.3BSD]]의 구성요소를 포함하여 개발한 [[마하 (커널)|마하 커널]]의 버전 2.5와, 드라이버 키트(Driver Kit)라는 이름의 객체 지향 API를 합친 [[하이브리드 커널]]이다.

애플이 NeXT를 인수한 뒤 마하 구성 요소는 3.0으로 업그레이드되었으며 BSD 구성 요소들은 [[FreeBSD]] 프로젝트의 코드 업그레이드와 더불어 업그레이드되었고 드라이버 키트는 [[입출력 키트]]로 불리는 드라이버를 기록하기 위해 [[C++]] API로 대체되었다.

==커널 디자인==
XNU는 [[하이브리드 커널]]로, [[모놀리식 커널]]과 [[마이크로 커널]]의 특징을 모두 갖고 있다.

===Mach===
XNU 커널의 기본인 [[Mach (커널)|Mach]]는 간단한 마이크로 커널이다. 그렇기 때문에 OS의 코어 부분을 분리된 프로세스에서 실행할 수 있고, 높은 유연성을 보인다(Mach 코어 상에서 여러 OS를 병렬로 실행할 수 있다). 그러나 커널 모드와 유저모드의 전환과 마이크로커널과 서비스 데몬의 주소 공간 사이의 맵핑과 복사때문에 오버헤드가 발생해, 퍼포먼스가 저하될 수 있다. macOS의 디자이너들은 속도를 올리기 위해 [[BSD]]의 기능을 마하 커널에 집어넣었다. 그 결과 마하 커널과 클래식 BSD 커널의 몇몇 장단점을 모두 가지게 되었다.

===BSD===
커널의 [[BSD]] 부분은 [[POSIX]] [[API]]과 마하 커널 위에서의 [[유닉스]] 프로세스 모델, 보안 규칙, 사용자와 그룹id, 권한, [[네트워크 프로토콜]], [[가상 파일 시스템]](저널링 단에 독립적인 파일시스템도 포함), [[HFS]]/[[HFS 플러스|HFS+]], [[네트워크 파일 시스템]] 클라이언트와 서버, 암호 프레임워크, [[유닉스 시스템 V]] [[프로세스 간 통신]](IPC), 유닉스 audit 시스템, 필수 접근 관리 등을 제공한다.<ref>{{메일링 인용|url=http://lists.freebsd.org/pipermail/freebsd-advocacy/2008-August/003674.html|title=Re: freebsd-advocacy Digest, Vol 248, Issue 1|last=Watson|first=Robert|authorlink=Robert Watson (computer scientist)|mailinglist=freebsd-advocacy|date=August 2, 2008|accessdate=October 24, 2013}}</ref> XNU의 BSD 코드는 [[FreeBSD]] 커널에서 가져왔다. 많은 부분이 상당히 바뀌었지만 애플과 FreeBSD 프로젝트 사이에서의 코드 공유는 계속 일어나고 있다.<ref>{{웹 인용|url=http://www.freebsd.org/news/status/report-2009-04-2009-09.html#Grand-Central-Dispatch---FreeBSD-port|title=FreeBSD Quarterly Status Report (Grand Central Dispatch - FreeBSD port)|date=April 2009|accessdate=October 24, 2013}}</ref>

===K32/K64===
[[맥 OS X 10.6|맥 OS X 10.6 스노 레퍼드]]([[다윈 (운영 체제)|다윈]] 버전 10) 이후 버전에 들어간 XNU의 경우 [[32비트]]의 K32와 [[64비트]]의 K64로 나뉜다.<ref>[http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/5 Mac OS X 10.6 Snow Leopard: the Ars Technica review, page 5]</ref> K32는 64비트 애플리케이션을 [[사용자 공간]]에서 구동할 수 있다. 맥 OS X 10.6에서 추가된 것은 XNU를 64비트 [[사용자 공간|커널 공간]]에서 구동할 수 있게 된 것이다. K64는 K32와 비교해서 많은 장점을 갖는다.<ref>[http://developer.apple.com/mac/library/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html What's New in Mac OS X: Mac OS X v10.6]</ref>
* 32GB 이상의 램을 관리할 수 있다.
* 캐시 버퍼 사이즈가 32비트 커널이 허용하는 것보다 큰 사이즈를 가질 수 있어 I/O 성능을 향상시킬 수 있다.
* 높은 성능의 네트워크 기기나 여러 [[GPU]]를 사용할 때의 성능이 증가한다. 이는 주변기기들이 아주 큰 [[직접 메모리 접근]] 버퍼를 가진다 해도 커널이 모두 64비트 공간에 할당할 수 있기 때문이다.

== 같이 보기 ==
* [[커널 (컴퓨팅)]]
* [[A/UX]]
* [[MkLinux]]
* [[다윈 (운영 체제)]]
* [[MacOS]]
== 각주 ==
<references />

== 외부 링크 ==
* [http://osxbook.com/book/bonus/ancient/whatismacosx/arch_xnu.html XNU: 커널] {{웨이백|url=http://osxbook.com/book/bonus/ancient/whatismacosx/arch_xnu.html |date=20190419152142 }} - XNU 구성요소 개요

{{OS X}}

{{기본정렬:Xnu}}

[[분류:모놀리식 커널]]
[[분류:MacOS]]