2014-06-14 17 views
5

मैं ऑपरेटिंग सिस्टम और उस चीज के बारे में सीख रहा हूं जो मुझे समझ में नहीं आता है कि ढेर और ढेर हैं। मैं लाभ जानता हूं और प्रत्येक कैसे काम करता है, लेकिन गतिशील भाषाओं के मामले में मैं यह नहीं समझ सकता कि स्टैक आवंटित कैसे किया जाता है।PHP में ढेर और ढेर?

स्थैतिक टाइप की गई भाषाओं में सभी आदिम डेटा प्रकार स्टैक पर संग्रहीत होते हैं क्योंकि वे छोटे होते हैं और उन्हें आवंटित किए गए उसी क्रम में कम या ज्यादा हटा दिया जाएगा, हालांकि PHP जैसी भाषाओं में यह रन टाइम तक ज्ञात नहीं है। तो ढेर आकार और परिवर्तनीय आवंटन कैसे संभव है?

यदि मैं समझता हूं कि सटीक स्टैक आकार को प्राचीन डेटा प्रकारों और कुछ ऑफसेट की संख्या का विश्लेषण करके संकलन समय पर निर्धारित किया गया है। PHP या अन्य गतिशील भाषाओं में प्रक्रिया कैसे की जाती है?

इस सवाल अंधेरे में लात है, तो मुझे कुछ गाइड कैसे इस

+1

मैं गतिशील भाषाओं – Jack

उत्तर

2
  1. के बारे में जानने के लिए अगर मैं इसे सही ढंग से समझते हैं, सभी पीएचपी डेटा प्रकार zval हैं दे कृपया। और zval कुछ "Z" डेटा प्रकार (सी में परिभाषित) पर आधारित है। "वास्तविक" डेटा प्रकार की सीमा संख्या है। मुझे विश्वास है कि वे ढेर में संग्रहित हैं।

    तो हालांकि उपयोगकर्ता नए डेटा प्रकार बना सकते हैं, लेकिन वे "असली" डेटा प्रकार नहीं हैं लेकिन अलग-अलग zval मान हैं। और "वास्तविक" डेटा प्रकार की संख्या और परिभाषा स्थिर है। इस प्रकार स्टैक का आकार और सामग्री रन टाइम में नहीं बदलेगी।

  2. स्मृति का आकार सीमित है। PHP को reference counting और कचरा संग्रहण सक्रिय रूप से करना है। अधिक जानकारी के लिए, कृपया this slide about PHP memory management पढ़ें।

1

dynamic programming language के मामले में, इंटरेटर इसका ख्याल रखता है। एक व्याख्या अधिनियम लगभग कंप्यूटर की तरह है। के 32-बिट मशीन पर एक सी की तरह व्याख्या की प्रोग्रामिंग भाषा चल मान लेते हैं:

ग = 10;

मूल रूप से निम्नलिखित हर अभिव्यक्ति के लिए होता है, एक न्यूनतम में व्याख्या:

  • परोक्ष को c वैरिएबल प्रकार अनुमान व्याख्या एक पूर्णांक के रूप में;
  • c पहचानकर्ता अभिव्यक्ति की symbol table
  • दाईं ओर मूल्यांकन किया जाता है पर डाल दिया जाता है और परिणाम c पहचानकर्ता के लिए जुड़ा हुआ है।

और जब आप इस तरह एक अभिव्यक्ति लिखें:

a = c * 2 

एक प्रतीक तालिका में ऊपर देखो किया जाता है, c पहचानकर्ता की तलाश में है और अगर मिल गया, प्रतीक तालिका पकड़ संदर्भ जैसे से इस प्रविष्टि , जहां हमारे 10 मान स्मृति में संग्रहीत किया गया था। यह 10 मूल्य भरी हुई और फिर "की जगह" अभिव्यक्ति में है।

+0

कैसे मान जो जाना रद्द नहीं कर रहे हैं के बारे में करने के लिए टैग डायनामिक-प्रोग्रामिंग तय? – gorgi93

+1

वे अभी भी स्मृति पर रहते हैं। –

+0

किस प्रकार या प्रकार के चर के रूप में? – gorgi93

संबंधित मुद्दे