엑스누

XNU
엑스누
The XNU Kernel Graphic.svg
XNU 커널
개발자애플
기록 위치C, C++
OS 제품군Unix 유사, Unix
작업 상태현재
소스 모델오픈소스
초기 릴리즈1996년 12월; 25년 전(1996-12년)
리포지토리
다음에서 사용 가능영어, 기타
플랫폼전류: x86-64, 64비트 ARM, 32비트 ARM(32비트 ARM 지원은 폐쇄 소스)
기록:PowerPC(32비트 및 64비트), IA-32
커널형잡종
면허증Apple 공용 소스 라이센스 2.0
선행자마하, 누커넬
공식 웹사이트opensource.apple.com/source/xnu

XNU is the computer operating system (OS) kernel developed at Apple Inc. since December 1996 for use in the Mac OS X (now macOS) operating system and released as free and open-source software as part of the Darwin OS, which is the basis for the Apple TV Software, iOS, iPadOS, watchOS, and tvOS OSes. XNU is an abbreviation of X is Not Unix.[1]

원래 NeXTSTEP 운영체제용으로 NeXT가 개발한 XNU는 카네기멜론대학에서 개발마하 커널 버전 2.5에서 파생된 하이브리드 커널4.3의 대부분을 통합했다.드라이버 키트라는 이름의 드라이버를 쓰기 위한 목표-C의 응용 프로그램 프로그래밍 인터페이스(API)와 함께 마하 원시 요소 위에서 실행되도록 수정된 BSD 커널.[2]

애플이 NeXT를 인수한 후, 커널은 OSF에서 OSFMK 7.3에서 파생된 코드로 업데이트되었고,[3] FreeB는SD 프로젝트와 드라이버 키트는 I/O 키트라는 이름의 드라이버를 쓰기 위한 C++ API로 대체되었다.[citation needed]

커널 디자인

XNU는 단일 커널마이크로커널의 특징을 모두 포함하고 있는 하이브리드 커널로, 메모리 보호의 혜택을 받기 위해 더 큰 모듈성과 OS의 더 큰 부분을 가능하게 하는 마이크로커널의 메시지 전달 능력, 그리고 일부 비평가들에게 단일 커널의 속도를 유지하는 것과 같은 두 가지 기술을 최상으로 활용하려고 시도한다.나는 일을 한다.

2021년 현재 XNU는 ARM64x86-64 프로세서에서 실행되며, 프로세서 하나와 SMP(Symmetric Multiprocessing) 모델 둘 다에서 실행된다.Mac OS X 10.6의 버전에서 PowerPC 지원이 제거되었다.IA-32 지원은 Mac OS X 10.7 버전에서, 32비트 ARM 지원은 iOS 11 버전에서 제거되었다.

마하

그 XNU 커널의 기반이 되는 것은 무거운 수정(하이브리드)개방 소프트웨어 재단 마하 커널 그런 만큼, 이산 프로세스와 적응력(그것은 동시에 마하 핵심 위에 여러 운영 체제 실행될 수 있는)수 있는 운영 체제의 핵심 실행되어야 하지만 이것은 종종 피자 때문에 성능을 줄여 줄 수 있7.3.[3](OSFMK).me-커널/사용자 모드 컨텍스트 스위치 사용 및 커널의 주소 공간과 서비스 데몬의 주소 공간 간에 메시지를 매핑하거나 복사하는 데 따른 오버헤드.macOS를 통해 설계자들은 일부 작업을 능률화하려고 시도했고 따라서 BSD 기능은 마하로 코어에 내장되었다.결과는 크게 수정된(하이브리드) OSFMK 7.3 커널, 애플이 OSF로부터 마이크로커널인 OSFMK 7.3을 라이선스한 것이다.[4]OSFMK 7.3은 유타 대학교 마하 4 커널과 원래의 카네기 멜론 대학교 마하 3.0 마이크로커널에서 요청된 많은 마하 3.0 변종에서 적용 가능한 코드를 포함한다.

BSD

커널의 BSD(Berkeley Software Distribution) 부분은 POSD(Portable Operating System Interface) 애플리케이션 프로그래밍 인터페이스(API, BSD 시스템 호출), 마하 태스크의 맨 위에 있는 Unix 프로세스 모델, 기본 보안 정책, 사용자 및 그룹 ID, 권한, 네트워크 프로토콜 스택(프로토콜), 가상 파일 시스템 코드(include)를 제공한다.ing a file system independent journaling layer), several local file systems such as Hierarchical File System (HFS, HFS Plus (HFS+)) and Apple File System (APFS), the Network File System (NFS) client and server, cryptographic framework, UNIX System V inter-process communication (IPC), audit subsystem, mandatory access control, and some of the locking [5]원시적XNU에 존재하는 BSD 코드는 FreeB의 코드와 가장 최근에 동기화되었다.SD 커널.상당 부분이 대폭 수정됐지만 2009년 현재 애플과 FreeBSD 프로젝트 간 코드 공유는 여전히 이뤄지고 있다.[6]

K32/K64

