กลับไปหน้าบทความ

อ่าน 6 นาที

XNU

XNU ("X ไม่ใช่ Unix") คือเคอร์เนลระบบปฏิบัติการ คอมพิวเตอร์ (OS) ที่พัฒนาโดยApple Inc.ตั้งแต่เดือนธันวาคม พ.ศ.

XNU

XNU
เคอร์เนล XNU
นักพัฒนาบริษัท แอปเปิล อิงค์
เขียนเป็นภาษาซี , ภาษาซี++ , ภาษาแอสเซมบลี
ตระกูลระบบปฏิบัติการเหมือนยูนิกซ์ยูนิกซ์[ 1 ]
สถานะการทำงานปัจจุบัน
แบบจำลองแหล่งที่มาโอเพนซอร์ส
การเผยแพร่ครั้งแรกธันวาคม พ.ศ.  2539 ( 1996-12 )
ที่เก็บข้อมูล
  • github.com/apple-oss-distributions/xnu
แพลตฟอร์มที่รองรับปัจจุบัน: x86-64 , ARM 64 บิต , ARM 32 บิต (การสนับสนุน ARM 32 บิตเป็นแบบปิดแหล่งที่มา) ในอดีต: PowerPC (32 บิตและ 64 บิต), IA-32
ประเภทเคอร์เนลไฮบริด
ใบอนุญาตสัญญาอนุญาตสาธารณะของแอปเปิล 2.0
นำหน้าโดยMach , Nukernel , NeXTSTEP kernel
เว็บไซต์อย่างเป็นทางการgithub.com/apple-oss-distributions/xnu

XNU ("X ไม่ใช่ Unix") คือเคอร์เนลระบบปฏิบัติการ คอมพิวเตอร์ (OS) ที่พัฒนาโดยApple Inc.ตั้งแต่เดือนธันวาคม พ.ศ. 2539 เพื่อใช้ในระบบปฏิบัติการ Mac OS X (ปัจจุบันคือmacOS ) และเผยแพร่เป็นซอฟต์แวร์โอเพนซอร์สฟรีซึ่งเป็นส่วนหนึ่งของDarwin OS ซึ่งนอกจากจะเป็นพื้นฐานสำหรับ macOS แล้ว ยังเป็นพื้นฐานสำหรับiOS , iPadOS , watchOS , visionOSและtvOS อีก ด้วย[ 2 ]

XNU เดิมทีได้รับการพัฒนาโดยNeXTสำหรับ ระบบปฏิบัติการ NeXTSTEPโดยเป็นเคอร์เนลแบบไฮบริดที่ได้มาจากเคอร์เนล Mach เวอร์ชัน 2.5 ซึ่งพัฒนาที่มหาวิทยาลัย Carnegie Mellon โดยได้รวมเอาเคอร์เนล 4.3BSDส่วนใหญ่ที่ได้รับการแก้ไขให้ทำงานบนพรีมิทีฟของ Mach พร้อมกับอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ในObjective-Cสำหรับการเขียนไดรเวอร์ชื่อ DriverKit [ 3 ]

หลังจากที่ Apple เข้าซื้อ NeXT เคอร์เนลได้รับการอัปเดตด้วยโค้ดที่ได้มาจากOSF MK 7.3 จากOSF [ 4 ]และ โครงการ FreeBSDและ DriverKit ถูกแทนที่ด้วย API ใหม่บนชุดย่อยที่จำกัดของC++ [ 5 ] (อิงตามEmbedded C++ ) [ 6 ]ซึ่งมีชื่อว่า IOKit

macOS ได้รับการรับรอง UNIX ในปี 2550 ด้วยการเปิดตัวMac OS X 10.5 Leopard [ 7 ]ภายใต้ข้อกำหนด Single UNIX Specification (SUS) โดย The Open Group [ 8 ]ถึงกระนั้น Apple ก็ยังคงใช้ชื่อเดิมว่า 'XNU' ซึ่งย่อมาจาก 'X is Not Unix' ซึ่งเป็นชื่อที่สืบทอดมาจากต้นกำเนิด NeXTSTEP ก่อนที่ macOS จะได้รับการรับรอง UNIX สิ่งนี้ทำให้เกิดความสับสน เนื่องจากชื่อดังกล่าวบ่งบอกว่า XNU แยกออกจาก UNIX แม้ว่า macOS โดยรวมแล้วจะได้รับการยอมรับอย่างเป็นทางการว่าเป็นระบบปฏิบัติการ UNIX ก็ตาม[ 1 ]

