• 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_pager user-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 तक विकसित हुए हैं और लगातार आगे बढ़ रहे हैं

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.