.NET कोर में कौन सा मेमोरी मॉडल लागू किया गया है?


36

ECMA CLI विनिर्देश एक कमजोर मेमोरी मॉडल को परिभाषित करता है। यह कमांड निष्पादन आदेश (जो प्रदर्शन के लिए उपयोगी है) को फिर से व्यवस्थित करने की अनुमति देता है। लेकिन ऐसे मॉडल के लिए निम्न-स्तरीय कोड लिखना बहुत मुश्किल है।

और सबसे महत्वपूर्ण बात - X86 / AMD64 प्रोसेसर आर्किटेक्चर में अधिक सख्त (मजबूत) मेमोरी मॉडल है। परिणामस्वरूप, Microsoft ने विनिर्देशन में वर्णित की तुलना में अपने CLR कार्यान्वयन में एक मजबूत मेमोरी मॉडल लागू किया।

.NET कोर में मेमोरी मॉडल बदल गया है? संभावित रूप से, यह ढांचा X86 / AMD64 की तुलना में कमजोर मेमोरी मॉडल वाले आर्किटेक्चर पर चल सकता है।

इसके अलावा, .NET कोर में मोनो और अन्य शामिल हैं। और जहां तक ​​मुझे पता है, मोनो मेमोरी मॉडल कमजोर है, ईसीएमए से मेल खाती है।

इस लेख में परिचय। NET 5 लिखा गया है:

.NET कोर, .NET फ्रेमवर्क, Xamarin और मोनो का सबसे अच्छा उपयोग करके .NET की क्षमताओं का विस्तार करें।

इसलिए मुझे लगता है कि अगर अभी नहीं, तो भविष्य में ये रनटाइम एक पूरे में विलीन हो जाएंगे।
लेख में नीचे लिखा है:

हम एक दूसरे के लिए CoreCLR और मोनो ड्रॉप-इन रिप्लेसमेंट बनाने की प्रक्रिया में हैं। हम इसे अलग-अलग रनटाइम विकल्पों में से चुनने के लिए बिल्ड स्विच के रूप में सरल बना देंगे।

अगर मैं सही ढंग से समझूं, तो दो (या अधिक) रनटाइम होंगे। और शायद हर किसी का अपना मेमोरी मॉडल होगा।

हम किस बारे में बात कर रहे हैं: मेमोरी मॉडल


8
संबंधित । नीचे पंक्ति: CoreCLR अपने आप को x86 पर CLR की मजबूत गारंटी की नकल करने के लिए विवश नहीं मानता (जो कि निष्पक्ष होना एआरएम पर अव्यावहारिक होगा)। (इसी समय, x86 पर वर्तमान x86 मॉडल से इच्छापूर्वक विचलन करने के लिए कोई प्रोत्साहन नहीं है।)
जेरेन मोस्टर्ट

".NET कोर में मोनो शामिल है और अन्य" लिंक संदर्भ की आवश्यकता है। मुझे विश्वास नहीं है कि यह अभी तक सच है, क्योंकि .NET कोर सीएलआर और मोनो सीएलआर अभी भी अलग चीजें हैं।
लेक्स ली

@LexLi - अपडेट किया गया। जोड़ा गया लिंक।
अलेक्जेंडर पेट्रोव

@Alexander Petrov यह लिंक .NET 5 को चिंतित करता है, जो 2020 में उपलब्ध है। .NET कोर और मोनो अभी भी अलग-अलग प्लेटफॉर्म हैं।
V0ldek

जवाबों:


1

मेमोरी मॉडल रनटाइम के लिए विशिष्ट है, इसलिए आपका प्रश्न वास्तव में "CLR, CoreCLR और मोनोऑंटटाइम के मेमोरी मॉडल में कोई अंतर है"।

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

मोनोऑन्टाइम के लिए, मुझे यह डॉक्टर मिला है जो एटमिक्स के बारे में बात करता है और वास्तव में जिस तरह से मोनो इसे लागू करता है, उसका वर्णन करता है, हालांकि विस्तार का स्तर कम है।

CoreCLR का विवरण खोजना और भी पेचीदा है। वहाँ कुछ keypoints इस में प्रकाश डाला हैं डॉटनैट / coreclr GitHub धागा और वाष्पशील पढ़ने / राईट के बारे में चर्चा इस एक में

उत्तर देने का सबसे सरल तरीका है - हां, उपरोक्त संसाधनों के आधार पर, यह बदल गया है।

हालाँकि, आपके प्रश्न का उत्तर देने का एक दूसरा तरीका है और वह यह है कि इसके आधार को केवल नकार दिया जाए - ऐसा लगता है कि मेमोरी मॉडल इस अर्थ में बदल गया कि कुछ स्मार्ट लोग बैठ गए, ECMA CLI कल्पना को फिर से लिखा, जिससे कि CoreCLR मेमोरी-मॉडल कल्पना और वह नया मेमोरी-मॉडल है। बात वह नहीं है। उल्लेख किए गए स्मार्ट लोग बैठ गए और, कई महीनों के दौरान, डिजाइन को विश्वसनीय, तेज, समझदारी से लागू करने के लिए परिष्कृत किया और कल्पना की न्यूनतम गारंटी का उल्लंघन नहीं किया। लिंक जो डफी के ब्लॉग से उद्धृत:

हमने अपने मॉडल का निर्माण अनौपचारिक कार्य और डिज़ाइन-बाय-उदाहरण के वर्षों में किया है ... (...) यह एक कार्यान्वयन से अगले में बदलने के लिए उपयुक्त है।

अनौपचारिक ईसीएमए विनिर्देश, दुर्भाग्यपूर्ण है, जैसा कि अभी के लिए औपचारिक है। ECMA कल्पना और CLR कार्यान्वयन के बीच परिवर्तनों का कोई औपचारिक विवरण नहीं है, और न ही CLR और CoreCLR के बीच परिवर्तनों का औपचारिक विवरण है। और, इससे भी महत्वपूर्ण बात यह है कि, ECMA CLI और CLR / CoreCLR के बीच कार्यान्वयन विशिष्ट अंतर सिर्फ इतना ही है - कार्यान्वयन विशिष्ट - और इस पर भरोसा नहीं किया जाना चाहिए । .NET कोर मेमोरी मॉडल कैसे कार्यान्वित किया जाता है इसका केवल 100% विश्वसनीय स्रोत स्रोत कोड है। और यह स्पष्ट रूप से हर प्रतिबद्ध, हर रिलीज के साथ बदलता है, और इसमें कोई गारंटी नहीं है कि टीम पूरे घबराने वाले को खिड़की से बाहर नहीं फेंक देगी और इसे .NET 5 के लिए फिर से लिख देगी जैसा कि ईसीएमए युक्ति के समान है (हालांकि बेतहाशा संभावना नहीं है) )।

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