এক্সিকিউটেবল ফাইলগুলির জন্য বাইনারি ফর্ম্যাট স্পেসিফিকেশন কেন প্রয়োজন?


0

আমি বুঝতে পারি যে লিনাক্স বা উইন্ডোজের মতো একটি অপারেটিং সিস্টেম সি / সি ++ তে লেখা হয় এবং কোনও স্থাপত্যের জন্য উপযুক্ত এমন একটি মেশিন কোড তৈরি করতে একটি নির্দিষ্ট আর্কিটেকচারে (উদাহরণস্বরূপ AMD64) সংকলিত হয়।

আমার প্রশ্নগুলো -

  1. বাইনারি কোডের জন্য পৃথক স্পেসিফিকেশন কেন প্রয়োজন - লিনাক্স ইএলএফ ব্যবহার করে এবং উইন্ডোজ পোর্টেবল এক্সিকিউটেবল ফর্ম্যাট ব্যবহার করে?
  2. কোনও অপারেটিং সিস্টেম এবং একটি অপারেটিং সিস্টেম যা এই অপারেটিং সিস্টেমে চলে সেগুলি কি এই বাইনারি বিন্যাসের বিশদ ছাড়াই তৈরি করা যেতে পারে?
  3. বাইনারি বিন্যাস: আর্কিটেকচার নির্ভর, ওএস নির্ভর বা উভয়?
  4. বাইনারি ফর্ম্যাটটি কি কেবল এক্সিকিউটেবল ফাইলের ক্ষেত্রে প্রযোজ্য বা এটি অপারেটিং সিস্টেম কোডেও প্রযোজ্য?

উত্তর:


3

আপনি যেমন অনুমান করতে পারেন, এক্সিকিউটেবল ফরম্যাটে কেবল মেশিন কোডের চেয়ে বেশি থাকে। উদাহরণস্বরূপ, তারা:

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

    এই বিভাগগুলির আকারের জন্য বিভিন্ন প্রোগ্রামের বিভিন্ন প্রয়োজনীয়তা (অনুরোধ) থাকবে। এটি সমস্ত শিরোনামে নির্দিষ্ট করা আছে।

  • কিছু ফর্ম্যাট আপনাকে ডিজিটাল স্বাক্ষর এম্বেড করার অনুমতি দেয় , যা বাইনারি কোথা থেকে এসেছে তা যাচাইকরণের অনুমতি দেয়।


  1. বাইনারি কোডের জন্য পৃথক স্পেসিফিকেশন কেন প্রয়োজন - লিনাক্স ইএলএফ ব্যবহার করে এবং উইন্ডোজ পোর্টেবল এক্সিকিউটেবল ফর্ম্যাট ব্যবহার করে?

কারণগুলি প্রাথমিকভাবে historicalতিহাসিক, এবং ওএসগুলি তাদের বিদ্যমান 'নেটিভ' (বা 'ডিফল্ট') ফর্ম্যাটটির সাথে তাল মিলিয়ে ঝোঁক রাখে যদি না সুইচ করার জন্য বাধ্যতামূলক কারণ না থাকে (যেমন ডস এমজেড ফর্ম্যাট থেকে এনটি ৩.১-তে পিইতে, এবং একটি থেকে । লিনাক্স ১.২ এ ইএলএফ থেকে এবং বহু বছর ধরে বিভিন্ন ইউনিক্সে সিওএফএফ থেকে ইএলএফ পর্যন্ত))

এটি লক্ষ করা উচিত যে অন্তর্নিহিত মেশিন কোডটি সিপিইউ আর্কিটেকচারের উপর নির্ভর করে তবে অন্যথায় (সিস্কলগুলি এবং লিঙ্কযুক্ত গ্রন্থাগারগুলি একপাশে) ওএসের মধ্যে বহুলভাবে বহনযোগ্য। প্রকৃতপক্ষে, আধুনিক উইন্ডোজ এবং লিনাক্স উভয় এক্সিকিউটেবল ফর্ম্যাট চালাতে পারে: ELF এক্সিকিউটেবলগুলি WSL এর মাধ্যমে উইন্ডোতে চলবে, এবং পিই এক্সিকিউটেবলগুলি WINE এর মাধ্যমে লিনাক্সে চলবে।

  1. কোনও অপারেটিং সিস্টেম এবং একটি অপারেটিং সিস্টেম যা এই অপারেটিং সিস্টেমে চলে সেগুলি কি এই বাইনারি বিন্যাসের বিশদ ছাড়াই তৈরি করা যেতে পারে?

আমরা এই ফর্ম্যাটগুলির প্রাথমিক উদ্দেশ্যে ফিরে যাই। ওএস কে প্রোগ্রামের অংশগুলি কোথায় লোড করতে হবে তা মেটাডেটা না জানিয়ে বেশিরভাগ আধুনিক এক্সিকিউটেবল চলতে পারে না। কিছু খুব পুরানো ফর্ম্যাট সিওএম এর মতো অনেকটা খাঁটি কোড ধারণ করে তবে এটি নমনীয় নয় এবং পছন্দসই হয়ে পড়েছে।

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

  1. বাইনারি ফর্ম্যাট আর্কিটেকচার নির্ভর, ওএস নির্ভর বা উভয়?

