Mac OS X มาจากไหน


43

พูดคุยกับเจ้าของ Mac ฉันได้หลายรุ่นมาจากที่ Mac OS X เป็นที่ทราบกันดีว่ามีรูทบางอย่างใน BSD แต่มีจำนวนเท่าใดและที่ไหน

บางคนบอกว่า Mac OS X มีเคอร์เนล FreeBSD พร้อมด้วยยูทิลิตี้ทั้งหมดข้างต้นที่ทำให้เป็นระบบปฏิบัติการสำหรับ Mac โดยเฉพาะ (ไม่พูดเกี่ยวกับปพลิเคชันที่ผู้ใช้ที่นี่เท่านั้นทั้งหมดของinit, ls, cdและอื่น ๆ . binutils? )

บางคนบอกว่า Mac OS X เป็นเคอร์เนลดาร์วินซึ่งเป็น Mac ที่บริสุทธิ์และยูทิลิตี้ระบบปฏิบัติการนั้นมาจาก BSD

ความจริงอยู่ที่ไหน


11
ชื่อของคำถามนี้ควรเป็น "Mac OS X มาจากไหน" เนื่องจาก Mac OS ทุกรุ่นก่อนหน้า X นั้นเป็นระบบปฏิบัติการที่ไม่ได้ใช้ยูนิกซ์
Sandy

1
@Sandy: แก้ไข Xes
Warren Young

ฉันจะแนะนำ 'นรก' แต่แล้วฉันก็มีความทรงจำอันไม่พึงประสงค์ของ Microsoft และ 'Windows' ที่น่ากลัวของพวกเขา ... นอกเหนือจากนั้น? NeXTSTEP และ BSD ถ้าหน่วยความจำทำหน้าที่ฉันถูกและฉันแน่ใจว่าคำตอบทราบว่า
Pryftan

คำตอบ:


67

ประวัติของ MacOS นั้นซับซ้อนกว่าเล็กน้อย ฉันสนใจสิ่งนี้มากในช่วงปลายยุค 90 เนื่องจากมัคได้รับการแหลมทั่วโลกเพื่อสร้างระบบ Unix ที่เร็วขึ้น

ที่มาของเคอร์เนลนั้นซับซ้อนกว่าเล็กน้อย

ทุกอย่างเริ่มต้นจาก AT&T กระจายระบบปฏิบัติการไปยังมหาวิทยาลัยบางแห่งฟรี Unix นี้ได้รับการปรับปรุงอย่างกว้างขวางที่ Berkeley และกลายเป็นรากฐานสำหรับการเปลี่ยนแปลง BSD ของ Unix และรวมเอานวัตกรรมใหม่หลายอย่างเช่น "Fast File System" (UFS), symlink ที่แนะนำและ sockets API AT&T ดำเนินการด้วยตนเองและสร้าง System V ในเวลาเดียวกัน

ในขณะเดียวกันการวิจัยยังคงดำเนินต่อไปและบางคนก็นำงานจาก BSD มาเป็นพื้นฐาน ที่ CMU เคอร์เนล BSD ถูกใช้เป็นรากฐานสำหรับการสร้างต้นแบบแนวคิดใหม่ไม่กี่อย่าง: เธรด, API เพื่อควบคุมระบบหน่วยความจำเสมือน (ผ่านทาง "pagers" - ผู้ใช้ระดับ mmap), ระบบเรียกโพรซีเดอร์ระยะไกลระดับเคอร์เนลและส่วนใหญ่ ที่สำคัญแนวคิดของการย้ายการดำเนินการระดับเคอร์เนลไปยังพื้นที่ผู้ใช้ นี่กลายเป็นมัคเคอร์เนล

ฉันไม่แน่ใจ 100% ถ้า mmap มาจาก Mach และภายหลังได้รับการรับรองจาก BSD หรือถ้า Mach เป็นผู้บุกเบิกความคิดและ BSD เพิ่ม mmap ของตัวเองตามความคิดของ Mach

แม้ว่าเคอร์เนล Mach ถูกอธิบายว่าเป็นไมโครเคอร์เนลจนถึงเวอร์ชัน 2.5 แต่เป็นเพียงระบบที่ให้เธรด mmap คุณลักษณะการส่งข้อความ แต่ยังคงเป็นเคอร์เนลเสาหินบริการทั้งหมดทำงานบนโหมดเคอร์เนล

