প্রথমে, একটি 32 বিট সিস্টেমে র্যামের ওপরের অংশে কোনও শারীরিক অবস্থান অ্যাক্সেস করার জন্য 0xffffffff
( 4'294'967'295
) রৈখিক ঠিকানা রয়েছে।
কার্নেল এই ঠিকানাগুলি ব্যবহারকারী এবং কার্নেল স্পেসে বিভক্ত করে।
ব্যবহারকারীর স্থান (উচ্চ স্মৃতি) ব্যবহারকারীর দ্বারা এবং, প্রয়োজনে, কার্নেল দ্বারাও অ্যাক্সেস করা যায়।
হেক্স এবং সিদ্ধান্ত সংকেত মধ্যে ঠিকানা পরিসীমা:
0x00000000 - 0xbfffffff
0 - 3'221'225'471
কার্নেল স্পেস (লো মেমোরি) কেবল কার্নেল দ্বারা অ্যাক্সেস করা যায়।
হেক্স এবং সিদ্ধান্ত সংকেত মধ্যে ঠিকানা পরিসীমা:
0xc0000000 - 0xffffffff
3'221'225'472 - 4'294'967'295
এটার মত:
0x00000000 0xc0000000 0xffffffff
| | |
+------------------------+----------+
| User | Kernel |
| space | space |
+------------------------+----------+
সুতরাং, আপনি যে মেমরি বিন্যাসটি দেখেছেন dmesg
তা কার্নেল স্পেসে রৈখিক ঠিকানাগুলির ম্যাপিংয়ের সাথে মিলে যায়।
প্রথমে .text, .data এবং .init সিকোয়েন্সগুলি যা কার্নেলের নিজস্ব পৃষ্ঠার টেবিলগুলির সূচনা করে (শারীরিক ঠিকানায় রৈখিক অনুবাদ করে) provide
.text : 0xc0400000 - 0xc071ae6a (3179 kB)
কার্নেল কোডটি রেঞ্জ করে।
.data : 0xc071ae6a - 0xc08feb78 (1935 kB)
কার্নেল ডেটা বিভাগগুলিতে থাকা ব্যাপ্তি।
.init : 0xc0906000 - 0xc0973000 ( 436 kB)
কার্নেলের প্রাথমিক পৃষ্ঠা সারণীগুলি যে ব্যাপ্তিতে থাকে।
(এবং কিছু গতিশীল ডেটা স্ট্রাকচারের জন্য আরও 128 কেবি)
এই সর্বনিম্ন ঠিকানার স্থানটি র্যামে কার্নেলটি ইনস্টল করতে এবং এর মূল ডেটা স্ট্রাকচারগুলি শুরু করার জন্য যথেষ্ট যথেষ্ট large
তাদের ব্যবহৃত আকার প্রথম বন্ধনীতে প্রদর্শিত হয়, উদাহরণস্বরূপ কার্নেল কোডটি ধরুন:
0xc071ae6a - 0xc0400000 = 31AE6A
দশমিক স্বীকৃতি হিসাবে, এটি 3'255'914
(3179 কেবি)।
দ্বিতীয়ত, আরম্ভের পরে কার্নেল স্পেসের ব্যবহার
lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB)
লোমেম রেঞ্জটি সরাসরি শারীরিক ঠিকানাগুলি অ্যাক্সেস করতে কার্নেল দ্বারা ব্যবহার করা যেতে পারে।
এটি পুরো 1 জিবি নয়, কারণ নন-কন্টিবিউজ মেমরি বরাদ্দকরণ এবং ফিক্স-ম্যাপযুক্ত লিনিয়ার ঠিকানাগুলি প্রয়োগ করতে কার্নেলের সর্বদা কমপক্ষে 128 এমবি লিনিয়ার ঠিকানা প্রয়োজন।
vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB)
ভার্চুয়াল মেমরির বরাদ্দ একটি অননুমোদিত স্কিমের ভিত্তিতে পৃষ্ঠা ফ্রেম বরাদ্দ করতে পারে। এই স্কিমাটির প্রধান সুবিধাটি হ'ল বাহ্যিক খণ্ডন এড়ানো, এটি অদলবদল অঞ্চল, কার্নেল মডিউল বা কয়েকটি I / O ডিভাইসে বাফার বরাদ্দকরণের জন্য ব্যবহৃত হয়।
pkmap : 0xff800000 - 0xffa00000 (2048 kB)
স্থায়ী কার্নেল ম্যাপিং কার্নেলকে কার্নেল ঠিকানা স্থানে হাই-মেমরি পৃষ্ঠার ফ্রেমের দীর্ঘস্থায়ী ম্যাপিং স্থাপন করতে দেয়। যখন কোনও হাইএমইএম পৃষ্ঠা ম্যাপ করা হয় কেম্যাপ () ব্যবহার করে, ভার্চুয়াল ঠিকানাগুলি এখান থেকে বরাদ্দ করা হয়।
fixmap : 0xffc57000 - 0xfffff000 (3744 kB)
এগুলি ফিক্স-ম্যাপযুক্ত লিনিয়ার ঠিকানাগুলি যা লোমেম অ্যাড্রেসের মতো কেবল সর্বশেষ 1 জিবি নয় র্যামের কোনও শারীরিক ঠিকানার উল্লেখ করতে পারে। ফিক্স-ম্যাপযুক্ত লিনিয়ার ঠিকানাগুলি তাদের লোমেম এবং পিকেম্যাপ সহকর্মীদের চেয়ে কিছুটা দক্ষ। নির্দিষ্ট ম্যাপিংয়ের জন্য নিবেদিত পৃষ্ঠার টেবিল বর্ণনাকারী রয়েছে এবং kmap_atomic ব্যবহার করে HIGHMEM পৃষ্ঠাগুলির ম্যাপিংগুলি এখান থেকে বরাদ্দ করা হয়েছে।
আপনি যদি খরগোশের গর্তের গভীরে ডুব দিতে চান:
লিনাক্স কার্নেল বোঝা