Darwin에 대하여

치킨치·2024년 5월 31일
0

오픈소스를 보다보면 import Darwin 코드를 발견할 때가 가끔 있었다.
그럼 이 Darwin이라는 건 뭘까라는 의문이들어 찾아보게 됐다.

ChatGPT의 답변은 아래와 같았다:

Darwin은 Swift와 Objective-C에서 사용할 수 있는 시스템 레벨의 라이브러리로, C 표준 라이브러리와 다양한 Unix 기반 시스템 호출을 포함하고 있습니다. Darwin 모듈은 Apple의 운영 체제 (iOS, macOS, watchOS, tvOS)에서 제공되며, 다양한 저수준 시스템 기능을 제공합니다. 이는 C 표준 라이브러리의 기능 외에도 POSIX 표준의 일부 기능을 포함합니다.
Darwin 모듈의 주요 기능

  • 수학 함수: 수학 연산을 위한 다양한 함수 (sin, cos, sqrt, exp 등)를 제공합니다.
  • 시스템 호출: 파일 시스템 조작, 프로세스 관리, 메모리 할당 등의 저수준 시스템 호출을 제공합니다.
  • 타이머와 시계: 시간과 날짜를 처리하는 기능을 제공합니다.
  • 기타 유틸리티 함수: 다양한 유틸리티 함수 (예: 환경 변수 접근, 프로그램 종료 등)를 포함합니다.

하지만 Foundation에 기본 sin, cos등의 수학함수들이 들어있기 때문에, 의문은 완벽히 풀리지 않았다.
그래서 더욱 자세히 알려달라고 물어보니:

Swift에서 Darwin 모듈을 사용하는 뚜렷한 이유는 저수준의 시스템 호출 및 POSIX (Portable Operating System Interface) 기능을 제공받기 위해서입니다. Darwin 모듈은 macOS 및 iOS와 같은 Apple 운영 체제에서 사용 가능한 C 표준 라이브러리와 POSIX 함수들을 포함합니다. 이 모듈은 시스템 프로그래밍, 하드웨어 제어, 성능 최적화 작업 등을 수행할 때 유용합니다.
Darwin 모듈을 사용해야 하는 이유
1. 저수준 시스템 호출:

  • 파일 시스템 조작, 프로세스 관리, 메모리 할당 등 저수준 시스템 작업을 수행할 수 있습니다.
  • 예: open, read, write, fork, exec, mmap, munmap 등의 함수 사용.
  1. POSIX 표준 함수:
  • POSIX 표준에 정의된 다양한 시스템 함수들을 사용할 수 있습니다.
  • 예: pthread를 사용한 스레드 관리, semaphore를 사용한 동기화, socket을 사용한 네트워크 프로그래밍.
  1. 고성능 및 최적화:
  • 특정 작업에서 성능을 극대화하기 위해 저수준 시스템 호출을 사용할 수 있습니다.
  • 예: 실시간 성능 요구사항이 있는 애플리케이션에서 직접적인 시스템 호출을 통해 오버헤드를 줄임.
  1. 하드웨어 접근 및 제어:
  • 특정 하드웨어 기능에 직접 접근하거나 제어할 수 있습니다.
  • 예: 센서 데이터 읽기, 특수한 하드웨어 제어 등.

몇가지 문서를 보니 iOS, MacOS, iPadOS 등 Apple이 만드는 운영체제의 Core라고 한다.
(참고: 나무위키, medium)



위의 삽화들로 우리가 iOS라고 부르는 운영체제가 어떻게 구현하고 있는지 알 수 있다.
네트워킹, 파일이스템, 파일시스템 등 핵심기능을 Darwin이라는 Core 운영체제라는 개념으로 묶어놓고, 디바이스 특화 기능들과 조합해 우리가 알고있는 기기OS를 만드는 새로운 개념에 눈을 떴다.

profile
풀스텍이었던 iOS개발자

0개의 댓글