Bagaimanakah Multi-Tasking Kemungkinan dalam Versi Lama Windows?
Memandangkan DOS adalah OS satu tugas dan hubungannya dengan versi awal Windows, bagaimanakah versi Windows sebelumnya dapat mengatasi pelbagai tugas? Siaran Q & A SuperUser hari ini melihat jawapan kepada soalan ini.
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Windows 95 screenshot ihsan Wikipedia.
Soalan
Pembaca SuperUser LeNoob ingin tahu bagaimana versi Windows yang lebih lama dapat dijalankan sebagai sistem multi-tasking ?:
Saya membaca bahawa DOS adalah OS satu tugas. Tetapi jika versi Windows yang lebih lama (juga termasuk Windows 95?) Hanya pembungkus untuk DOS, bagaimana mereka boleh berjalan sebagai OS multi-tasking?
Soalan yang baik! Bagaimanakah versi Windows yang lebih tua dapat dikendalikan sebagai sistem multi-tasking?
Jawapan
Penyumbang SuperUser Bob dan Pete mempunyai jawapan untuk kami. Pertama, Bob:
Windows 95 adalah jauh lebih daripada "pembungkus" sahaja untuk MS-DOS. Memetik Raymond Chen:
- MS-DOS berkhidmat dua tujuan di Windows 95: 1.) Ia berfungsi sebagai pemuat boot. & 2.) Ia bertindak sebagai lapisan pemandu peranti warisan 16-bit.
Windows 95 sebenarnya menyentuh / mengatasi semua MS-DOS, menyimpannya sebagai lapisan keserasian ketika melakukan semua mengangkat berat itu sendiri. Ia juga melaksanakan multi-tasking pra-emptive untuk program 32-bit.
Pra-Windows 95
Windows 3.x dan lebih tua kebanyakannya 16-bit (kecuali Win32s, sejenis lapisan keserasian yang menjembatani 16 dan 32, tetapi kita akan mengabaikannya di sini), lebih bergantung kepada DOS, dan hanya menggunakan multi-tasking - itulah yang mana mereka tidak memaksa program berjalan untuk beralih; mereka menunggu program yang berjalan untuk menghasilkan kawalan (pada dasarnya, katakan "Saya telah selesai" dengan memberitahu OS untuk menjalankan program seterusnya yang sedang menunggu).
- Multi-tasking adalah kerjasama, seperti dalam versi lama MacOS (walaupun tidak seperti Multi-tasking DOS 4.x, yang sported multi-tasking pre-emptive). Satu tugas terpaksa dikeluarkan kepada OS untuk menjadualkan tugas yang berbeza. Hasilnya dibina dalam panggilan API tertentu, terutamanya pemprosesan mesej. Selagi tugas diproses mesej tepat pada masanya, segala-galanya hebat. Jika tugas berhenti memproses mesej dan sedang sibuk melaksanakan beberapa gelung pemprosesan, pelbagai tugas tidak lagi.
Windows 3.x Architecture
Mengenai bagaimana program Windows awal akan menghasilkan kawalan:
- Windows 3.1 menggunakan multi-tasking koperasi - yang bermaksud bahawa setiap aplikasi yang sedang dalam proses berjalan diarahkan untuk memeriksa antrian pesanan secara berkala untuk mengetahui sama ada aplikasi lain meminta penggunaan CPU dan, jika ya, untuk menghasilkan kawalan ke permohonan itu. Walau bagaimanapun, banyak aplikasi Windows 3.1 akan menyemak antrian mesej secara tidak sengaja, atau tidak sama sekali, dan memonopoli kawalan CPU untuk seberapa banyak masa yang diperlukan. Sistem multi-tasking seperti Windows 95 akan mengambil kawalan CPU dari aplikasi yang sedang berjalan dan mengedarkannya kepada mereka yang mempunyai keutamaan yang lebih tinggi berdasarkan keperluan sistem.
Sumber
Semua DOS akan melihat aplikasi tunggal (Windows atau yang lain) yang berjalan, yang akan mengendalikan kawalan tanpa keluar. Secara teori, multi-tasking pra-mungkin boleh dilaksanakan di atas DOS pula dengan penggunaan jam masa nyata dan gangguan peranti keras untuk secara paksa memberi kawalan kepada penjadual. Sebagai komen Tonny, ini sebenarnya dilakukan oleh beberapa OS yang berjalan di atas DOS.
386 Mod Dipertingkatkan?
Nota: terdapat beberapa komen mengenai 386 mod yang dipertingkatkan dari Windows 3.x menjadi 32-bit, dan menyokong multi-tasking pre-emptive.
Ini adalah kes yang menarik. Untuk meringkaskan jawatan blog yang dipaut, 386 mod yang dipertingkatkan pada dasarnya adalah hypervisor 32-bit, yang menjalankan mesin maya. Di dalam salah satu mesin maya ini menjalankan mod standard Windows 3.x, yang melakukan semua perkara yang disenaraikan di atas.
MS-DOS juga akan berjalan di dalam mesin-mesin maya ini, dan nampaknya mereka sudah banyak bertugas terlebih dahulu - jadi nampaknya hypervisor mod 386 akan berkongsi slaid masa CPU di antara mesin maya (salah satunya berjalan 3.x dan 3.x yang lain yang menjalankan MS-DOS), dan setiap VM akan melakukan perkara sendiri - 3.x akan melakukan pelbagai tugas bersama, sementara MS-DOS akan menjadi tugas tunggal.
MS-DOS
DOS sendiri adalah tugas tunggal di atas kertas, tetapi ia mempunyai sokongan untuk program TSR yang akan kekal di latar belakang sehingga dicetuskan oleh gangguan perkakasan. Jauh dari multi-tasking yang benar, tetapi tidak sepenuhnya bertanggungjawab sepenuhnya.
Semua perbualan ini sedikit? Saya bertanya mengenai pelbagai tugas!
Nah, dengan tegas, bit-ness dan multi-tasking tidak bergantung kepada satu sama lain. Adalah mustahil untuk melaksanakan sebarang mod multi-tasking dalam mana-mana bit. Walau bagaimanapun, langkah dari pemproses 16-bit ke pemproses 32-bit juga memperkenalkan fungsi perkakasan lain yang boleh membuat multi-tasking pre-emptive lebih mudah dilaksanakan.
Selain itu, sejak program 32-bit baru, lebih mudah untuk mendapatkannya apabila mereka secara paksa dimatikan - yang mungkin telah melanggar beberapa program 16-bit warisan.
Sudah tentu, ini semua spekulasi. Jika anda benar-benar ingin tahu mengapa MS tidak melaksanakan multi-tasking pre-emptive dalam Windows 3.x (386 mod yang dipertingkatkan walau apa pun), anda perlu meminta seseorang yang bekerja di sana.
Juga, saya ingin membetulkan andaian bahawa Windows 95 hanyalah pembungkus untuk DOS.
Diikuti dengan jawapan dari Pete:
Dalam sistem operasi moden, sistem pengendalian mengawal semua sumber perkakasan, dan aplikasi yang dijalankan disimpan dalam kotak pasir. Aplikasi tidak dibenarkan mengakses memori yang OS tidak diperuntukkan untuk aplikasi itu, dan ia tidak boleh mengakses peranti perkakasan secara langsung dalam komputer. Jika akses perkakasan diperlukan, aplikasi mesti berkomunikasi melalui pemacu peranti.
OS boleh menguatkuasakan kawalan ini, kerana ia memaksa CPU untuk memasuki mod yang dilindungi.
DOS, sebaliknya, tidak pernah memasuki mod perlindungan, tetapi tetap dalam mod sebenar (*lihat di bawah). Dalam mod sebenar, aplikasi yang berjalan boleh melakukan apa sahaja yang ia mahu, iaitu akses perkakasan secara langsung. Tetapi aplikasi yang berjalan dalam mod sebenar juga boleh memberitahu CPU untuk memasuki mod yang dilindungi.
Dan bahagian terakhir ini membolehkan aplikasi seperti Windows 95 untuk memulakan persekitaran pelbagai thread walaupun pada asasnya dilancarkan dari DOS.
DOS (Sistem Pengendalian Cakera) adalah, sejauh yang saya tahu, tidak lebih daripada sistem pengurusan fail. Ia menyediakan sistem fail, mekanisme untuk menavigasi sistem fail, beberapa alat, dan kemungkinan untuk melancarkan aplikasi. Ia juga membenarkan sesetengah aplikasi tinggal pemastautin, iaitu pemacu tetikus dan emulator EMM. Tetapi ia tidak cuba untuk mengawal perkakasan di komputer dengan cara OS moden.
*Apabila DOS mula-mula diwujudkan pada tahun 1970-an, mod perlindungan tidak wujud dalam CPU. Ia tidak sehingga pemproses 80286 pada pertengahan 1980-an bahawa mod perlindungan menjadi sebahagian daripada CPU.
Pastikan untuk menyemak imbas ke benang asal dan baca perbincangan yang meriah mengenai topik ini dengan menggunakan pautan di bawah!
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.