में उपयोग किए गए ढेर का आकार मैं कर्नेल प्रोग्रामिंग करने के बजाय एक ऑपरेटिंग सिस्टम विकसित कर रहा हूं, मैं कर्नेल को डिजाइन कर रहा हूं। यह ऑपरेटिंग सिस्टम x86 आर्किटेक्चर पर लक्षित है और मेरा लक्ष्य आधुनिक कंप्यूटरों के लिए है। आवश्यक रैम की अनुमानित संख्या 256 एमबी या उससे अधिक है।कर्नेल विकास
सिस्टम पर चलने वाले प्रत्येक धागे के लिए ढेर बनाने के लिए एक अच्छा आकार क्या है? क्या मुझे सिस्टम को इस तरह से डिजाइन करने की कोशिश करनी चाहिए कि अधिकतम लंबाई तक पहुंचने पर स्टैक को स्वचालित रूप से बढ़ाया जा सके?
मुझे लगता है कि अगर मुझे सही याद है कि रैम का एक पृष्ठ 4k या 4096 बाइट है और यह मेरे लिए बहुत कुछ नहीं लगता है। मैं निश्चित रूप से समय देख सकता हूं, खासकर जब कई रिकर्सन का उपयोग करते हैं, तो मैं एक बार में रैम में 1000 से अधिक इंटीग्रर्स रखना चाहता हूं। अब, असली समाधान यह होगा कि कार्यक्रम malloc
का उपयोग कर ऐसा कर रहा है और अपने स्वयं के मेमोरी संसाधनों का प्रबंधन कर रहा है, लेकिन वास्तव में मैं इस पर उपयोगकर्ता की राय जानना चाहता हूं।
आधुनिक कंप्यूटर प्रोग्राम के साथ एक ढेर के लिए 4k बड़ा है? क्या ढेर उस से बड़ा होना चाहिए? क्या किसी भी प्रकार के आकार को समायोजित करने के लिए स्टैक ऑटो-विस्तार करना चाहिए? मुझे व्यावहारिक डेवलपर के दृष्टिकोण और एक सुरक्षा दृष्टिकोण से दोनों में दिलचस्पी है।
एक स्टैक के लिए 4k बहुत बड़ा है? सामान्य कार्यक्रम निष्पादन को ध्यान में रखते हुए, विशेष रूप से सी ++ में कक्षाओं के दृष्टिकोण से, मुझे लगता है कि अच्छे स्रोत कोड malloc/new
को कक्षाओं के निर्माण के दौरान आवश्यक डेटा को फ़ंक्शन कॉल में चारों ओर फेंकने वाले डेटा को कम करने के लिए जाता है।
जो मैंने भी प्राप्त नहीं किया है वह प्रोसेसर की कैश मेमोरी का आकार है। आदर्श रूप से, मुझे लगता है कि स्टैक चीजों को गति देने के लिए कैश में रहता है और मुझे यकीन नहीं है कि मुझे इसे प्राप्त करने की आवश्यकता है, या यदि प्रोसेसर इसे मेरे लिए संभाल सकता है। मैं परीक्षण प्रयोजनों के लिए नियमित उबाऊ पुरानी रैम का उपयोग करने की योजना बना रहा था। मैं तय नहीं कर सकता विकल्प क्या हैं?
मैंने कभी संकलन समय पर कॉन्फ़िगर करने के लिए कुछ करने के बारे में सोचा नहीं। मैं भी 4k की तरह लगता है, नियंत्रण सनकी मुझसे कहता है कि यदि आप वास्तव में है कि अधिक स्मृति की तुलना में अधिक उपयोग करने की आवश्यकता है, तो आप malloc के साथ यह कर होना चाहिए।^_^उस ने कहा, वहाँ पागल एआई प्रोग्रामर हैं जो उनके रिकर्सन से प्यार करते हैं। –
यदि आप एक ही आकार की चीज़ को बार-बार आवंटित कर रहे हैं, तो आपको एक निश्चित-ब्लॉक आवंटक पर विचार करना चाहिए। यह सामान्य उद्देश्य मॉलोक से कहीं अधिक कुशल हो सकता है। – bog