การออกแบบเคอร์เนล

XNU เป็นเคอร์เนลแบบไฮบริดซึ่งประกอบด้วยคุณสมบัติของทั้งเคอร์เนลแบบโมโนลิธิกและไมโครเคอร์เนล[ 9 ]

ข้อมูล ณ เดือนมิถุนายนพ.ศ. 2569 XNU ทำงานบนโปรเซสเซอร์ARM64และx86-64 การสนับสนุน PowerPCถูกลบออกไปตั้งแต่ เคอร์เนล Mac OS X Snow LeopardการสนับสนุนIA-32ถูกลบออกไปตั้งแต่ เคอร์เนล Mac OS X Lionและการสนับสนุน ARM 32 บิตถูกลบออกไปตั้งแต่iOS 11

แมช

พื้นฐานของเคอร์เนล XNU คือ เคอร์เนล Open Software Foundation Mach ( OSF MK ) 7.3 ที่ได้รับการดัดแปลงอย่างมาก (ไฮบริด) [ 4 ] OSF MK 7.3 เป็นไมโครเคอร์เนล[ 10 ]ที่รวมโค้ดที่ใช้งานได้จาก เคอร์เนล Mach 4 ของ มหาวิทยาลัยยูทาห์และจาก Mach 3.0 หลายเวอร์ชันที่แยกออกมา จาก ไมโครเคอร์เนล Mach 3.0 ดั้งเดิมของมหาวิทยาลัยคาร์เนกีเมลลอน

XNU ไม่ได้ใช้ Mach เป็นไมโครเคอร์เนล แต่รวมซับซิสเต็มอื่นๆ (เช่นBSD ) เป็นส่วนหนึ่งของเคอร์เนล แทนที่จะเป็นเดมอน ในพื้นที่ผู้ใช้ Mach ใน XNU ใช้สำหรับจัดการหน่วยความจำเสมือนอำนวยความสะดวกในการสื่อสารระหว่างกระบวนการ (IPC) และดำเนิน การ อินพุต/เอาต์พุต (I/O) กับคอนโซล[ 11 ]

OSF MK 7.3 สามารถรันแกนหลักของระบบปฏิบัติการเป็นกระบวนการแยกต่างหาก ซึ่งช่วยให้มีความยืดหยุ่นสูง (สามารถรันระบบปฏิบัติการหลายระบบพร้อมกันบนแกน Mach ได้) แต่สิ่งนี้มักลดประสิทธิภาพลงเนื่องจากการสลับบริบทโหมดเคอร์เนล/ผู้ใช้ที่ใช้เวลานาน และค่าใช้จ่ายเพิ่มเติมที่เกิดจากการแมปหรือคัดลอกข้อความระหว่างพื้นที่แอดเดรสของเคอร์เนลและของเดมอนบริการ

Apple ได้รับลิขสิทธิ์ OSF MK 7.3 จาก OSF และพยายามปรับปรุงกระบวนการทำงานบางอย่างให้มีประสิทธิภาพยิ่งขึ้นโดยการสร้าง ฟังก์ชัน BSDเข้าไปในเคอร์เนลพร้อมกับโค้ด Mach ผลลัพธ์ที่ได้คือเคอร์เนล OSF MK 7.3 ที่ได้รับการดัดแปลงอย่างมาก (แบบไฮบริด)

บีเอสดี

