जावा में, जेवीएम (उदा। हॉटस्पॉट) जेआईटी संकलन में सक्षम हैं और इस तकनीक का उपयोग मूल कोड में बाइटकोड संकलित करके निष्पादन को तेज करने के लिए किया जाता है। मेरा सवाल यह है कि यह तकनीकी रूप से कैसे होता है? मेरी समझ यह थी कि आधुनिक प्रोसेसर स्मृति क्षेत्रों को उन वर्गों में चिह्नित करते हैं जो केवल पढ़ने के लिए हैं, और अनुभाग जो दुर्भावनापूर्ण कोड को निष्पादित करने से रोकने के लिए निष्पादन योग्य हैं। इसलिए, जेवीएम वास्तव में मेमोरी रिक्त स्थान में नया "निष्पादन योग्य कोड" नहीं लिख सकता है जिसके पास इसकी पहुंच है (यानी स्वयं संशोधित कोड)। इसलिए, मैं अनुमान लगा रहा हूं कि जेवीएम मूल कोड उत्पन्न करता है, इसे एक फ़ाइल में लिखता है और फिर ऑपरेटिंग सिस्टम सेवाओं का उपयोग गतिशील रूप से उस मूल कोड को स्मृति में लोड करने के लिए करता है, और देशी कोड (फ़ंक्शन) स्थानों के पते की कुछ आंतरिक मैपिंग तालिका को बनाए रखता है ऑपरेटिंग सिस्टम ने इस गतिशील कोड को लोड करने के बाद मेमोरी में ताकि वह उन देशी निर्देशों को ब्रांच कर सके।जावा लोड में जेआईटी संकलन स्मृति में गतिशील रूप से संकलित निर्देशों को कैसे लोड करता है?
मैंने यह जवाब देखा: How is JIT compiled code injected in memory and executed?, लेकिन मैं उलझन में हूं कि क्यों ऑपरेटिंग सिस्टम उपयोगकर्ता प्रोग्रामों को अनुमति देगा रीड + मेमोरी क्षेत्रों को निकालें। क्या अन्य ऑपरेटिंग सिस्टम यानी लिनक्स आदि जेआईटी के काम करने के लिए कुछ समान ऑफर करते हैं?
क्या कोई मेरी समझ को स्पष्ट करने में मदद कर सकता है?