सबसे आम बहु-उपयोगकर्ता ऑपरेटिंग सिस्टम (आधुनिक विंडोज, लिनक्स, अन्य यूनिक्स वेरिएंट्स, वीएमएस - शायद वर्चुअल मेमोरी की अवधारणा वाले सभी ओएस) सुरक्षा के लिए एक-दूसरे से प्रक्रियाओं को अलग करने का प्रयास करते हैं। यदि प्रक्रिया ए प्रक्रिया बी की बचे हुए मेमोरी को पढ़ सकता है, तो उसे उस उपयोगकर्ता डेटा तक पहुंच प्राप्त हो सकती है जो उसके पास नहीं होनी चाहिए, इसलिए ये ऑपरेटिंग सिस्टम नई प्रक्रिया में उपलब्ध होने से पहले स्मृति के पृष्ठों को साफ़ कर देंगे। अनियमित RAM प्राप्त करने के लिए आपको शायद उच्च विशेषाधिकार प्राप्त करना होगा, और समाधान संभवतः उस ऑपरेटिंग सिस्टम पर निर्भर करेगा।
एम्बेडेड ओएस, डॉस, और विंडोज के प्राचीन संस्करणों में आम तौर पर स्मृति की सुरक्षा के लिए सुविधाएं नहीं होती हैं। लेकिन उनके पास वर्चुअल मेमोरी या मजबूत प्रक्रिया अलगाव की अवधारणा भी नहीं है। इन पर, सामान्य तरीकों के माध्यम से स्मृति आवंटित करना (उदाहरण के लिए, malloc
) आपको कुछ भी विशेष किए बिना अनियमित स्मृति प्रदान करेगा।
विंडोज़ पर अधिक जानकारी के लिए, आप ओएस थ्रेड के बारे में जानने के लिए Windows zero page thread
खोज सकते हैं जिसका एकमात्र काम अप्रयुक्त पृष्ठों में शून्य लिखना है ताकि उन्हें दोबारा बाहर निकाला जा सके। इसके अलावा, विंडोज़ में superfetch
नामक एक सुविधा है जो अप्रयुक्त RAM को उन फ़ाइलों के साथ भरती है जो विंडोज भविष्यवाणी करते हैं कि आप जल्द ही खोलना चाहेंगे। यदि आपने स्मृति आवंटित की है और विंडोज ने आपको एक सुपरफ़ेच पेज देने का निर्णय लिया है, तो आपको एक ऐसी फाइल की सामग्री दिखाई देगी जो आपको पढ़ने के लिए उपयोग नहीं है। यह एक और कारण है कि पृष्ठों को किसी प्रक्रिया में आवंटित किए जाने से पहले साफ़ किया जाना चाहिए।
स्रोत
2016-05-12 22:22:02
आपको इसके लिए क्या चाहिए? क्या आप यादृच्छिक मूल्य प्राप्त करने की कोशिश कर रहे हैं? – dbush
एक एक्सवाई समस्या की तरह लगता है। –
शायद यह जिज्ञासा से बाहर है और/या सीखने की जरूरत है। एक वैध सवाल या तो रास्ता। –