Mengapa perangkat lunak Windows 9x dapat berjalan di Windows 7 64-bit?

-1

Selama bertahun-tahun (lama setelah pengenalan Windows XP) saya menjalankan koleksi PC desktop Windows 9x lama. Pada dasarnya, mesin-mesin ini terlalu rendah spesifikasi dalam perangkat kerasnya untuk diupgrade ke XP (dan menghabiskan banyak uang), jadi saya terus menggunakannya, dengan perangkat lunak asli mereka: berbagai instalasi Windows 98SE dan Windows ME (semua berjalan sebagai versi 32-bit).

Dalam acara tersebut, saya tidak pernah menggunakan XP. Mesin Win9x sangat andal sehingga mereka masih bekerja lama setelah XP dan Vista datang dan pergi. Tapi saya akhirnya harus bermigrasi, selama periode waktu tertentu, ke Windows 7 64-bit.

Saya tidak akan melakukan sesuatu yang benar-benar bodoh, seperti bertanya mengapa program ini-dan-itu tidak berjalan pada Win7 64bit! :-)

Tanpa terkecuali, semua perangkat lunak yang saya jalankan di 32bit Windows 98SE bekerja secara out-of-the-box (bisa dikatakan) pada arsitektur NT 64bit Win7. Saat ini, saya masih menggunakan beragam perangkat lunak ini, terutama program pengolah kata dan editor HTML yang saya gunakan secara rutin.

Apakah ada alasan teknis mengapa saya tidak pernah mengalami kesulitan yang saya harapkan dalam menjalankan program Windows 9x pada 64bit NT? Saya telah diberitahu tentang pengaturan 'kompatibilitas' pada Win7, tetapi tidak pernah menjalankan program dalam "mode kompatibilitas".

Saya menyadari Windows 7 menyimpan perangkat lunak 32-bit dan 64-bit di lokasi yang berbeda, dan menangani mereka secara berbeda: tetapi saya berharap ini terkait dengan program 32bit dan 64bit yang ditulis untuk Windows 7.

Saya terkejut bahwa program Windows 98 32bit tampaknya sepenuhnya kompatibel dengan program Windows XP / Vista / 7 32bit, dan ingin memahami mengapa demikian. Apakah benar-benar tidak ada perbedaan di antara mereka?

Juga, banyak dari program Windows 9x lama adalah portable. Saya sudah terbiasa meletakkannya di stik USB, atau di desktop Windows 7, dan hanya menjalankannya. Saya tidak mengalami masalah. Meskipun mereka tidak dijalankan dari folder Program Files. Sekali lagi, saya ingin memahami mengapa O / S tidak keberatan dengan ini, dari perspektif teknis?

Apakah saya melakukan sesuatu yang tidak aman? Windows 7 O / S tampaknya sangat stabil: tetapi saya ingin tahu apakah saya memintanya untuk melakukan hal-hal yang seharusnya tidak saya lakukan.

Ed999
sumber

Jawaban:

3

Anda harus menjadi pengguna pertama yang mengeluh karena dia tidak memiliki masalah apa pun. ;)

Sementara media arus utama telah berusaha keras untuk memberikan Windows reputasi yang tidak patut di bidang kompatibilitas aplikasi, faktanya adalah Microsoft telah banyak berinvestasi dalam kompatibilitas ke belakang dan sebagian besar aplikasi yang ditulis untuk Windows 98 masih dapat digunakan pada Windows 7. Plus , Windows 7 adalah sistem operasi paling stabil yang pernah dikembangkan Microsoft. Jangan salah, perbedaan antara Windows 7 dan Windows 98 sangat luas tetapi:

  • Windows 98 mengambil keuntungan dari Windows API kaya yang Microsoft tidak berusaha untuk menulis ulang hanya karena! Misalnya, antarmuka untuk menggambar persegi panjang di layar , membuat jendela atau menampilkan bilah menu masih sama.
  • Windows 7 telah menerapkan langkah-langkah yang dimaksudkan untuk mengatasi masalah kompatibilitas perangkat lunak warisan. Salah satunya adalah Virtualisasi UAC. Aplikasi Windows 98 menulis data aplikasi mereka ke folder instalasi mereka. Windows 7 tidak memungkinkan itu lagi; namun, untuk aplikasi lawas, UAC Virtualization mengalihkan operasi penulisan data di luar folder instalasi aplikasi ke %LOCALAPPDATA%\VirtualStore.

