সমস্ত প্রসেসর যারা x64 নির্দেশিকা সেটকে (x86_64 বা amd64 নামে পরিচিত) সমর্থন করে তারাও x86 নির্দেশিকা সেটকে (i386 বা i686 নামে পরিচিত, যা x86 এর নির্দিষ্ট সংস্করণগুলি কঠোরভাবে বলছে) সমর্থন করে। একই জন্য যায় এআরএম A64 (ARMv8 প্রদর্শনে নতুন 64-বিট নির্দেশ সেট) এবং A32 ( "ধ্রুপদী" 32 বিট নির্দেশ সেট নাম), জন্য SPARC64 এবং SPARC , এবং আমি বিশ্বাস MIPS64 এবং MIPS । সুতরাং এই সমস্ত আর্কিটেকচার পরিবারগুলিতে, যদি কোনও প্রসেসর 64৪-বিট কোড চালাতে পারে তবে এটি ৩২-বিট কোডও চালাতে পারে।
লিনাক্স কার্নেল 32-বিট ব্যবহারকারীল্যান্ড কোডটি 64-বিট কার্নেল দিয়ে চালানো সমর্থন করে (উপরে উল্লিখিত সমস্ত আর্কিটেকচার পরিবারগুলিতে), আমি মনে করি। কার্নেলটি অবশ্যই একজাতীয় (সমস্ত -৪-বিট বা সমস্ত 32-বিট) হতে হবে এবং প্রতিটি প্রক্রিয়া অবশ্যই একজাতীয় হতে পারে তবে আপনার 64-বিট কার্নেলের মধ্যে 32-বিট এবং 64-বিট প্রক্রিয়াগুলির মিশ্রণ থাকতে পারে। কনভার্সটি সম্ভব নয়: 32-বিট কার্নেলের সাহায্যে আপনি 64-বিট প্রক্রিয়া চালাতে পারবেন না।
এটি লিনাক্সের একটি নকশা পছন্দ, যা 32৪-বিট ইনস্টলেশনতে বিদ্যমান 32-বিট বাইনারিগুলি চালনার ইচ্ছা দ্বারা অনুপ্রাণিত হয়। অন্যান্য ইউনিক্স ভেরিয়েন্টগুলি বিভিন্ন পছন্দ করেছে: সোলারিস 32-বিট কার্নেলের পাশাপাশি 64 টি বিট প্রোগ্রাম চালাতে পারে, যখন ওপেনবিএসডি একটি 64-বিট কার্নেলে 32-বিট প্রোগ্রাম পরিচালনা করতে পারে না।
আপনি পেতে পারেন CPU- র তথ্য মধ্যে /proc/cpuinfo। যদি আপনার x86 সিপিইউতে lmপতাকা থাকে তবে এটি একটি 64-বিট সিপিইউ।
ডিফল্টরূপে, uname -mবা archকার্নেলটি সংকলিত আর্কিটেকচারটি দেখায়। লিনাক্স একটি প্রক্রিয়াটির "ব্যক্তিত্ব" সেট করতে পারে ( personalityসিস্টেমের সাথে )। setarchকমান্ডটি দিয়ে আপনি একটি ভিন্ন ব্যক্তিত্বের একটি সাবপ্রসেস চালাতে পারেন ; setarch i686 someprogramবা linux32 someprogramএকটা পরিবেশে নির্দিষ্ট প্রোগ্রাম রান যেখানে uname -mআয় i686যখন setarch amd64 someprogramবা linux64 someprogramএকটা পরিবেশে নির্দিষ্ট প্রোগ্রাম যেখানে রান uname -mআয় amd64।
file /sbin/initinitপ্রোগ্রামটি কী আর্কিটেকচারের জন্য সংকলিত তা আপনাকে জানায় । যদিও কোনও ইনস্টলেশনে 32-বিট এবং 64-বিট এক্সিকিউটেবলের মিশ্রণ সম্ভব, সাধারণত সমস্ত মূল ওএস প্রোগ্রাম একই আর্কিটেকচার থেকে হয়, কারণ এটি পরিচালনা করা অনেক সহজ।
$HOSTYPEএটি একটি বাশ ভেরিয়েবল এবং আপনাকে জানায় যে bashপ্রোগ্রামটি কী আর্কিটেকচারের জন্য সংকলিত হয়েছিল।
getconf LONG_BITআপনাকে ডিফল্ট সি সংকলক 32-বিট বা 64-বিট প্রোগ্রামগুলি সংকলনের জন্য সেট আপ করা হয়েছে তা জানতে দেয়। আরও সুনির্দিষ্ট পরীক্ষাটি হ'ল একটি সংকলন করা এবং একটি প্রোগ্রাম পরিচালনা করা যা প্রিন্ট করে sizeof(void*)বা sizeof(size_t)- কলিং getconfকেবলমাত্র getconfডিফল্ট সংকলক বলে মনে করে সে সম্পর্কে তথ্য দিতে পারে ।