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의 역사에 대한이 그래픽을 발견했습니다.