আমি শারীরিকভাবে ইনস্টল করার চেয়ে লিনাক্স কেন কম বেশি স্মৃতি দেখায়?


11

আমি অদলবদল সম্পর্কে জানি - এই প্রশ্নটি সে সম্পর্কে নয়। ডেমসগে, লিনাক্স (x86-64) কার্নেলটি আমার কত স্মৃতি রয়েছে তা সম্পর্কে আমাকে বলে:

[    0.000000] Memory: 3890880k/4915200k available (6073k kernel code, 861160k absent, 163160k reserved, 5015k data, 1596k init)

cat /proc/meminfo আমাকে বলে যে আমার আছে

MemTotal:        3910472 kB

এবং আমার গণনা অনুসারে, আমি মনে করি আমার ঠিক 4 * 1024 * 1024 = 4194304k র‌্যাম থাকা উচিত। কোনটি পথ উপরে dmesg আউটপুট লাইন দ্বিতীয় চিত্রে চেয়েও ছোট!

এই সমস্ত বিভিন্ন ব্যক্তিত্ব কি?

যাইহোক, ফলাফল uname -a:

Linux pavilion 3.2.2-1.fc16.x86_64 #1 SMP Thu Jan 26 03:21:58 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

উত্তর:


20

আপনার dmesg"স্মৃতি আকবি / বিকেবি উপলব্ধ" মানগুলি পড়তে হবে :

এখনই ব্যবহারের জন্য একটি উপলভ্য আছে এবং সিস্টেমের সর্বোচ্চ পৃষ্ঠার ফ্রেম সংখ্যাটি পৃষ্ঠার আকার দ্বারা গুণিত হয় বি is

এটি থেকে arch/x86/mm/init_64.c:

printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, "
                 "%ldk absent, %ldk reserved, %ldk data, %ldk init)\n",
                 nr_free_pages() << (PAGE_SHIFT-10),
                 max_pfn << (PAGE_SHIFT-10),
                 codesize >> 10,
                 absent_pages << (PAGE_SHIFT-10),
                 reservedpages << (PAGE_SHIFT-10),
                 datasize >> 10,
                 initsize >> 10);

nr_free_pages()কার্নেল দ্বারা পরিচালিত শারীরিক মেমরির পরিমাণ প্রদান করে, বর্তমানে এটি ব্যবহৃত হচ্ছে না। max_pfnসর্বোচ্চ পৃষ্ঠার ফ্রেম নম্বর ( PAGE_SHIFTশিফটটি কেবিতে রূপান্তর করে)। সর্বাধিক পৃষ্ঠার ফ্রেম সংখ্যাটি আপনার প্রত্যাশার চেয়ে বেশি (অনেক বেশি) হতে পারে - বিআইওএস দ্বারা করা মেমরি ম্যাপিংয়ে গর্ত থাকতে পারে।
এই গর্তগুলি কতটা নেয় তা absent_pagesভেরিয়েবল দ্বারা ট্র্যাক করা হয় , হিসাবে প্রদর্শিত হয় kB absent। এটি "উপলভ্য" আউটপুট এবং আপনার প্রকৃত, ইনস্টল হওয়া র‌্যামের মধ্যে দ্বিতীয় সংখ্যাটির মধ্যে বেশিরভাগ পার্থক্য ব্যাখ্যা করবে।

আপনার জন্য grep করতে BIOS-e820মধ্যে dmesgথেকে "দেখুন" এই ছিদ্র। মেমরি মানচিত্র সেখানে প্রদর্শিত হবে ( dmesgবুটের পরে আউটপুট শীর্ষে )। আপনার আসল, ব্যবহারযোগ্য র‌্যাম কী শারীরিক ঠিকানা রয়েছে তা আপনার দেখতে সক্ষম হওয়া উচিত।
(অন্যান্য এক্স 86 কিরক এবং সংরক্ষিত মেমরি অঞ্চলগুলি সম্ভবত বাকীগুলির জন্য অ্যাকাউন্ট করে - আমি সেখানে বিশদটি জানি না))

MemTotalমধ্যে /proc/meminfoর্যাম ব্যবহারের জন্য উপলব্ধ নির্দেশ করে। বুট অনুক্রমের শেষে, কার্নেল initতথ্য আর মুক্ত করে না, তাই /proc/meminfoবুট অনুক্রমের প্রাথমিক অংশগুলির সময় কার্নেল প্রিন্ট করে তার চেয়ে কিছুটা বেশি হতে পারে reported

( এই প্রদর্শনটির জন্য meminfoঅপ্রত্যক্ষভাবে totalram_pagesব্যবহার করে x x86_64 এর জন্য, এটি arch/x86/mm/init_64.cখুব সহজেই গণনা করা হয় free_all_bootmem()যার মাধ্যমে নিজেই mm/bootmem.cনন-NUMA কার্নেলের মধ্যে রয়েছে))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.