আপনি যেমন অনুমান করতে পারেন, এক্সিকিউটেবল ফরম্যাটে কেবল মেশিন কোডের চেয়ে বেশি থাকে। উদাহরণস্বরূপ, তারা:
- ওএসের জন্য মেটাডেটা উল্লেখ করুন, উদাহরণস্বরূপ, কোন আর্কিটেকচারটি নির্বাহযোগ্য able এই মেটাডেটাতে ফাইলের শিরোনাম রয়েছে।
মেমরিতে প্রোগ্রামের বিন্যাস নির্দিষ্ট করুন । আধুনিক ওএসে, বেশিরভাগ এক্সিকিউটেবল একক অংশে মেমরিতে লোড হয় না - তাদের সাধারণত অনেকগুলি পৃথক অঞ্চল / বিভাগ / বিভাগ থাকে । এর মধ্যে কয়েকটি বিভাগে এক্সিকিউটেবল কোড থাকবে। তাদের মধ্যে কিছুতে টেক্সট স্ট্রিংয়ের মতো অপরিবর্তনীয় ডেটা থাকবে। তাদের মধ্যে কিছু প্রোগ্রামের হিপ (গুলি) এর জন্য লিখনযোগ্য মেমরি হিসাবে মনোনীত করা হবে।
এই বিভাগগুলির আকারের জন্য বিভিন্ন প্রোগ্রামের বিভিন্ন প্রয়োজনীয়তা (অনুরোধ) থাকবে। এটি সমস্ত শিরোনামে নির্দিষ্ট করা আছে।
কিছু ফর্ম্যাট আপনাকে ডিজিটাল স্বাক্ষর এম্বেড করার অনুমতি দেয় , যা বাইনারি কোথা থেকে এসেছে তা যাচাইকরণের অনুমতি দেয়।
- বাইনারি কোডের জন্য পৃথক স্পেসিফিকেশন কেন প্রয়োজন - লিনাক্স ইএলএফ ব্যবহার করে এবং উইন্ডোজ পোর্টেবল এক্সিকিউটেবল ফর্ম্যাট ব্যবহার করে?
কারণগুলি প্রাথমিকভাবে historicalতিহাসিক, এবং ওএসগুলি তাদের বিদ্যমান 'নেটিভ' (বা 'ডিফল্ট') ফর্ম্যাটটির সাথে তাল মিলিয়ে ঝোঁক রাখে যদি না সুইচ করার জন্য বাধ্যতামূলক কারণ না থাকে (যেমন ডস এমজেড ফর্ম্যাট থেকে এনটি ৩.১-তে পিইতে, এবং একটি থেকে । লিনাক্স ১.২ এ ইএলএফ থেকে এবং বহু বছর ধরে বিভিন্ন ইউনিক্সে সিওএফএফ থেকে ইএলএফ পর্যন্ত))
এটি লক্ষ করা উচিত যে অন্তর্নিহিত মেশিন কোডটি সিপিইউ আর্কিটেকচারের উপর নির্ভর করে তবে অন্যথায় (সিস্কলগুলি এবং লিঙ্কযুক্ত গ্রন্থাগারগুলি একপাশে) ওএসের মধ্যে বহুলভাবে বহনযোগ্য। প্রকৃতপক্ষে, আধুনিক উইন্ডোজ এবং লিনাক্স উভয় এক্সিকিউটেবল ফর্ম্যাট চালাতে পারে: ELF এক্সিকিউটেবলগুলি WSL এর মাধ্যমে উইন্ডোতে চলবে, এবং পিই এক্সিকিউটেবলগুলি WINE এর মাধ্যমে লিনাক্সে চলবে।
- কোনও অপারেটিং সিস্টেম এবং একটি অপারেটিং সিস্টেম যা এই অপারেটিং সিস্টেমে চলে সেগুলি কি এই বাইনারি বিন্যাসের বিশদ ছাড়াই তৈরি করা যেতে পারে?
আমরা এই ফর্ম্যাটগুলির প্রাথমিক উদ্দেশ্যে ফিরে যাই। ওএস কে প্রোগ্রামের অংশগুলি কোথায় লোড করতে হবে তা মেটাডেটা না জানিয়ে বেশিরভাগ আধুনিক এক্সিকিউটেবল চলতে পারে না। কিছু খুব পুরানো ফর্ম্যাট সিওএম এর মতো অনেকটা খাঁটি কোড ধারণ করে তবে এটি নমনীয় নয় এবং পছন্দসই হয়ে পড়েছে।
অনুশীলনে, এমনকি অপারেটিং সিস্টেমের অস্তিত্বের প্রয়োজন নেই। হার্ডওয়্যার স্তরে, (লিগ্যাসি) বিআইওএসের অস্তিত্ব অনুমান করে, বিআইওএস কেবলমাত্র ডিস্কের (এমবিআর) নির্দিষ্ট স্থানে কার্যকর করতে শুরু করবে , যা নির্বিচারে মেশিন কোড হতে পারে যা পরে গ্রহণ করবে এবং হয় কোনও ওএস শুরু করবে বা কিছু করবে অন্যথায় এটি পছন্দ করে। (আপনি এমবিআরকে বাইনারি ফর্ম্যাট হিসাবে দেখতে পেলেন, যদিও এটি সরাসরি কার্যকরযোগ্য কোডের সাথে সম্পর্কিত নয় related) আরও আধুনিক ইউইএফআই, আরও জটিল নির্বাহযোগ্য বিন্যাস (পিই) নির্দিষ্ট করে।
- বাইনারি ফর্ম্যাট আর্কিটেকচার নির্ভর, ওএস নির্ভর বা উভয়?
সত্যিই ফর্ম্যাট উপর নির্ভর করে। কিছু ফর্ম্যাট একটি নির্দিষ্ট আর্কিটেকচার ধরে। অন্যরা আপনাকে শিরোনামে নির্দিষ্ট "ম্যাজিক সংখ্যা" এর তালিকা থেকে আর্কিটেকচার নির্বাচন করার অনুমতি দেয়। এখনও অন্যরা সম্পূর্ণরূপে আর্কিটেকচার-অজোনস্টিক (যেমন জাভা এবং। নেট / সিআইএল বাইকোড)।
একইভাবে, ফর্ম্যাটটি সাধারণত ওএসের উপর কোনও বিধিনিষেধ আরোপ করে না, যদিও ওএসকে সীমাবদ্ধ করা হবে কোন আকারে এটি (স্থানীয়ভাবে) স্বীকৃতি দিতে এবং চালাতে পারে। অবশ্যই, মূল ওএসের শীর্ষের সামঞ্জস্যতা স্তরগুলি অন্যান্য ফর্ম্যাটগুলি (যেমন জেভিএম,। নেট / সিএলআর, ডাব্লুএসএল এবং ওয়াইন, ইত্যাদি) চালিত করতে পারে যা মূল ওএস সনাক্ত করতে পারে না।
- বাইনারি ফর্ম্যাটটি কি কেবল এক্সিকিউটেবল ফাইলের ক্ষেত্রে প্রযোজ্য বা এটি অপারেটিং সিস্টেম কোডেও প্রযোজ্য?
বেশিরভাগ আধুনিক অপারেটিং সিস্টেমের একটি বড় অংশ হ'ল "সাধারণ" এক্সিকিউটেবল ফাইলগুলির সংগ্রহ। তবে অপারেটিং সিস্টেমের কিছু অংশ "বিশেষ" এবং প্রয়োজনীয়ভাবে বাকীগুলির মতো একই ফর্ম্যাটটি ব্যবহার করবে না। সাধারণত এটি কেবল বুটলোডার এবং কার্নেলের ক্ষেত্রে প্রযোজ্য।
একটি নির্দিষ্ট, খুব সাধারণ উদাহরণ টানতে, উত্তরাধিকার BIOS বুটলোডার লিনাক্স এবং উইন্ডোজ দ্বারা ব্যবহৃত ELF বা PE ফর্ম্যাটে থাকবে না । লিনাক্স কার্নেলটি সাধারণত একটি এলএল-উত্পাদিত ফর্ম্যাটে তৈরি করা হয় যা GRUB বুটলোডার লোড করতে পারে তবে ব্যবহৃত বুটলোডারের সাথে সামঞ্জস্য করার জন্য এটি অন্য কোনও ফর্ম্যাটে থাকতে পারে। লিনাক্স কার্নেল একটি ইএফআই স্টাব মোডকে সমর্থন করে, এতে ডাইরেক্ট ইউইএফআই বুটের সাথে সামঞ্জস্য রাখতে ন্যূনতম পিই / সিওএফএফ শিরোনাম রয়েছে।