Kako je Multi-Tasking moguće u starijim verzijama sustava Windows?
S obzirom na to da je DOS bio operativni sustav s jednim zadatkom i veze koje je imao s ranim verzijama sustava Windows, kako su ranije verzije sustava Windows uspjele postići višezadaćnost? Današnja postova za pitanja i odgovore SuperUser-a gledaju odgovore na ovo pitanje.
Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.
Slika zaslona sustava Windows 95 zahvaljujući Wikipediji.
Pitanje
Čitač SuperUser LeNoob želi znati kako starije verzije sustava Windows mogu raditi kao sustavi s više zadataka ?:
Pročitao sam da je DOS operacijski sustav s jednim zadatkom. Ali ako su starije verzije sustava Windows (uključujući i Windows 95?) Samo omotnice za DOS, kako bi se mogle izvoditi kao višenamjenski OS?
Dobro pitanje! Kako su starije verzije sustava Windows uspjele upravljati kao sustavi s više zadataka?
Odgovor
SuperUser suradnici Bob i Pete imaju odgovor za nas. Prvo, Bob:
Windows 95 je bio mnogo više od "samo omotača" za MS-DOS. Citiranje Raymonda Chena:
- MS-DOS je u sustavu Windows 95 služio dvije svrhe: 1.) On je poslužio kao boot loader. & 2.) Djelovao je kao 16-bitni sloj upravljačkog programa za starije uređaje.
Windows 95 zapravo je zakvačio / pregazio gotovo sve MS-DOS-ove, zadržavajući ga kao sloj kompatibilnosti dok je sam obavljao sva teška dizanja. Također je implementirao pre-emptive multi-tasking za 32-bitne programe.
Prije sustava Windows 95
Windows 3.x i stariji bili su uglavnom 16-bitni (s izuzetkom Win32s, vrsta kompatibilnog sloja koji mostove 16 i 32, ali to ćemo ignorirati ovdje), bili su više ovisni o DOS-u, a koristili su samo kooperativni multi-tasking - to je ona u kojoj ne prisiljavaju program koji se izvodi da se isključi; čekaju da program pokrene kako bi ostvario kontrolu (u osnovi, recite "ja sam gotov" tako što kažem OS-u da pokrene sljedeći program koji čeka).
- Multi-tasking je bio kooperativan, baš kao u starim verzijama MacOS-a (iako za razliku od Multi-tasking DOS 4.x, koji je imao pre-emptive multi-tasking). Zadatak se morao prepustiti OS-u kako bi mogao zakazati drugačiji zadatak. Prinosi su ugrađeni u određene API pozive, osobito obrada poruka. Sve dok je zadatak obrađivao poruke pravovremeno, sve je bilo sjajno. Ako je zadatak zaustavio obradu poruka i bio zauzet izvršavanjem neke petlje obrade, višezadaćnost više nije postojala.
Arhitektura sustava Windows 3.x.
Što se tiče ranih Windows programa koji bi donijeli kontrolu:
- Windows 3.1 koristi kooperativnu višestruku zadaću - što znači da je svakoj aplikaciji koja je u tijeku potrebno povremeno provjeravati red poruka kako bi se utvrdilo da li neka druga aplikacija traži korištenje CPU-a i, ako je tako, dati kontrolu taj zahtjev. Međutim, mnoge aplikacije u sustavu Windows 3.1 provjerile bi red poruka tek rijetko, ili uopće ne, i monopolizirale kontrolu CPU-a za onoliko vremena koliko im je potrebno. Preventivni višenamjenski sustav kao što je Windows 95 će izuzeti CPU kontrolu od pokrenute aplikacije i distribuirati ga onima koji imaju veći prioritet na temelju potreba sustava.
Izvor
Sve što bi DOS mogao vidjeti je da se radi o jednoj aplikaciji (Windows ili drugom) koja će proći kontrolu bez izlaza. U teoriji, pre-emptive multi-tasking može se eventualno implementirati na vrhu DOS-a u svakom slučaju uz korištenje takta u realnom vremenu i hardverskih prekida kako bi se prisilno dalo kontrolu raspoređivaču. Kao što Tonny komentira, to su zapravo učinili neki operacijski sustavi koji se izvode na DOS-u.
386 Poboljšani način rada?
Napomena: došlo je do nekih komentara na poboljšani 386 način rada sustava Windows 3.x koji je 32-bitni, te podržava pre-emptive multi-tasking.
Ovo je zanimljiv slučaj. Da sažmemo poveznicu na blogu, poboljšani način rada 386 bio je u osnovi 32-bitni hipervizor, koji je pokretao virtualne strojeve. Unutar jednog od tih virtualnih strojeva pokrenut je Windows 3.x standardni način rada, koji obavlja sve gore navedene stvari.
MS-DOS bi također funkcionirao unutar tih virtualnih strojeva i očito su bili pre-emptivni - tako da izgleda da će 386 poboljšani hipervizor dijeliti procesorske vremenske odsječke između virtualnih strojeva (od kojih je jedan radio normalno 3.x i drugi koji su upravljali MS-DOS-om), a svaki će VM napraviti svoju stvar - 3.x će kooperativno raditi više zadataka, dok će MS-DOS biti jednoznačan.
MS-DOS
Sam DOS je bio na jednom papiru, ali je imao podršku za TSR programe koji bi ostali u pozadini dok ih ne pokrene hardverski prekid. Daleko od istinske višezadaćnosti, ali ne i potpuno samostalne.
Sve te priče o bitnosti? Pitao sam za višezadaćnost!
Pa, strogo govoreći, bit-ness i multi-tasking nisu ovisni jedni o drugima. Trebalo bi biti moguće primijeniti bilo koji višezadaćni način rada u bilo kojoj bitnosti. Međutim, prelazak s 16-bitnih procesora na 32-bitne procesore također je uveo drugu hardversku funkcionalnost koja je omogućila lakšu implementaciju preventivnog višenamjenskog rada..
Također, budući da su 32-bitni programi bili novi, lakše ih je natjerati da rade kada su prisilno isključeni - što je možda prekršilo neke stare 16-bitne programe.
Naravno, sve je to nagađanje. Ako doista želite znati zašto MS nije implementirao pre-emptive multi-tasking u sustavu Windows 3.x (usprkos poboljšanom načinu rada 386), morat ćete pitati nekoga tko je tamo radio.
Također, htio sam ispraviti vašu pretpostavku da je Windows 95 samo omot za DOS.
Slijedi Peteov odgovor:
U modernom operativnom sustavu operativni sustav kontrolira sve hardverske resurse, a pokrenute aplikacije čuvaju se u sandboxima. Aplikaciji nije dopušteno pristupiti memoriji koju OS nije dodijelio toj aplikaciji i ne može izravno pristupiti hardverskim uređajima na računalu. Ako je potreban hardverski pristup, aplikacija mora komunicirati putem upravljačkih programa uređaja.
OS može primijeniti ovu kontrolu jer prisiljava CPU na ulaz u zaštićeni način.
DOS, s druge strane, nikad ne ulazi u zaštićeni način, ali ostaje u stvarnom načinu rada (*Pogledaj ispod). U stvarnom načinu rada, pokrenute aplikacije mogu obavljati sve što žele, tj. Izravno pristupiti hardveru. Ali aplikacija koja radi u stvarnom načinu može također reći CPU-u da uđe u zaštićeni način.
I ovaj zadnji dio dopušta aplikacijama poput Windowsa 95 pokretanje multi-threaded okruženja iako su u osnovi pokrenute iz DOS-a.
DOS (Disk Operating System) je, koliko ja znam, ne više od sustava za upravljanje datotekama. On je osigurao sustav datoteka, mehanizme za upravljanje sustavom datoteka, nekoliko alata i mogućnost pokretanja aplikacija. To je također omogućilo da neke aplikacije ostanu rezidentne, tj. Upravljački programi za miša i EMM emulatori. Ali nije pokušao kontrolirati hardver na računalu kao što to čini moderan OS.
*Kada je DOS prvi put stvoren 1970-ih, zaštićeni način rada nije postojao u CPU-u. Tek je procesor 80286 sredinom 1980-ih postao zaštićeni način rada CPU-a.
Svakako pregledajte izvornu nit i pročitajte živu raspravu o ovoj temi pomoću veze u nastavku!
Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.