Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows 10

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

เมื่อคอมพิวเตอร์เริ่มใช้สถาปัตยกรรม 64-bit สมัยใหม่ ผู้ใช้ตระหนักเร็วว่า: รันแอป 16-bit เก่าๆ ไม่ได้ ทำไมเครื่อง 64-bit รันแอป 16-bit ไม่ได้?

คำตอบอาจสับสน ขึ้นกับคนตอบ 1) ไม่ได้ "เป็นไปไม่ได้" แค่ "ยาก" 2) เหตุผลอยู่ที่ CPU Architecture และ Operating System ทั้งคู่

สับสนไหม? ไม่ต้องกังวล คุณไม่ได้คนเดียว จบบทความนี้ คุณจะไม่สับสนแล้ว

ประวัติสถาปัตยกรรม CPU

รู้ว่าคุณไม่อยากอ่านบทเรียนประวัติศาสตร์ แต่สั้นๆ และสำคัญต่อการเข้าใจทำไม 64-bit รัน 16-bit ไม่ได้

หากคุณผ่านยุค 80s-90s จะจำได้: ไดโนเสาร์ 16-bit ที่คนสมัยนั้นเชื่อว่า Bleeding-edge Technology

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

สมัยนั้นมันคือ: Intel 8086 (1978) เข้าถึง Address Space 1MB ด้วย 16-bit Addressing ก่อนหน้านี้ 64KB RAM นี่คือการก้าวกระโดดใหญ่ เริ่มยุค Personal Computing ใหม่

โหมดนี้ (เรียกว่า Real Mode) ส่วนหนึ่งสำรอง RAM ส่วนเหลือให้ BIOS และฮาร์ดแวร์ (Graphics Card ฯลฯ)

ต่อมา 80286 (286) Address ได้ 16MB ด้วย 16-bit Addressing พร้อม Protected Mode: เข้าถึง Memory มากขึ้น + Multitasking รัน 16-bit เก่าใน "Real Mode" ยากแต่ทำได้

จบ 16-bit... แบบประมาณ

1985 Intel ปล่อย Intel 386 CPU แรกที่ Address Memory ด้วย 32-bit เข้าถึง 4GB Addressable Memory ดูเป็น Breakthrough ใหญ่ PC Gaming จะเข้ายุคทอง

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

มาพร้อม Extended Protected Mode: เข้าถึง Memory มากขึ้น + ฟีเจอร์ให้ Software Flag ระบุว่าเป็น Code 16-bit หรือ 32-bit ทำได้ด้วย Virtual 86 Mode (Virtualized 8086 Built-in)

เห็นไหม: ทุก Evolution ของ CPU Architecture ทั้ง Hardware (CPU Programming) และ Software (OS, Apps) รักษา Backward Compatibility ให้ผู้ที่ยังมีซอฟต์แวร์เก่าอยู่ ผู้ใช้ทั่วไปมีประโยชน์ แต่องค์กร/ธุรกิจขนาดเล็ก = Critical สำหรับ Legacy Systems

64-bit Architecture ทำลายทุกอย่าง

ขีดจำกัด 4GB Addressable Memory ของ 32-bit เป็นข้อจำกัดนาน년 แต่ 64-bit Processor มาพร้อม Breakthrough ใหม่: Long Mode Address ได้ถึง 16 Million Terabytes จะใช้เวลานานมากกว่าจะเป็นขีดจำกัด

แต่มาพร้อม Trade-off ใหญ่: พยายามรัน 16-bit App ที่ต้องการ "Real Mode" หรือ "Virtual 8086 Mode" ที่รองรับมานาน = Error: "Program.exe is not a valid Win32 application."

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

ทำให้หงุดหงิด แต่ไม่ใช่โลกสิ้นสุด ใช้ Emulator หรือ VM รัน 32-bit OS ที่รองรับ 16-bit Legacy ได้

ดังนั้น "เป็นไปไม่ได้" สำหรับ 64-bit System รัน 16-bit MS-DOS App แต่น่าจะ "เป็นไปได้" สำหรับ User ผ่าน Workaround แต่ทำไมถึงเกิดขึ้น?

64-bit Architecture ลบ NTVDM ออก