ส่วนBerkeley Software Distribution (BSD) ของเคอร์เนลให้บริการอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันแบบ พกพา ( POSIX ) (API, การเรียกใช้ระบบ BSD), โมเดลกระบวนการ Unixบนงาน Mach, นโยบายความปลอดภัยพื้นฐาน, รหัสผู้ใช้และกลุ่ม, สิทธิ์, สแต็กโปรโตคอล เครือข่าย (โปรโตคอล), รหัส ระบบไฟล์เสมือน (รวมถึง เลเยอร์ การบันทึกที่ไม่ขึ้นกับระบบไฟล์ ), ระบบไฟล์ภายในเครื่องหลายระบบ เช่นHierarchical File System (HFS, HFS Plus (HFS+)) และApple File System (APFS), ไคลเอนต์และเซิร์ฟเวอร์ Network File System (NFS), เฟรมเวิร์กการเข้ารหัส, การสื่อสารระหว่างกระบวนการ (IPC) ของ UNIX System V , ระบบย่อยการตรวจสอบ, การควบคุมการเข้าถึงแบบบังคับและกลไกการล็อกบางส่วน[ 12 ]รหัส BSD ที่มีอยู่ใน XNU ได้รับการซิงโครไนซ์ล่าสุดกับรหัสจาก เคอร์เนล FreeBSDแม้ว่าส่วนใหญ่จะได้รับการแก้ไขอย่างมีนัยสำคัญ แต่การแบ่งปันรหัสยังคงเกิดขึ้นระหว่าง Apple และโครงการ FreeBSD ณ ปี 2009[ 13 ]สิ่งแรกที่เกิดขึ้นหลังจาก Mach เริ่มต้น BSD คือการเริ่มต้นการจัดสรรหน่วยความจำAmit Singh. "XNU: The Kernel" . Mac OS X คืออะไร? . BSD. เก็บถาวรจากต้นฉบับเมื่อวันที่ 19 เมษายน 2019 . สืบค้นเมื่อ9 กันยายน 2011 .</ref>

เค32/เค64

XNU ในMac OS X Snow Leopard เวอร์ชัน 10.6 ( Darwinเวอร์ชัน 10) มีสองแบบ คือ แบบ 32 บิตเรียกว่าK32และ แบบ 64 บิตเรียกว่าK64 [ 14 ] K32สามารถรันแอปพลิเคชัน 64 บิตในพื้นที่ผู้ใช้ได้ [ 15 ] สิ่งใหม่ใน Mac OS X 10.6 คือความสามารถในการรัน XNU ในพื้นที่เคอร์เนล 64 บิต K32 เป็นเคอร์เนลเริ่มต้นสำหรับ 10.6 Serverเมื่อใช้งานบนเครื่องทั้งหมด ยกเว้น รุ่น Mac ProและXserveตั้งแต่ปี 2008 เป็นต้นไป[ 16 ]และสามารถรันแอปพลิเคชัน 64 บิตได้ K64 มีข้อดีหลายประการเมื่อเทียบกับ K32: [ 17 ]

  • ไม่สามารถจัดการ RAM ได้มากกว่า 32  GB เนื่องจากแผนผังหน่วยความจำจะใช้พื้นที่ส่วนใหญ่ของพื้นที่เคอร์เนล 32 บิตอย่างไม่สมส่วน
  • ขนาดของบัฟเฟอร์แคชสามารถใหญ่กว่าที่พื้นที่เคอร์เนล 32 บิตอนุญาต ซึ่งอาจช่วยเพิ่มประสิทธิภาพการรับส่งข้อมูล (I/O) ได้
  • ประสิทธิภาพจะเพิ่มขึ้นเมื่อใช้อุปกรณ์เครือข่ายประสิทธิภาพสูงหรือหน่วยประมวลผลกราฟิก (GPU) หลายตัว เนื่องจากเคอร์เนลสามารถแมปอุปกรณ์ทั้งหมดในพื้นที่ 64 บิตได้ แม้ว่าหลายอุปกรณ์จะมี บัฟเฟอร์ การเข้าถึงหน่วยความจำโดยตรง (DMA) ขนาดใหญ่มากก็ตาม

การบูตในขณะที่กดปุ่ม6และ4ค้างไว้จะบังคับให้เครื่องบูต K64 บนเครื่องที่รองรับเคอร์เนล 64 บิต[ 18 ] K64 จะรันแอปพลิเคชัน 32 บิต แต่จะไม่สามารถรัน ส่วนขยายเคอร์เนล 32 บิต(KEXTs) ได้ ดังนั้นส่วนขยายเหล่านี้จะต้องถูกพอร์ตไปยัง K64 เพื่อให้สามารถโหลดได้

XNU ในOS X Mountain Lion (10.8) และเวอร์ชันที่ใหม่กว่านั้นรองรับเฉพาะเคอร์เนลแบบ 64 บิตเท่านั้น

ไอโอคิท

