Memory management (operating systems)
অপারেটিং সিস্টেমে, মেমরি ম্যানেজমেন্ট হল কম্পিউটারের প্রাথমিক মেমরি পরিচালনার জন্য দায়ী ফাংশন। মেমরি ম্যানেজমেন্ট ফাংশন প্রতিটি মেমরি অবস্থানের অবস্থা ট্র্যাক রাখে, হয় বরাদ্দ বা বিনামূল্যে। এটি নির্ধারণ করে যে প্রতিযোগিতামূলক প্রক্রিয়াগুলির মধ্যে মেমরি কীভাবে বরাদ্দ করা হয়, কোনটি মেমরি পায়, কখন তারা এটি গ্রহণ করে এবং তাদের কতটা অনুমতি দেওয়া হয় তা নির্ধারণ করে। যখন মেমরি বরাদ্দ করা হয় তখন এটি নির্ধারণ করে যে কোন মেমরি অবস্থানগুলি বরাদ্দ করা হবে। এটি ট্র্যাক করে যখন মেমরি মুক্ত বা বরাদ্দ করা হয় না এবং স্থিতি আপডেট করে। এটি অ্যাপ্লিকেশন মেমরি ম্যানেজমেন্ট থেকে আলাদা, যা একটি প্রক্রিয়া অপারেটিং সিস্টেম দ্বারা নির্ধারিত মেমরি পরিচালনা করে। মেমরি ম্যানেজমেন্ট কৌশল একক সংলগ্ন বরাদ্দ একক বরাদ্দ হল সবচেয়ে সহজ মেমরি ম্যানেজমেন্ট কৌশল। কম্পিউটারের সমস্ত মেমরি, সাধারণত অপারেটিং সিস্টেমের জন্য সংরক্ষিত একটি ছোট অংশ বাদে, একটি একক অ্যাপ্লিকেশনের জন্য উপলব্ধ। এমএস-ডস এমন একটি সিস্টেমের উদাহরণ যা এইভাবে মেমরি বরাদ্দ করে। একটি একক অ্যাপ্লিকেশন চালিত একটি এমবেডেড সিস্টেমও এই কৌশলটি ব্যবহার করতে পারে। একক সংলগ্ন বরাদ্দ ব্যবহার করে একটি সিস্টেম এখনও ব্যবহারকারীদের মধ্যে স্যুইচ করার জন্য মেমরির বিষয়বস্তু অদলবদল করে মাল্টিটাস্ক করতে পারে। মিউজিক অপারেটিং সিস্টেমের প্রাথমিক সংস্করণগুলি এই কৌশলটি ব্যবহার করেছিল। বিভাজিত বরাদ্দ বিভাজিত বরাদ্দ প্রাথমিক স্মৃতিকে একাধিক মেমরি পার্টিশনে বিভক্ত করে, সাধারণত স্মৃতির সংলগ্ন ক্ষেত্র। প্রতিটি বিভাগে একটি নির্দিষ্ট কাজ বা কাজের জন্য সমস্ত তথ্য থাকতে পারে। মেমরি ব্যবস্থাপনার মধ্যে রয়েছে একটি কাজের জন্য একটি পার্টিশন বরাদ্দ করা যখন এটি শুরু হয় এবং কাজ শেষ হলে এটি বরাদ্দ করা হয় না। পার্টিশন্ড বরাদ্দের জন্য সাধারণত কিছু হার্ডওয়্যার সাপোর্টের প্রয়োজন হয় যাতে কাজগুলি একে অপরের সাথে বা অপারেটিং সিস্টেমে হস্তক্ষেপ করতে না পারে। আইবিএম সিস্টেম/360 একটি লক-অ্যান্ড-কী কৌশল ব্যবহার করে। অন্যান্য সিস্টেমে বেস এবং বাউন্ড রেজিস্টার ব্যবহার করা হয় যার মধ্যে পার্টিশনের সীমা থাকে এবং অবৈধ অ্যাক্সেস চিহ্নিত করা হয়। UNIVAC 1108 স্টোরেজ লিমিট রেজিস্টারে নির্দেশাবলী এবং তথ্যের জন্য পৃথক বেস/বাউন্ড সেট ছিল। সিস্টেমটি মেমরি ইন্টারলিভিং-এর সুবিধা নিয়ে আলাদা মেমরি মডিউলে আই ব্যাঙ্ক এবং ডি ব্যাঙ্ক স্থাপন করে। পার্টিশনগুলি স্থির হতে পারে, যা ইনিশিয়াল প্রোগ্রাম লোড (আইপিএল) বা বুট টাইমে সংজ্ঞায়িত করা হয়, বা কম্পিউটার অপারেটর দ্বারা, বা গতিশীল, অর্থাৎ স্বয়ংক্রিয়ভাবে একটি নির্দিষ্ট কাজের জন্য তৈরি করা হয়। আইবিএম সিস্টেম/360 অপারেটিং সিস্টেম মাল্টিপ্রোগ্রামিং উইথ এ ফিক্সড নম্বর অফ টাস্কস (এমএফটি) হল স্ট্যাটিক পার্টিশনিং-এর একটি উদাহরণ এবং মাল্টিপ্রোগ্রামিং উইথ এ ভেরিয়েবল নম্বর অফ টাস্কস (এমভিটি) হল ডাইনামিকের একটি উদাহরণ। এমভিটি এবং উত্তরসূরীরা অন্যান্য সিস্টেমে স্ট্যাটিক পার্টিশন থেকে ডায়নামিক পার্টিশনকে আলাদা করতে অঞ্চল শব্দটি ব্যবহার করেন। বুরো কর্পোরেশন বি5500-এর মতো হার্ডওয়্যার টাইপ করা মেমরি ব্যবহার করে অথবা পিডিপি-10 বা জিই-635-এর মতো বেস এবং বাউন্ড রেজিস্টার ব্যবহার করে পার্টিশনগুলি স্থানান্তরযোগ্য হতে পারে। স্থানান্তরিতযোগ্য পার্টিশনগুলি সংলগ্ন শারীরিক স্মৃতির বৃহত্তর অংশ সরবরাহ করতে সংকুচিত হতে সক্ষম। কম্প্যাশন বৃহত্তর সংলগ্ন মুক্ত অঞ্চল তৈরি করার জন্য প্রক্রিয়া সমাপ্তির কারণে স্মৃতির "গর্ত" বা অব্যবহৃত অঞ্চলগুলি মুছে ফেলার জন্য মেমরির "ইন-ইউজ" অঞ্চলগুলিকে সরিয়ে দেয়। কিছু সিস্টেম অতিরিক্ত মেমরি মুক্ত করার জন্য পার্টিশনগুলিকে সেকেন্ডারি স্টোরেজে অদলবদল করার অনুমতি দেয়। আইবিএম-এর টাইম শেয়ারিং অপশন (টিএসও)-এর প্রাথমিক সংস্করণগুলি ব্যবহারকারীদের সময় ভাগ করে নেওয়ার পার্টিশনের মধ্যে এবং বাইরে অদলবদল করেছিল। পেইজড মেমোরি ম্যানেজমেন্ট পেইজড অ্যালোকেশন কম্পিউটারের প্রাথমিক মেমোরিকে পেইজ ফ্রেম নামে নির্দিষ্ট আকারের ইউনিটে এবং প্রোগ্রামের ভার্চ্যুয়াল অ্যাড্রেস স্পেসকে একই আকারের পৃষ্ঠায় বিভক্ত করে। হার্ডওয়্যার মেমরি ম্যানেজমেন্ট ইউনিট পৃষ্ঠাগুলিকে ফ্রেমে ম্যাপ করে। ভৌত স্মৃতি একটি পৃষ্ঠার ভিত্তিতে বরাদ্দ করা যেতে পারে যখন ঠিকানার স্থানটি সংলগ্ন বলে মনে হয়। সাধারণত, পেজের মেমরি ব্যবস্থাপনার সাথে, প্রতিটি কাজ তার নিজস্ব ঠিকানার জায়গায় চলে। যাইহোক, কিছু একক অ্যাড্রেস স্পেস অপারেটিং সিস্টেম রয়েছে যা একক অ্যাড্রেস স্পেসের মধ্যে সমস্ত প্রক্রিয়া চালায়, যেমন আইবিএম আই, যা একটি বড় অ্যাড্রেস স্পেসের মধ্যে সমস্ত প্রক্রিয়া চালায় এবং আইবিএম ওএস/ভিএস 2 (এসভিএস), যা একটি একক 16 এমআইবি ভার্চুয়াল অ্যাড্রেস স্পেসে সমস্ত কাজ চালায়। যখন সিস্টেমটি প্রাথমিক এবং গৌণ মেমরির মধ্যে প্রয়োজন অনুযায়ী পৃষ্ঠাগুলি সরাতে পারে তখন পেজযুক্ত মেমরি চাহিদা-পেজযুক্ত হতে পারে। সেগমেন্ট মেমোরি ম্যানেজমেন্ট সেগমেন্ট মেমোরি হল একমাত্র মেমোরি ম্যানেজমেন্ট কৌশল যা ব্যবহারকারীর প্রোগ্রামকে "রৈখিক এবং সংলগ্ন ঠিকানা স্থান" প্রদান করে না। সেগমেন্টগুলি স্মৃতির ক্ষেত্র যা সাধারণত তথ্যের যৌক্তিক গোষ্ঠীকরণের সাথে সামঞ্জস্যপূর্ণ যেমন একটি কোড পদ্ধতি বা একটি ডেটা অ্যারে। সেগমেন্টগুলির জন্য একটি সেগমেন্ট টেবিলের আকারে হার্ডওয়্যার সমর্থন প্রয়োজন যা সাধারণত মেমরিতে সেগমেন্টের শারীরিক ঠিকানা, এর আকার এবং অন্যান্য ডেটা যেমন অ্যাক্সেস সুরক্ষা বিট এবং স্থিতি (অদলবদল করা, অদলবদল করা ইত্যাদি) ধারণ করে। সেগমেন্টেশন অন্যান্য স্কিমের তুলনায় আরও ভাল অ্যাক্সেস সুরক্ষার অনুমতি দেয় কারণ মেমরি রেফারেন্সগুলি একটি নির্দিষ্ট বিভাগের সাথে সম্পর্কিত এবং হার্ডওয়্যার অ্যাপ্লিকেশনটিকে সেই বিভাগের জন্য সংজ্ঞায়িত মেমরি রেফারেন্স করার অনুমতি দেবে না। পেজিং সহ বা ছাড়াই বিভাজন বাস্তবায়ন করা সম্ভব। পেজিং সমর্থন ছাড়া বিভাগটি হল প্রয়োজন হলে মেমরির ভিতরে এবং বাইরে অদলবদল করা শারীরিক একক। পেজিং সমর্থনের সাথে পৃষ্ঠাগুলি সাধারণত অদলবদল করার একক এবং বিভাজন শুধুমাত্র সুরক্ষার একটি অতিরিক্ত স্তর যোগ করে। একটি খণ্ডিত ব্যবস্থার ঠিকানাগুলিতে সাধারণত সেগমেন্ট আইডি এবং সেগমেন্ট বেস ঠিকানার সাথে সম্পর্কিত একটি অফসেট থাকে, যা অফসেট শূন্য হিসাবে সংজ্ঞায়িত। ইন্টেল আইএ-32 (x86) স্থাপত্য একটি প্রক্রিয়াকে 4 জিআইবি পর্যন্ত 16,383 টি অংশ রাখার অনুমতি দেয়। আইএ-32 বিভাগগুলি কম্পিউটারের রৈখিক ঠিকানা স্থানের উপবিভাগ, পেজিং হার্ডওয়্যার দ্বারা প্রদত্ত ভার্চুয়াল ঠিকানা স্থান। মাল্টিক্স অপারেটিং সিস্টেম সম্ভবত খণ্ডিত মেমরি প্রয়োগকারী সর্বাধিক পরিচিত সিস্টেম। মাল্টিক্স বিভাগগুলি 256 পৃষ্ঠা পর্যন্ত কম্পিউটারের শারীরিক মেমরির উপবিভাগ, প্রতিটি পৃষ্ঠার আকার 1কে 36-বিট শব্দ, যার ফলে সর্বাধিক বিভাগের আকার 1 এম. আই. বি (মাল্টিক্সে ব্যবহৃত 9-বিট বাইট সহ) হয়। একটি প্রক্রিয়ায় 4046টি পর্যন্ত বিভাগ থাকতে পারে। রোলআউট/রোলআউট/রোলিন (আরও/আরআই) একটি কম্পিউটার অপারেটিং সিস্টেম মেমরি ম্যানেজমেন্ট কৌশল যেখানে একটি চলমান প্রোগ্রামের পুরো অ-ভাগ করা কোড এবং ডেটা সহায়ক মেমরিতে (ডিস্ক বা ড্রাম) অন্য কাজের জন্য প্রধান সঞ্চয় মুক্ত করার জন্য অদলবদল করা হয়। প্রোগ্রামগুলি "চাহিদা শেষে or.when কিছু দীর্ঘ অনুষ্ঠানের জন্য অপেক্ষা করে" চালু করা যেতে পারে। রোলআউট/রোলিন সাধারণত সময় ভাগ করে নেওয়ার পদ্ধতিতে ব্যবহৃত হত, যেখানে ব্যবহারকারীর "চিন্তা করার সময়" অদলবদল করার সময়ের তুলনায় তুলনামূলকভাবে দীর্ঘ ছিল। ভার্চুয়াল স্টোরেজ-পেজিং বা সেগমেন্টেশনের বিপরীতে, রোলআউট/রোলিন-এর জন্য কোনও বিশেষ মেমরি ম্যানেজমেন্ট হার্ডওয়্যারের প্রয়োজন হয় না; তবে, যদি না সিস্টেমে মেমরি ম্যাপ বা বেস এবং বাউন্ড রেজিস্টারের মতো স্থানান্তর হার্ডওয়্যার না থাকে, তবে প্রোগ্রামটিকে অবশ্যই তার মূল মেমরি অবস্থানে ফিরিয়ে আনতে হবে। রোলআউট/রোলিন মূলত ভার্চ্যুয়াল মেমরি দ্বারা প্রতিস্থাপিত হয়েছে। রোলআউট/রোলিন ওএস/360 মাল্টিপ্রোগ্রামিংয়ের একটি বৈকল্পিক বৈশিষ্ট্য ছিল যার সাথে পরিবর্তনশীল সংখ্যক কাজ (এমভিটি) রোলআউট/রোলিন একটি নির্দিষ্ট কাজের তার মূল নির্দিষ্ট অঞ্চলের বাইরে অস্থায়ী, গতিশীল সম্প্রসারণের অনুমতি দেয়। যখন কোনও কাজের জন্য আরও জায়গার প্রয়োজন হয়, তখন রোলআউট/রোলিন কাজের ব্যবহারের জন্য অনির্দিষ্ট সঞ্চয়স্থান পাওয়ার চেষ্টা করে। যদি এই ধরনের কোনও বরাদ্দকৃত সঞ্চয়স্থান না থাকে, তাহলে অন্য একটি কাজ শুরু করা হয়-অর্থাৎ, সহায়ক সংরক্ষণাগারে স্থানান্তরিত করা হয়-যাতে তার অঞ্চলটি প্রথম কাজের দ্বারা ব্যবহার করা যেতে পারে। প্রথম কাজের দ্বারা মুক্তি পেলে, এই অতিরিক্ত সঞ্চয়স্থানটি আবার পাওয়া যায়, হয় (1) অনির্দিষ্ট সঞ্চয়স্থান হিসাবে, যদি এটি তার উৎস হয়, অথবা (2) মূল সঞ্চয়ে (রোলড ইন) স্থানান্তর করার জন্য কাজটি গ্রহণ করার জন্য। ওএস/360-তে, রোলআউট/রোলিন শুধুমাত্র ব্যাচ কাজের জন্য ব্যবহার করা হত, এবং রোলিন সেই অঞ্চলের কাজের ধার শেষ না হওয়া পর্যন্ত ঘটে না। আরও দেখুন মেমরি ওভারকমিটমেন্ট মেমরি সুরক্ষা x86 মেমরি সেগমেন্টেশন নোটস রেফারেন্স অপারেটিং সিস্টেম