ทุกรุ่น 32-bit Processor ตลอดมา OS ใส่ความพยายามมากจัดการ 16-bit DOS App เก่า ทำได้ด้วย NTVDM (NT Virtual DOS Machine)

แอป 32-bit นี้รันใน Windows จำลองสถาปัตยกรรม 486 จัดการ 16-bit Addressing ด้วย Virtual 8086 แต่ "Long-mode" Addressing รองรับไม่ได้อย่างปลอดภัย ต้อง Emulate 8086 Processor เต็มรูปแบบเพื่อรองรับ DOS App

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

Microsoft ตัดสินใจตัดทิ้งความพยายามนี้ เพื่อปล่อย 64-bit OS เร็วขึ้น ในหน้าสนับสนุน Microsoft ระบุชัด: "16-bit MS-DOS and Microsoft Windows 3.x utilities will not start."

ไม่ขอโทษ แค่ไม่รองรับ

ด้วยผลิตภัณฑ์ Virtualization เยอะมากที่ทำได้อยู่แล้ว Microsoft ไม่คุ้มค่าที่จะ Reinvent the Wheel

วิธีรันแอป 16-bit บนระบบ 64-bit

ไม่รองรับ Native บน 64-bit Windows ไม่ได้หมายความว่าเป็นไปไม่ได้ ต้องติดตั้ง Tools เพิ่มเติม

หากชอบเกม DOS คลาสสิค หรือใช้ Retro Apps อื่นๆ จากวันดังของ Computing มีทางเลือก 4 ทาง:

1. เล่นเกม Retro ด้วย DOSBox

วิธีง่ายที่สุดรัน Old DOS Apps: ใช้ Emulator ยอดนิยมคือ DOSBox

Christian เขียนวิธีติดตั้งและตั้งค่า DOSBox เล่นเกม Retro บน Windows

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

ดีคือ: เกมส่วนใหญ่เก่ามาก ถือว่า Abandonware ดาวน์โหลดเล่นฟรีได้อย่างถูกกฎหมาย

2. รันแอปใน VirtualBox

OS เช่น Windows XP และ Windows 7 รัน 16-bit App Native ได้ สร้าง VM ด้วย OS เหล่านั้นบนระบบ 64-bit = รันแอปเดียวกันได้

Tool ยอดนิยม ตั้งค่าง่าย: VirtualBox มีคู่มือครบครัน ตั้งค่าและใช้ VirtualBox เริ่มได้เลย

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

เลือก OS ให้ถูก: Windows 7 หรือเก่ากว่า ดาวน์โหลดติดตั้ง DOS App เก่าบน VM ได้เลย

3. ใช้ Linux

พูด Linux อย่างไรก็ได้ สิ่งที่ Distro ส่วนใหญ่ทำถูก: รองรับ 16-bit App Distro ที่มี PAE Kernel ไม่จำกัด 4GB ของ 32-bit รัน Linux Distro 제대로 เป็น Dual-boot บนระบบ = ทางเลือกอีกอย่าง

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

2 ทาง: Dual-boot หรือ VM หรือ... ทิ้ง Windows ไปเลย ใช้ Linux ตลอด ก็ได้

4. ใช้ Emulators อื่นๆ

DOSBox ไม่ใช่ Emulator ตัวเดียว มี Emulator เก่งเยอะมาก เหมาะมากหากคุณเป็นเกมเมอร์

Christian ครอบคลุม: Emulate Commodore Amiga, Raspberry Pi, Android, แม้แต่ SNES Classic บน PC ได้

ทำไม OS 64-bit รันแอป 16-bit ไม่ได้?

เพียงปลาย айซเบิร์ก ค้นหาออนไลน์ จะหา Library Emulator โดนๆ ที่รัน Retro App เกือบหมดได้ Microsoft อาจทิ้ง 16-bit ไป แต่คุณยังมีทางเลือก

อย่าถือว่าหลุดจาก 16-bit

ไม่มีเหตุผลเลยที่จะคิดว่า "เป็นไปไม่ได้" รัน 16-bit App บน 64-bit Machine อาจเป็นไปไม่ได้ Native แต่เห็นแล้วว่ามี Solution เยอะมาก