Mengapa demikian:
- OS 32-bit, ketika diinstal pada CPU 64-bit, dapat menjalankan aplikasi 16-bit lama,
- tetapi jika Anda menginstal OS 64-bit tidak dapat menjalankan aplikasi tersebut secara langsung dan memerlukan semacam emulasi (itu tidak selalu bekerja dengan sempurna)?
Untuk lebih spesifik, saya memiliki prosesor 64-bit (Intel Core 2 Duo). Ketika saya menginstal Windows XP dan Windows 7 (keduanya 32-bit), mereka dapat menjalankan aplikasi Windows DOS dan 616-bit yang lama.
Sekarang saya telah menginstal edisi Windows 7. 64-bit. Mengapa tidak bisa menjalankan aplikasi yang sama lagi?
Jawaban:
Dari pemahaman saya, itu karena ketika menjalankan dalam Long Mode (x64 asli), CPU itu sendiri tidak mendukung masuk ke mode 16 bit. Lihat Wikipedia . Jadi, untuk mendukung mode 16 bit, NTVDM (lapisan 16 bit pada Windows) harus sepenuhnya meniru prosesor 16 bit.
Saya kira mereka ditimbang menerapkan kembali emulasi layer vs menggunakan perangkat lunak virtualisasi yang sudah ada (VirtualPC, VirtualBox) untuk menangani ini, dan diputuskan untuk memotong VDM.
sumber
Karena pegangan 64-bit memiliki 32 bit signifikan :
Di Windows, program menyebarkan "handle" ke OS dan sebaliknya (yang merupakan angka yang digunakan OS untuk secara unik mengidentifikasi sumber daya tertentu, seperti jendela).
Untuk mendukung program 16-bit, Windows 32-bit hanya menghasilkan sebuah pegangan yang memiliki 16 bit signifikan - 16 bit atas diabaikan oleh OS (meskipun program tidak memanfaatkan fakta ini). Jadi tidak ada program yang dapat berinteraksi dengan lebih dari 16 objek, yang sebenarnya agak rendah.
Namun, untuk meningkatkan ini, Windows 64-bit meningkatkan jumlah bit yang signifikan dalam sebuah pegangan menjadi 32. Tetapi sekarang itu berarti bahwa pegangan tidak dapat diteruskan ke program 16-bit tanpa kehilangan informasi. Jadi program 16-bit tidak dapat berjalan di Windows 64-bit.
sumber
EnumWindows
dan ada lebih dari 2 ^ 16 jendela dalam sistem?Untuk Windows, itu karena versi OS x86 menyertakan emulasi 16-bit yang memungkinkan mereka untuk menjalankan proses DOS yang lebih lama. Pada versi x64, mereka sudah harus meniru eksekusi x86 (mereka menyebutnya WoW64) untuk memungkinkan proses 32-bit berjalan, dan saya kira menggunakan Wow64 untuk lebih lanjut meniru emulator 16-bit yang disebabkan terlalu banyak masalah.
Sejumlah proses 16-bit yang dikenali akan berjalan karena emulasi dikodekan keras untuk menanganinya, tetapi sisanya tidak berfungsi karena emulasi tidak termasuk dalam x64.
Lihat "Tidak ada kode 16-bit" di artikel MSKB: http://support.microsoft.com/kb/282423
sumber
Perbaiki saya jika saya salah, tetapi menurut pemahaman saya, ini hanya karena masalah khusus Windows sehingga NTVDM menggunakan mode virtual 8086. Mode kompatibilitas pada prosesor x64 (berjalan dalam mode lama) mendukung mode terlindungi 'bersih' penuh, 16 dan 32 bit dari apa yang saya temukan di sini: http://en.wikipedia.org/wiki/Long_mode , tetapi tidak sebagian dari 386 tambahan seperti mode 8086 virtual. Jadi kemungkinan besar tidak didukung karena tidak membuahkan hasil bagi Microsoft untuk memprogram ulang NTVDM, yang mungkin memerlukan penambahan beberapa emulasi karena beberapa aplikasi mode terproteksi 16-bit dapat menggunakan virtual 8086, bahkan jika kebanyakan tidak. Saya kira dengan tenaga kerja yang cukup dimungkinkan untuk menulis sesuatu lebih cepat daripada dosbox berjalan dalam mode lama, karena ada dukungan perangkat keras untuk aplikasi 16bit.
sumber
Situasinya berbeda untuk aplikasi Dos dan aplikasi 16 bit windows.
Untuk aplikasi Dos masalahnya adalah mode virtual 8086 tidak tersedia dalam mode lama. Ini adalah batasan arsitektur CPU.
Untuk aplikasi Windows 16 bit (yang berjalan dalam mode 16 bit protected) alasannya adalah bahwa MS tidak siap untuk melakukan pekerjaan untuk mengimplementasikan lapisan kompatibilitas yang sesuai. Amusingly Wine sangat mampu menjalankan aplikasi windows 16 bit di linux 64-bit.
sumber
Saya pikir alasan yang paling mungkin adalah bahwa hanya sebagian kecil pemilik PC yang benar-benar ingin dapat menjalankan aplikasi 16 bit lama pada perangkat keras 64 bit baru mereka. Microsoft mungkin berpikir bahwa itu tidak layak ketika mereka terus mendukung aplikasi 16 bit.
sumber