লিনাক্স / প্রোক / আইডি / মানচিত্র বোঝা


155

আমি আমার এম্বেড থাকা লিনাক্স অ্যাপ্লিকেশনটির মেমরির ব্যবহার বোঝার চেষ্টা করছি। /proc/pid/mapsউপযোগ / ফাইল বিবরণ দেখার জন্য একটি ভাল রিসোর্স মনে করা হয়। দুর্ভাগ্যক্রমে আমি সমস্ত কলাম এবং এন্ট্রি বুঝতে পারি না।

বেনামে ইনোড 0 এন্ট্রি বলতে কী বোঝায়? এগুলি বৃহত্তর মেমরির কিছু অংশ বলে মনে হচ্ছে।


1
proc(5) mmap(2)"লিনাক্স কার্নেল বোঝা" 9.3। মেমরি অঞ্চলসমূহ; 16.2। মেমোরি ম্যাপিং "লিনাক্স ভার্চুয়াল মেমরি ম্যানেজার বোঝা" 4.4 মেমোরি অঞ্চলগুলি
wrAR

উত্তর:


261

প্রতিটি সারি /proc/$PID/mapsএকটি প্রক্রিয়া বা থ্রেডে সামঞ্জস্যপূর্ণ ভার্চুয়াল মেমরির একটি অঞ্চল বর্ণনা করে। প্রতিটি সারিতে নিম্নলিখিত ক্ষেত্র রয়েছে:

address           perms offset  dev   inode   pathname
08048000-08056000 r-xp 00000000 03:0c 64593   /usr/sbin/gpm
  • ঠিকানা - প্রক্রিয়াটির ঠিকানা জায়গার মধ্যে এই অঞ্চলের শুরু এবং শেষ ঠিকানা
  • অনুমতিগুলি - এটি বর্ণনা করে যে অঞ্চলের পৃষ্ঠাগুলি কীভাবে অ্যাক্সেস করা যায়। এখানে চারটি পৃথক অনুমতি রয়েছে: পড়ুন, লিখুন, সম্পাদন করুন এবং ভাগ করুন। যদি পড়া / লেখার / চালানো নিষ্ক্রিয় -করা থাকে তবে r/ w/ এর পরিবর্তে একটি উপস্থিত হবে x। যদি অঞ্চলটি ভাগ না করা হয় তবে এটি ব্যক্তিগত so তাই এর pপরিবর্তে একটি প্রদর্শিত হবে s। যদি প্রক্রিয়াটি এমনভাবে মেমোরি অ্যাক্সেস করার চেষ্টা করে যা অনুমোদিত না হয় তবে একটি সেগমেন্টেশন ফল্ট উত্পন্ন হয়। mprotectসিস্টেম কল ব্যবহার করে অনুমতিগুলি পরিবর্তন করা যেতে পারে ।
  • অফসেট - যদি অঞ্চলটি কোনও ফাইল (ব্যবহার করে mmap) থেকে ম্যাপ করা হয় , তবে ম্যাপিং শুরু হওয়া ফাইলটিতে এটি অফসেট। যদি কোনও ফাইল থেকে মেমরি ম্যাপ না করা হয় তবে এটি কেবল 0।
  • ডিভাইস - যদি অঞ্চলটি কোনও ফাইল থেকে ম্যাপ করা থাকে তবে এটি প্রধান এবং গৌণ ডিভাইস নম্বর (হেক্সে) যেখানে ফাইলটি থাকে।
  • ইনোড - অঞ্চলটি যদি কোনও ফাইল থেকে ম্যাপ করা থাকে তবে এটি ফাইল নম্বর।
  • পথের নাম - অঞ্চলটি কোনও ফাইল থেকে ম্যাপ করা থাকলে, এই ফাইলটির নাম। এই ক্ষেত্রটি বেনামে ম্যাপ করা অঞ্চলগুলির জন্য ফাঁকা। মত আছে নামের সাথে বিশেষ অঞ্চলে [heap], [stack]কিংবা [vdso][vdso]ভার্চুয়াল ডায়নামিক শেয়ার্ড অবজেক্টের জন্য দাঁড়িয়েছে। এটি কার্নেল মোডে স্যুইচ করতে সিস্টেম কল দ্বারা ব্যবহৃত হয়। এটি সম্পর্কে একটি ভাল নিবন্ধ এখানে: "লিনাক্স-গেট.সো .1 কী?"

