Mac OS X은 어디에서 왔습니까?


43

Mac 소유자와 논의하면서 Mac OS X의 여러 버전을 얻었습니다. BSD에 뿌리가있는 것으로 알려져 있지만, 어느 정도, 어디서?

어떤 사람들은 Mac OS X에 FreeBSD 커널이 있으며, 위의 모든 유틸리티를 사용하여 OS를 Mac 전용으로 만듭니다. (단지 모두의, 여기에 사용자의 응용 프로그램에 대해 말하기하지 init, ls, cd, 등이있다. 바이너리 유틸리티를? )

다른 사람들은 맥 OS X가 다윈 커널이고, 순수한 맥이며, OS 유틸리티는 BSD에서 나온 것이라고 말합니다.

진실은 어디에 있습니까?


11
X 이전의 모든 Mac OS 버전은 유닉스 기반이 아닌 운영 체제와 완전히 다르기 때문에이 질문의 제목은 실제로 "Mac OS X의 출처"입니다.
Sandy

1
@Sandy : Xes 수정
Warren Young

나는 '지옥'을 제안하려고했지만, 그 당시 마이크로 소프트의 불쾌한 기억과 그들의 굉장히 '윈도우'는 ... 그 외에는? NeXTSTEP 및 BSD 메모리가 제대로 작동하면 대답에 유의하십시오.
Pryftan

답변:


67

MacOS의 역사는 조금 더 복잡합니다. 마하가 유닉스 시스템을 구축하는 더 빠른 방법으로 전 세계에 퍼져 있었기 때문에 나는 90 년대 후반에 이것에 매우 관심이있었습니다.

커널의 기원은 조금 더 복잡합니다.

AT & T는 운영 체제를 일부 대학에 무료로 배포하는 것으로 시작합니다. 이 Unix는 Berkeley에서 광범위하게 개선되었으며 Unix의 BSD 변형의 토대가되었으며 "Fast File System"(UFS)과 같은 몇 가지 새로운 혁신, 심볼릭 링크 및 소켓 API를 도입했습니다. AT & T는 독자적인 길을 가고 동시에 System V를 구축했습니다.

그 동안 연구는 계속되었고 일부 사람들은 BSD의 작업을 기초로 채택했습니다. CMU에서 BSD 커널은 몇 가지 새로운 아이디어, 즉 스레드, 가상 메모리 시스템을 제어하는 ​​API (플러그 가능한 "pagers"-사용자 수준 mmap), 커널 수준 원격 프로 시저 호출 시스템 및 대부분의 프로토 타이핑을위한 기반으로 사용되었습니다. 커널 수준 작업을 사용자 공간으로 옮기는 아이디어가 중요합니다. 이것이 마하 커널이되었습니다.

mmap이 Mach에서 왔는지 나중에 BSD에서 채택했는지 또는 Mach가 단순히 아이디어를 개척하고 BSD가 Mach의 아이디어를 기반으로 자신의 mmap을 추가했는지 여부는 100 % 확실하지 않습니다.

Mach 커널은 마이크로 커널로 설명되었지만, 2.5 버전까지는 스레드, mmap, 메시지 전달 기능을 제공했지만 단일 커널로 남아있는 시스템 일 뿐이며 모든 서비스는 커널 모드에서 실행되었습니다.

현재 Rick Rashid (현재 Microsoft)와 Avie Tevanian (현재 Apple)은 Unix를 가속화 할 수있는 새로운 아이디어를 제시했습니다. 아이디어는 mmap 시스템 호출을 사용하여 사용자 공간에서 파일 시스템을 구현하는 "서버"로 복사 할 데이터를 전달하는 것입니다. 이 아이디어는 본질적으로 동일한 데이터의 복사본을 만들지 않는 변형이지만, 기능이 마이크로 커널에서 분리 될 수있는 경우에도 마이크로 커널의 이점으로 사용되었습니다.

이 VM 기반 고속 Unix 시스템의 벤치 마크는 NeXT와 FSF의 사람들이 Mach를 커널의 기반으로 선택하도록 이끌었습니다.

NeXT는 Mach 2.5 커널 (BSD 4.2 또는 4.3을 기반으로 함)과 함께 사용되었으며 GNU는 실제로 몇 년 동안 작업을 시작하지 않았습니다. 이것이 NeXTSTEP 운영 체제가 사용한 것입니다.

한편 CMU에서는 Mach에 대한 작업이 계속되었고 마침내 3.0 버전의 마이크로 커널에서 여러 서버를 실행한다는 비전을 깨달았습니다. 흥미로운 사용자 수준 서버가 모두 AT & T 코드를 사용하여 방해 받았으므로 연구 제품으로 남아 있기 때문에 Mach 3.0을 실행할 수 있다는 사실을 아무도 모릅니다.

