โปรเซสเซอร์ทั้งหมดที่รองรับชุดคำสั่งx64 (หรือที่เรียกว่า x86_64 หรือ amd64) ยังรองรับชุดคำสั่งx86 (หรือที่เรียกว่า i386 หรือ i686 ซึ่งเป็นรุ่นที่เฉพาะเจาะจงที่พูด x86 อย่างเคร่งครัด) เดียวกันจะไปสำหรับARM A64 (ใหม่ 64 บิตชุดคำสั่งที่ปรากฏใน ARMv8) และ A32 (ชื่อสำหรับ“คลาสสิก” ชุดคำสั่ง 32 บิต) สำหรับSPARC64และSPARCและผมเชื่อว่าสำหรับMIPS64และMIPS ดังนั้นในตระกูลสถาปัตยกรรมทั้งหมดหากโปรเซสเซอร์สามารถเรียกใช้รหัส 64 บิตได้ก็สามารถเรียกใช้รหัส 32 บิตได้
เคอร์เนล Linux สนับสนุนการเรียกใช้รหัสผู้ใช้แบบ 32 บิตพร้อมเคอร์เนล 64 บิต (ในทุกสถาปัตยกรรมตระกูลที่กล่าวถึงข้างต้นฉันคิดว่า) เคอร์เนลจะต้องเป็นเนื้อเดียวกัน (ทั้งหมด 64- บิตหรือ 32- บิตทั้งหมด) และแต่ละกระบวนการจะต้องเป็นเนื้อเดียวกัน แต่คุณสามารถมีกระบวนการ 32- บิตและ 64- บิตบนเคอร์เนล 64 บิต ไม่สามารถสนทนาได้ด้วยเคอร์เนลแบบ 32 บิตคุณไม่สามารถรันกระบวนการแบบ 64 บิตได้
นี่คือตัวเลือกการออกแบบใน Linux ซึ่งได้รับแรงบันดาลใจจากความปรารถนาที่จะใช้งานไบนารี 32 บิตที่มีอยู่ในการติดตั้ง 64 บิต ตัวเลือก Unix อื่น ๆ มีตัวเลือกที่แตกต่างกัน: Solaris สามารถเรียกใช้โปรแกรม 64 บิตบนเคอร์เนล 32 บิตรวมถึงวิธีอื่น ๆ ในขณะที่ OpenBSD ไม่สามารถเรียกใช้โปรแกรม 32 บิตบนเคอร์เนล 64 บิต
คุณจะได้รับข้อมูลเกี่ยวกับหน่วย/proc/cpuinfo
ใน หาก CPU x86 ของคุณมีlm
ธงแสดงว่าเป็น CPU 64 บิต
โดยค่าเริ่มต้นuname -m
หรือarch
แสดงสถาปัตยกรรมที่เคอร์เนลถูกคอมไพล์ Linux สามารถตั้งค่า "บุคลิกภาพ" ของการpersonality
เรียกใช้ระบบ(ด้วย) คุณสามารถเรียกใช้กระบวนการย่อยในบุคลิกภาพที่แตกต่างด้วยsetarch
คำสั่ง; setarch i686 someprogram
หรือlinux32 someprogram
รันโปรแกรมที่ระบุไว้ในสภาพแวดล้อมที่uname -m
ผลตอบแทนi686
ในขณะที่setarch amd64 someprogram
หรือlinux64 someprogram
รันโปรแกรมที่ระบุไว้ในสภาพแวดล้อมที่ผลตอบแทนuname -m
amd64
file /sbin/init
บอกให้คุณทราบว่าสถาปัตยกรรมinit
โปรแกรมที่คอมไพล์แล้ว แม้ว่ามันจะเป็นไปได้ที่จะผสมเอ็กซีคิ้วท์แบบ 32 บิตและ 64 บิตในการติดตั้งโดยปกติแล้วโปรแกรมหลักของระบบปฏิบัติการหลักทั้งหมดจะมาจากสถาปัตยกรรมเดียวกันเพราะมันง่ายต่อการจัดการ
$HOSTYPE
เป็นตัวแปร bash และบอกคุณว่าสถาปัตยกรรมใดที่bash
โปรแกรมรวบรวม
getconf LONG_BIT
ช่วยให้คุณทราบว่าคอมไพเลอร์ C เริ่มต้นถูกตั้งค่าให้คอมไพล์โปรแกรม 32- บิตหรือ 64- บิต การทดสอบที่แม่นยำยิ่งขึ้นคือการรวบรวมและเรียกใช้โปรแกรมที่พิมพ์sizeof(void*)
หรือsizeof(size_t)
- การโทรgetconf
สามารถให้ข้อมูลเกี่ยวกับสิ่งที่getconf
คิดว่าเป็นคอมไพเลอร์เริ่มต้นเท่านั้น