windows - लिनक्स कर्नेल



लिनक्स की तुलना में विंडोज़ पर एक नई प्रक्रिया क्यों अधिक महंगा बना रही है? (6)

संक्षिप्त जवाब "सॉफ्टवेयर परतें और घटक" है।

विंडोज़ एसडब्ल्यू आर्किटेक्चर में कुछ अतिरिक्त परतें और घटक हैं जो यूनिक्स पर मौजूद नहीं हैं या यूनिक्स पर कर्नेल के अंदर सरलीकृत और हैंडल किए गए हैं।

यूनिक्स पर, कांटा और निष्पादन कर्नेल को सीधी कॉल है।

विंडोज़ पर, कर्नेल एपीआई का सीधे उपयोग नहीं किया जाता है, इसके ऊपर Win32 और कुछ अन्य घटक हैं, इसलिए प्रक्रिया निर्माण अतिरिक्त परतों के माध्यम से जाना चाहिए और फिर नई प्रक्रिया शुरू होनी चाहिए या उन परतों और घटकों से कनेक्ट होना चाहिए।

काफी समय से शोधकर्ताओं और निगमों ने यूनिक्स को एक अस्पष्ट तरीके से तोड़ने का प्रयास किया है, आमतौर पर मैक कर्नेल पर अपने प्रयोगों का आधार बनाते हैं; एक प्रसिद्ध उदाहरण ओएस एक्स है । हर बार जब वे कोशिश करते हैं, तो यह धीमा हो जाता है कि वे कम से कम आंशिक रूप से टुकड़ों को स्थायी रूप से या उत्पादन शिपमेंट के लिए कर्नेल में विलय कर देते हैं।

https://ffff65535.com

मैंने सुना है कि विंडोज बॉक्स पर एक नई प्रक्रिया बनाना लिनक्स की तुलना में अधिक महंगा है। क्या ये सच है? क्या कोई तकनीकी कारण बता सकता है कि यह अधिक महंगा क्यों है और उन कारणों के पीछे डिजाइन निर्णयों के लिए कोई ऐतिहासिक कारण प्रदान करता है?


mweerden: एनटी को बहु-उपयोगकर्ता के लिए पहले दिन से डिजाइन किया गया है, इसलिए यह वास्तव में एक कारण नहीं है। हालांकि, आप यूनिक्स के विपरीत यूनिक्स के मुकाबले एनटी पर एनटी पर कम महत्वपूर्ण भूमिका निभाते हैं, मल्टीप्रोसेसिंग पर मल्टीथ्रेडिंग का समर्थन करते हैं।

रोब, यह सच है कि गाय का उपयोग होने पर फोर्क अपेक्षाकृत सस्ता है, लेकिन वास्तव में, कांटा ज्यादातर एक निष्पादन के बाद होता है। और एक निष्पादन को सभी छवियों को भी लोड करना पड़ता है। इसलिए कांटा के प्रदर्शन पर चर्चा करना सच का हिस्सा है।

प्रक्रिया निर्माण की गति पर चर्चा करते समय, एनटी और विंडोज / विन 32 के बीच अंतर करना शायद एक अच्छा विचार है। जहां तक ​​एनटी (यानी कर्नेल स्वयं) जाता है, मुझे नहीं लगता कि प्रक्रिया निर्माण (एनटीक्रेट प्रोसेस) और थ्रेड सृजन (एनटीक्रेट थ्रेड) औसत यूनिक्स के रूप में काफी धीमी है। कुछ और हो रहा है, लेकिन मुझे प्रदर्शन अंतर के लिए प्राथमिक कारण नहीं दिख रहा है।

यदि आप Win32 को देखते हैं, हालांकि, आप देखेंगे कि यह सृजन की प्रक्रिया के लिए काफी अधिक ओवरहेड जोड़ता है। एक के लिए, सीएसआरएसएस को प्रक्रिया निर्माण के बारे में अधिसूचित करने की आवश्यकता है, जिसमें एलपीसी शामिल है। इसके लिए कम से कम कर्नेल 32 को अतिरिक्त रूप से लोड करने की आवश्यकता होती है, और प्रक्रिया को पूरी तरह से Win32 प्रक्रिया माना जाता है इससे पहले इसे कई अतिरिक्त बहीखाता कार्य आइटम करना पड़ता है। और आइए मैनिफ़ेस्ट को पार्स करके लगाए गए सभी अतिरिक्त ओवरहेड को न भूलें, यह जांचें कि छवि को एक संगतता शिम की आवश्यकता है या नहीं, यह जांचना कि सॉफ़्टवेयर प्रतिबंध नीतियां लागू होती हैं या नहीं।

उस ने कहा, मैं उन सभी छोटी चीजों के योग में समग्र मंदी देखता हूं जिन्हें प्रक्रिया, कच्चे निर्माण, प्रारंभिक धागे के कच्चे निर्माण के अलावा किया जाना है। लेकिन शुरुआत में कहा गया है - मल्टीटास्किंग पर मल्टीथ्रेडिंग के पक्ष में, एकमात्र ऐसा सॉफ्टवेयर जो इस अतिरिक्त व्यय से गंभीर रूप से प्रभावित है, को यूनिक्स सॉफ्टवेयर को खराब रूप से पोर्ट किया गया है। यद्यपि यह sitatuion बदलता है जब क्रोम और आईई 8 जैसे सॉफ़्टवेयर अचानक मल्टीप्रोसेसिंग के लाभों को फिर से खोजते हैं और अक्सर शुरू होते हैं और टियरडाउन प्रक्रियाएं शुरू करते हैं ...