Aplikasi Windows 98-era yang tidak lagi berfungsi di Windows 7 termasuk aplikasi 16-bit (yang tidak berjalan di Windows 64-bit tetapi kadang-kadang berjalan pada Windows 32-bit) dan aplikasi yang mengandalkan hack atau layanan OS lama yang misterius.

Komunitas
sumber
1
tldr: Mereka mempertahankan kompatibilitas API dan ABI;)
Journeyman Geek
... dan menerapkan langkah-langkah kompatibilitas seperti UAC Virtualisasi
@FleetCommand: Saya membuka% LOCALAPPDATA% \ VirtualStore dan, anehnya, foldernya kosong. Ada banyak entri dalam direktori induknya,% LOCALAPPDATA%, tetapi zilch di \ VirtualStore. Kebetulan, saya sepenuhnya akurat ketika saya merujuk menggunakan perangkat lunak Win9x 32bit, saya sudah lama membuang sisa program 16bit yang tersisa.
Ed999
1
Kurangnya dukungan 16-bit berkaitan dengan keputusan Intel tentang cara kerja mode lama, dan cara menonaktifkan dukungan untuk instruksi yang diperlukan agar aplikasi 16-bit berfungsi ketika mode lama diaktifkan. Yang saya sadari adalah
fakta
1
@ Ed999: Sekali lagi, ini hanya bagus! Anda memiliki aplikasi beradab seperti itu. Tentu saja, Anda memang menyebutkan bahwa "banyak dari program Windows 9x lama adalah / portabel" dan "mereka tidak dijalankan dari folder Program Files". Jadi, tidak ada virtualisasi UAC untuk sistem file. (Kami juga memiliki virtualisasi UAC untuk Registry.)
1

Anda mengajukan banyak pertanyaan di sini, beberapa agak rumit, tetapi jawaban dasarnya adalah "Microsoft berupaya keras untuk menjaga kompatibilitas ke belakang". Jujur, pertanyaan yang lebih baik mungkin adalah "mengapa itu tidak berhasil?", Karena Win9x dan NT (termasuk Win7) menggunakan Win32 API dan set instruksi x86 (ekstensi AMD 64-bit ke set instruksi x86 Intel kompatibel dengan backward; prosesor "x64" yang berjalan dalam mode 64-bit juga dapat menjalankan program 32-bit).

Alasan yang paling mungkin mengapa hal itu tidak berhasil adalah karena kontrol akses. Win9x sama sekali tidak mendukung kontrol akses apa pun; program apa pun dapat melakukan apa pun yang diinginkannya. Digunakan jahat, ini membuat penulisan malware sangat mudah. Digunakan secara tidak berbahaya tetapi dengan malas, ini berarti banyak pengembang menulis program mereka sehingga program menulis data ke folder instal mereka. Ini adalah ide yang buruk karena sejumlah alasan berbeda, yang paling tidak adalah keamanan; pada OS "asli", lokasi default tempat file diinstal tidak memungkinkan non-administrator menulis ke file, dan Anda seharusnya dijalankan sebagai non-administrator kecuali ketika menginstal / memperbarui perangkat lunak.

