Mac OS X nereden geliyor?


43

Mac sahipleriyle tartışırken, Mac OS X'in nereden geldiğine dair birkaç sürüm buldum. BSD'de bir kök olduğu bilinmektedir, fakat ne kadar ve nerede?

Bazıları Mac OS X’in bir FreeBSD çekirdeğine sahip olduğunu ve yukarıdaki işletim sistemlerini Mac işletim sistemine özgü yapan özelliklere sahip olduğunu söylüyor. (Sadece Hepsinden burada kullanıcı uygulamaları hakkında konuşan değil init, ls, cdve diğerleri. Binutils? )

Diğerleri Mac OS X'in Darwin çekirdeği, saf Mac ve OS hizmet programlarının BSD'den geldiğini söylüyor.

Gerçek nerde?


11
Bu sorunun başlığı gerçekten "Mac OS X'in nereden geldiği" olmalı, çünkü X'ten önceki tüm Mac OS sürümleri tamamen farklı bir unix tabanlı olmayan bir işletim sistemidir.
Sandy

1
@Sandy: Xes'i tamir etti
Warren Young

'Cehennem' önerecektim ama sonra Microsoft’un tatsız hafızasına ve onların korkunç biçimde “Windows” larına sahiptim. NeXTSTEP ve BSD hafıza bana doğru hizmet veriyorsa ve eminim ki cevapları not ediyorum.
Pryftan

Yanıtlar:


67

MacOS'un tarihi biraz daha karışık. Mach'ın bir Unix sistemi kurmanın daha hızlı bir yolu olarak dünyaya atılmasından dolayı 90'ların sonlarında bununla çok ilgilenmiştim.

Çekirdeğin kökeni biraz daha karmaşıktır.

Her şey AT&T'nin işletim sistemlerini bazı üniversitelere ücretsiz dağıtmasıyla başlıyor. Bu Unix, Berkeley'de kapsamlı bir şekilde geliştirildi ve Unix'in BSD varyasyonlarının temeli oldu ve "Hızlı Dosya Sistemi" (UFS) gibi birçok yeni yeniliği birleştirdi, sembolik bağlantılar ve soketler API'sini tanıttı. AT&T kendi yoluna gitti ve aynı zamanda System V'i kurdu.

Bu arada, araştırmalar devam etti ve bazı insanlar BSD'den gelen çalışmaları vakıf olarak kabul ettiler. CMU'da BSD çekirdeği birkaç yeni fikri prototiplemenin temeli olarak kullanıldı: iş parçacığı, sanal bellek sistemini kontrol etmek için bir API (takılabilir "çağrı cihazları" aracılığıyla - kullanıcı seviyesi mmap), bir çekirdek düzeyinde uzaktan işlem çağrı sistemi ve çoğu En önemlisi, bazı çekirdek seviyesindeki işlemlerin kullanıcı alanına taşınması fikridir. Bu Mach çekirdeği oldu.

Mmap'in Mach'dan gelip gelmediğinden ve daha sonra BSD tarafından kabul edilip edilmediğinden veya Mach yalnızca fikre öncülük ettiğinden ve BSD'nin Mach fikirlerine dayanarak kendi mmap'lerini eklediğinden emin değilim.

Her ne kadar Mach çekirdeği bir mikro çekirdek olarak tanımlansa da, 2.5 sürümüne kadar sadece iplik, mmap, mesaj iletme özelliklerini sağlayan ancak monolitik bir çekirdeği kaldıran bir sistemdi, tüm hizmetler çekirdek modunda çalışıyordu.

Bu sırada Rick Rashid (şimdi Microsoft'ta) ve Avie Tevanian (şimdi Apple'da), Unix'i hızlandıracak yeni bir fikir ortaya attı. Buradaki fikir, kullanıcı alanından kopyalanacak verileri dosya sistemini kullanan "sunuculara" aktarmak için mmap sistemi çağrısını kullanmaktı. Bu fikir temelde aynı verilerin kopyalarını yapmaktan kaçınmaya çalışmanın bir çeşitlemesiydi, ancak özellik bir mikro çekirdekten izole edilebilse bile, mikro çekirdeğin bir yararı olarak gösterildi.

Bu VM destekli hızlı Unix sisteminin referansları, NeXT ve FSF'deki insanları Mach için çekirdeklerinin temeli olarak kullanmaya iten şeydi.

