4P by neo 5달전 | ★ favorite | 댓글 1개
  • Apple의 최신 OS 출시 버전은 Open Group 목록에서 공식적으로 검증된 최신 UNIX™ 호환버전이지만, 여러분이 생각하는 것과는 일치하지 않을 수 있음
    • macOS는 AT&T 소스 코드를 사용하지 않음. "Unix"는 1993년 Novell이 Bell Labs로부터 UNIX를 인수한 이후로 더 이상 그런 의미를 갖지 않음
  • 참고: OS X은 16년 전부터 이미 UNIX로 인증 받음

UNIX™ 인증이 의미하는 바

  • 코드와는 관련이 없음. 30년 넘게 그랬음
  • UNIX™ 인증은 이제 "POSIX 호환"을 의미함
  • POSIX는 호환성 사양 및 테스트 세트로, 올바른 도구가 올바른 위치에 있어야 함
  • IBM의 z/OS 메인프레임 운영 체제도 이 목록에 있음

Unix와 유사한 OS의 정의

  • Unix처럼 보이고, Unix처럼 작동하며, Unix용으로 작성된 프로그램을 주요 수정 없이 이식할 수 있어야 함
  • macOS의 핵심은 이에 충분히 부합함. XNU 커널과 주로 BSD 코드에서 파생된 사용자 공간을 사용함
  • XNU는 Mach 커널을 기반으로 하며, BSD 코드에서 파생된 대형 인커널 "Unix 서버"도 있음
  • 사용자 공간의 대부분은 오픈 소스이며 BSD에서 나옴
  • GUI 계층과 예쁘게 보이게 하는 가시적 부분이 독점적임

Apple의 Darwin 프로젝트

  • Apple은 과거에 Darwin이라는 프로젝트로 OS의 하위 계층을 독립형 버전으로 제공했음
  • OpenDarwin, PureDarwin 등 다른 FOSS OS의 비트를 사용하여 이를 완성하려는 여러 배포판이 있었음
  • NextBSD 프로젝트는 반대 방향으로 진행되었는데, FreeBSD 커널을 유지하면서 launchd와 같은 Apple의 상위 수준 코드를 사용할 수 있도록 수정함

macOS의 진화 과정

  • 1996년 말 Apple은 NeXT Computer 인수를 발표했고, 1997년 10월 차세대 OS인 Rhapsody 프리뷰를 출시함
  • Rhapsody는 NeXTstep 5와 거의 동일했음
  • 1999년에는 Mac OS X Server 1.0이 되었고, 이는 2000년 Mac OS X 1.0으로 발전함
  • 10.8 Mountain Lion부터는 OS X로, 10.12 Sierra부터는 macOS로 단순화됨
  • 그러나 여전히 1988년 Steve Jobs가 시연한 NeXTstep 0.8과 인식 가능할 정도로 유사한 OS임

GN⁺의 의견

  • macOS가 UNIX 인증을 받은 것은 큰 의미가 없어 보임. 대부분의 사람들에게는 실질적인 영향이 없을 것임
  • 하지만 macOS의 기반이 되는 Darwin이 오픈 소스라는 점은 주목할 만함. 이를 통해 개발자들은 macOS의 내부 작동 방식을 더 잘 이해할 수 있음
  • POSIX 호환성은 여전히 OS 간 이식성 확보에 중요한 역할을 하지만, 최신 표준을 준수하는 것은 더 이상 우선순위가 아닌 듯함
  • NeXTSTEP에서 macOS에 이르는 진화 과정을 보면, 사용자 인터페이스와 개발자 경험의 혁신이 운영 체제의 성공에 얼마나 중요한지 알 수 있음
  • 궁극적으로 UNIX 인증 자체보다는 macOS가 개발자 친화적이고 사용하기 쉬우며 강력한 생태계를 갖추고 있다는 점이 더 중요해 보임. 하지만 UNIX 인증은 macOS의 견고한 기반을 보여주는 상징적 의미는 있음
Hacker News 의견
  • Sequoia의 인증은 새로운 것이 아님. OS X는 오랫동안 Open Group의 인증을 받았음
  • 이러한 인증이 왜 중요한지에 대한 의문이 있음
  • macOS는 'Unix'로 인증받았지만 현대 BSD는 그렇지 않음. 같은 코드베이스에서 나왔는데 왜 그런지 궁금함
  • 터미널 장치에서 poll()을 호출할 수 있는지 여부가 중요함
    • Mac OS X의 초기부터 이 기능이 부족했음
    • 크로스 플랫폼 소프트웨어는 항상 select()와 poll()을 모두 지원해야 함
    • Mac OS X에서는 select(), 다른 시스템에서는 poll()을 사용해야 함
    • poll()으로 표준화할 수 있다면 좋을 것임
  • macOS 매뉴얼 페이지와 인증 요구 사항 비교
    • macOS의 poll() 시스템 호출은 장치를 지원하지 않음
    • 인증 요구 사항에서는 poll()과 ppoll() 함수가 다양한 장치를 지원해야 함
  • macOS 15에서 이 버그가 수정되었는지, 아니면 인증이 의미 없는 것인지 의문이 있음
  • 인증을 떠나서 Linux와 macOS는 매우 유사함
    • xdg-open과 open, systemd와 launchd, sed -i와 sed -i ''의 차이점이 있음
  • POSIX 세마포어가 macOS에서 작동하지 않는데도 계속 인증받는 이유를 이해하지 못함
  • Apple이 왜 이런 인증을 받으려 하는지 궁금함
    • macOS 서버를 더 많이 사용하게 하려는 의도는 아닌 것 같음
  • Apple이 새로운 서버 계획을 가지고 있는지 궁금함
  • Unix 호환성의 큰 격차, 특히 pipe2를 구현하도록 Apple이 추진되기를 바람