이시기에 Jolitz 팀은 386 아키텍처에 대한 4.3+ BSD 포트를 수행했으며 DrDobbs에 대한 포팅 노력을 발표했습니다. 386BSD는 적극적으로 관리되지 않았고 NetBSD 팀인 386BSD를 유지하고 발전시키기 위해 그룹이 등장했습니다. NetBSD 그룹의 내부 싸움으로 인해 첫 번째 분할이 발생했으며 FreeBSD는 이로 인해 형성되었습니다. 당시 NetBSD는 크로스 플랫폼 BSD에 집중하고 싶었고 FreeBSD는 x86 플랫폼에서 훌륭한 유닉스를 사용하고 싶었습니다. 조금 후에 NetBSD는 다른 분쟁으로 인해 다시 분할되어 OpenBSD를 만들었습니다.

x86 플랫폼 용 BSD 4.3 포크는 BSDi라는 회사와 함께 상용화되었으며, 버클리 오리지널 팀의 여러 구성원이 그 곳에서 일했으며 대학의 BSD 팀과 좋은 관계를 유지했습니다.

AT & T는 즐겁게 지내지 않았으며 AT & T vs BSDi 소송을 시작했으며 나중에이 소송은 대학을 고소하기 위해 확대되었습니다. 이 소송은 버클리가 다시 작성하지 않은 AT & T의 독점 코드를 사용한 BSDi에 관한 것이었다. 이것은 BSD를 다가올 Linux 운영 체제와 비교하여 설정했습니다.

피고에게는 좋지 않은 일이 있었지만 어느 시점에서 누군가 누군가 SystemV가 BSD 라이센스에 따라 많은 양의 BSD 코드를 통합했으며 AT & T가 라이센스에 대한 의무를 이행하지 않았다는 것을 깨달았습니다. AT & T는 시장에서 제품을 가져 오지 않아도되는 합의에 도달했으며, 대학은 여전히 ​​AT & T 코드를 기반으로 할 수있는 모든 코드를 제거하기로 동의했습니다.

그런 다음 대학은 BSD 4.4와 4.4 라이트의 두 가지 버전을 출시했습니다. 방해가되는 버전은 부팅 및 실행되지만 AT & T 코드가 포함되어 있습니다. 라이트 버전에는 AT & T의 코드가 포함되어 있지 않지만 작동하지 않았습니다.

다양한 BSD 노력은 새로운 4.4 lite 릴리스에서 작업을 다시하고 몇 달 안에 부팅 시스템을 가지고있었습니다.

한편, 마하 3.0 마이크로 커널은 사용자 서버가 없다면 그다지 유용하지 않았다.

스칸디나비아 대학의 학생 (이것이 틀렸을 수도 있습니다)은 4.4 라이트 릴리스를 기반으로 한 완전한 OS를 갖춘 완전한 Mach 3.0 시스템을 만든 최초의 사람이었습니다. 시스템은 작동했지만 느 렸습니다.

1992-1996 년과 현재까지 BSD는 mmap () 시스템 호출과 대부분의 다른 유닉스 시스템을 가지고있었습니다. 거기에 없었던 "마이크로 커널 이점"은 실제로 실현되지 않았습니다. NeXT는 여전히 모 놀리 식 커널을 가지고있었습니다. FSF는 여전히 마하가 BSD 코드를 만지거나 오픈 소스 BSD 노력에 기여하기를 원치 않았으며, 제대로 지정되지 않은 커널 비전을 고수하고 RPC 프로토콜을 익사했습니다. 핵심. 마이크로 커널은 종이에서는 훌륭해 보이지만 오버 엔지니어링되어 모든 것이 느려졌습니다.

이 시점에서 우리는 또한 마이크로 커널과 모 놀리 식 커널에 대한 Linus vs Andy 토론을했으며 세계는 이러한 모든 추가 사이클을 마이크로 커널에 추가하는 것이 불가능하다는 것을 깨달았습니다. .

애플은 아직 NeXTSTEP을 인수하지 않았지만 미래 운영 체제를위한 잠재적 인 커널로 마하를 조사하기 시작했다. 그들은 리눅스를 마하 커널로 포팅하기 위해 Open Software Foundation을 고용했으며, 이는 Grenoble 사무소에서 이루어졌으며 이것이 "mklinux"라고 생각합니다.

Apple이 NeXT를 인수했을 때 4.2 또는 4.3 기반의 Unix 기반의 비교적 오래된 Unix 기반이었고 지금까지는 무료 소프트웨어조차도 그 시스템에서 제대로 작동하지 않았습니다. 그들은 유닉스 스택을 업그레이드하기 위해 FreeBSD에서 Jordan Hubbard를 고용했습니다. 그의 팀은 사용자 영역을 업그레이드하는 책임을 맡았으며, MacOS 사용자 영역이 BSD에서 사용 가능한 최신 버전으로 업그레이드 된 것은 놀라운 일이 아닙니다.

