Apple Darwin OS और XNU kernel का गहन विश्लेषण
(tansanrao.com)- Apple का Darwin operating system, macOS, iOS जैसे Apple के आधुनिक OSes की बुनियादी Unix-आधारित core संरचना है
- इसका केंद्र XNU kernel है, जो "X is Not Unix" नाम वाला एक hybrid kernel है
- यह Mach microkernel की संरचना और BSD Unix के तत्वों को जोड़कर performance और modularity के बीच संतुलन बनाता है
- इस लेख में Mach और BSD की जड़ों से लेकर Apple Silicon पर इसके नवीनतम विकास तक, Darwin और XNU की संरचनात्मक प्रगति को समझाया गया है
- kernel के मुख्य घटकों (IPC, scheduling, memory management, virtualization आदि) और आधुनिक hardware के लिए उसके अनुकूलन का विश्लेषण किया गया है
Mach microkernel की उत्पत्ति (1985–1996)
- Mach की शुरुआत 1985 में Carnegie Mellon University में Richard Rashid और Avie Tevanian ने की थी
- UNIX kernel की जटिलता कम करने के लिए इसे एक microkernel के रूप में डिज़ाइन किया गया, जो केवल core functions प्रदान करता है
- यह केवल low-level functions जैसे memory management, thread-based scheduling, message-based IPC देता था, जबकि file system, network आदि को user-space servers में अलग किया गया
- Mach 2.5, कुछ BSD kernel code के साथ kernel space में चलती थी ताकि performance बेहतर हो सके
- Mach 3.0 ने एक वास्तविक microkernel की ओर बदलाव किया और BSD की memory management पर भी प्रभाव डाला
- Mach ने Task और Thread की अवधारणा पेश की और एक कुशल virtual memory model लागू किया
- NeXT (1985 में Steve Jobs द्वारा स्थापित) ने Mach 2.5 + 4.3BSD के आधार पर NeXTSTEP OS विकसित किया
- NeXTSTEP के kernel ने Mach और BSD को kernel space में जोड़कर एक hybrid संरचना बनाई
- Drivers, Objective-C आधारित DriverKit में विकसित किए गए और object-oriented approach अपनाई गई
- Apple ने 1996 में NeXT का अधिग्रहण किया और NeXTSTEP के साथ Mach/BSD-आधारित XNU kernel को भी साथ लाया
- Mac OS X का शुरुआती version, Rhapsody, NeXT की kernel संरचना पर आधारित था
Mac OS X का शुरुआती विकास (1997–2005)
- Apple ने OSFMK 7.3 आधारित Mach 3.0 code को XNU में एकीकृत किया और BSD layer को FreeBSD तथा 4.4BSD code से update किया
- performance सुधार और hardware support विस्तार के लिए BSD और Mach functions वाले hybrid ढांचे को बनाए रखा गया
- नया driver framework I/O Kit पेश किया गया: Objective-C के बजाय C++ आधारित, ताकि performance optimization और hot-plugging support मिल सके
- मुख्य version विशेषताओं का सार:
- 10.1 Puma (2001): real-time thread support, performance improvements
- 10.2 Jaguar (2002): IPv6, IPSec, Bonjour, HFS+ journaling जोड़ा गया
- 10.3 Panther (2003): FreeBSD 5 आधारित kernel सुधार, multi-core support के लिए fine-grained locking जोड़ा गया
- XNU ने PowerPC का मूल support बनाए रखते हुए x86 support code भी रखा, ताकि आगे के transition की तैयारी हो सके
- 10.4 Tiger (2005): UNIX 03 certification प्राप्त, Intel transition की नींव, kqueue/kevent event system जोड़ा गया
64-bit, multi-core और iPhone OS का दौर (2005–2010)
- 10.5 Leopard (2007):
- x86_64 support और 64-bit drivers संभव
- ASLR, sandbox, DTrace जैसे security और debugging features मज़बूत हुए
- PowerPC का अंतिम आधिकारिक support
- iPhone OS 1 (2007):
- Darwin 9 आधारित, XNU को ARM पर port किया गया
- low-memory स्थिति से निपटने के लिए Jetsam mechanism जोड़ा गया
- full app sandboxing और code signing को अनिवार्य किया गया
- 10.6 Snow Leopard (2009):
- केवल Intel, पूर्ण 64-bit kernel support
- Grand Central Dispatch पेश किया गया: kernel के साथ काम करने वाला user-space task parallelization framework
- OpenCL integration और GPU computing support
- iOS 4 (2010):
- multitasking और priority-based scheduling जोड़ी गई (background/foreground विभाजन)
macOS और iOS का आधुनिकीकरण (2011–2020)
- 10.8~10.9 (2012–2013):
- Compressed Memory जोड़ा गया, जिससे RAM उपयोग optimize हुआ
- Timer Coalescing से CPU power saving बेहतर हुई
- App Nap, QoS जैसी energy-efficiency केंद्रित scheduling का विकास
- 10.10~10.11 (2014–2015):
- SIP(System Integrity Protection) जोड़ा गया: root privileges होने पर भी system files बदले नहीं जा सकते
- watchOS, tvOS जैसे विभिन्न devices पर XNU विस्तार की क्षमता सुनिश्चित हुई
- ARM64 support और 32-bit ARM phase-out की तैयारी शुरू
- 10.12~10.14 (2016–2018):
- file system को APFS(Apple File System) में बदला गया
- snapshots, cloning, encryption support
- kext security मज़बूत: user approval आवश्यक, code signing checks सख्त
- 10.15 Catalina (2019):
- DriverKit पेश किया गया: drivers को user space में चलाना (microkernel दर्शन की वापसी)
- security बढ़ाने के लिए system volume को read-only में अलग किया गया
Apple Silicon का दौर (2020–वर्तमान)
-
macOS 11 Big Sur (2020):
- ARM64 आधारित Apple Silicon(M1) support
- big.LITTLE CPU scheduling support: QoS के आधार पर efficiency/performance cores का आवंटन
- Mach VM की संरचना unified memory architecture के लिए उपयुक्त है
-
security और virtualization को मज़बूती:
- PAC(pointer authentication), MTE(memory tagging) जैसे ARM hardware security features का support
- Apple Silicon की hypervisor capabilities के आधार पर नया virtualization framework पेश किया गया
- macOS पर developers के लिए हल्के VM चलाना संभव (user-space control)
-
एकीकृत platform संरचना:
- XNU, macOS, iOS, watchOS, tvOS, bridgeOS, visionOS सहित सभी Apple platforms का kernel है
- Mach की platform abstraction की वजह से अलग-अलग CPU architectures के लिए अनुकूलन आसान है
XNU का प्रमुख इतिहास सारांश
- 1989 - NeXTSTEP 1.0 - Mach 2.5 + BSD के XNU hybrid का परिचय
- 1996 - Apple ने NeXT का अधिग्रहण किया - Mach 3.0 + FreeBSD आधारित Rhapsody का विकास शुरू
- 2001 - Mac OS X 10.0 - XNU kernel संरचना स्थापित, शुरुआती performance सुधार
- 2005 - 10.4 Tiger - UNIX certification, Intel transition की तैयारी
- 2007 - 10.5 Leopard - 64-bit support, security features मज़बूत, iPhone OS का आगमन
- 2009 - 10.6 Snow Leopard - पूर्ण Intel transition और GCD की शुरुआत
- 2011 - 10.7 Lion - 64-bit kernel अनिवार्य, sandboxing का विस्तार
- 2013 - 10.9 Mavericks - memory compression और QoS scheduling की शुरुआत
- 2015 - 10.11 El Capitan - SIP जोड़ा गया, watchOS आदि devices तक विस्तार
- 2017 - 10.13 High Sierra - APFS default बना, Kext security मज़बूत
- 2019 - 10.15 Catalina - DriverKit के साथ drivers user space में
- 2020 - 11 Big Sur - Apple Silicon support, नई virtualization संरचना
- 2022 - 13 Ventura - M1 Max जैसे high-performance cores के लिए scheduling सुधार
- 2024 - 14 Sonoma - M2/M3 optimization और Memory Tagging support
XNU kernel संरचना और डिज़ाइन
hybrid kernel डिज़ाइन: Mach + BSD एकीकरण
- XNU एक hybrid kernel संरचना है, जिसमें microkernel (Mach) और monolithic kernel (BSD) दोनों की विशेषताएँ हैं
- Mach low-level functions (thread, memory, IPC आदि) को abstract और modularize करता है, जबकि BSD पूरे UNIX system calls और API को सीधे kernel space में चलाता है
- BSD और Mach एक ही kernel binary से linked हैं और उसी address space में चलते हैं
- kernel के भीतर Mach functions और BSD functions बिना message के सीधे call होते हैं, इसलिए UNIX system calls का प्रदर्शन दूसरे Unix kernels के स्तर का रहता है
- उदाहरण:
read()system call के समय BSD file system code सीधे kernel में चलता है
Mach की भूमिका
- thread, task management, context switching, scheduling queues, timers जैसी kernel core infrastructure प्रदान करना
- Mach ports के माध्यम से message-based IPC प्रदान करना (processes के बीच memory sharing और बड़े buffer transfer support सहित)
- memory objects, copy-on-write optimization, address-space abstraction जैसे advanced virtual memory management features लागू करना
BSD की भूमिका
- process और PID, signals, user IDs, POSIX API, file systems, network stack, UNIX IPC जैसी UNIX features प्रदान करना
- FreeBSD आधारित BSD code से व्युत्पन्न, साथ में OpenBSD/NetBSD features भी शामिल
- security framework (KAuth, MAC), sandbox, SIP, code-signing verification जैसी security policies लागू करना
- system call implementation:
fork()में Mach VM duplication करता है, BSD file descriptors की duplication आदि संभालता है - file system (VFS), networking, signal handling, POSIX threads सहित अधिकांश UNIX features की जिम्मेदारी BSD पर है
I/O Kit
- kernel space में चलने वाला object-oriented driver framework (C++ के Embedded Subset का उपयोग)
- device hierarchy को define करता है और हर driver इसे inherit करके implement करता है
- user space से access किए जा सकने वाले user client interfaces प्रदान करता है
- kernel synchronization और thread control के लिए Mach functions का उपयोग होता है, जबकि file system और network drivers BSD से जुड़े रहते हैं
- drivers को Kext के रूप में dynamically load किया जा सकता है, और वे Mach-O format में kernel memory में load होते हैं
Mach IPC और message passing
- Mach ports, kernel और user space के बीच या user processes के बीच मुख्य IPC mechanism हैं
- हर process को Mach ports के माध्यम से नियंत्रित किया जा सकता है, और launchd जैसे system daemons ports के जरिए processes नियंत्रित करते हैं
- Grand Central Dispatch, XPC जैसी macOS की advanced features, Mach messages पर आधारित हैं
- Mach messages में port-rights system होता है, जिससे security मज़बूत रहती है, और port transfer तथा shared-memory transfer संभव होता है
- MIG(Mach Interface Generator) का उपयोग kernel और user के बीच message-based RPC code auto-generate करने के लिए होता है
- DriverKit, Mach IPC के आधार पर kernel और user-space drivers के बीच communication लागू करता है
scheduler और thread management
- यह Mach-आधारित priority-driven round-robin scheduler से विकसित हुआ है
- हर CPU की अपनी run queue होती है, और threads priority के आधार पर schedule होते हैं
- iOS आने के बाद app roles (background/foreground) के अनुसार scheduling policies जोड़ी गईं
- QoS(Quality of Service) class-आधारित scheduling: user-interactive, background आदि task types के अनुसार priority समायोजित होती है
- Apple Silicon पर QoS के आधार पर threads को efficiency cores या high-performance cores पर assign किया जाता है
- real-time threads (जैसे audio) को real-time queue के माध्यम से पहले चलाया जाता है, और macOS 10.4 से deadline scheduling support है
- power management के साथ सहयोग: idle threads, timer coalescing, low-power state entry आदि के जरिए mobile performance optimize की जाती है
memory management और virtual memory
- Mach VM, XNU memory system का मुख्य घटक है, और इसका डिज़ाइन शक्तिशाली व लचीला है
- virtual address space, copy-on-write आधारित है, जिससे
fork()के समय memory की कुशल duplication संभव होती है - memory object और pager संरचना:
dynamic_pageruser-space daemon swap area को manage करता है- file mapping, vnode pager के माध्यम से kernel के भीतर संभाली जाती है
- Mavericks से compressed memory जोड़ी गई: memory pressure होने पर disk swap की बजाय pages को compress करके रखा जाता है
- pmap: machine-dependent layer जो हर architecture की physical memory और page tables को manage करती है
- kernel का अलग address space होता है, और कुछ क्षेत्र fixed (wired) memory के रूप में सेट रहते हैं
- macOS debugging के लिए guard pages, zero-fill allocation, segmentation protection आदि से memory security मज़बूत करता है
- Mach VM, shared memory और inheritance settings के जरिए frameworks की sharing जैसे कार्य कुशलता से संभालता है
- Apple Silicon पर GPU और memory space एकीकृत हैं, इसलिए Mach VM memory characteristics के आधार पर allocation optimize करता है
virtualization support
- शुरुआती दौर में XNU में hypervisor features नहीं थे, लेकिन OS X 10.10 से Hypervisor.framework के जरिए virtualization support शुरू हुआ
- Intel-based systems पर VT-x का उपयोग करके user-space VM चलाना संभव हुआ
- ARM-आधारित Apple Silicon पर Virtualization.framework के जरिए EL2 virtualization features का उपयोग होता है
- kernel के भीतर hypervisor virtual memory, vCPU trap handling, scheduling आदि संभालता है
- XNU की thread और Mach task संरचना का उपयोग कर vCPU को host thread के रूप में संभाला जाता है
- macOS, Rosetta 2 जैसी x86 emulation capabilities भी देता है, साथ में syscall translation और ABI compatibility भी
- iOS 15 से सीमित रूप में iOS पर भी virtualization की अनुमति है (developer mode आवश्यक)
security computing संरचना
- Secure Enclave:
- Apple SoC में एकीकृत स्वतंत्र security subsystem
- यह sepOS नाम का अलग microkernel चलाता है और biometric data, cryptographic keys आदि की सुरक्षा करता है
- मुख्य kernel के compromise होने पर भी isolated security processing बनी रहती है
- Exclaves:
- macOS 14.4 और iOS 17 से जोड़ा गया नया isolation क्षेत्र
- Apple ID authentication, audio buffers, sensor data जैसे sensitive resources को मुख्य kernel के बाहर अलग क्षेत्र में रखा जाता है
ExclaveKextClient.kextजैसे dedicated Kext और frameworks से नियंत्रित- kernel compromise होने पर भी exclave क्षेत्र स्वतंत्र रूप से सुरक्षित रहता है
- enclave system के भीतर शामिल क्षेत्र को दर्शाता है, जबकि exclave system के बाहर जुड़े अलग क्षेत्र की अवधारणा को दर्शाता है
निष्कर्ष
- XNU एक व्यावहारिक hybrid संरचना वाला kernel है, जो microkernel और monolithic kernel दोनों के फायदों के बीच संतुलन बनाता है
- Mach की abstraction layer, अलग-अलग CPU architectures के बीच transition और system expansion को संभव बनाती है, जबकि BSD POSIX compatibility और स्थिर Unix environment देता है
- Apple, Mach IPC के जरिए ज़रूरत पड़ने पर functions को user space में अलग करता है, जबकि efficiency के लिए kernel के भीतर सीधे connections रखता है
- driver (user-space DriverKit), virtualization (Hypervisor.framework), scheduler (QoS), memory management (Compressed Memory) जैसी multi-layered architecture के आधार पर यह आधुनिक system requirements के लिए लचीले ढंग से अनुकूलित होता है
- Darwin और XNU, NeXTSTEP से शुरू होकर करोड़ों Apple devices के core तक विकसित हुए हैं और लगातार आगे बढ़ रहे हैं
अभी कोई टिप्पणी नहीं है.