गतिशील स्मृति आवंटन के लिए डेटा संरचना


12

सेल-जांच मॉडल के बारे में सोचें। क्या कोई डेटा संरचना है जो किसी भी लम्बाई (जैसे सी में मॉलोक) की स्मृति के सन्निहित चनों को आवंटित कर सकती है, और स्मृति विभाजन से बचते हुए उन्हें मुक्त कर देती है, और सबसे खराब स्थिति निर्धारणीय ओ (लॉग एन) समय में हर ऑपरेशन को अंजाम देती है: स्मृति का कुल आकार?

मेमोरी सेगमेंटेशन से बचने से मेरा मतलब है कि अगर फ्री सेल की कुल संख्या F है, तो मुझे F सेल्स के एक सेगमेंट सेगमेंट या F सेल्स के बारे में आवंटित करने में सक्षम होना चाहिए।

जवाबों:


6

समय सीमा के बिना भी, "मेमोरी सेगमेंट से बचने के लिए" असंभव है जब तक कि आप आवंटित वस्तुओं को चारों ओर स्थानांतरित नहीं कर सकते, जैसे कि एक कॉम्पैक्ट कचरा संग्रहकर्ता। , "गतिशील भंडारण आवंटन के संबंध में कुछ कार्य के लिए सीमा" रॉबसन के देखें कि कौन से पता चलता है कि आवंटन बाइट्स के बीच आकार के ब्लॉक में और की आवश्यकता है स्मृति का बाइट्स।mnNΩ(mlog(N/n))

इसके अतिरिक्त, बड सिस्टम इस बाउंड को प्राप्त करता है और लॉगरिदमिक समय में किया जा सकता है।


संदर्भ के लिए धन्यवाद। मैं आवंटित वस्तुओं को इधर-उधर करने की अनुमति देता हूं (अन्यथा यह एक बुरे उदाहरण के साथ आने में काफी आसान लगता है)। क्या आपके द्वारा उल्लेखित निचली सीमा अभी भी लागू होती है?
मनु

मेरी जानकारी मे नहीं। आप इस बारे में एक नया प्रश्न पोस्ट करना चाह सकते हैं, क्योंकि यह वास्तव में मॉलोक कैसे संचालित होता है, से बहुत अलग है। उदाहरण के लिए, एक प्रश्न पर विचार करना होगा, यह सवाल है कि आकार ब्लॉक को स्थानांतरित करने के लिए आप किस समय की लागत को निर्धारित करेंगे । आप इसके बारे में थोड़ा सा पढ़ सकते हैं Bender et alm
jbapple

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

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