NeXT, Mach 2.5 çekirdeğiyle (BSD 4.2 veya 4.3'e dayanarak) gitti ve GNU aslında yıllarca çalışmaya başlamayacaktı. NeXTSTEP işletim sistemlerinin kullandığı şey buydu.

Bu arada CMU'da Mach devam etti ve nihayet 3.0 sürümünde bir mikro çekirdeğin üzerinde çalışan birden fazla sunucunun vizyonunu gerçekleştirdiler. Vahşi doğada hiç kimsenin Mach 3.0'ı AT&T kodunu kullanan ilginç kullanıcı seviyeli sunucular olarak çalıştırabilmesinin farkında değilim.

Bu süre zarfında Jolitz ekibi 386 mimarisine 4.3+ BSD limanı yapmıştı ve DrDobbs'daki taşıma çabalarını yayınladı. 386BSD aktif olarak sürdürülmedi ve NetBSD ekibi 386BSD'yi devam ettirmek ve ilerletmek için bir grup ortaya çıktı. NetBSD grubundaki iç kavgalar ilk bölünmeye neden oldu ve FreeBSD bunun dışında oluştu. O sırada NetBSD, platformlar arası bir BSD'ye odaklanmak istedi ve FreeBSD, x86 platformlarında harika olan bir Unix'e odaklanmak istedi. Biraz sonra, NetBSD diğer anlaşmazlıklar nedeniyle tekrar ayrıldı ve bu da OpenBSD'nin oluşmasına yol açtı.

X86 platformları için BSD 4.3'ün bir çatalı BSDi adlı bir şirketle ticari oldu ve orjinal Berkeley ekibinin çeşitli üyeleri orada çalıştı ve Üniversitede BSD takımıyla iyi ilişkiler kurdu.

AT&T hiç eğlenmedi ve daha sonra Üniversiteye dava açacak şekilde genişletilen AT & T'ye karşı BSDi davası başlattı. Dava, AT & T'nin Berkeley tarafından yeniden yazılmamış özel kodunu kullanarak BSDi hakkındaydı. Bu, BSD'yi gelecekteki Linux işletim sistemine kıyasla geri getirdi.

Sanıklar için işler iyi gözükmese de, bir noktada birisi SystemV'nin BSD lisansı altında büyük BSD kodu kodları eklediğini ve AT&T'nin lisanstaki yükümlülüklerini yerine getirmediğini fark etti. AT&T'nin ürünlerini piyasadan çekmek zorunda kalmayacağı bir uzlaşmaya varıldı ve Üniversite hala AT&T koduna dayanabilecek herhangi bir kodu çıkarmayı kabul etti.

Üniversite daha sonra şifrelenmiş BSD 4.4 ve 4.4 lite'ın iki versiyonunu yayınladı. Kodlanan sürüm önyüklenir ve çalışır, ancak AT&T kodunu içerir. Lite sürümü AT&T’den herhangi bir kod içermiyor, ancak işe yaramadı.

Çeşitli BSD çalışmaları, yeni 4.4 lite sürümünün üstündeki çalışmalarını tekrar yaptı ve aylar içinde bir önyükleme sistemine sahip oldu.

Bu arada, Mach 3.0 mikro çekirdeği, hiçbir kullanıcı ülkesi sunucusu olmadan çok kullanışlı değildi.

İskandinav bir üniversiteden bir öğrenci (inanıyorum ki bu yanlış olabilir sanırım), 4.4 lite sürümüne dayanan tam bir işletim sistemi ile tam bir Mach 3.0 sistemi yaratan ilk kişi oldu, bunun "Lites" olarak adlandırıldığına inanıyorum. Sistem çalıştı, ancak yavaştı.

1992-1996 döneminde ve şimdiye dek BSD zaten birçok Unix sisteminin yanı sıra mmap () sistem çağrısı yaptı. Orada olmayan "mikro çekirdek avantajı" hiçbir zaman meyve vermedi. NeXT hala monolitik bir çekirdeğe sahipti. FSF hala Mach'ı kurmaya çalışıyordu ve BSD koduna dokunmak istemiyordu ya da açık kaynaklı BSD çabalarının herhangi birine katkıda bulunmak istemiyorlardı, kötü tanımlanmış bir çekirdek vizyonunda şarj olmaya devam ediyorlardı ve kendileri için RPC protokollerini boğuyorlardı. çekirdek. Mikro çekirdek kağıt üzerinde harika görünüyordu, ancak üzerinde fazla çalıştığı ortaya çıktı ve her şeyi daha da yavaşlattı.

Bu noktada, Linus vs Andy'nin mikro çekirdeğe karşı monolitik çekirdeğe karşı tartışması vardı ve dünya, tüm bu ekstra döngüleri bir mikro çekirdeğe eklemenin ve hala iyi tasarlanmış bir monolitik çekirdeğin önüne geçmenin imkansız olduğunu fark etmeye başladı. .

Apple henüz NeXTSTEP'i satın almamıştı, aynı zamanda Mach'ı gelecekteki işletim sistemleri için potansiyel bir çekirdek olarak görmeye başlamıştı. Linux'u Mach çekirdeğine taşımak için Open Software Foundation'ı kiraladılar ve bu Grenoble ofislerinden yapıldı, buna "mklinux" denildiğine inanıyorum.

Apple, NeXT'i ellerinde bulundurduklarını satın aldıklarında, nispeten eski bir Unix vakfıydı, 4.2 ya da 4.3 tabanlı bir Unix'ti ve şimdiye kadar, özgür yazılım bile bu sistemlerdeki kutusundan çıkmadı. Unix yığınlarını yükseltmek için Jordan Hubbard'ı FreeBSD'den uzaklaştırdılar. Ekibi, kullanıcı toprağını yükseltmekten sorumluydu ve MacOS kullanıcı alanının BSD'deki en son sürümlere yükseltilmesi şaşırtıcı değil.

Apple, Mach'larını bir noktada 2,5'ten 3,0'a değiştirdi, ancak mikro çekirdeğe yaklaşma ile devam etmemeye karar verdi ve her şeyi süreç içinde tuttu. Apple'ın Lites kullanıp kullanmadığını, iskandinavya korsanını işe alıp almadığını veya 4.4 lite'ı işletim sistemi olarak kabul edip etmediklerini onaylayamadım. Yaptıklarından şüpheleniyorum ama Linux'a çoktan geçtim ve BSD / Mach dünyasını izlemeyi bıraktım.

90'ların sonunda, Apple'daki Avie'nin, bu noktada zaten ünlü olan Linus'u bebeği üzerinde çalışmak için işe almaya çalıştığına dair bir söylenti vardı, ancak Linus, Linux üzerinde çalışmaya devam etmeyi seçti.

Tarihçe bir yana, bu sayfa kullanıcı alanını ve Mach / Unix çekirdeğini açıklar:

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

OSX tarihinin bu grafiğini buldum: alt metin


FSF’deki Stallman’ın Mach’ın peşinden koşmasının temel nedeni performans değildi ama bir hata ayıklayıcı kullanmanın kolay olmasıydı: Mach sunucularını hata ayıklamak için çekirdek uzayında çalışan hata ayıklamadan çok daha kolay hata ayıklamak için kullanabilirdi. Belki de onu ikna eden performans olmasına rağmen, bunu uygulamak için uygun bir yol oldu.
Ağustos'ta atlayın

4
Gerçek bir mikro çekirdeği çalışırken görmek istiyorsanız, QNX'i deneyin. QNX4'te, çekirdek yalnızca 32 K-byte'dı ve yalnızca iletilen iletiler, CPU zamanlaması ve kesmeler yapıldı. QNX OS'nin diğer tüm parçaları, sistemi kapatmadan veya yeniden başlatmadan çıkarılabilir ve son derece sağlamdır. Bir zamanlar, Windows uygulamalarını yerel pencerelerden daha hızlı çalıştıran Willows adlı QNX için bir pencere emülatörü vardı. Bunun OS-X ile hiçbir ilgisi olmasa da, QNX mikro çekirdeklerin doğru yapıldığında gerçekten uygulanabilir olduğunu kanıtladı.

20
Resim artık mevcut değil.
Hermann Ingjaldsson

7
Resim hala kullanılamıyor
Sildoreth

Steve Jobs Linus'a 2000 yılında bir iş teklif etti. Linus burada bunun hakkında konuşuyor. wired.com/2012/03/mr-linux/all/1
Alistair McMillan

24

Unix tarafında, OS X, çekirdeğin çekirdek kısımları Mach ile değiştirilen 4.3BSD'den türetilmiş olan NeXTSTEP'in soyundan gelmektedir .

Sonunda OpenStep olarak adlandırılan NeXT programlama API'sı, OS X için günümüzün Cocoa API'sinin temelidir. Apple, 1997'de NeXT'yi satın aldığından bu yana iki API büyük ölçüde farklılaştı, ancak açık kaynaklı API uyumlu Cocoa klonları sağlama çabaları devam ediyor. .

Buna Carbon adı verilen Klasik MacOS uyumluluk API'sını ekleyin ve OS X programlama arayüzünüz var.

(OS X'te daha pek çok şey var, ancak bunlar hepsinin üzerinde uygulamalar. Finder, BSD ve GNU userland tools, vb.)

FreeBSD çekirdeği fikrine gelince, sorta doğru, ama buna bakmak için karmaşık olmayan bir yöntem. Orijinal çekirdek, dediğim gibi, ilk çekirdeğini 4.3BSD ve Mach'dan birleştiren NeXT'den geldi. Bu, FreeBSD ve NeXTSTEP'in 4.3BSD aracılığıyla bazı kodları paylaştığı anlamına gelir.

OS X'in FreeBSD'ye dayandığı meme, iki yeni kaynağa daha sahip. İlk olarak, Apple, BSD dünyasından, genellikle FreeBSD'den yenilikler almaya devam etti. İkincisi, Apple , ilk kamu OS X sürümünü çıkardıktan kısa bir süre sonra FreeBSD proje kurucusu Jordan Hubbard'ı işe aldı . Apple için Haziran 2013’e kadar çalıştı.


0

OSX'in kendine özgü bir Unix tadı olduğu söylendiğinde teknik olarak doğrular.

NeXTSTEP + Apple Tweaks'ten BSD + Elemanları = DARWIN

Başka bir deyişle. Sadece Hot Fudge / dondurma siparişi (BSD) Fındık (NeXTStep) artı çırpılmış krema ve vişne (Elma Eklentisi ve tweaks) = A Hot Fudge Sundae (Darwin) ekleyin

Ancak, BSD diğerlerinin eklendiği temeldir ve bu nedenle BSD’nin büyük bir kısmı Darwin’de çalışacaktır (burada bir tweak ile).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.