আমি প্রোগ্রামিং ভাষাগুলির বাস্তবায়ন কৌশলগুলি সন্ধান করছি এবং সম্প্রতি স্প্যাগেটি স্ট্যাকগুলি জুড়ে এসেছি, যা ধারাবাহিকতা পাস করার স্টাইল মডেলটির (যেমন স্কিম এবং এসএমএল / এনজে তাদের ব্যবহারের ভিত্তিতে দেওয়া হয়েছে ) মনে করা ভাল fit সরলতার স্বার্থে, আসুন কেবল এই প্রশ্নের জন্য একটি একক থ্রেডেড প্রক্রিয়া বিবেচনা করুন।
তবে আমি উইকিপিডিয়ায় ডায়াগ্রামের মাধ্যমে কিছুটা বিভ্রান্ত হয়েছি ( অন্য কোথাও পাওয়া যায় )। বিশেষত, আমি বুঝতে পারি না কীভাবে এমন পরিস্থিতি তৈরি হতে পারে। আমি কেবল এটিই কল্পনা করতে পারি যে ধূসর রঙের শাখাগুলি অ্যাক্সেসযোগ্য নয় এবং আবর্জনা সংগ্রহ করা উচিত। অন্যদিকে, স্প্যাগেটি স্ট্যাকগুলি ব্যবহার করে কীভাবে সিপিএস প্রয়োগ করতে হবে তা সম্পর্কে আমার অস্পষ্ট বোধের সাথে, আমি ভাবতে পারি না যে আপনি কীভাবে সেই কাঠামোটিতে লুপ পেতে পারেন। আমাকে এই সিদ্ধান্তে পৌঁছাতে হবে, "প্যারেন্ট-পয়েন্টার ট্রি" এর পরিবর্তে এটি আসলে একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফ, যতগুলি নো-আবর্জনা উত্স রয়েছে সেখানে থ্রেড রয়েছে, এবং যতগুলি ডুবে রয়েছে (সম্ভাব্য) "বহির্গমন পয়েন্ট"।
তবে এই বাস্তবায়ন সম্পর্কে আমার বোঝাপড়াটি অস্পষ্ট, তাই আমি অনুমান করি আমি সম্ভবত কিছু অনুভব করছি। আমি আশা করি কেউ আমাকে এখানে "স্প্যাগেটি কল স্ট্যাকস" আলোকিত করতে পারে, যার দ্বারা আমি সিপিএস-ভিত্তিক প্রক্রিয়াগুলি বাস্তবায়নের জন্য স্কিম এবং / অথবা এসএমএল / এনজেতে ব্যবহৃত ডেটা স্ট্রাকচারটি বোঝাতে চাইছি।
নিম্নলিখিত স্প্যাগেটি কল স্ট্যাক দেওয়া:
[exit point] <-- ... <-- [frame A] <-- [frame B (active)] ^ `---- [frame C]
আমি যতদূর বুঝতে পেরেছি, বি থেকে যে কোনও প্রবাহ নিয়ন্ত্রণ হয় পিতামাতার কাছে ঝাঁপিয়ে স্ট্যাকটি উন্মুক্ত করে (এটি সক্রিয় হয়ে যায়, নাগাছবি বি এখন আবর্জনা হয়ে থাকে), বা একটি সাবগ্রাফ দ্বারা সক্রিয় ফ্রেমটি প্রতিস্থাপন করে কেবল বি বা রেফারেন্সের দ্বারা রেফারেন্স ব্যবহার করে সংযুক্ত রয়েছে নতুন ফ্রেমে। এক্সিকিউশন ফ্রেম সি তে প্রবাহিত হতে পারে না, যার অর্থ অবশ্যই ফ্রেম সি আবর্জনা।
আগের পরিস্থিতিটির পরিবর্তে, আমি মনে করি যে নিম্নলিখিত আবর্জনামুক্ত পরিস্থিতি তৈরি হতে পারে:
[exit point] <-- ... <-- [frame W] <-- [frame X] <-- [frame Z (active)] ^ | `---- [frame Y] <---´
উদাহরণস্বরূপ, আমি কল্পনা করতে পারি যে ফ্রেম জেড কিছু সিদ্ধান্ত ফাংশনের অন্তর্গত, যা ফ্রেম এক্স বা ফ্রেম ওয়াইয়ের সাথে অব্যাহত থাকে (যার কোনওটি ডব্লিউতে ফিরে আসবে)। এর অর্থ স্প্যাগেটি কল স্ট্যাকগুলি "প্যারেন্ট পয়েন্টার ট্রি " নয়।
যাইহোক, আমি এমন কোনও পরিস্থিতি কল্পনা করতে পারি না যেখানে লুপ তৈরি করা যায়। উদাহরণস্বরূপ নিম্নলিখিত পরিস্থিতি গ্রহণ করুন:
[exit point] <-- ... <-- [frame P] --> [frame Q (active)] ^ | | v `---- [frame R]
আমি জানি যে পুনরাবৃত্তি বাঁধাই একটি জিনিস, তবে আমি অত্যন্ত সন্দেহ করি যে এটি বোধগম্য। যদি কিউ আর-তে ফিরে আসে, ফ্রেম কিউটি "ব্যয়" হয়েছে। যদি আর পি তে ফিরে আসে, এবং পি কেবল Q তে ফিরে আসতে না পারে, কারণ এটি প্রথমে পুনরায় পুনর্নির্মাণ করা দরকার। যেমন, লুপগুলি অসঙ্গতিপূর্ণ রাষ্ট্রের কারণ হতে পারে। (অবশ্যই, যদি না আমি এই তথ্য কাঠামোর উদ্দেশ্যকে ভুল বুঝি এবং আপনি কেবলমাত্র আপনার বর্তমান ফ্রেমের টেম্পলেট হিসাবে এতে নোডগুলি ব্যবহার করতে চান))
এই পর্যবেক্ষণগুলি থেকে, আমাকে এই সিদ্ধান্তে পৌঁছাতে হবে যে একটি স্প্যাগেটি কল স্ট্যাক (আবর্জনা ছাড়াই) আসলে একটি ডিএজি। এটা কি সঠিক? অথবা আমি কি এই তথ্য কাঠামোর উদ্দেশ্যকে ভুল বুঝছি?
আপডেট:
আমি নিম্নলিখিত কাগজের একটি অনুলিপি মাধ্যমে স্কিম করেছি :
ইএ হক এবং বিএ ডেন্ট। 1968. বুড়োদের 'বি 6500 / বি 7500 স্ট্যাক মেকানিজম। ইন 30 এপ্রিল প্রসিডিংস - মে 2, 1968 বসন্ত যৌথ কম্পিউটার সম্মেলনে (AFIPS 68 -তোমাদের (বসন্ত))। এসিএম, নিউ ইয়র্ক, এনওয়াই, মার্কিন যুক্তরাষ্ট্র, 245-251। ডিওআই = http://dx.doi.org/10.1145/1468075.1468111
এই কাগজটি সুগুয়ারো স্ট্যাক সিস্টেমটিকে সংজ্ঞায়িত করেছে বলে মনে হচ্ছে। দেখা যাচ্ছে, এই সুগুয়ারো স্ট্যাক সিস্টেমটি একটি traditionalতিহ্যবাহী কল স্ট্যাক যা একাধিক "চাকরিগুলি" আংশিকভাবে ভাগ করা স্ট্যাকের ফ্রেমের মধ্যে দিয়ে যেতে দেয়; এটি সম্পূর্ণরূপে ধারাবাহিকতার সাথে সম্পর্কিত নয়।
নিম্নলিখিত কাগজটি (এবং এর 1996 এর সহযোগী কাগজ) স্পষ্টতই ব্যাখ্যা করছে যে এসএমএল / এনজে সংকলকটিতে কী চলছে:
ঝং শাও এবং অ্যান্ড্রু ডব্লিউ। আপেল। 2000. দক্ষ এবং নিরাপদ জন্য স্থান বন্ধের রূপান্তর। এসিএম ট্রান্স কার্যক্রম. ল্যাঙ। Syst। 22, 1 (জানুয়ারী 2000), 129-161। ডিওআই = http://dx.doi.org/10.1145/345099.345125
আমি মনে করি এই প্রশ্নটি দিয়ে অন্য কিছু করার আগে আমার এই কাগজটি ( লেখকের ওয়েবসাইটে অনুলিপি ) পড়া উচিত । "নিরাপদে লিঙ্কযুক্ত সমাপ্তি" ধারণাটি সুগুয়ারো স্ট্যাক সিস্টেমের সাথে একেবারে অনুরূপ, এটি সর্বদা খুব অগভীর এবং কেবল বিনামূল্যে ভেরিয়েবলগুলি ভাগ করে নেওয়ার উদ্দেশ্যে:
আমাদের নতুন ক্লোজার-রূপান্তর অ্যালগরিদম নিরাপদে সংযুক্ত ক্লোজারগুলি (চিত্র 1-এর 3 য় কলাম) ব্যবহার করে যা ফাংশনে কেবলমাত্র প্রয়োজনীয় ভেরিয়েবলগুলি রাখে তবে একই জীবনকাল সহ একটি চলকযোগ্য রেকর্ডে ভেরিয়েবলগুলি গ্রুপ করে ক্লোজার অনুলিপি এড়ান। [...] লিঙ্কযুক্ত বন্ধের বিপরীতে, নিরাপদে লিঙ্কযুক্ত বন্ধের নেস্টিং স্তরটি কখনও কখনও দু'বারের বেশি হয় না (বন্ধের জন্য একটি স্তর নিজেই; বিভিন্ন জীবনের সময় রেকর্ডের জন্য অন্যটি) তাই তারা এখনও খুব দ্রুত পরিবর্তনশীল অ্যাক্সেসের সময় উপভোগ করে।
কাগজটি স্পষ্টভাবে উল্লেখ করেছে যে এটি "কোনও রানটাইম স্ট্যাক" ব্যবহার করে না:
পরিবর্তে, আমরা সমস্ত অ্যাক্টিভেশন রেকর্ডকে ধারাবাহিকতা ফাংশনগুলির জন্য ক্লোজার হিসাবে বিবেচনা করি এবং তাদের স্তূপে রেজিস্টারে বরাদ্দ করি।
আমি মনে করি যে আমি উইকিপিডিয়া নিবন্ধটি ভুল বুঝেছি এবং / অথবা ভুল লিখেছি, যেহেতু স্প্যাগেটি স্ট্যাকগুলি প্রবাহ নিয়ন্ত্রণের জন্য ব্যবহৃত হয় না। যাইহোক, আপেল এবং শাওয়ের কাগজপত্রগুলি যত্ন সহকারে পড়ার পরে, আমি সম্ভবত "স্প্যাগেটি কল স্ট্যাক" (যা আপাতদৃষ্টিতে কোনও জিনিস নয়) এর চেয়ে ক্লোজারের নির্ভরতা গ্রাফের প্রসঙ্গে প্রশ্নটি পুনরায় ফিরিয়ে দিতে পারি।