ในเวลานี้ Rick Rashid (ตอนนี้ที่ Microsoft) และ Avie Tevanian (ตอนนี้ที่ Apple) ได้เกิดแนวคิดใหม่ที่สามารถเร่งความเร็ว Unix ได้ แนวคิดคือการใช้การเรียกระบบ mmap เพื่อส่งผ่านข้อมูลที่จะคัดลอกจากพื้นที่ผู้ใช้ไปยัง "เซิร์ฟเวอร์" ที่ใช้ระบบไฟล์ ความคิดนี้เป็นรูปแบบที่แตกต่างกันของการพยายามหลีกเลี่ยงการทำสำเนาของข้อมูลเดียวกัน แต่มันถูกตั้งค่าเป็นประโยชน์ของเมล็ดขนาดเล็กแม้ว่าคุณลักษณะนั้นสามารถแยกได้จากเคอร์เนลขนาดเล็ก

มาตรฐานของระบบ Unix ที่เร็วขึ้นซึ่งสนับสนุนโดย VM คือสิ่งที่ผลักดันผู้คนใน NeXT และที่ FSF ให้เลือกมัคเป็นพื้นฐานสำหรับเมล็ดของพวกเขา

NeXT ไปพร้อมกับเคอร์เนล Mach 2.5 (ซึ่งอิงจาก BSD 4.2 หรือ 4.3) และ GNU จะไม่เริ่มทำงานจริงเป็นเวลาหลายปี นี่คือสิ่งที่ระบบปฏิบัติการ NeXTSTEP ใช้

ในขณะที่ CMU ทำงานอย่างต่อเนื่องกับ Mach และในที่สุดพวกเขาก็ตระหนักถึงวิสัยทัศน์ของการมีเซิร์ฟเวอร์หลายตัวที่ทำงานบนไมโครเคอร์เนลด้วยเวอร์ชัน 3.0 ฉันไม่ทราบว่าใครก็ตามที่อยู่ในสภาวะปกติสามารถเรียกใช้ Mach 3.0 ได้เนื่องจากเซิร์ฟเวอร์ระดับผู้ใช้ที่น่าสนใจทั้งหมดใช้รหัส AT&T ดังนั้นพวกเขาจึงถูกพิจารณาว่ามีการเข้ารหัส

ในช่วงเวลานี้ทีมงาน Jolitz ได้ทำพอร์ต 4.3+ BSD ไปยังสถาปัตยกรรม 386 แห่งและเผยแพร่ความพยายามในการย้ายพอร์ตของพวกเขาใน DrDobbs 386BSD ไม่ได้รับการบำรุงรักษาอย่างแข็งขันและกลุ่มหนึ่งปรากฏตัวขึ้นเพื่อรักษาและเคลื่อนย้ายไปข้างหน้า 386BSD ซึ่งเป็นทีม NetBSD การต่อสู้ภายในของกลุ่ม NetBSD ทำให้เกิดการแตกครั้งแรกและ FreeBSD ถูกสร้างขึ้นจากสิ่งนี้ NetBSD ในเวลานั้นต้องการที่จะมุ่งเน้นไปที่การมี BSD ข้ามแพลตฟอร์มและ FreeBSD ต้องการที่จะมุ่งเน้นไปที่การมี Unix ที่ทำได้ดีบนแพลตฟอร์ม x86 เล็กน้อยภายหลัง NetBSD แยกอีกเนื่องจากข้อพิพาทอื่น ๆ และนำไปสู่การสร้าง OpenBSD

ทางแยกของ BSD 4.3 สำหรับแพลตฟอร์ม x86 ไปทำการค้ากับ บริษัท ชื่อ BSDi และสมาชิกหลายคนของทีม Berkeley ดั้งเดิมทำงานที่นั่นและรักษาความสัมพันธ์ที่ดีกับทีม BSD ที่มหาวิทยาลัย

AT&T ไม่สนุกและเริ่มต้นการฟ้องร้องของ AT&T กับ BSDi ซึ่งต่อมาถูกขยายออกไปฟ้องมหาวิทยาลัยเช่นกัน คดีดังกล่าวเกี่ยวกับ BSDi โดยใช้รหัสที่เป็นกรรมสิทธิ์จาก AT&T ที่ไม่ได้เขียนขึ้นใหม่โดย Berkeley ชุดนี้กลับ BSD เมื่อเทียบกับระบบปฏิบัติการ Linux ที่กำลังจะมาถึง

ถึงแม้สิ่งต่าง ๆ จะดูไม่ดีต่อจำเลย แต่ในบางครั้งมีคนรู้ว่า SystemV ได้รวมรหัส BSD จำนวนมากภายใต้ใบอนุญาต BSD และ AT&T ไม่ปฏิบัติตามภาระหน้าที่ในใบอนุญาต ถึงข้อตกลงที่ AT&T ไม่จำเป็นต้องดึงผลิตภัณฑ์ออกจากตลาดและมหาวิทยาลัยตกลงที่จะคัดลอกรหัสใด ๆ ที่อาจยังคงใช้รหัส AT&T

