ELF লাইব্রেরি ভাগ করেছে - পিএলটি জন্য অনুপ্রেরণা


11

গতিশীল লিঙ্কযুক্ত লাইব্রেরিতে ফাংশন কলিংয়ে গতি বাড়ানোর জন্য স্ব-সংশোধনকারী কোড ব্যবহার করা যেতে পারে?

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

লোড সময়, বা সম্ভবত প্রথম ফাংশন কল এ গতিশীলভাবে এই টেবিলের জন্য কোড তৈরি করা কি দ্রুত হবে না?

যতটা সম্ভব প্রক্রিয়াগুলির মধ্যে কোড বিভাগকে ভাগ করে নেওয়া সক্ষম করা সম্ভব (একটি গতিশীল টেবিল কোনও প্রক্রিয়াতে ব্যক্তিগত হবে)? এটি কি সুরক্ষার কারণে (লিখনযোগ্য কোডটি কার্যকরযোগ্য হওয়া উচিত নয় - তবে জেআইটিগুলি সর্বদা এটি করে এবং লিখনের অনুমতিটি প্রোগ্রামটি প্রোগ্রাম শুরু করার আগে লোডার দ্বারা যুক্ত এবং সরানো যেতে পারে )?

বা এটি কি এর সংমিশ্রণ, এবং ফাংশন কল অনুসারে ছোট পারফরম্যান্স লাভ কেবল চেষ্টাটির পক্ষে উপযুক্ত হবে না?

উত্তর:


8

আমি মনে করি আমরা x86 আর্কিটেকচারের কথা বলছি।

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

তবে আপনি যেমন বলছেন "লোডের সময় সেই টেবিলের জন্য কোড তৈরি করতে" পারলেও, এটি ভাগ করা লাইব্রেরির পুরো উদ্দেশ্যকে অস্বীকার করবে। এইভাবে, প্রতিটি প্রক্রিয়াটির ঠিকানা জায়গাতে গ্রন্থাগারের কার্যকারিতার একটি "ব্যক্তিগত" অনুলিপি থাকবে, ভাগ করে নেওয়া লাইব্রেরি তৈরি হওয়ার কারণগুলির মধ্যে একটির কার্যকরভাবে স্মৃতি পদক্ষেপের পরিমাণ বাড়ানো ছিল, এই সমস্যাটি সমাধান করা ছিল।

আপনি যে পুরো প্রক্রিয়াটি বর্ণনা করেছেন তা পুরো জটিল, এবং আজকাল ব্যবহৃত পিএলটি পদ্ধতির চেয়ে এটির জন্য আরও বেশি প্রসেসিং চক্র ব্যয় হতে পারে এবং সম্ভবত আরও নতুন, আকর্ষণীয় এবং সুরক্ষার সমস্যাগুলি প্রবর্তন করতে পারে।


2
টেক্সট সেগমেন্ট পৃষ্ঠাগুলি লেখার যোগ্য এবং কার্যকর করার জন্য আপনি এমপ্রোটেক্ট (2) সিস্টেম কলটি ব্যবহার করতে পারেন।
ব্রুস এডিগার

1
এটা ঠিক, স্যার। সম্ভবত এটি গড় ইউনিক্স-ভিত্তিক সিস্টেমে শালীনভাবে কাজ করবে, তবে কেউ যেমন উদাহরণস্বরূপ প্যাক্স দ্বারা সিস্টেমটিকে শক্ত করার চেষ্টা করার সাথে সাথে পুরো লিঙ্কিংয়ের প্রক্রিয়াটি ভেঙে যাবে, যা এমপ্রোটেক্ট (2) এর উপর বিধিনিষেধ আরোপ করে।
ডকারাগ্যাসিডিস

(মনে হচ্ছে আমি আমার আগের মন্তব্যে @ ব্রুসএইডিগারটি উল্লেখ করতেই মিস করেছি)
ডকারাগ্যাসিডিস

1

ইএলএফ ডিএসওরা তাদের পাঠ্য বিভাগে (যা কেবলমাত্র পঠনযোগ্য) কেবলমাত্র পাঠ্য বিভাগে সংশোধন করে পুনরায় পুনর্বিবেচনার প্রয়োজন রয়েছে তা ঘোষণার জন্য একটি পতাকা (DF_TEXREL) ব্যবহার করতে পারে। পিআইই পজিশন স্বতন্ত্র কোড সহ জাম্প টেবিলের পদ্ধতিটি আরও অনুকূল হওয়া উচিত though

(এটি http://www.akkadia.org/drepper/dsohowto.pdf এ পাওয়া গেছে , তবে অন্যান্য সংস্থানগুলিও এর উল্লেখ করে)।

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