সত্যিই ফর্ম্যাট উপর নির্ভর করে। কিছু ফর্ম্যাট একটি নির্দিষ্ট আর্কিটেকচার ধরে। অন্যরা আপনাকে শিরোনামে নির্দিষ্ট "ম্যাজিক সংখ্যা" এর তালিকা থেকে আর্কিটেকচার নির্বাচন করার অনুমতি দেয়। এখনও অন্যরা সম্পূর্ণরূপে আর্কিটেকচার-অজোনস্টিক (যেমন জাভা এবং। নেট / সিআইএল বাইকোড)।

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

  1. বাইনারি ফর্ম্যাটটি কি কেবল এক্সিকিউটেবল ফাইলের ক্ষেত্রে প্রযোজ্য বা এটি অপারেটিং সিস্টেম কোডেও প্রযোজ্য?

বেশিরভাগ আধুনিক অপারেটিং সিস্টেমের একটি বড় অংশ হ'ল "সাধারণ" এক্সিকিউটেবল ফাইলগুলির সংগ্রহ। তবে অপারেটিং সিস্টেমের কিছু অংশ "বিশেষ" এবং প্রয়োজনীয়ভাবে বাকীগুলির মতো একই ফর্ম্যাটটি ব্যবহার করবে না। সাধারণত এটি কেবল বুটলোডার এবং কার্নেলের ক্ষেত্রে প্রযোজ্য।

একটি নির্দিষ্ট, খুব সাধারণ উদাহরণ টানতে, উত্তরাধিকার BIOS বুটলোডার লিনাক্স এবং উইন্ডোজ দ্বারা ব্যবহৃত ELF বা PE ফর্ম্যাটে থাকবে না । লিনাক্স কার্নেলটি সাধারণত একটি এলএল-উত্পাদিত ফর্ম্যাটে তৈরি করা হয় যা GRUB বুটলোডার লোড করতে পারে তবে ব্যবহৃত বুটলোডারের সাথে সামঞ্জস্য করার জন্য এটি অন্য কোনও ফর্ম্যাটে থাকতে পারে। লিনাক্স কার্নেল একটি ইএফআই স্টাব মোডকে সমর্থন করে, এতে ডাইরেক্ট ইউইএফআই বুটের সাথে সামঞ্জস্য রাখতে ন্যূনতম পিই / সিওএফএফ শিরোনাম রয়েছে।


3

ফর্ম্যাটটির প্রধান ব্যবহার হ'ল মেমোরিতে প্রোগ্রামগুলি লোড করা, যা কোনও লোডার দ্বারা সম্পন্ন হয় ।

  1. বাইনারি কোডের জন্য পৃথক স্পেসিফিকেশন কেন প্রয়োজন - লিনাক্স ইএলএফ ব্যবহার করে এবং উইন্ডোজ পোর্টেবল এক্সিকিউশন ফর্ম্যাট ব্যবহার করে?

ভদ্র উত্তর: কারণ ওএস পৃথক এবং বিভিন্ন প্রয়োজনীয়তা রয়েছে। ইউনিক্স ব্যক্তির উত্তর: কারণ মাইক্রোসফ্ট (বর্গক্ষেত্র) চাকাটি পুনঃস্থাপন করতে পছন্দ করে।

  1. কোনও অপারেটিং সিস্টেম এবং একটি অপারেটিং সিস্টেম যা এই অপারেটিং সিস্টেমে চলে সেগুলি কি এই বাইনারি বিন্যাসের বিশদ ছাড়াই তৈরি করা যেতে পারে?

হ্যাঁ, তবে কেবল খুব তুচ্ছ, একটি মোটামুটি বেসিক ওএস যা তুচ্ছ প্রোগ্রামগুলি চালায় যা "স্থানান্তরিত" হওয়ার দরকার নেই এবং কোনও বাহ্যিক কোডের সাথে লিঙ্ক করার প্রয়োজন নেই।

  1. বাইনারি ফর্ম্যাট আর্কিটেকচার নির্ভর, ওএস নির্ভর বা উভয়?

কোনওটি নয়, ELF ফর্ম্যাটটি অনেক অপারেটিং সিস্টেম এবং আর্কিটেকচার সহ ব্যবহৃত হয়।

  1. বাইনারি ফর্ম্যাটটি কি কেবল এক্সিকিউটেবল ফাইলের ক্ষেত্রে প্রযোজ্য বা এটি অপারেটিং সিস্টেম কোডেও প্রযোজ্য?

লিনাক্সে, বুটেবল কার্নেল ELF নাও হতে পারে তবে কার্নেল মডিউলগুলি ELF ফর্ম্যাট ব্যবহার করে।


1
"ইউনিক্স ব্যক্তির উত্তর: কারণ মাইক্রোসফ্ট (বর্গক্ষেত্র) চাকাটি পুনরায় উদ্ভাবন করতে পছন্দ করে।" মজার বিষয় আপনার বলা উচিত, পিই বিবেচনা করে (এনটি 3.1, ~ 1993) ইএলএফ (লিনাক্স, a.out থেকে 1995 mig মাইগ্রেশন) এর চেয়ে পুরানো। আধুনিক বিশ্বে পিই সিওএফএফের নিকটতম , এটি পূর্বে ইউনিক্সও ব্যবহার করত।
বব

হ্যাঁ, এবং প্রায় সবাই ELF এ চলেছেন (উইন্ডোজ এবং ম্যাকোস ব্যতীত)।
xenoid

2
যা কোনওভাবেই এমএস হুইলটিকে পুনর্বহাল করছে না। মুক্তির পরে একটি নতুন ফর্ম্যাটে পরিবর্তন (না) করার সিদ্ধান্তটি একটি "কেবল আলাদা হতে" নতুন আবিষ্কারের থেকে খুব আলাদা। গোঁড়া? হ্যাঁ সম্ভবত. তবে আপনার উত্তরটি সেখানে খুব মজাদার নয় বা মজাদার নয়।
বব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.