맥 OS X Snow Leopard의 XNU, v10.6, (Darwin 버전 10)은 32비트 버전 K3264비트 버전 K64로 두 가지 종류가 있다.[7] K32는 사용자랜드에서 64비트 애플리케이션을 실행할 수 있다.[8]Mac OS X 10.6의 새로운 점은 XNU를 64비트 커널 공간에서 실행할 수 있는 기능이었다.K32는 2008년부터 Mac[9] ProXserve 모델을 제외한 모든 시스템에서 사용할 때 10.6 Server의 기본 커널이었으며 64비트 애플리케이션을 실행할 수 있었다.K64는 K32에 비해 몇 가지 장점이 있다.[10]

  • 메모리 맵은 32비트 커널 공간의 불균형적으로 큰 영역을 소비하므로 32GB RAM 이상을 관리할 수 있다.
  • 캐시 버퍼 크기는 32비트 커널 공간이 허용하는 것보다 클 수 있으며 잠재적으로 I/O 성능을 높일 수 있다.
  • 고성능 네트워킹 디바이스나 다중 그래픽 처리 장치(GPU)를 사용할 경우 커널이 매우 큰 DMA(Direct Memory Access) 버퍼를 여러 개 가지고 있어도 모든 디바이스를 64비트 공간에 매핑할 수 있어 성능이 향상된다.

64를 누른 상태에서 부팅하면 64비트 커널을 지원하는 시스템에서 K64를 부팅하게 된다.[11]K64는 32비트 애플리케이션을 실행하지만 32비트 커널 확장(KEXT)을 실행하지 않으므로 로드할 수 있으려면 K64에 포팅해야 한다.

OS X Mountain Lion, v10.8 이상의 XNU는 64비트 커널만 제공한다.

I/O 키트

I/O Kit는 Embedded C++[12]를 기반으로 C++의 하위 집합으로 작성된 장치 드라이버 프레임워크다.객체 지향 설계를 사용하여, 어떤 등급의 드라이버에 공통되는 기능이 프레임워크 내에서 제공되어 장치 드라이버가 더 적은 시간과 코드로 작성될 수 있도록 돕는다.I/O 키트는 다중 스레드 대칭 다중 처리(SMP) 안전하며 핫 플러그 가능 장치와 자동 동적 장치 구성이 가능하다.

사용자 공간에서 구동되도록 많은 드라이버를 작성할 수 있어 시스템의 안정성을 더욱 강화한다.사용자 공간 드라이버가 충돌해도 커널은 충돌하지 않는다.그러나 커널 스페이스 드라이버가 충돌하면 커널이 충돌한다.커널 공간 드라이버의 예로는 디스크 어댑터 및 네트워크 어댑터 드라이버, 그래픽 드라이버, USB(Universal Serial Bus) 및 FireWire 호스트 컨트롤러용 드라이버, VirtualBox, Parallels Desktop for Mac, VMware Fusion 등의 가상 시스템 소프트웨어용 드라이버 등이 있다.

참고 항목

참조

  • Loepere, Keith. "MK++: A High Performance, High Assurance Microkernel".
  1. ^ "Porting UNIX/Linux Applications to Mac OS X: Glossary". Apple Computer. 2005. Retrieved June 7, 2017.
  2. ^ "XNU GitHub source code README". GitHub. December 16, 2021.
  3. ^ a b Magee, Jim. WWDC 2000 Session 106 – Mac OS X: Kernel. 14 minutes in. Archived from the original on December 21, 2021.
  4. ^ Wells, Douglas M. "A Trusted, Scalable, Real-Time Operating System Environment" (PDF). Semantic Scholar. Allen Institute for AI (AI2). S2CID 5205380. Archived from the original (PDF) on August 22, 2017.
  5. ^ Watson, Robert (August 2, 2008). "Re: freebsd-advocacy Digest, Vol 248, Issue 1". freebsd-advocacy (Mailing list). Retrieved October 24, 2013.
  6. ^ "FreeBSD Quarterly Status Report (Grand Central Dispatch – FreeBSD port)". April 2009. Retrieved October 24, 2013.
  7. ^ Mac OS X 10.6 눈표범: Ars Technica 리뷰, 5페이지
  8. ^ Siracusa, John (August 31, 2009). "Mac OS X 10.6 Snow Leopard: the Ars Technica review". Ars Technica. Finally, this is worth repeating: please keep in mind that you do not need to run the 64-bit kernel in order to run 64-bit applications or install more than 4 GB of RAM in your Mac. Applications run just fine in 64-bit mode on top of the 32-bit kernel, and even in earlier versions of Mac OS X it's been possible to install and take advantage of much more than 4GB of RAM.
  9. ^ Mac OS X Server v10.6: 64비트 커널을 사용하는 Mac
  10. ^ "What's New in Mac OS X: Mac OS X v10.6". Apple Developer. Apple, Inc.
  11. ^ Mac OS X Server v10.6: 32비트 또는 64비트 커널 시작
  12. ^ I/O Kit는 제한된 C++ 하위 집합을 사용함

외부 링크

  • 공식사이트, Apple Open Source Browser
  • GitHub에 있는 다윈-xnu, 공식 거울
  • XNU: The Kernel at the Wayback Machine(2020년 6월 2일 아카이브) – 2003년 12월 Amit Singh가 작성한 XNU 구성 요소의 개요
  • Mac OS X 커널 내부 – "Mac OS X 커널에 대한 세부 정보를 제시하여 혼란을 해소하고자 함"