আপনি অনেক বেনামী অঞ্চল লক্ষ্য করতে পারেন। এগুলি সাধারণত তৈরি করা হয় mmapতবে কোনও ফাইলের সাথে সংযুক্ত থাকে না। এগুলি প্রচুর বিবিধ জিনিস যেমন শেয়ার্ড মেমোরি বা বাফারে বরাদ্দ না করা বাফারগুলির জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, আমি মনে করি pthread লাইব্রেরি বেনামে ম্যাপযুক্ত অঞ্চলগুলি নতুন থ্রেডের জন্য স্ট্যাক হিসাবে ব্যবহার করে।


4
হ্যাঁ পাইথ্রেডগুলি স্ট্যাক ওভারফ্লো সনাক্তকরণের জন্য একটি ছোট বিভাগ সহ স্ট্যাকের জন্য 8 এমবি ব্লক বরাদ্দ করছে (আমি মনে করি)। সুতরাং প্রতিটি অজানা পাঠ, ডিফল্টরূপে, 8Mb এর একটি ইনোড 0 মেমরি অঞ্চল এবং 4Kb এর একটি ইনোড 0 অঞ্চল বরাদ্দ করে।
সাইমন

সুতরাং আপনার উদাহরণে gpmবাইনারি ফাইলটি শুরু থেকেই কিছু ভার্চুয়াল ঠিকানায় ইএলএফ শিরোলেখ সহ ম্যাপিং করা হচ্ছে? লোডারটি কি ইএলএফ শিরোলেখকে পার্স করার এবং পৃথক বিভাগের মানচিত্রটি ভাবার কথা নয়, পুরো ফাইলটি নয়?
দিমিত্রি গ্রিগরিয়েভ

9

মেমরি ম্যাপিং কেবল মেমরিতে ফাইল ম্যাপ করতে ব্যবহৃত হয় না তবে কার্নেল থেকে র্যামের অনুরোধ করার একটি সরঞ্জামও। এগুলি হ'ল ইনড 0 টি এন্ট্রি - আপনার স্ট্যাক, হিপ, বিএস বিভাগ এবং আরও অনেক কিছু


5

দয়া করে চেক করুন: http://man7.org/linux/man-pages/man5/proc.5.html

address           perms offset  dev   inode       pathname
00400000-00452000 r-xp 00000000 08:02 173521      /usr/bin/dbus-daemon

ঠিকানা ক্ষেত্র হ'ল প্রক্রিয়াটির ঠিকানার স্থান যা ম্যাপিংটি দখল করে।

পারমস ফিল্ডটি অনুমতিগুলির একটি সেট:

 r = read
 w = write
 x = execute
 s = shared
 p = private (copy on write)

অফসেট ক্ষেত্র ফাইল / যাই হোক না কেন অফসেট;

dev হল ডিভাইস (মেজর: মাইনর);

ইনোড হ'ল ডিভাইসটির ইনড হ'ল ০ ইঙ্গিত দেয় যে কোনও আইওড মেমরিগ্রিজনের সাথে জড়িত নয়, যেমনটি বিএসএসের ক্ষেত্রে (অবিচ্ছিন্ন তথ্য) হবে।

পাথনাম ফিল্ডটি সাধারণত সেই ফাইল হবে যা ম্যাপিংয়ের ব্যাক করছে। ইএলএফ ফাইলগুলির জন্য, আপনি সহজেই ইএলএফ প্রোগ্রামের শিরোনামে (রিডফেল-এল) অফসেট ক্ষেত্রটি দেখে অফসেট ফিল্ডের সাথে সহজেই সমন্বয় করতে পারেন।

লিনাক্স ২.০ এর অধীনে, কোনও ক্ষেত্র দেওয়ার পথ নেই।

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