Dari mana datangnya Mac OS X?

43

Membahas dengan pemilik Mac, saya mendapatkan beberapa versi dari mana Mac OS X berasal. Diketahui memiliki beberapa root di BSD, tetapi berapa banyak, dan di mana?

Ada yang mengatakan bahwa Mac OS X memiliki kernel FreeBSD, dengan semua utilitas di atas yang menjadikannya OS yang spesifik untuk Mac. (Tidak berbicara tentang aplikasi pengguna di sini, hanya semua init, ls, cd, dan lain-lain. Binutils? )

Yang lain mengatakan Mac OS X adalah kernel Darwin, itu adalah Mac murni, dan bahwa utilitas OS berasal dari BSD.

Dimana kebenarannya?

Didier Trosset
sumber
11
Judul pertanyaan ini harus benar-benar "Dari mana Mac OS X berasal", karena semua versi Mac OS sebelum X adalah sistem operasi yang sepenuhnya berbasis non-unix.
Sandy
1
@Sandy: memperbaiki Xes
Warren Young
Saya akan menyarankan 'neraka' tetapi kemudian saya memiliki memori yang tidak menyenangkan dari Microsoft dan 'Windows' mereka yang mengerikan ... Selain itu? NeXTSTEP dan BSD jika ingatanku benar dan aku yakin jawabannya perhatikan itu.
Pryftan

Jawaban:

67

Sejarah MacOS sedikit lebih berbelit-belit. Saya sangat tertarik dengan hal ini pada akhir tahun 90-an karena Mach telah dikenal di seluruh dunia sebagai cara yang lebih cepat untuk membangun sistem Unix.

Asal usul kernel sedikit lebih rumit.

Semuanya dimulai dengan AT&T mendistribusikan sistem operasi mereka ke beberapa universitas secara gratis. Unix ini ditingkatkan secara luas di Berkeley dan menjadi fondasi untuk variasi BSD Unix dan memasukkan beberapa inovasi baru seperti "Fast File System" (UFS), memperkenalkan symlink dan sockets API. AT&T melanjutkan dengan caranya sendiri dan membangun Sistem V pada saat yang sama.

Sementara itu, penelitian berlanjut dan beberapa orang mengadopsi karya dari BSD sebagai yayasan. Di CMU, kernel BSD digunakan sebagai dasar untuk membuat prototipe beberapa ide baru: utas, API untuk mengontrol sistem memori virtual (melalui "pager" pluggable - mmap tingkat pengguna), sistem panggilan prosedur tingkat jauh kernel dan sebagian besar penting gagasan memindahkan beberapa operasi tingkat kernel ke ruang pengguna. Ini menjadi kernel Mach.

Saya tidak 100% yakin apakah mmap berasal dari Mach, dan kemudian diadopsi oleh BSD, atau jika Mach hanya memelopori gagasan itu dan BSD menambahkan mmap mereka sendiri berdasarkan pada gagasan Mach.

Meskipun kernel Mach dideskripsikan sebagai micro-kernel, hingga versi 2.5 itu hanyalah sebuah sistem yang menyediakan fitur thread, mmap, pesan lewat tetapi tetap menjadi kernel monolitik, semua layanan berjalan pada mode kernel.

Pada saat ini Rick Rashid (sekarang di Microsoft) dan Avie Tevanian (sekarang di Apple) telah datang dengan ide baru yang dapat mempercepat Unix. Idenya adalah menggunakan panggilan sistem mmap untuk meneruskan data yang akan disalin dari ruang pengguna ke "server" yang menerapkan sistem file. Gagasan ini pada dasarnya merupakan variasi dari upaya untuk menghindari membuat salinan dari data yang sama, tetapi itu dimasukkan sebagai manfaat dari kernel mikro, bahkan jika fitur tersebut dapat diisolasi dari kernel mikro.

Benchmark sistem Unix yang didukung VM lebih cepat inilah yang mendorong orang-orang di NeXT dan di FSF untuk memilih Mach sebagai fondasi untuk kernel mereka.

NeXT menggunakan kernel Mach 2.5 (yang didasarkan pada BSD 4.2 atau 4.3) dan GNU tidak akan benar-benar mulai bekerja selama bertahun-tahun. Inilah yang digunakan sistem operasi NeXTSTEP.

Sementara itu di CMU, pekerjaan dilanjutkan pada Mach dan mereka akhirnya menyadari visi memiliki beberapa server yang berjalan di atas kernel mikro dengan versi 3.0. Saya tidak mengetahui ada orang di alam liar yang dapat menjalankan Mach 3.0 karena semua server tingkat pengguna yang menarik menggunakan kode AT&T sehingga mereka dianggap terbebani, sehingga tetap merupakan produk penelitian.

