Mac 사용자와의 토론에서 저는 Mac OS X의 여러 버전을 얻었습니다. 우리 모두 알고 있듯이 일부 BSD 뿌리가 있지만 그 뿌리는 얼마나 되며 어디에 있습니까?
어떤 사람들은 Mac OS X에 모든 유틸리티가 포함된 FreeBSD 커널이 있어 Mac 전용 운영 체제라고 말합니다. (여기에서는 사용자 응용 프로그램에 대해 설명하지 않으며 모든 init
, ls
및 cd
기타 응용 프로그램에 대해서만 설명합니다.바이너리 도구?)
다른 사람들은 Mac OS X가 순수한 Mac인 Darwin 커널이고 운영 체제 유틸리티가 BSD에서 나왔다고 말합니다.
진실은 어디에 있습니까?
답변1
MacOS의 역사는 다소 복잡합니다. 나는 1990년대 후반에 Mach가 Unix 시스템을 구축하는 더 빠른 방법으로 홍보되었기 때문에 이에 대해 매우 관심을 가지게 되었습니다.
커널의 기원은 약간 복잡합니다.
AT&T가 운영 체제를 일부 대학에 무료로 배포하면서 모든 것이 시작되었습니다. 이 Unix는 Berkeley에서 광범위하게 개선되었으며 심볼릭 링크와 소켓 API를 도입한 "Fast File System"(UFS)과 같은 새로운 혁신을 통합하여 BSD 버전 Unix의 기초가 되었습니다. AT&T는 독자적인 길을 가고 동시에 System V를 구축했습니다.
그 동안 BSD의 작업을 기반으로 하는 일부 연구도 계속되었습니다. CMU에서 BSD 커널은 스레드, 가상 메모리 시스템을 제어하는 API(플러그형 "페이저" - 사용자 수준 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에서는 마이크로커널 버전 3.0을 기반으로 여러 서버를 실행하려는 비전을 마침내 실현하면서 Mach에 대한 작업이 계속되었습니다. 흥미로운 사용자 수준 서버는 모두 AT&T 코드를 사용하므로 차단기로 간주되므로 Mach 3.0을 실행할 수 있는 사람을 아는 사람이 없으므로 아직 연구 제품입니다.
이 무렵 Jolitz 팀은 4.3+ BSD를 386 아키텍처로 포팅하는 작업을 완료하고 포팅 결과를 DrDobbs에 공개했습니다. 386BSD는 적극적으로 유지 관리되지 않았기 때문에 386BSD를 유지하고 홍보하기 위해 NetBSD 팀이 등장했습니다. NetBSD 그룹 내부의 갈등으로 인해 첫 번째 분열이 발생했고 FreeBSD가 탄생했습니다. 당시 NetBSD는 크로스 플랫폼 BSD를 갖는 데 초점을 맞추고 싶었고, FreeBSD는 x86 플랫폼에서 잘 작동하는 Unix를 갖는 데 초점을 맞추고 싶었습니다. 얼마 지나지 않아 NetBSD는 다른 분쟁으로 인해 다시 분할되어 OpenBSD가 탄생하게 되었습니다.
x86 플랫폼용 BSD 4.3 브랜치는 BSDi라는 회사에서 상용화되었습니다. 이 회사에서는 원래 Berkeley 팀의 다양한 구성원이 근무하며 대학의 BSD 팀과 좋은 관계를 유지하고 있습니다.
AT&T는 이에 불만을 품고 BSDi를 상대로 AT&T의 소송을 시작했고, 소송은 나중에 대학까지 소송으로 확대되었습니다. 소송은 BSDi가 AT&T의 독점 코드를 사용하는 것과 관련되어 있습니다(Berkeley가 다시 작성하지 않음). 이는 곧 출시될 Linux 운영 체제에 비해 BSD를 방해합니다.
피고인에게는 상황이 좋지 않았지만 어느 시점에서 누군가는 SystemV가 BSD 라이센스에 따라 대량의 BSD 코드를 통합했으며 AT&T가 라이센스에 따른 의무를 이행하지 않았다는 사실을 깨달았습니다. 양측은 AT&T가 자사 제품을 시장에서 철수할 필요가 없다는 합의에 이르렀고, 대학은 여전히 AT&T 코드를 기반으로 할 수 있는 모든 코드를 제거하기로 합의했습니다.
이후 대학은 BSD의 두 가지 버전인 4.4 encumbered와 4.4 lite를 출시했습니다. 차단된 버전이 실행 중이지만 AT&T 코드가 포함되어 있습니다. Lite 버전에는 AT&T 코드가 포함되어 있지 않지만 작동하지 않습니다.
다양한 BSD 작업이 새로운 4.4 라이트 버전 위에서 다시 이루어졌고 몇 달 안에 부팅 시스템이 완성되었습니다.
동시에, Mach 3.0 마이크로커널은 사용자 영역 서버가 없으면 여전히 그다지 유용하지 않습니다.
스칸디나비아 대학교의 한 학생(제가 틀릴 수도 있다고 생각합니다)은 완전한 Mach 3.0 시스템과 4.4 라이트 버전을 기반으로 한 완전한 운영 체제를 처음으로 만들었습니다. 저는 이를 "Lites"라고 생각합니다. 시스템이 작동하지만 속도가 느립니다.
1992년부터 1996년까지 BSD는 대부분의 다른 Unix 시스템과 마찬가지로 mmap() 시스템 호출을 사용했습니다. 존재하지 않는 "마이크로커널 이점"은 실제로 실현되지 않았습니다. NeXT는 여전히 모놀리식 코어를 갖고 있습니다. FSF는 여전히 Mach를 구축하려고 노력하고 있으며 BSD 코드를 건드리거나 오픈 소스 BSD 노력에 기여하기를 원하지 않으며 잘못 지정된 커널 비전을 지속적으로 공격하고 자체 RPC 프로토콜 코어에 빠져들고 있습니다. 마이크로커널은 서류상으로는 훌륭해 보였지만 지나치게 엔지니어링되어 모든 것을 느리게 만들었습니다.
이 시점에서 우리는 마이크로커널 대 모놀리식 코어에 대한 Linus 대 Andy의 논쟁도 벌이고 있었고, 세상은 이러한 모든 추가 사이클을 마이크로커널에 추가하면서도 여전히 잘 설계된 모놀리식 코어보다 앞서는 것이 불가능하다는 것을 깨닫기 시작했습니다. .
Apple은 아직 NeXTSTEP을 인수하지 않았지만 Mach를 미래 운영 체제의 잠재적인 커널로 고려하기 시작했습니다. 그들은 Open Software Foundation을 고용하여 Linux를 Mach 커널로 포팅했는데, 그 작업은 Grenoble 사무실에서 수행되었으며 나는 그것이 "mklinux"라고 불렸다고 믿습니다.
Apple이 NeXT를 인수했을 때 그들은 상대적으로 오래된 Unix 기반, 즉 4.2 또는 4.3 기반의 Unix를 가지고 있었고 이제는 무료 소프트웨어조차도 이러한 시스템에서 제대로 실행되지 않습니다. 그들은 Unix 스택을 업그레이드하기 위해 FreeBSD의 Jordan Hubbard를 고용했습니다. 그의 팀은 사용자 공간 업그레이드를 담당하고 있으며 MacOS 사용자 공간이 BSD에서 사용 가능한 최신 버전으로 업그레이드되는 것은 놀라운 일이 아닙니다.
Apple은 어느 시점에서 Mach 2.5에서 3.0으로 전환했지만 마이크로커널 접근 방식을 따르지 않고 대신 모든 것을 프로세스 내에서 유지하기로 결정했습니다. Apple이 Lite를 사용했는지, 스칸디나비아 해커를 고용했는지, 운영 체제로 4.4 Lite를 채택했는지 확인할 수 없습니다. 그럴지는 의문이지만, 저는 Linux로 옮겨갔고 BSD/Mach 세계를 따르는 것을 중단했습니다.
1990년대 후반에 Apple의 Avie가 Linus(당시 이미 유명했던)를 고용하여 자녀를 위해 일하려 했다는 소문이 돌았지만 Linus는 Linux 작업을 계속하기로 결정했습니다.
역사를 떠나 이 페이지에서는 사용자 공간과 Mach/Unix 커널에 대해 설명합니다.
이 OSX 기록 차트를 찾았습니다.
답변2
유닉스 측에서는 OS X가다음 단계, 4.3BSD에서 파생되었으며 커널의 핵심 부분이 다음으로 대체되었습니다.마하.
NeXT 프로그래밍 API, 최종적으로는 다음으로 알려짐열린 단계, 이는 오늘날 OS X용 Cocoa API의 기초입니다. 1997년 Apple이 NeXT를 인수한 이후 두 API는 크게 달라졌습니다.전진 노력오픈 소스 API 호환 Cocoa 클론을 제공합니다.
여기에 고전적인 MacOS 호환성 API(Carbon이라고 함)를 추가하면 OS X 프로그래밍 인터페이스가 있습니다.
(OS
FreeBSD 커널 아이디어에 관해서는 다소 정확하지만, 그것을 보는 방법은 복잡하지 않습니다. 내가 말했듯이 원래 커널은 NeXT에서 나왔는데 NeXT는 4.3BSD와 Mach를 사용하여 첫 번째 커널을 조립했습니다. 이는 FreeBSD와 NeXTSTEP이 4.3BSD를 통해 일부 코드를 공유한다는 의미입니다.
OS X FreeBSD 기반 밈의 최근 소스는 두 가지가 있습니다. 첫째, Apple은 계속해서 BSD 세계(보통 FreeBSD)의 혁신을 빌리고 있습니다. 2. Apple은 FreeBSD 프로젝트 공동 창립자를 고용합니다.조던 허바드OS X의 첫 번째 공개 버전이 출시된 직후입니다.그는 2013년 6월부터 Apple에서 일하고 있습니다.
답변3
OSX에 고유한 Unix 버전이 있다는 말은 기술적으로 정확합니다.
BSD+ 요소다음 단계+ 사과 조정 = 다윈
다른 방법으로 변경하세요. 핫 퍼지/아이스크림만 주문(BSD) 견과류 추가(NeXTStep) 휘핑 크림과 체리 추가(Apple 플러그인 및 조정) = 핫 퍼지 선데(다윈)
그러나 BSD는 다른 BSD가 추가되는 기반이므로 BSD의 대부분이 Darwin에서 작동합니다(여기서 약간만 수정하면 됨).