it-swarm-ko.tech

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

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

어떤 사람들은 Mac OS X에 FreeBSD 커널이 있으며 위의 모든 유틸리티를 사용하여 Mac을 OS에 특화시킵니다. (여기서 사용자 앱에 대해서는 말하지 않고 모든 init, ls, cd 및 기타 만 해당 binutils?)

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

진실은 어디에 있습니까?

43
Didier Trosset

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 % 확실하지 않습니다.

마하 커널은 마이크로 커널로 설명되었지만 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 lite의 두 가지 버전을 출시했습니다. 방해받는 버전은 부팅 및 실행되지만 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으로 전환했지만 마이크로 커널 접근 방식을 따르지 않고 대신 모든 것을 그대로 유지하기로 결정했습니다. Apple Lites를 사용했는지, 스칸디나비아 해커를 고용했는지 또는 그들이 4.4 lite를 OS로 채택했는지 여부를 확인할 수 없었습니다. 나는 의심했지만 Linux로 이동했습니다. BSD/Mach 세계 추적을 중단했습니다.

90 년대 후반 Avie Apple에서 이미 유명했던 Linus를 고용하여 그의 아기를 위해 일하려고했다는 소문이 있었지만 Linus는 Linux에서 계속 일하기로 결정했습니다.

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

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

OSX의 역사에 대한이 그래픽을 발견했습니다. alt text

67
miguel.de.icaza

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

결국 OpenStep 라고 불리는 NeXT 프로그래밍 API는 오늘날 OS X 용 Cocoa API의 기초입니다. Apple 1997 년, 오픈 소스 API 호환 Cocoa 클론을 제공하기 위해 ongoingefforts 가 있습니다.

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

(OS X에는 더 많은 것이 있지만 파인더, BSD 및 GNU 사용자 도구 등) 위에는 응용 프로그램입니다.)

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

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

24
Warren Young

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

BSD +의 요소 NeXTSTEP + Apple 비틀기 = DARWIN

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

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

0
Tweety Bird