Sekitar waktu ini tim Jolitz telah melakukan port 4.3+ BSD ke arsitektur 386 dan menerbitkan upaya porting mereka di DrDobbs. 386BSD tidak dipelihara secara aktif dan sebuah kelompok muncul untuk mempertahankan dan memajukan 386BSD, tim NetBSD. Perkelahian internal di dalam kelompok NetBSD menyebabkan perpecahan pertama dan FreeBSD terbentuk dari ini. NetBSD pada saat itu ingin fokus pada memiliki cross-platform BSD, dan FreeBSD ingin fokus pada memiliki Unix yang sangat bagus pada platform x86. Beberapa saat kemudian, NetBSD berpisah lagi karena beberapa perselisihan lain dan ini mengarah pada penciptaan OpenBSD.

Garpu BSD 4.3 untuk platform x86 menjadi komersial dengan sebuah perusahaan bernama BSDi, dan berbagai anggota tim Berkeley asli bekerja di sana dan menjaga hubungan baik dengan tim BSD di Universitas.

AT&T tidak merasa geli dan memulai gugatan AT&T vs BSDi, yang kemudian diperluas untuk menuntut Universitas juga. Gugatan itu tentang BSDi menggunakan kode kepemilikan dari AT&T yang belum ditulis ulang oleh Berkeley. Ini mengatur kembali BSD dibandingkan dengan sistem operasi Linux yang akan datang.

Meskipun hal-hal tidak terlihat baik bagi para terdakwa, pada titik tertentu seseorang menyadari bahwa SystemV telah memasukkan potongan besar kode BSD di bawah lisensi BSD dan AT&T belum memenuhi kewajiban mereka dalam lisensi. Penyelesaian dicapai di mana AT&T tidak perlu menarik produk mereka dari pasar, dan Universitas setuju untuk mencabut kode apa pun yang masih bisa didasarkan pada kode AT&T.

Universitas kemudian merilis dua versi BSD 4.4 yang dibebani dan 4.4 lite. Versi yang dibebani akan boot dan dijalankan, tetapi berisi kode AT&T. Versi lite tidak mengandung kode apa pun dari AT&T tetapi tidak berfungsi.

Berbagai upaya BSD kembali melakukan pekerjaan mereka di atas rilis 4.4 lite baru dan memiliki sistem boot dalam beberapa bulan.

Sementara itu, kernel mikro Mach 3.0 tetap tidak terlalu berguna tanpa server pengguna-tanah.

Seorang siswa dari universitas Skandinavia (saya percaya, saya mungkin salah) adalah yang pertama membuat sistem Mach 3.0 lengkap dengan OS lengkap berdasarkan rilis 4.4 lite, saya percaya ini disebut "Lites". Sistem bekerja, tetapi lambat.

Selama 1992-1996 dan sekarang BSD sudah memiliki panggilan sistem mmap () serta sebagian besar sistem Unix lainnya. "Keuntungan kernel mikro" yang tidak ada di sana, tidak pernah benar-benar membuahkan hasil. NeXT masih memiliki kernel monolitik. FSF masih berusaha untuk membuat Mach untuk membangun, dan tidak ingin menyentuh kode BSD atau berkontribusi pada salah satu upaya BSD open source, mereka terus mengisi dengan visi kernel yang tidak ditentukan dengan baik dan mereka tenggelam pada protokol RPC untuk mereka sendiri. inti. Kernel mikro tampak hebat di atas kertas, tetapi ternyata lebih direkayasa dan membuat segalanya lebih lambat.

Pada titik ini kami juga mengadakan debat Linus vs Andy mengenai kernel mikro vs kernel monolitik dan dunia mulai menyadari bahwa tidak mungkin untuk menambahkan semua siklus tambahan ke kernel mikro dan masih unggul dari kernel monolitik yang dirancang dengan baik. .

Apple belum mengakuisisi NeXTSTEP, tetapi juga mulai melihat Mach sebagai kernel potensial untuk sistem operasi masa depan mereka. Mereka menyewa Open Software Foundation untuk mengirim Linux ke kernel Mach, dan ini dilakukan di luar kantor Grenoble mereka, saya percaya ini disebut "mklinux".

Ketika Apple membeli NeXT, apa yang mereka miliki adalah fondasi Unix yang relatif lama, Unix yang berbasis 4.2 atau 4.3 dan sekarang, bahkan perangkat lunak bebas pun tidak berjalan baik di sistem itu. Mereka menyewa Jordan Hubbard dari FreeBSD untuk meningkatkan tumpukan Unix mereka. Timnya bertanggung jawab untuk memutakhirkan lahan pengguna, dan tidak mengherankan bahwa lahan pengguna MacOS ditingkatkan ke versi terbaru yang tersedia di BSD.