애플은 어느 시점에서 마하를 2.5에서 3.0으로 전환했지만 마이크로 커널 접근 방식을 따르지 않고 대신 모든 것을 그대로 유지하기로 결정했습니다. 애플이 라이트를 사용했는지, 스칸디나비아 해커를 고용했는지, 또는 4.4 라이트를 OS로 채택했는지 확인할 수 없었습니다. 나는 그들이 의심했지만, 나는 이미 리눅스로 옮겼고 BSD / Mach 세계 추적을 중단했다.

90 년대 후반 애플의 애비 (Avie)는 아이를 위해 리누스 (Linus)를 고용하려고했지만 루 누스는 리눅스 작업을 계속하기로했다는 소문이 있었다.

역사는 제쳐두고이 페이지는 유저 랜드와 Mach / Unix 커널을 설명합니다 :

http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDAEDC

OSX의 역사에 대한이 그래픽을 발견했습니다. 대체 텍스트


FSF의 Stallman이 Mach를 추구 한 주된 이유는 성능이 아니라 디버거를 사용하기 쉽다는 것입니다. 그는 디버거를 사용하여 커널 공간에서 실행되는 코드를 디버깅하는 것보다 훨씬 쉽게 Mach 서버를 디버깅 할 수있었습니다. 어쩌면 그를 구현 한 것은 실행 가능한 방법이라고 확신시킨 성능일지도 모릅니다.
skiphoppy

4
실제 마이크로 커널을 실제로보고 싶다면 QNX를 사용해보십시오. QNX4에서 커널은 32KB에 불과했으며 메시지 전달, CPU 스케줄링 및 인터럽트 만 처리했습니다. QNX OS의 다른 모든 부분은 시스템을 종료하거나 재부팅하지 않고도 교체 할 수 있으며 매우 강력했습니다. 한때 QNX 용 Willows라는 윈도우 에뮬레이터가있었습니다. 이것은 OS-X 자체와는 아무런 관련이 없지만 QNX는 마이크로 커널이 제대로 수행되면 실제로 실행 가능함을 증명했습니다.

20
더 이상 이미지를 사용할 수 없습니다.
Hermann Ingjaldsson

7
아직 이미지를 볼 수 없습니다
Sildoreth

스티브 잡스는 2000 년에 리누스에게 일자리를 제공했습니다. wired.com/2012/03/mr-linux/all/1
Alistair McMillan

24

유닉스 측면에서 OS X는 NeXTSTEP 의 자손으로 커널의 핵심 부분이 Mach 로 대체 된 4.3BSD에서 파생되었습니다 .

결국 OpenStep 이라고 불리는 NeXT 프로그래밍 API 는 오늘날 OS X 용 Cocoa API의 기초입니다. 1997 년 Apple이 NeXT를 인수 한 이후 두 가지 API가 크게 분기되었지만 오픈 소스 API 호환 Cocoa 클론을 제공 하려는 노력계속되고 있습니다. .

여기에 Carbon이라는 Classic MacOS 호환성 API가 추가되고 OS X 프로그래밍 인터페이스가 있습니다.

(OS X에는 더 많은 것이 있지만 Finder, BSD 및 GNU userland 도구 등이 무엇이든 응용 프로그램입니다.)

FreeBSD 커널 아이디어에 관해서는 다소 정확하지만 그것을 보는 정교하지 않은 방법입니다. 원래 커널은 NeXT에서 왔으며, 4.3BSD와 Mach에서 첫 번째 커널을 조립했습니다. 이것은 FreeBSD와 NeXTSTEP가 4.3BSD를 통해 일부 코드를 공유했음을 의미합니다.

OS X이 FreeBSD를 기반으로한다는 밈에는 두 가지 최신 소스가 있습니다. 첫째, 애플은 BSD 세계, 일반적으로 FreeBSD에서 혁신을 계속 빌려왔다. 둘째, 애플은 FreeBSD 프로젝트 공동 창립자 Jordan Hubbard를 최초의 공개 OS X 릴리스를 만든 직후에 고용 했습니다. 2013 년 6 월까지 Apple에서 근무했습니다.


0

OSX에 유닉스 특유의 맛이 있다고 들었을 때 기술적으로 정확합니다.

BSD + NeXTSTEP의 요소 + Apple Tweaks = DARWIN

다시 말하면 핫 퍼지 / 아이스크림 (BSD) 만 주문하면 너트 (NeXTStep)와 휩 크림 및 체리 추가 (애플 추가 기능 및 비틀림) = 핫 퍼지 순대 (다윈)

그러나 BSD는 다른 것들이 추가 된 기반이므로 많은 BSD가 다윈에서 작동합니다 (여기서 조정)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.