มหาวิทยาลัยได้เปิดตัว BSD 4.4 สองรุ่นที่มีการเข้ารหัสและ 4.4 lite เวอร์ชันที่เข้ารหัสจะบู๊ตและรัน แต่มีรหัส AT&T รุ่น lite ไม่มีรหัสใด ๆ จาก AT&T แต่ไม่ทำงาน

ความพยายามของ BSD ที่หลากหลายได้ทำการทำงานอีกครั้งบนการเปิดตัว 4.4 lite ใหม่และมีระบบบูทภายในไม่กี่เดือน

ในขณะเดียวกัน Mach 3.0 micro kernel ยังคงมีประโยชน์ไม่มากหากไม่มีเซิร์ฟเวอร์ของผู้ใช้

นักเรียนจากมหาวิทยาลัยสแกนดิเนเวีย (ฉันเชื่อว่าฉันอาจผิดพลาด) เป็นคนแรกที่สร้างระบบ Mach 3.0 เต็มรูปแบบด้วยระบบปฏิบัติการที่สมบูรณ์ตามการเปิดตัว 4.4 lite ฉันเชื่อว่านี่เรียกว่า "Lites" ระบบทำงานได้ แต่ช้า

ในช่วงปี 1992-1996 และในขณะนี้ BSD มีการเรียกระบบ mmap () เช่นเดียวกับระบบ Unix อื่น ๆ ส่วนใหญ่ "ความได้เปรียบของเคอร์เนลไมโคร" ที่ไม่ได้อยู่ที่นั่นไม่เคยเกิดขึ้นจริง NeXT ยังคงมีเคอร์เนลเสาหิน FSF ยังคงพยายามให้มัคสร้างและไม่ต้องการสัมผัสรหัส BSD หรือสนับสนุนความพยายามของโอเพ่นซอร์ส BSD ใด ๆ พวกเขายังคงเรียกเก็บเงินจากเคอร์เนลที่ระบุไว้ไม่ดีและพวกเขาก็จมอยู่ในโปรโตคอล RPC ด้วยตนเอง เมล็ด ไมโครเคอร์เนลดูดีมากบนกระดาษ แต่กลับกลายเป็นวิศวกรรมที่ผ่านมาและทำให้ทุกอย่างช้าลง

ณ จุดนี้เรายังมี Linus vs Andy ถกเถียงเรื่อง micro-kernels กับ monolithic kernels และโลกก็เริ่มตระหนักว่ามันเป็นไปไม่ได้ที่จะเพิ่มรอบพิเศษเหล่านั้นทั้งหมดลงใน micro kernel และยังมาก่อนหน้าของ monolithic kernel ที่ออกแบบมาอย่างดี .

Apple ยังไม่ได้ซื้อ NeXTSTEP แต่ก็เริ่มมองว่า Mach เป็นเคอร์เนลที่มีศักยภาพสำหรับระบบปฏิบัติการในอนาคต พวกเขาจ้าง Open Software Foundation เพื่อย้าย Linux ไปยังเคอร์เนล Mach และสิ่งนี้ทำจากสำนักงาน Grenoble ของพวกเขาฉันเชื่อว่านี่เรียกว่า "mklinux"

เมื่อ Apple ซื้อ NeXT สิ่งที่พวกเขามีอยู่นั้นเป็นรากฐานของ Unix ที่ค่อนข้างเก่าซึ่งเป็น Unix ที่ใช้ 4.2 หรือ 4.3 และในตอนนี้ไม่มีแม้แต่ซอฟต์แวร์ฟรีที่วิ่งออกมานอกกรอบในระบบเหล่านั้น พวกเขาจ้าง Jordan Hubbard จาก FreeBSD เพื่ออัพเกรด Unix stack ของพวกเขา ทีมของเขารับผิดชอบในการอัพเกรดพื้นที่ของผู้ใช้และไม่น่าแปลกใจเลยที่ผู้ใช้ MacOS จะได้รับการอัปเกรดเป็นรุ่นล่าสุดที่มีอยู่ใน BSD

Apple ได้เปลี่ยน Mach จาก 2.5 เป็น 3.0 ในบางจุด แต่ตัดสินใจที่จะไม่ใช้วิธี micro-kernel และเก็บทุกอย่างในกระบวนการแทน ฉันไม่สามารถยืนยันได้ว่า Apple ใช้ Lites จ้างแฮกเกอร์สแกนดิเนเวียหรือไม่หรือถ้าพวกเขาใช้ 4.4 lite เป็นระบบปฏิบัติการ ฉันสงสัยว่าพวกเขาทำ แต่ฉันได้ย้ายไปยัง 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 นี้: ข้อความแสดงแทน


