আসুন বলি আমি আমার শেল সিডি টাইপ করি যদি। সেই মুহুর্তে কি স্মৃতি থেকে সিডি লোড করা হয়? আমার অন্তর্নিহিততাটি হ'ল এই বিল্ট-ইন কমান্ডগুলি কার্নেলটি লোড হওয়ার পরে সিস্টেম মেমোরিতে প্রাক লোড করা হয়, তবে কেউ জোর দিয়েছিলেন যে যখন আমি আসলে কমান্ডটি প্রার্থনা করব তখনই সেগুলি লোড করা হয় ...
বিস্তৃত শর্তে অন্যান্য উত্তরগুলি সঠিক - বিল্ট-ইনগুলি শেল দিয়ে লোড করা হয়, আহ্বান করলে স্ট্যান্ড-অ্যালোনগুলি লোড করা হয়। তবে, খুব স্টিলিই ওয়েসেল-ওয়াই "কেউ" জোর দিতে পারে যে এটি এত সহজ নয়।
এই আলোচনাটি ওএস কীভাবে কাজ করে এবং বিভিন্ন ওএসের কাজ বিভিন্ন উপায়ে তা সম্পর্কে কিছুটা হলেও আমি সাধারণভাবে নিম্নলিখিত সমকালীন * নিক্সের ক্ষেত্রে সম্ভবত সত্য বলে মনে করি।
প্রথমত, "স্মৃতিতে লোড করা" একটি দ্ব্যর্থক বাক্য; আমরা যা উল্লেখ করছি তা হ'ল এর ভার্চুয়াল ঠিকানার স্থানটি মেমরিতে ম্যাপ করা হয়েছে । এটি উল্লেখযোগ্য কারণ "ভার্চুয়াল অ্যাড্রেস স্পেস" এমন স্টাফগুলিকে বোঝায় যা মেমোরিতে রাখার প্রয়োজন হতে পারে তবে বাস্তবে এটি প্রাথমিকভাবে নয়: বেশিরভাগ যা আসলে মেমরিতে লোড হয় তা মানচিত্র নিজেই - এবং মানচিত্রটি অঞ্চল নয়। "টেরিটরিটি" ডিস্কে এক্সিকিউটেবল (বা ডিস্ক ক্যাশে) হবে এবং বাস্তবে আপনি যখন কোনও এক্সিকিউটিভকে ডাকেন তখন এর বেশিরভাগ সম্ভবত মেমরিতে লোড হয় না ।
এছাড়াও, "অঞ্চলটি" এর বেশিরভাগ অংশ অন্যান্য অঞ্চলগুলিতে (ভাগ করে নেওয়া লাইব্রেরি) উল্লেখ করা হয় এবং আবারও, কারণ তাদের উল্লেখ করা হয়েছে তার অর্থ এই নয় যে তারা সত্যই লোড হয়েছে are এগুলি আসলে ব্যবহার না হওয়া অবধি তারা লোড পাবে না এবং তারপরে কেবলমাত্র সেগুলির টুকরোগুলিই লোড হওয়া দরকার যা কিছু "ব্যবহার" সফল হতে পারে তার জন্য।
উদাহরণস্বরূপ, এখানে top
একটি bash
উদাহরণ উল্লেখ করে লিনাক্সের আউটপুট- এর একটি স্নিপেট রয়েছে :
VIRT RES SHR S %CPU %MEM TIME+ COMMAND
113m 3672 1796 S 0.0 0.1 0:00.07 bash
113 মেগাবাইট ভিআইআরটি হ'ল ভার্চুয়াল অ্যাড্রেস স্পেস, যা র্যামে ম্যাপ করা হয়েছে। তবে আরইএস হ'ল এই প্রক্রিয়াটি কেবলমাত্র র্যামের পরিমাণে র্যাম খায় - মাত্র ৩.7 কিলোবাইট। এবং এর মধ্যে কিছু অংশ উপরে উল্লিখিত ভাগ করা অঞ্চলের অংশ - 1.8 কেবি এসএইচআর। তবে আমার /bin/bash
অন ডিস্কটি 930 কেবি, এবং এটির সাথে দ্বিগুণ বড় ল্যাবসিটি (একটি ভাগ করা লিবিব) লিঙ্ক করেছে।
এই শেলটি এখনই কিছু করছে না। ধরা যাক আমি একটি অন্তর্নির্মিত কমান্ডটি প্রার্থনা করছি, যা আমরা আগে বলেছিলাম বাকী শেলটির সাথে ইতিমধ্যে "স্মৃতিতে লোড" ছিল। কার্নেল মানচিত্রের এক পর্যায়ে যা কিছু কোড জড়িত তা কার্যকর করে এবং যখন কোডটি এমন কোনও রেফারেন্সে পৌঁছায় যা সত্যিই লোড হয় নি, এটি এটি লোড করে - ডিস্কে একটি এক্সিকিউটেবল ইমেজ থেকে - এমনকি আরও কিছুটা নৈমিত্তিক হলেও ইন্দ্রিয়, যে এক্সিকিউটেবল (এটি শেল, একা একা থাকা সরঞ্জাম, বা ভাগ করা লাইব্রেরি) ইতিমধ্যে "স্মৃতিতে লোড করা" ছিল।
একে বলা হয় ডিমান্ড পেজিং ।