सूक्ष्म कर्नेल बनाम अखंड कर्नेल का प्रदर्शन


14

माइक्रो-कर्नेल सभी ड्राइवरों को उपयोगकर्ता-अंतरिक्ष कार्यक्रमों के रूप में लागू करता है, और कर्नेल में ही आईपीसी जैसी मुख्य विशेषताओं को लागू करता है। हालाँकि, एक अखंड कर्नेल, कर्नेल को कर्नेल के एक भाग के रूप में लागू करता है (जैसे कर्नेल मोड में चलता है)।

मैंने कुछ दावों को पढ़ा है कि सूक्ष्म कर्नेल अखंड गुठली की तुलना में धीमे होते हैं, क्योंकि उन्हें उपयोगकर्ता अंतरिक्ष में ड्राइवरों के बीच गुजर रहे संदेश को संभालने की आवश्यकता होती है। क्या ये सच है?

लंबे समय तक, अधिकांश गुठली अखंड थी क्योंकि माइक्रो-गुठली को जल्दी से चलाने के लिए हार्डवेयर बहुत धीमा था। हालांकि, अब कई माइक्रोकेर्नल और हाइब्रिड कर्नेल हैं, जैसे जीएनयू / हर्ड, मैक ओएस एक्स, विंडोज एनटी लाइन, आदि।

तो, क्या माइक्रोकर्नल के प्रदर्शन के बारे में कुछ भी बदल गया है? क्या माइक्रोकेर्नल की यह आलोचना आज भी मान्य है?

जवाबों:


11

जैसा कि हमेशा प्रदर्शन-संबंधी प्रश्नों का उत्तर (या कम से कम प्रस्तावना) होता है: अपने समस्या डोमेन को जानें, तुलनात्मक बेंचमार्क चलाएं और याद रखें कि समय से पहले का अनुकूलन क्या है

सबसे पहले, किसी भी व्यापक बेंचमार्किंग ट्रायल ने मोनोलिथिक कर्नेल की तुलना वर्तमान-पीढ़ी के माइक्रोकर्नल सिस्टम से नहीं की है जो एक समतुल्य तरीके से संचालित होते हैं। इसलिए, जबकि ऐसे परीक्षण हो सकते हैं जो उन गुठली के विशिष्ट तत्वों की तुलना करते हैं, वे "बड़ी तस्वीर" के प्रतिनिधि नहीं होने जा रहे हैं जो आपके प्रश्न को चित्रित करने के लिए देख रहे हैं।

कहा जा रहा है के साथ, वहाँ microkernels भर में कर्नेल प्रदर्शन के बेतहाशा विचलन कर रहे हैं; उदाहरण के लिए, L4 माइक्रोकर्नेल परिवार को IPC प्रदर्शन को मच कर्नेल से अधिक परिमाण का एक आदेश कहा जा सकता है। लेकिन इस दशक का प्रत्येक Apple उपकरण Mach चला रहा है, और वे बहुत तेजी से, सही काम कर रहे हैं?

कहानी का नैतिक यह है कि जो कोई भी कर्नेल वास्तुकला का उपयोग करने का निर्णय लेता है, उसे पहले यह तय करना होगा कि उनका अंतिम लक्ष्य क्या है। माइक्रो कर्नेल सिस्टम (जब ठीक से लागू किया जाता है) अधिक सुरक्षित, बनाए रखने योग्य और मॉड्यूलर होता है। हालांकि, वे ठीक से वास्तुकार के लिए कठिन हो सकते हैं, और एक अखंड कार्यान्वयन पर ओवरहेड का प्रदर्शन हो सकता है। एक अखंड कर्नेल तेजी से होगा, लेकिन सुरक्षा को लागू करना कठिन होगा और इसे कम मॉड्यूलर और अनुकूलित करना आसान होगा।

आपका कर्नेल आर्किटेक्चर आपके अंतिम लक्ष्य के आधार पर होना चाहिए।

(और जब बाकी सब विफल हो जाता है, तो इसे दोनों तरीकों से आज़माएं और देखें कि क्या होता है।)