Tentu saja, seluruh "tulis ke direktori tempat Anda menjalankan" ini adalah hal yang mudah (saya memang mengatakan para devs sedang malas ...) dan ya, itu juga membuat perangkat lunak "portabel" dalam arti bahwa Anda dapat meletakkannya pada flashdrive (yang biasanya juga sama sekali tidak memiliki kontrol akses, karena mereka menggunakan varian sistem file FAT dan FAT tidak mendukung izin file). Menjalankan perangkat lunak dengan cara ini kurang aman daripada menginstalnya ke area yang dibatasi akses dan menjalankannya dari sana (sebagai pengguna non-admin), tetapi mungkin boleh saja selama Anda tidak membagikan komputer dengan orang lain.

Adapun mengapa OS tidak keberatan ... mengapa Anda mengharapkannya? Program Filesbukan folder khusus dengan cara apa pun, itu hanya tempat di mana, secara konvensional, Anda menginstal program. (Ini sebenarnya sebuah konvensi benar-benar bodoh, karena beberapa istirahat software jika Anda menginstal ke lokasi dengan ruang di jalan, tapi mungkin MS ingin memastikan pengembang tidak menjadi cukup yang malas ...) Satu-satunya hal yang khusus tentang Program Filesini bahwa pada sistem 64-bit, ketika proses 32-bit meminta folder "Program Files" mereka sebenarnya diarahkan ke Program Files (x86)folder tersebut. Di luar itu ... OS memungkinkan Anda menjalankan program dari mana saja yang dapat diakses oleh Anda, pengguna. Beberapa program sengaja memasang di profil pengguna Anda, atau di folder mereka sendiri di root drive (C:\Python27adalah folder umum untuk dilihat pada mesin pengembang). Program-program itu bekerja dengan baik.

CBHacking
sumber
Saya sedikit tidak setuju dengan pendapat Anda tentang 'kemalasan pengembang' - konsep keamanan tidak diketahui atau tidak diperlukan pada saat itu, dan pengembang biasanya tidak diizinkan menghabiskan banyak waktu untuk sesuatu yang dianggap tidak relevan. Apa yang Anda lakukan seperti menyalahkan orang-orang di abad ke-17 karena tidak membuat jalanan cukup lebar untuk mobil. Kalau tidak jawaban yang bagus.
Aganju
1
@ Aganju: "Tidak Diketahui" hanya jika Anda tidak tahu apa-apa tentang dunia komputasi, dalam hal ini Anda mungkin bukan seorang dev. Prinsip-prinsip dasar keamanan dalam sistem operasi multi-pengguna berasal dari Multics, dirilis pada tahun 1969. Unix, cabang bahasa yang lebih sederhana (namun masih aman), pertama kali dirilis pada tahun 1973 dan menyebar pada akhir 70-an. Microsoft sendiri menjual Unix (Xenix) mulai tahun 1980. Keluarga Windows NT, yang berutang banyak pada Unix (termasuk di bidang keamanan), pertama kali dirilis pada tahun 1993 (Linux, BSD, dan banyak OS * nix lainnya semuanya ada saat itu). Pada tahun 1998, tidak ada alasan untuk ketidaktahuan.
CBHacking
Saya telah berkembang sejak tahun 70-an, tetapi orang-orang yang membayar tagihan tidak ingin mendengar tentang menghabiskan satu sen untuk keamanan. Saya hanya melihat perubahan ini sejak ~ 2005
Aganju
1
@ Aganju: Adapun "tidak diperlukan", itu sepenuhnya salah. Itu seperti yang disyaratkan kemudian seperti sekarang, dan itu sangat dibutuhkan. Win98 (atau bahkan 95, dengan beberapa upgrade pasca-rilis) seolah-olah merupakan sistem multi-pengguna, untuk semua yang tidak memiliki mekanisme untuk menegakkan keamanan antar-pengguna. Tidak ada perlindungan terhadap perangkat lunak berbahaya (dan ada banyak perangkat lunak berbahaya). Bisnis (dan beberapa rumah) menggunakan NT, yang memiliki fitur-fitur itu. Adapun "berjam-jam", umm, tidak. Tidak terlalu sulit untuk menulis %APPDATA%\ProgramName\Filenamedaripada hanya untuk Filename! Kemalasan murni.
CBHacking