সংক্ষেপে : আবর্জনা সংগ্রহকারীরা পুনরাবৃত্তি ব্যবহার করে না। তারা কেবল দুটি সেট ট্র্যাক করে ট্রেসিং নিয়ন্ত্রণ করে (এটি একত্রিত হতে পারে)। ট্রেসিং এবং সেল প্রসেসিংয়ের ক্রমটি অপ্রাসঙ্গিক, যা সেটগুলি উপস্থাপনের জন্য যথেষ্ট বাস্তবায়নের স্বাধীনতা দেয়। অতএব অনেকগুলি সমাধান রয়েছে যা মেমরির ব্যবহারে আসলে খুব সস্তা। এটি জরুরী, যেহেতু গিরিটি স্মৃতিশক্তি শেষ হয়ে না যাওয়ার পরে জিসিকে সঠিকভাবে বলা হয়। বড় ভার্চুয়াল স্মৃতিগুলির সাথে বিষয়গুলি কিছুটা আলাদা, কারণ নতুন পৃষ্ঠা সহজেই বরাদ্দ করা যেতে পারে এবং শত্রুতে জায়গার অভাব হয় না, তবে ডেটা লোকালটির অভাব হয়
।
আমি ধরে নিই যে আপনি আবর্জনা সংগ্রহকারীদের সন্ধানের বিষয়টি বিবেচনা করছেন, এমন রেফারেন্স গণনা নেই যার জন্য আপনার প্রশ্ন প্রয়োগ হচ্ছে বলে মনে হচ্ছে না।
প্রশ্নটি কোনও সেটকে ট্র্যাক রাখার জন্য ট্রেসিংয়ের মেমরির ব্যয়টির দিকে মনোনিবেশ করছে: অ্যাক্সেসযোগ্য মেমরি কোষগুলির সেট (অন্রেসডের জন্য) এখনও পয়েন্টার রয়েছে যা এখনও খুঁজে পাওয়া যায়নি।
আবর্জনা সংগ্রহের ক্ষেত্রে এটি মেমরির অর্ধেক সমস্যা । জিসিকে অবশ্যই অন্য একটি সেটের খোঁজখবর রাখতে হবে: যে সমস্ত কোষ অ্যাক্সেসযোগ্য বলে প্রমাণিত হয়েছে সেগুলির সেট (পরিদর্শনের জন্য), যাতে প্রক্রিয়া শেষে অন্যান্য সমস্ত ঘর পুনরায় দাবি করতে পারে। একজনের সাথে আলোচনা করা এবং অপরটির সাথে আলোচনা করা সীমিত অর্থবোধ করে না কারণ তাদের একই রকম ব্যয় হতে পারে, একই ধরণের সমাধান ব্যবহার করতে পারে এবং একত্রিত হতে পারে।ভিইউভী
প্রথম যে বিষয়টি লক্ষ্যণীয় তা হ'ল সমস্ত ট্রেসিং জিসি প্রোগ্রাম থেকে অ্যাক্সেসযোগ্য মেমরির কোষগুলির নির্দেশিত গ্রাফের নিয়মিত অনুসন্ধানের উপর ভিত্তি করে একই বিমূর্ত মডেলটিকে অনুসরণ করে, যেখানে মেমরি কোষগুলি শীর্ষে এবং পয়েন্টারগুলি নির্দেশিত প্রান্ত হয়। এটি নিম্নলিখিত সেটগুলির জন্য ব্যবহার করে:
ইতিমধ্যে মিউটারের দ্বারা অ্যাক্সেসযোগ্য কক্ষগুলির সেট (পরিদর্শন করা) পাওয়া গেছে , যেমন প্রোগ্রাম বা অ্যালগরিদম যার জন্য জিসি করা হয়। সেট দুই টুকরো করা সাব-সেট নির্বাচন বিভক্ত হয়:
;ভি ভি = ইউ ∪ টিভীভীভী= ইউ। টি
পয়েন্টারগুলি সহ এখনও পরিদর্শন করা হয়নি এমন পরিদর্শনকৃত কক্ষগুলির সেট (অনুবিযুক্ত);ইউ
পরিদর্শন করা কক্ষগুলির সেট (সন্ধান করা) যা তাদের সমস্ত পয়েন্টার সনাক্ত করেছিল।টি
আমরা ব্যবহার করব কিনা তা হিপগুলির সমস্ত কক্ষের সেটও নোট করি ।এইচ
অ্যালগরিদমকে কাজ করার জন্য কেবলমাত্র এবং , বা এবং , কোনওভাবে উপস্থাপন করা দরকার।ইউ ইউ টিভীইউইউটি
কিছু শিকড় পয়েন্টার যে run সময় সিস্টেম (সাধারণত স্ট্যাক বরাদ্দ মেমরি পয়েন্টার) পরিচিত হয় থেকে অ্যালগরিদম হয়ে পড়েন এবং রাখে সমস্ত কক্ষ তারা অনাবিষ্কৃত সেটে বাতলান (ইন অত: পর খুব)।ভিইউভী
তারপরে সংগ্রাহক একের পর এক কোষ গ্রহণ করে এবং প্রতিটি কক্ষের সমস্ত পয়েন্টার পরীক্ষা করে। প্রতিটি পয়েন্টারের জন্য, যদি নির্দেশিত ঘরটি তবে কিছুই করা হয়নি, অন্যথায় পয়েন্ট পয়েন্টটি যুক্ত করা হয়েছে , কারণ এর পয়েন্টারগুলি এখনও পরীক্ষা করা হয়নি। এর সমস্ত পয়েন্টারগুলি প্রক্রিয়া করা হয়ে গেলে, সেল ট্রেসড সেট থেকে ট্রেসড সেট তে ট্রান্সফার করা হয় ।সি ভি ইউ সি ইউ টিইউগভীইউগইউটি
ইউইউভী= টিVH−VV
VUUT
আমি সেলটি কী, সেগুলি একটি আকারে আসে বা অনেকগুলি, কীভাবে আমরা সেগুলিতে পয়েন্টার পাই, কীভাবে তাদের সংক্রামক করা যেতে পারে, এবং জঞ্জাল সংগ্রহের উপর জরিপগুলিতে আপনি যে বইগুলি এবং জরিপগুলি খুঁজে পেতে পারেন তার অনেকগুলি প্রযুক্তি সম্পর্কিত সমস্যা সম্পর্কেও আমি এড়িয়ে চলেছি ।
U
এই সেটগুলিকে প্রকৃতপক্ষে উপস্থাপন করার পথে যেখানে পরিচিত বাস্তবায়নগুলি পৃথক হয়। অনেক কৌশল বাস্তবে ব্যবহৃত হয়েছে:
বিট ম্যাপ: কিছু মেমরি স্পেস এমন একটি মানচিত্রের জন্য সংরক্ষিত থাকে যা প্রতিটি স্মৃতি কক্ষের জন্য একটি বিট থাকে, যা ঘরের অ্যাড্রেস ব্যবহার করে খুঁজে পাওয়া যায়। সামঞ্জস্যপূর্ণ সেল মানচিত্রে সংজ্ঞায়িত সেটে থাকলে বিটটি চালু থাকে। যদি কেবল বিট মানচিত্র ব্যবহার করা হয় তবে আপনার ঘরে প্রতি 2 বিট প্রয়োজন need
বিকল্পভাবে, প্রতিটি কক্ষে এটি চিহ্নিত করার জন্য আপনার কাছে বিশেষ ট্যাগ বিটের (বা 2) স্থান থাকতে পারে।
log2pp
আপনি ঘরের সামগ্রী এবং এর পয়েন্টারগুলিতে একটি শিকারী পরীক্ষা করতে পারেন।
আপনি উপস্থাপিত সেটের মালিকানাধীন সমস্ত কক্ষের উদ্দেশ্যে মেমরির একটি মুক্ত অংশে ঘরটি স্থানান্তর করতে পারেন।
VTTU
এমনকি আপনি একক সেট এমনকি এই কৌশলগুলি একত্রিত করতে পারেন।
যেমনটি বলা হয়েছে, উপরোক্ত সমস্ত কিছু প্রয়োগ করা আবর্জনা সংগ্রহকারী ব্যবহার করেছেন, কারও কারও কাছে মনে হয় অদ্ভুত। এটি সমস্ত বাস্তবায়নের বিভিন্ন সীমাবদ্ধতার উপর নির্ভর করে। এবং এগুলি মেমোরির ব্যবহারের তুলনায় কম সস্তা হতে পারে, সম্ভবত অর্ডার নীতিগুলি প্রক্রিয়াকরণে সহায়তা করা হয় যা সে উদ্দেশ্যে নির্দ্বিধায় চয়ন করা যেতে পারে, যেহেতু শেষ ফলাফলের জন্য তারা কোনও ব্যাপার না।
নতুন অঞ্চলে কোথাও ট্রান্সফারিং করা সবচেয়ে অদ্ভুত বলে মনে হচ্ছে এটি আসলে খুব সাধারণ: একে কপি সংগ্রহ বলা হয় called এটি বেশিরভাগ ভার্চুয়াল মেমরির সাথে ব্যবহৃত হয়।
স্পষ্টত কোনও পুনরাবৃত্তি নেই, এবং মিউটর অ্যালগরিদম স্ট্যাক ব্যবহার করতে হবে না।
আরেকটি গুরুত্বপূর্ণ বিষয়টি হ'ল বিশাল ভার্চুয়াল স্মৃতিগুলির জন্য অনেকগুলি আধুনিক জিসি প্রয়োগ করা হয় । তারপরে বাস্তবায়নের স্থান এবং অতিরিক্ত তালিকা বা স্ট্যাকের বিষয়টি কোনও সমস্যা নয় কারণ নতুন পৃষ্ঠাগুলি সহজেই বরাদ্দ করা যায়। যাইহোক, বড় ভার্চুয়াল স্মৃতিতে, শত্রু স্থানের অভাব নয়, স্থানীয়তার অভাব । তারপরে, সেটের প্রতিনিধিত্বকারী কাঠামো এবং তাদের ব্যবহারগুলি অবশ্যই ডেটা কাঠামোর স্থানীয়ত্ব এবং জিসি এক্সিকিউশনের সংরক্ষণের দিকে লক্ষ্য করা উচিত । সমস্যা স্থান নয় বরং সময়। অপ্রতুল বাস্তবায়ন মেমরির ওভারফ্লোয়ের চেয়ে অগ্রহণযোগ্য ধীরগতিতে বেশি দেখা যায়।
এই কৌশলগুলির বিভিন্ন সংমিশ্রণের ফলে আমি অনেকগুলি নির্দিষ্ট অ্যালগোরিদমগুলিতে রেফারেন্স দিইনি, কারণ এটি যথেষ্ট দীর্ঘ বলে মনে হচ্ছে।