"लेकिन इस दशक के प्रत्येक Apple उपकरण में मच चल रहा है, और वे बहुत तेज़, सही काम कर रहे हैं?" यह केवल आंशिक रूप से सही है। "डार्विन का कर्नेल XNU है, एक हाइब्रिड कर्नेल जो OSFMK 7.3 (ओपन सॉफ्टवेयर फाउंडेशन मच कर्नेल) का उपयोग करता है OSF से, BSD के विभिन्न तत्व (प्रक्रिया मॉडल, नेटवर्क स्टैक और वर्चुअल फ़ाइल सिस्टम सहित), और ऑब्जेक्ट-ओरिएंटेड डिवाइस ड्राइवर API को I / O किट कहा जाता है। हाइब्रिड कर्नेल डिज़ाइन एक माइक्रोकर्नेल की लचीलापन और एक अखंड कर्नेल के प्रदर्शन को प्रदान करता है। "
बेहरंग सईदज़ादेह

4

मैं हाइब्रिड के बजाय विंडोज एनटी और एप्पल के एक्सएनयू कर्नेल अखंड कॉल करना पसंद करता हूं। मुझे अभ्यास में हाइब्रिड के वर्गीकरण का कोई मतलब नहीं है। वास्तव में XNU के मूल इंजीनियरों में से एक इसे अखंड [1] कहता है।

प्रदर्शन के मुद्दे पर, अखंड बनाम सूक्ष्म I की एकमात्र वास्तव में गहराई से तुलना "चरम उच्च प्रदर्शन कम्प्यूटिंग या क्यों माइक्रोकेनल्स चूसो" [2] और एक खंडन प्रस्तुति "Do Microkernels चूसना?" [3] है।

अखंडता और रीति-रिवाज अखंडता गुठली में निहित सीमाओं की तुलना में डिजाइन के अधिक मुद्दे हैं। लिनक्स कर्नेल, उदाहरण के लिए, कई मेगाबाइट से लेकर लगभग एक मेगाबाइट तक के आकार में हो सकता है, जो संकलन-समय के विकल्प और कुछ पैच के अनुप्रयोग पर निर्भर है। लिनक्स के 15 मिलियन प्लस कोड की विशाल संख्या लोड करने योग्य कर्नेल मॉड्यूल हैं। उन्हें आधार कर्नेल से अलग से संकलित किया जाता है और केवल जरूरत पड़ने पर लोड किया जाता है। वे मॉड्यूल ड्राइवर और सिस्टम कॉल (यहां तक ​​कि आधार सिस्टम कॉल को ओवरराइड कर सकते हैं) को लागू कर सकते हैं।

जिन दो क्षेत्रों में माइक्रोकर्नल्स का निर्विवाद लाभ है, वे कम मेमोरी (<= 512k ram) या "हार्ड" रियल-टाइम ऑपरेटिंग सिस्टम, जैसे एयरलाइन फ़्लाइट सिस्टम या न्यूक्लियर रिएक्टर कंट्रोल सिस्टम हैं।

संपादित करें: कर्नेल आर्किटेक्चर के फायदे और नुकसान के बारे में आगे बात करते हुए, गर्नोट हेसर अपनी प्रस्तुति के अंत में स्वतंत्र रूप से स्वीकार करते हैं [3] कि अखंड कर्नेल स्वाभाविक रूप से अधिक प्रदर्शनशील होते हैं क्योंकि एक माइक्रोक्रैब हमेशा एक अतिरिक्त ओवरहेड होता है। हालांकि, यह अतिरिक्त ओवरहेड वृद्धि की विश्वसनीयता का कारण बनता है, इसलिए आरटीओएस का माइक्रोकेर्नल प्रभुत्व।

[१] लुई जी। गार्बार्ग, "मैक ओएस एक्स में उन्नत सिंक्रोनाइज़ेशन: एसएमपी और रियल-टाइम के लिए यूनिक्स का विस्तार", बीएसडीसीओएन 2002 सम्मेलन की कार्यवाही, पीपी। २

[२] चिस्टोफ़ लेमेट, "एक्सट्रीम हाई परफॉर्मेंस कम्प्यूटिंग या व्हाइ माइक्रोकर्नेलस सॉक", २०० 2007 लिनक्स सिम्पोज़िशन, वॉल्यूम वन

[३] गर्नोट हेज़र, "डू माइक्रोकर्नेलस सॉक?", ९ वें Linux.conf.au, जनवरी, २००,


मैं एक्सएनयू और विंडोज एनटी को "हाइब्रिड" कर्नेल के रूप में वर्गीकृत कर रहा था
एमएम

धन्यवाद @DW स्वागत के लिए। मैंने अपनी पोस्ट को थोड़ा साफ किया है, और हवाला दिया है।
आयरनलेनी

@mmk क्षमा करें, आपने उन्हें हाइब्रिड कहा है, मैं अपनी पोस्ट और गलत प्रचार करने की जल्दी में था।
आयरनलेनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.