다윈에는 다른 유닉스에는 없는 기능이 있나요? 아니면 그 반대의 경우도 있나요?

다윈에는 다른 유닉스에는 없는 기능이 있나요? 아니면 그 반대의 경우도 있나요?

다윈에는 그 특유의 특징이 있나요? 다른 Unixe에는 Darwin에 없는 기능이 있습니까?

답변1

OS X는 유일하게 남은 운영 체제입니다.Mach 마이크로커널 기반이는 여전히 상업적으로 관련이 있습니다. 몇 가지 진행 중인 연구 프로젝트와 오래된 기계의 생산 환경에서 의심할 바 없이 여전히 사용되고 있는 노후화된 OS가 있지만, 오늘날에는 나가서 새 기계를 구입할 수 있는 것이 없습니다.

OS X에는 모든 *ix에서 볼 수 있는 일반적인 커널 기능 비호환성이 있습니다. 제가 최근에 해결해야 했던 가장 큰 문제는System V 메시지 대기열. ( msgget(2)그리고 친구들.) 우리는 소프트웨어가 OS X에서 실행되도록 하기 위해 "실제" System V 변형용으로 작성되고 나중에 Linux로 포팅된 메시지 대기열 코드를 TCP/IP로 교체해야 했습니다. 이 두 가지 IPC 방법의 차이점은 우리가 메시지 대기열을 사용하기로 선택한 당시에는 중요했지만 이후의 아키텍처 변경으로 인해 결국 TCP/IP로 전환하는 것은 큰 문제가 되지 않았습니다.

답변2

따지고 보면 다윈은 마하 2.0 위에 있는 얇은 BSD 계층에 불과한 것이 아닌가?

예전에는 NeXTStep을 사용했었는데, 현재 MacOSX가 NeXTStep에서 얼마나 벗어났는지는 모르겠지만...

Mach 2.0은 커널 수준에서 다른 추상화 세트를 제공했습니다.

  1. "작업": 이는 주소 공간 + "포트" 집합이며 스레드가 실행될 수도 있습니다.
  2. 스레드. 이는 예약 가능한 실행 단위였습니다. 작업(주소 공간)에는 둘 이상이 실행될 수 있습니다. 나는 Mach-O 파일(Mach의 실행 파일 형식)이 프로세스 런타임에 둘 이상의 스레드를 지정할 수 있다고 믿습니다. 더 많은 Cthread를 시작하는 main() 함수가 없으면 OS가 하나를 시작합니다.
  3. 포트. 이는 TCP 또는 UDP 포트와 다릅니다. 그것들은 타이핑되고, 순서대로 정렬된 메시지 스트림이었습니다. 오히려 RPC와 유사합니다. 프로토콜 사양 파일을 구성한 다음 이를 컴파일러를 통해 실행하여 서버 및 클라이언트 측 스텁, 마샬링 및 언마샬링 루틴 등을 얻었습니다.
  4. 사용자 수준 메모리 호출기. 다른 작업의 주소 공간 페이징을 처리하기 위해 작업+스레드를 설정할 수 있습니다.

원래 CMU Mach 사람들은 이러한 추상화를 사용하여에뮬레이트하다BSD Unix 프로세스, MS-DOS 프로세스, 그리고 이상하게도 VMS 작업이 완벽하게 들어맞습니다. 각 VMS 작업에는 2개의 Mach 작업과 많은 스레드가 필요했습니다. 누군가는 사용자 공간 호출기를 효과적으로 사용하는 NeXTStep용 Mac OS(OSX 이전) 에뮬레이터를 판매하곤 했습니다.

이전 CMU Mach 출판물 페이지: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/documents_top.html

VMS-on-Mach 논문: http://www.sture.ch/vms/Usenix_VMS-on-Mach.pdf

답변3

이게 꼭 정답은 아니지만,DTrace는 Solaris, Darwin/OS X 및 *BSD용으로 존재하지만 Linux용으로는 존재하지 않는 멋진 시스템 디버깅 도구입니다.

답변4

나는 다윈을 또 다른 인물로 묘사하는 것이 가장 좋다고 생각합니다.유닉스의 맛. 솔라리스는 하나입니다. HP/UX는 또 다른 것입니다. 많이있다, 아마도 "고자세"는 아니지만 거기에 있습니다. 그리고 모든 맛에는 고유한 특성이 있습니다. 그래서 애초에 맛이 있는 거죠. 일부 회사는 제품 판매(또는 단순히 작업 또는 관리)에 도움이 되는 제품을 생각해 내고 제품을 만들고 고유한 이름을 부여합니다.

관련 정보