Bagaimana Multi-Tugas mungkin di Windows Versi Lama?
Mempertimbangkan bahwa DOS adalah OS dengan penugasan tunggal dan ikatannya dengan Windows versi awal, bagaimana versi Windows sebelumnya dapat mencapai multi-tasking? Posting Q&A SuperUser hari ini membahas jawaban atas pertanyaan ini.
Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.
Tangkapan layar Windows 95 milik Wikipedia.
Pertanyaan
Pembaca SuperUser LeNoob ingin tahu bagaimana versi Windows yang lebih lama dapat berjalan sebagai sistem multi-tasking ?:
Saya membaca bahwa DOS adalah OS satu-tugas. Tetapi jika versi Windows yang lebih lama (juga termasuk Windows 95?) Hanya pembungkus untuk DOS, bagaimana mereka dapat berjalan sebagai OS multi-tasking?
Pertanyaan bagus! Bagaimana Windows versi lama dapat berjalan sebagai sistem multi-tasking?
Jawabannya
Kontributor SuperUser, Bob dan Pete memiliki jawaban untuk kita. Pertama, Bob:
Windows 95 jauh lebih dari "hanya pembungkus" untuk MS-DOS. Mengutip Raymond Chen:
- MS-DOS melayani dua tujuan di Windows 95: 1.) Ini berfungsi sebagai boot loader. & 2.) Bertindak sebagai lapisan driver perangkat legacy 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 multi-tasking pre-emptive untuk program 32-bit.
Pra-Windows 95
Windows 3.x dan yang lebih tua kebanyakan 16-bit (dengan pengecualian Win32s, semacam lapisan kompatibilitas yang menjembatani 16 dan 32, tetapi kami akan mengabaikannya di sini), lebih bergantung pada DOS, dan hanya menggunakan kooperatif multi-tasking - itu adalah di mana mereka tidak memaksa program yang 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).
- Multi-tasking adalah kooperatif, seperti di versi lama MacOS (meskipun tidak seperti Multi-tasking DOS 4.x, yang memakai multi-tasking pre-emptive). Suatu tugas harus menghasilkan ke OS untuk menjadwalkan tugas yang berbeda. Hasil dibuat untuk panggilan API tertentu, terutama pemrosesan pesan. Selama tugas memproses pesan tepat waktu, semuanya bagus. Jika tugas berhenti memproses pesan dan sibuk menjalankan beberapa pemrosesan loop, multi-tasking tidak ada lagi.
Arsitektur Windows 3.x
Adapun bagaimana program Windows awal akan menghasilkan kontrol:
- Windows 3.1 menggunakan multi-tasking kooperatif - yang berarti bahwa setiap aplikasi yang sedang dalam proses menjalankan diperintahkan untuk secara berkala memeriksa antrian pesan untuk mengetahui 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 yang diperlukan. Sistem multi-tugas pre-emptive seperti Windows 95 akan mengambil kontrol CPU dari aplikasi yang 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, multi-tasking pre-emptive mungkin dapat diimplementasikan di atas DOS dengan menggunakan jam waktu nyata dan gangguan hardware untuk secara paksa memberikan kontrol kepada scheduler. Seperti komentar Tonny, ini sebenarnya dilakukan oleh beberapa OS yang berjalan di atas DOS.
386 Mode yang Ditingkatkan?
Catatan: ada beberapa komentar tentang 386 mode Windows 3.x yang ditingkatkan menjadi 32-bit, dan mendukung multi-tasking pre-emptive.
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 pre-emptively multi-tasked - sehingga tampaknya 386 mode hypervisor yang ditingkatkan akan berbagi irisan waktu CPU antara mesin virtual (salah satunya berjalan normal 3.x dan yang lain yang menjalankan MS-DOS), dan masing-masing VM akan melakukan hal sendiri - 3.x secara kooperatif akan multi-tugas, sedangkan 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 di latar belakang sampai dipicu oleh gangguan hardware. Jauh dari multi-tasking sejati, tetapi juga tidak sepenuhnya single-tasking.
Semua pembicaraan tentang bit-ness ini? Saya bertanya tentang multi-tasking!
Sebenarnya, bit-ness dan multi-tasking tidak saling bergantung. Seharusnya dimungkinkan untuk menerapkan mode multi-tasking dalam bit-ness. Namun, perpindahan dari prosesor 16-bit ke prosesor 32-bit juga memperkenalkan fungsionalitas perangkat keras lain yang bisa membuat pre-emptive multi-tasking lebih mudah 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 pre-emptive multi-tasking 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 hanyalah pembungkus untuk DOS.
Diikuti oleh jawaban dari Pete:
Dalam sistem operasi modern, sistem operasi mengontrol semua sumber daya perangkat keras, dan aplikasi yang berjalan disimpan dalam kotak pasir. Aplikasi tidak diizinkan untuk mengakses memori yang tidak dialokasikan oleh OS untuk aplikasi itu, dan tidak dapat secara langsung mengakses perangkat keras di komputer. Jika akses perangkat keras diperlukan, aplikasi harus berkomunikasi melalui driver perangkat.
OS dapat menegakkan kontrol ini, karena memaksa CPU untuk masuk ke mode terlindungi.
DOS, di sisi lain, tidak pernah memasuki mode terproteksi, tetapi tetap dalam mode nyata (*Lihat di bawah). Dalam mode nyata, aplikasi yang berjalan dapat melakukan apa pun yang diinginkannya, yaitu mengakses perangkat keras secara langsung. Tetapi aplikasi yang berjalan dalam mode nyata juga dapat memberitahu CPU untuk masuk ke mode terlindungi.
Dan bagian terakhir ini memungkinkan aplikasi seperti Windows 95 untuk memulai lingkungan multi-threaded meskipun pada dasarnya diluncurkan dari DOS.
DOS (Disk Operating System), sejauh yang saya tahu, tidak lebih dari sistem manajemen file. Ini menyediakan sistem file, mekanisme untuk menavigasi sistem file, beberapa alat, dan kemungkinan untuk meluncurkan aplikasi. Itu juga memungkinkan beberapa aplikasi tetap tinggal, mis. Driver mouse dan emulator EMM. Tapi itu tidak berusaha untuk mengontrol perangkat keras di komputer seperti OS modern.
*Ketika DOS pertama kali dibuat pada tahun 1970-an, mode terproteksi tidak ada dalam CPU. Tidak sampai prosesor 80286 pada pertengahan 1980-an, mode terlindungi menjadi bagian dari CPU.
Pastikan untuk menelusuri ke utas asli dan membaca diskusi yang hidup tentang topik ini menggunakan tautan di bawah ini!
Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.