ฉันเข้าใจว่าเหตุผลหลักที่ Stallman ที่ FSF ติดตาม Mach นั้นไม่ได้มีประสิทธิภาพ แต่ใช้งานตัวดีบักได้ง่าย: เขาสามารถใช้ตัวดีบักเพื่อดีบักเซิร์ฟเวอร์ Mach ได้ง่ายกว่าการดีบักรหัสที่ทำงานในพื้นที่เคอร์เนล แม้ว่ามันอาจเป็นการแสดงที่ทำให้เขาเชื่อว่านี่เป็นวิธีที่ปฏิบัติได้
skiphoppy

4
หากคุณต้องการเห็น microkernel จริงในการทำงานลอง QNX ใน QNX4 เคอร์เนลมีขนาดเพียง 32 K- ไบต์และจัดการเฉพาะการส่งข้อความการตั้งเวลา CPU และ interrups ส่วนอื่น ๆ ของ QNX OS สามารถสลับออกได้โดยไม่ต้องปิดเครื่องหรือรีบูตระบบและมันก็แข็งแกร่งมาก ครั้งหนึ่งมีตัวจำลองหน้าต่างสำหรับ QNX เรียกว่า Willows ที่รันแอปพลิเคชัน windows เร็วกว่า windows ดั้งเดิม ในขณะที่สิ่งนี้ไม่เกี่ยวข้องกับ OS-X ต่อ se, QNX พิสูจน์ว่า microkernels นั้นสามารถใช้ได้จริงเมื่อทำถูกต้อง

20
ภาพไม่สามารถใช้ได้อีก
Hermann Ingjaldsson

7
ยังไม่มีรูปภาพ
Sildoreth

Steve Jobs เสนองานให้ Linus ในปี 2000 Linus พูดถึงที่นี่ wired.com/2012/03/mr-linux/all/1
Alistair McMillan

24

ในด้านระบบปฏิบัติการยูนิกซ์ OS X เป็นลูกหลานของNeXTSTEPซึ่งได้มาจาก 4.3BSD กับชิ้นส่วนหลักของเคอร์เนลแทนที่ด้วยจักร

API การเขียนโปรแกรม NeXT ซึ่งต่อมาถูกเรียกว่าOpenStepเป็นพื้นฐานของ Cocoa API สำหรับ OS X ในปัจจุบันสอง API ได้แยกกันอย่างมากตั้งแต่ Apple ซื้อ NeXT ในปี 1997 แม้ว่าจะมีความพยายามอย่างต่อเนื่อง ในการจัดหาโคลนโกโก้ API แบบโอเพ่นซอร์ส .

เพิ่มเข้ากับ Classic MacOS API ที่เรียกว่า Carbon และคุณมีอินเตอร์เฟสการเขียนโปรแกรม OS X

(มีอีกมากมายสำหรับ OS X แต่แอปพลิเคชั่นเหนือสิ่งอื่นใด: เครื่องมือค้นหา BSD และ GNU userland เป็นต้น)

สำหรับแนวคิดเคอร์เนล FreeBSD มันถูกต้องแล้ว แต่เป็นวิธีที่ไม่ซับซ้อนในการดู เคอร์เนลดั้งเดิมมาดังที่ฉันพูดจาก NeXT ซึ่งประกอบเคอร์เนลแรกของพวกเขาจาก 4.3BSD และ Mach ซึ่งหมายความว่าทั้ง FreeBSD และ NeXTSTEP แบ่งปันรหัสบางส่วนผ่าน 4.3BSD

meme ที่ OS X ใช้กับ FreeBSD นั้นมีแหล่งข้อมูลล่าสุดอีกสองแหล่ง ก่อนอื่น Apple ได้ขอยืมนวัตกรรมจากโลก BSD อย่างต่อเนื่องโดยปกติจะมาจาก FreeBSD ประการที่สอง Apple ว่าจ้างผู้ร่วมก่อตั้งJordan Hubbardผู้ก่อตั้งโครงการ FreeBSD หลังจากเปิดตัว OS X สาธารณะครั้งแรก เขาทำงานให้กับ Apple จนถึงเดือนมิถุนายน 2013


0

เมื่อคุณบอกว่า OSX มีรสชาติของ Unix เป็นของตัวเอง

BSD + องค์ประกอบจากNeXTSTEP + Apple Tweaks = DARWIN

เพื่อนำไปใช้ในทางอื่น สั่งเฉพาะ Hot Fudge / ไอศกรีม (BSD) เพิ่ม Nuts (NeXTStep) พร้อมวิปครีมและเชอร์รี่ (Apple Add-in และ tweaks) = A Fudge Sundae (Darwin) ที่น่าสนใจ

แต่ BSD เป็นฐานที่คนอื่นเพิ่มเข้ามาซึ่งเป็นสาเหตุที่ BSD ส่วนใหญ่จะทำงานในดาร์วิน (ด้วยการบิดที่นี่และที่นั่น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.