Windows 95
Windows 95 jauh lebih dari "hanya pembungkus" untuk MS-DOS . Mengutip Raymond Chen:
MS-DOS melayani dua tujuan di Windows 95.
- Ini berfungsi sebagai boot loader.
- Itu bertindak sebagai lapisan driver perangkat warisan 16-bit.
Windows 95 benar-benar terhubung / mengesampingkan hampir semua MS-DOS, menjaganya sebagai lapisan kompatibilitas sambil melakukan semua pekerjaan berat itu sendiri. Ini juga menerapkan multitasking preemptive untuk program 32-bit.
Pra-Windows 95
Windows 3.x dan yang lebih tua kebanyakan 16-bit (dengan pengecualian Win32s, lapisan kompatibilitas yang menjembatani 16 dan 32, tapi kami akan mengabaikannya di sini), lebih bergantung pada DOS, dan hanya menggunakan multitasking kooperatif - itu yang tidak memaksa program berjalan untuk beralih; mereka menunggu program yang sedang berjalan untuk menghasilkan kontrol (pada dasarnya, katakan "saya sudah selesai" dengan memberitahu OS untuk menjalankan program berikutnya yang sedang menunggu).
Multitasking bersifat kooperatif, seperti di versi lama MacOS (meskipun tidak seperti Multitasking DOS 4.x, yang menggunakan multitasking preemptive). Suatu tugas harus menghasilkan ke OS untuk menjadwalkan tugas yang berbeda. Hasil dibuat untuk panggilan API tertentu, terutama pemrosesan pesan. Selama suatu tugas memproses pesan secara tepat waktu, semuanya berjalan dengan baik. Jika tugas berhenti memproses pesan dan sibuk menjalankan beberapa pemrosesan loop, multitasking tidak ada lagi.
Arsitektur Windows 3.x
Adapun bagaimana program Windows awal akan menghasilkan kontrol:
Windows 3.1 menggunakan multitasking kooperatif - artinya setiap aplikasi yang sedang dalam proses menjalankan diinstruksikan untuk secara berkala memeriksa antrian pesan untuk mencari tahu apakah ada aplikasi lain yang meminta penggunaan CPU dan, jika demikian, untuk menghasilkan kontrol untuk aplikasi itu . Namun, banyak aplikasi Windows 3.1 akan jarang memeriksa antrian pesan, atau tidak sama sekali, dan memonopoli kontrol CPU sebanyak waktu yang diperlukan. Sistem multitasking preemptive seperti Windows 95 akan mengambil kendali CPU dari aplikasi yang sedang berjalan dan mendistribusikannya kepada mereka yang memiliki prioritas lebih tinggi berdasarkan kebutuhan sistem.
sumber
Semua DOS akan melihat aplikasi tunggal ini (Windows atau lainnya) berjalan, yang akan melewati kontrol tanpa keluar. Secara teori, preemptive multitasking mungkin dapat diimplementasikan di atas DOS dengan menggunakan jam waktu nyata dan gangguan perangkat keras untuk secara paksa memberikan kontrol kepada penjadwal. Seperti komentar Tonny , ini sebenarnya dilakukan oleh beberapa OS yang berjalan di atas DOS.
386 mode yang disempurnakan?
Catatan: ada beberapa komentar tentang 386 mode Windows 3.x yang ditingkatkan menjadi 32-bit, dan mendukung preemptive multitasking.
Ini adalah kasus yang menarik. Untuk meringkas posting blog yang ditautkan , 386 mode yang ditingkatkan pada dasarnya adalah hypervisor 32-bit, yang menjalankan mesin virtual. Di dalam salah satu mesin virtual itu menjalankan mode standar Windows 3.x, yang melakukan semua hal yang tercantum di atas.
MS-DOS juga akan berjalan di dalam mesin-mesin virtual, dan tampaknya mereka sebelumnya multitasked - sehingga tampaknya 386 peningkatan mode hypervisor akan berbagi irisan waktu CPU antara mesin virtual (salah satunya berjalan normal 3.x dan yang lain menjalankan MS -DOS), dan masing-masing VM akan melakukan hal sendiri - 3.x akan bekerja sama multitask, sementara MS-DOS akan menjadi tugas tunggal.
MS-DOS
DOS sendiri adalah single-tasking di atas kertas, tetapi memang memiliki dukungan untuk program TSR , yang akan tetap berada di latar belakang sampai dipicu oleh gangguan hardware. Jauh dari multitasking sejati, tetapi juga tidak sepenuhnya memiliki tugas tunggal.
Semua pembicaraan tentang bit-ness ini? Saya bertanya tentang multitasking!
Yah, sebenarnya sedikit-ness dan multitasking tidak saling bergantung. Seharusnya dimungkinkan menerapkan mode multitasking apa pun dalam bit-ness. Namun, perpindahan dari prosesor 16-bit ke prosesor 32-bit juga memperkenalkan fungsionalitas perangkat keras lain yang bisa membuat multitasking preemptive lebih mudah untuk diimplementasikan.
Juga, karena program 32-bit adalah baru, lebih mudah untuk membuatnya bekerja ketika mereka dipaksa keluar - yang mungkin telah merusak beberapa program 16-bit lama.
Tentu saja, ini semua spekulasi. Jika Anda benar-benar ingin tahu mengapa MS tidak menerapkan preemptive multitasking di Windows 3.x (386 mode yang disempurnakan meskipun demikian), Anda harus bertanya kepada seseorang yang bekerja di sana.
Juga, saya ingin memperbaiki asumsi Anda bahwa Windows 95 adalah hanya pembungkus untuk DOS;)