सामग्री पर जाएँ
PS5PCEM
काम करता हैफ़र्मवेयर और HLE

डायरेक्ट मेमोरी, फ़्लेक्सिबल मेमोरी और पूल

गेस्ट पते असली होस्ट पते हैं। डायरेक्ट मेमोरी उस जगह में मैप किया गया एक विरल साझा भौतिक पूल है, और MemoryPool उसी आधार पर आरक्षण, कमिट और बैच ऑपरेशन जोड़ता है।

10 अक्टूबर 2026 तक के रिपॉज़िटरी नोट्स

गेस्ट पता ही होस्ट पता है

गेस्ट x86-64 कोड नेटिव रूप से चलता है और उसमें निरपेक्ष पते होते हैं, इसलिए PS5PCEM प्रक्रिया को किसी भी मनचाहे आवंटन में नहीं खिसका सकता। मेमोरी मॉड्यूल कोई भी मॉड्यूल लोड होने से पहले कंसोल का लेआउट आरक्षित कर लेता है। सिस्टम-प्रबंधित विंडो 0x40000 से शुरू होकर 32 GiB से ठीक पहले तक जाती है। उसके बाद सिस्टम-आरक्षित और डिवाइस विंडो आती हैं। Windows और Linux पर उपयोगकर्ता विंडो 0x10_0000_0000 से 0xFC_0000_0000 तक है, यानी 944 GiB पता-स्थान। macOS यह विंडो ऊपर से शुरू करता है और 560 GiB पाता है।

ये रेंज आरक्षण हैं, कमिट की गई RAM नहीं। मैपिंग बनने पर पेज 16 KiB की इकाइयों में कमिट होते हैं, और अनमैप करने पर बाहरी आरक्षण बना रहते हुए उनका कमिट हट जाता है। उपयोगों के बीच कोई दूसरा होस्ट आवंटन गेस्ट पता नहीं छीन सकता।

डायरेक्ट और फ़्लेक्सिबल मेमोरी

डायरेक्ट मेमोरी भौतिक वीडियो मेमोरी के लिए गेस्ट का नाम है। गेम एक भौतिक रेंज आरक्षित करता है, फिर उसे मैप करता है। दोनों चरण अलग हैं। मैपिंग जाँचती है कि पूरी भौतिक रेंज आरक्षित है, CPU और GPU सुरक्षा का अनुवाद करती है, और या तो सटीक तय पता कमिट करती है या संरेखित ख़ाली जगह खोजती है। एक ही भौतिक ऑफ़सेट कई वर्चुअल पतों पर मैप हो सकता है, और वे उपनाम सुसंगत रहते हैं क्योंकि वे एक ही विरल आधार ऑब्जेक्ट साझा करते हैं।

गेम द्वारा पहले से आरक्षित रेंज में तय मैप आरक्षण के भीतर ही कमिट होता है। पहले आरक्षण छोड़ देने से गेम उन हिस्सों पर अपना दावा खो देता जिन्हें उसने अभी मैप नहीं किया। भौतिक मेमोरी उसी आकार में छोड़ी जाती है जो गेम माँगता है, चाहे वह बीच का कोई छेद हो या कई आरक्षणों में फैली रेंज। फ़्लेक्सिबल मेमोरी उसी पता-स्थान टेबल का इस्तेमाल करती है, प्लेटफ़ॉर्म के डिफ़ॉल्ट 4 GiB बजट के साथ, और उपयोगकर्ता विंडो पर लौटने से पहले 0x02_0000_0000 से सिस्टम-प्रबंधित विंडो खोजती है।

MemoryPool और Windows कमिट

छह libkernel MemoryPool एक्सपोर्ट एक वर्चुअल क्षेत्र आरक्षित करते हैं, भौतिक क्षमता बढ़ाते हैं, साझा आधार को कमिट और डीकमिट करते हैं, क्रमबद्ध बैच चलाते हैं और ब्लॉक आँकड़े बताते हैं। दान किए गए ब्लॉक कमिट रहते हुए सामान्य डायरेक्ट मेमोरी के रूप में मैप या मुक्त नहीं किए जा सकते। बैच कमिट, डीकमिट, सुरक्षा और प्रकार बदलाव काम करते हैं। बैच MOVE असमर्थित रहता है और ब्लॉक खिसकने का दिखावा करने के बजाय त्रुटि लौटाता है।

Windows पर संरेखित डायरेक्ट-मेमोरी व्यू 64 KiB के सेक्शन व्यू साझा करते हैं। इसलिए अस्थायी अपलोड, रीडबैक और 16 KiB के गेस्ट पेज हर एक अपना लगातार बढ़ता कमिट भार नहीं बनते। किसी आरक्षण की क्वेरी गेस्ट का 72-बाइट वर्चुअल-क्वेरी रिकॉर्ड इस्तेमाल करती हैं और मूल सुरक्षा बिट के साथ आधी-खुली रेंज बताती हैं।

क्या लागू है

  • 16 KiB के पेज में कमिट होने वाली और आरक्षण छोड़े बिना मुक्त होने वाली तय गेस्ट पता विंडो।
  • एक डायरेक्ट-मेमोरी भौतिक ऑफ़सेट के सुसंगत उपनाम।
  • 4 GiB डिफ़ॉल्ट बजट वाली फ़्लेक्सिबल मेमोरी और तय, बिना-ओवरराइट तथा आंशिक अनमैप।
  • MOVE को छोड़कर MemoryPool आरक्षण, विस्तार, कमिट, डीकमिट, आँकड़े और क्रमबद्ध बैच।

क्या अब भी बाक़ी है

  • MemoryPool बैच MOVE साफ़ तौर पर असमर्थित है।
  • गेम के स्वामित्व में न होने वाली रेंज को मुक्त करना अब भी त्रुटि है।
  • आरक्षण वर्चुअल हैं। केवल गेम द्वारा मैप किए गए पेज होस्ट कमिट इस्तेमाल करते हैं।

संबंधित तंत्र

ये पेज क्या हैं

पाठ PS5PCEM रिपॉज़िटरी के आर्किटेक्चर नोट्स और अक्टूबर 2026 की रिपोर्टों पर आधारित है। किसी केंद्रित टेस्ट का पास होना नई फ़्रेम दर या गेम का नया समापन नहीं है।

सभी तकनीकें