ओह, ऐसा लगता है कि "यह बेहतर है" इस तरह के औचित्य के चलते।

मुझे लगता है कि लोगों को "शोस्टॉपर" पढ़ने से फायदा हो सकता है; विंडोज एनटी के विकास के बारे में किताब।

विंडोज एनटी पर एक प्रक्रिया में डीएलएल के रूप में चलाने वाली सेवाओं का पूरा कारण यह था कि वे अलग प्रक्रियाओं के रूप में बहुत धीमी थीं।

यदि आप नीचे उतर गए और गंदे हो गए तो आपको पता चलेगा कि लाइब्रेरी लोडिंग रणनीति समस्या है।

इकाइयों (सामान्य रूप से) साझा पुस्तकालयों (डीएलएल) कोड सेगमेंट वास्तव में साझा किए जाते हैं।

विंडोज एनटी प्रति प्रक्रिया डीएलएल की एक प्रति लोड करता है, क्योंकि यह लोड होने के बाद लाइब्रेरी कोड सेगमेंट (और निष्पादन योग्य कोड सेगमेंट) में हेरफेर करता है। (बताता है कि आपका डेटा कहां है?)

इसके परिणामस्वरूप पुस्तकालयों में कोड सेगमेंट होते हैं जो पुन: प्रयोज्य नहीं होते हैं।

तो, एनटी प्रक्रिया बनाने वास्तव में बहुत महंगा है। और नीचे की तरफ, यह डीएलएल की स्मृति में कोई सराहनीय बचत नहीं करता है, लेकिन अंतर-ऐप निर्भरता समस्याओं का मौका देता है।

कभी-कभी यह वापस कदम उठाने के लिए इंजीनियरिंग में भुगतान करता है और कहता है, "अब, अगर हम इसे वास्तव में चूसने के लिए डिजाइन करने जा रहे थे, तो यह कैसा दिखता है?"

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


जेपी ने जो कहा वह जोड़ना: अधिकांश ओवरहेड प्रक्रिया के लिए Win32 स्टार्टअप से संबंधित है।

विंडोज एनटी कर्नेल वास्तव में गाय कांटा का समर्थन करता है। SFU (विंडोज़ के लिए माइक्रोसॉफ्ट का यूनिक्स पर्यावरण) उनका उपयोग करता है। हालांकि, Win32 कांटा का समर्थन नहीं करता है। एसएफयू प्रक्रियाएं Win32 प्रक्रियाएं नहीं हैं। एसएफयू Win32 के लिए ऑर्थोगोनल है: वे एक ही कर्नेल पर बने पर्यावरण उपप्रणाली दोनों हैं।

आउट-ऑफ-प्रोसेस एलपीसी के अलावा CSRSS को एक्सपी में कॉल किया गया है और बाद में आवेदन संगतता डेटाबेस में प्रोग्राम को खोजने के लिए एप्लिकेशन संगतता इंजन को प्रक्रिया कॉल से बाहर कर दिया गया है। यह चरण पर्याप्त ओवरहेड का कारण बनता है जो माइक्रोसॉफ्ट प्रदर्शन कारणों से डब्ल्यूएस2003 पर संगतता इंजन को अक्षम करने के लिए समूह नीति विकल्प प्रदान करता है।

Win32 रनटाइम लाइब्रेरीज़ (kernel32.dll, आदि) स्टार्टअप पर बहुत सारी रजिस्ट्री पढ़ता है और प्रारंभिकता करता है जो यूनिक्स, एसएफयू या मूल प्रक्रियाओं पर लागू नहीं होता है।

मूल प्रक्रियाएं (कोई पर्यावरण उपप्रणाली के साथ) बनाने के लिए बहुत तेज़ हैं। एसएफयू प्रक्रिया निर्माण के लिए Win32 से बहुत कम करता है, इसलिए इसकी प्रक्रियाएं भी तेजी से बनाने के लिए हैं।


यह सब कुछ भी है कि विन मशीन पर शायद एंटीवायरस सॉफ़्टवेयर CreateProcess के दौरान लात जाएगा ... यह आमतौर पर सबसे बड़ी मंदी है।


यूनिक्स में 'कांटा' सिस्टम कॉल है जो वर्तमान प्रक्रिया को दो में विभाजित करता है, और आपको दूसरी प्रक्रिया देता है जो पहले के समान होता है (फोर्क कॉल से वापसी)। चूंकि नई प्रक्रिया का पता स्थान पहले से चल रहा है और इसे चलाने के लिए विंडोज़ में 'CreateProcess' को कॉल करने से सस्ता होना चाहिए और इसे exe छवि, संबंधित dlls आदि लोड करना चाहिए।

कांटा के मामले में ओएस नई प्रक्रियाओं से जुड़े स्मृति पृष्ठों के लिए 'कॉपी-ऑन-राइट' अर्थशास्त्र का उपयोग कर सकता है ताकि यह सुनिश्चित किया जा सके कि प्रत्येक व्यक्ति को बाद में संशोधित पृष्ठों की अपनी प्रति प्राप्त हो।





performance