Mempertimbangkan bahwa DOS adalah OS yang menjalankan tugas tunggal dan hubungannya dengan versi awal Windows, bagaimana cara versi Windows sebelumnya berhasil menyelesaikan multi-tasking? Posting SuperUser Q & A hari ini melihat jawaban atas pertanyaan ini.
Sesi Tanya & Jawab hari ini hadir untuk memberi kami hak milik SuperUser-sub divisi Stack Exchange, pengelompokan situs web Q & A berbasis komunitas.
Screenshot Windows 95 milik Wikipedia.
Pembaca SuperUser LeNoob ingin tahu bagaimana versi Windows yang lebih lama dapat dijalankan sebagai sistem multi-tasking ?:
Saya membaca bahwa DOS adalah OS satu tugas. Tetapi jika versi Windows yang lebih lama (juga termasuk Windows 95?) Hanya bungkus untuk DOS, bagaimana mereka bisa berjalan sebagai OS multi-tasking?
Pertanyaan bagus! Bagaimana versi Windows yang lebih lama dapat berjalan sebagai sistem multi-tasking?
Kontributor SuperUser, Bob dan Pete, memiliki jawabannya untuk kami. 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.) Ini bertindak sebagai lapisan driver perangkat warisan 16-bit.
Windows 95 benar-benar mengaitkan / membanjiri hampir semua MS-DOS, menjaganya sebagai lapisan kompatibilitas saat melakukan semua angkat berat itu sendiri. Ini juga menerapkan pre-emptive multi-tasking 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 kita akan mengabaikannya di sini), lebih bergantung pada DOS, dan hanya menggunakan multi-tasking kooperatif. - Itu adalah salah satu di mana mereka tidak memaksa program yang sedang berjalan untuk beralih; mereka menunggu program berjalan untuk menghasilkan kontrol (pada dasarnya, katakan "saya selesai" dengan memberi tahu OS untuk menjalankan program berikutnya yang menunggu).
- Multi-tasking bersifat kooperatif, sama seperti di MacOS versi lama (meskipun tidak seperti Multi-tasking DOS 4.x, yang melakukan pre-emptive multi-tasking). Tugas harus menyerah pada OS untuk menjadwalkan tugas yang berbeda. Hasil itu dibangun ke dalam panggilan API tertentu, terutama pemrosesan pesan. Selama tugas memproses pesan secara tepat waktu, semuanya bagus. Jika tugas berhenti memproses pesan dan sibuk mengeksekusi beberapa putaran pemrosesan, multi-tasking tidak 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 diinstruksikan untuk secara berkala memeriksa antrian pesan untuk mengetahui apakah ada aplikasi lain yang meminta penggunaan CPU dan, jika demikian, untuk menghasilkan kontrol ke aplikasi itu. Namun, banyak aplikasi Windows 3.1 yang hanya akan memeriksa antrean pesan, atau tidak sama sekali, dan memonopoli kendali CPU untuk waktu sebanyak yang diperlukan. Sistem multi-tasking pre-emptive 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 apakah ini aplikasi tunggal (Windows atau lainnya) berjalan, yang akan melewati kontrol tanpa keluar. Secara teori, pre-emptive multi-tasking dapat diimplementasikan di atas DOS dengan penggunaan jam real-time 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 Enhanced Mode?
Catatan: ada beberapa komentar pada 386 mode yang disempurnakan dari Windows 3.x menjadi 32-bit, dan mendukung multi-tasking pre-emptive.
Ini adalah kasus yang menarik. Untuk meringkas posting blog terkait, 386 mode yang disempurnakan pada dasarnya adalah hypervisor 32-bit, yang menjalankan mesin virtual. Di dalam salah satu mesin virtual tersebut menjalankan mode standar Windows 3.x, yang melakukan semua hal yang tercantum di atas.
MS-DOS juga akan berjalan di dalam mesin virtual, dan tampaknya mereka pre-emptive multi-tasked - sehingga tampaknya 386 hypervisor mode yang disempurnakan akan berbagi waktu CPU antara mesin virtual (salah satu yang berjalan normal 3.x dan orang lain yang menjalankan MS-DOS), dan masing-masing VM akan melakukan hal sendiri - 3.x akan bekerja sama multi-tugas, sementara MS-DOS akan menjadi tugas tunggal.
MS-DOS
DOS sendiri adalah single-tasking di atas kertas, tetapi itu memang memiliki dukungan untuk program-program TSR yang akan tetap berada di latar belakang sampai dipicu oleh gangguan perangkat keras. Jauh dari benar multi-tasking, tetapi tidak sepenuhnya satu tugas juga.
Semua pembicaraan tentang bit-ness? Saya bertanya tentang multi-tasking!
Yah, tegasnya, bit-ness dan multi-tasking tidak bergantung satu sama lain. Seharusnya mungkin untuk menerapkan mode multi-tasking apa saja. Namun, perpindahan dari prosesor 16-bit ke prosesor 32-bit juga memperkenalkan fungsi perangkat keras lain yang bisa membuat pre-emptive multi-tasking lebih mudah untuk diterapkan.
Juga, karena program 32-bit masih baru, lebih mudah untuk membuatnya bekerja ketika mereka dipaksa keluar - yang mungkin telah merusak beberapa program 16-bit warisan.
Tentu saja, ini semua spekulasi. Jika Anda benar-benar ingin tahu mengapa MS tidak mengimplementasikan pre-emptive multi-tasking di Windows 3.x (meskipun mode yang ditingkatkan 386), Anda harus bertanya kepada seseorang yang bekerja di sana.
Juga, saya ingin memperbaiki asumsi Anda bahwa Windows 95 hanya pembungkus untuk DOS.
Diikuti oleh jawaban dari Pete:
Dalam sistem operasi modern, sistem operasi mengontrol semua sumber daya perangkat keras, dan menjalankan aplikasi disimpan di kotak pasir. Aplikasi tidak diizinkan mengakses memori yang tidak dialokasikan 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 memberlakukan kontrol ini, karena memaksa CPU untuk memasuki mode terproteksi.
DOS, di sisi lain, tidak pernah memasuki mode perlindungan, tetapi tetap dalam mode nyata (*Lihat di bawah). Dalam mode nyata, aplikasi yang sedang berjalan dapat melakukan apa pun yang diinginkannya, yaitu mengakses perangkat keras secara langsung. Tetapi aplikasi yang berjalan dalam mode nyata juga dapat memberi tahu CPU untuk memasuki mode terproteksi.
Dan bagian terakhir ini memungkinkan aplikasi seperti Windows 95 untuk memulai lingkungan multi-threaded meskipun pada dasarnya mereka 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 untuk beberapa aplikasi untuk tetap tinggal, yaitu driver mouse dan emulator EMM. Tapi itu tidak mencoba untuk mengontrol perangkat keras di komputer seperti OS modern.
*Ketika DOS pertama kali dibuat pada 1970-an, mode terproteksi tidak ada dalam CPU. Tidak sampai prosesor 80286 pada pertengahan 1980-an mode yang dilindungi menjadi bagian dari CPU.
Pastikan untuk menelusuri di atas ke utas asli dan baca diskusi yang hidup tentang topik ini menggunakan tautan di bawah ini!
Memiliki sesuatu untuk ditambahkan ke penjelasan? Bicaralah di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi lainnya? Lihat diskusi lengkap di sini.