Apple memang mengubah Mach mereka dari 2.5 ke 3.0 di beberapa titik, tetapi memutuskan untuk tidak pergi dengan pendekatan micro-kernel dan malah menjaga semuanya dalam proses. Saya tidak pernah dapat mengkonfirmasi apakah Apple menggunakan Lites, merekrut peretas skandinavia, atau jika mereka mengadopsi 4.4 lite sebagai OS mereka. Saya menduga mereka melakukannya, tetapi saya sudah pindah ke Linux dan telah berhenti melacak dunia BSD / Mach.

Ada desas-desus di akhir 90-an bahwa Avie di Apple mencoba mempekerjakan Linus (yang sudah terkenal saat ini) untuk mengerjakan bayinya, tetapi Linus memilih untuk terus bekerja di Linux.

Selain sejarah, halaman ini menjelaskan tentang userland dan kernel Mach / Unix:

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

Saya menemukan grafik sejarah OSX ini: teks alternatif

miguel.de.icaza
sumber
Menurut pemahaman saya, alasan utama Stallman di FSF mengejar Mach bukan karena kinerja tetapi kemudahan menggunakan debugger: ia bisa menggunakan debugger untuk men-debug server Mach jauh lebih mudah daripada kode debug yang berjalan di ruang kernel. Meskipun mungkin itu kinerja yang meyakinkannya bahwa ini adalah cara yang layak untuk diterapkan.
skiphoppy
4
Jika Anda benar-benar ingin melihat microkernel yang benar sedang beraksi, cobalah QNX. Di QNX4, kernel hanya 32 K-byte, dan hanya menangani pengiriman pesan, penjadwalan CPU, dan interupsi. Semua bagian lain dari OS QNX dapat ditukar keluar tanpa mematikan atau me-reboot sistem, dan itu sangat kuat. Pada suatu waktu ada emulator jendela untuk QNX yang disebut Willows yang menjalankan aplikasi windows lebih cepat dari windows asli. Sementara ini tidak ada hubungannya dengan OS-X per se, QNX membuktikan bahwa microkernels memang layak jika dilakukan dengan benar.
20
gambar tidak lagi tersedia.
Hermann Ingjaldsson
7
Gambar masih belum tersedia
Sildoreth
Steve Jobs menawarkan pekerjaan kepada Linus pada tahun 2000. Linus membicarakannya di sini. wired.com/2012/03/mr-linux/all/1
Alistair McMillan
24

Di sisi Unix, OS X adalah turunan dari NeXTSTEP , yang diturunkan dari 4.3BSD dengan bagian inti dari kernel diganti dengan Mach .

API pemrograman NeXT, yang akhirnya disebut OpenStep , adalah dasar dari Cocoa API hari ini untuk OS X. Dua API telah sangat berbeda sejak Apple membeli NeXT pada tahun 1997, meskipun ada upaya yang berkelanjutan untuk menyediakan klon Kakao yang kompatibel dengan API open source yang kompatibel dengan API. .

Tambahkan ke API kompatibilitas Classic MacOS, yang disebut Carbon, dan Anda memiliki antarmuka pemrograman OS X.

(Ada banyak lagi untuk OS X, tetapi mereka aplikasi di atas semua ini: Finder, alat BSD dan GNU userland, dll.)

Adapun ide kernel FreeBSD, itu agak benar, tetapi itu adalah cara yang tidak canggih untuk melihatnya. Kernel asli datang, seperti yang saya katakan, dari NeXT, yang mengumpulkan kernel pertama mereka dari 4.3BSD dan Mach. Ini berarti bahwa FreeBSD dan NeXTSTEP membagikan beberapa kode melalui 4.3BSD.

Meme yang OS X didasarkan pada FreeBSD memiliki dua sumber lebih baru. Pertama, Apple terus meminjam inovasi dari dunia BSD, biasanya dari FreeBSD. Kedua, Apple menyewa co-founder proyek FreeBSD Jordan Hubbard tak lama setelah membuat rilis OS X publik pertama. Dia bekerja untuk Apple hingga Juni 2013.

Warren Young
sumber
0

Ketika Anda diberi tahu OSX memiliki rasa Unix sendiri, secara teknis mereka benar.

BSD + Elemen dari NeXTSTEP + Apple Tweaks = DARWIN

Dengan kata lain. Hanya memesan Hot Fudge / ice cream (BSD) tambahkan Nuts (NeXTStep) plus whip cream dan cherry (Apel Add-in dan tweak) = A Hot Fudge Sundae (Darwin)

Tetapi BSD adalah pangkalan yang ditambahkan oleh orang lain, itulah sebabnya banyak dari BSD akan berfungsi di Darwin (dengan tweak di sana-sini)

Tweety Bird
sumber