IOKit เป็น เฟรมเวิร์ กไดรเวอร์อุปกรณ์ ที่เขียนด้วย ภาษา C++เวอร์ชันย่อยที่อิงตามEmbedded C++ซึ่งขาดคุณสมบัติบางอย่าง เช่นข้อยกเว้นการสืบทอดแบบหลายทางและเทมเพลต[ 6 ] ด้วย การออกแบบ เชิงวัตถุคุณสมบัติทั่วไปของไดรเวอร์ทุกคลาสจึงมีอยู่ในเฟรมเวิร์กนี้ ช่วยให้เขียนไดรเวอร์อุปกรณ์ได้ในเวลาและโค้ดที่น้อยลง IOKit รองรับมัลติเธรด ปลอดภัย ต่อการประมวลผลแบบสมมาตร (SMP) และอนุญาตให้เสียบอุปกรณ์แบบร้อนได้และการกำหนดค่าอุปกรณ์แบบไดนามิกอัตโนมัติ

ไดรเวอร์จำนวนมากสามารถเขียนให้ทำงานในโหมดผู้ใช้ได้ซึ่งจะช่วยเพิ่มเสถียรภาพของระบบให้ดียิ่งขึ้น หากไดรเวอร์ที่ทำงานในโหมดผู้ใช้เกิดข้อผิดพลาด เคอร์เนลจะไม่เกิดข้อผิดพลาด อย่างไรก็ตาม หากไดรเวอร์ที่ทำงานในโหมดเคอร์เนลเกิดข้อผิดพลาด เคอร์เนลก็จะเกิดข้อผิดพลาด ตัวอย่างของไดรเวอร์ที่ทำงานในโหมดเคอร์เนล ได้แก่ ไดรเวอร์อะแดปเตอร์ดิสก์และอะแดปเตอร์เครือข่าย ไดรเวอร์กราฟิก ไดรเวอร์สำหรับตัวควบคุม โฮสต์ Universal Serial Bus ( USB ) และFireWire และไดรเวอร์สำหรับ ซอฟต์แวร์ เครื่องเสมือนเช่นVirtualBox , Parallels Desktop for MacและVMware FusionในmacOS Catalinaและเวอร์ชันที่ใหม่กว่า DriverKit อนุญาตให้ไดรเวอร์บางประเภทเหล่านี้ทำงานในโหมดผู้ใช้ได้[ 19 ]

ดูเพิ่มเติม

  • xnu บนGitHub , คลังเก็บข้อมูลอย่างเป็นทางการ
  • XNU: เคอร์เนลในWayback Machine (เก็บถาวรเมื่อวันที่ 2 มิถุนายน 2020) – ภาพรวมของส่วนประกอบต่างๆ ของ XNU เขียนโดย Amit Singh ในเดือนธันวาคม 2003
  • ภายในเคอร์เนลของ Mac OS X – "การบรรยายนี้มีจุดประสงค์เพื่อคลายความสับสนโดยการนำเสนอรายละเอียดเกี่ยวกับเคอร์เนลของ Mac OS X" (ธันวาคม 2550)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=XNU&oldid=1362088735 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ XNU

XNU ("X ไม่ใช่ Unix") คือเคอร์เนลระบบปฏิบัติการ คอมพิวเตอร์ (OS) ที่พัฒนาโดยApple Inc.ตั้งแต่เดือนธันวาคม พ.ศ.

การออกแบบเคอร์เนล

XNU เป็น เคอร์เนลแบบไฮบริด ซึ่งประกอบด้วยคุณสมบัติของทั้ง เคอร์เนลแบบโมโนลิธิก และ ไมโคร เคอร์เนล [ 9 ]

แมช

พื้นฐานของเคอร์เนล XNU คือ เคอร์เนล Open Software Foundation Mach ( OSF MK ) 7.3 ที่ได้รับการดัดแปลงอย่างมาก (ไฮบริด) [ 4 ] OSF MK 7.3 เป็นไมโครเคอร์เนล [ 10 ] ที่รวมโค้ดที่ใช้งานได้จาก เคอร์เนล Mach 4 ของ มหาวิทยาลัยยูทาห์ และจาก Mach 3.

บีเอสดี

ส่วน Berkeley Software Distribution (BSD) ของเคอร์เนลให้บริการอินเทอร์เฟซ การเขียนโปรแกรมแอปพลิเคชันแบบ พกพา ( POSIX ) (API, การเรียกใช้ระบบ BSD), โมเดลกระบวนการ Unix บนงาน Mach, นโยบายความปลอดภัยพื้นฐาน, รหัสผู้ใช้และกลุ่ม, สิทธิ์, สแต็กโปรโตคอล เครือข่าย...