Kotisivu » miten » Kuinka monen tehtävän suorittaminen oli mahdollista vanhemmissa Windows-versioissa?

    Kuinka monen tehtävän suorittaminen oli mahdollista vanhemmissa Windows-versioissa?

    Ottaen huomioon, että DOS oli yhden tehtävän käyttöjärjestelmä ja sen yhteydet aikaisempiin Windows-versioihin, miten aikaisemmat Windows-versiot onnistuivat suorittamaan monitehtäviä? Tämän päivän SuperUser-Q&A -viesti tarkastelee vastauksia tähän kysymykseen.

    Nykypäivän Kysymys- ja vastaus -istunto tulee meille suotuisasti SuperUserin - Stack Exchange -alueen, yhteisöpohjaisen Q & A-sivustojen ryhmittymän - kautta..

    Windows 95 -kuvakaappaus Wikipediasta.

    Kysymys

    SuperUser-lukija LeNoob haluaa tietää, kuinka vanhemmat Windows-versiot pystyivät suorittamaan monitoimijärjestelmiä ?:

    Luin, että DOS on yhden tehtävän käyttöjärjestelmä. Mutta jos vanhemmat Windows-versiot (sisältäen myös Windows 95: n?) Olivat vain pakkausmateriaaleja DOS: lle, miten he voisivat toimia monitoimisena käyttöjärjestelmänä?

    Hyvä kysymys! Miten vanhemmat Windows-versiot onnistuivat toimimaan monitoimijärjestelminä?

    Vastaus

    SuperUserin avustajat Bob ja Pete ovat vastaus meille. Ensinnäkin, Bob:

    Windows 95 oli paljon enemmän kuin vain "vain kääre" MS-DOS: lle. Lainaus Raymond Chen:

    • MS-DOS toimi kahdessa tarkoituksessa Windows 95: ssä.) Se toimi käynnistyslataimena. & 2.) Se toimi 16-bittisenä vanhan laiteajurikerroksena.

    Windows 95 koukisti / ohitti oikeastaan ​​lähes kaikki MS-DOS: t, pitäen sen yhteensopivana kerroksena samalla kun teet kaiken raskaan nostamisen itse. Se toteutti myös ennaltaehkäisevän monitehtävän 32-bittisille ohjelmille.

    Pre-Windows 95

    Windows 3.x ja vanhemmat olivat enimmäkseen 16-bittisiä (lukuun ottamatta Win32-tyyppiä, eräänlainen yhteensopivuuskerros, jonka sillat 16 ja 32, mutta emme ota sitä huomioon), olivat enemmän riippuvaisia ​​DOS: sta ja käyttivät vain yhteistyökykyistä monitoimintoa - se on se, jossa ne eivät pakota käynnissä olevaa ohjelmaa vaihtamaan; he odottavat käynnissä olevan ohjelman tuottavan valvontaa (periaatteessa sano "Olen valmis" kertomalla OS: lle seuraavan ohjelman, joka odottaa).

    • Monitehtävä oli yhteistyöhaluinen, aivan kuten MacOSin vanhoissa versioissa (vaikka toisin kuin Multi-tasking DOS 4.x, joka harjoittaa ennalta ehkäisevää monitehtävää). Tehtävän oli tuotettava käyttöjärjestelmä, jotta ajoitettiin toinen tehtävä. Saannot tuotiin tiettyihin API-puheluihin, erityisesti viestien käsittelyyn. Niin kauan kuin tehtävä käsitteli viestejä ajoissa, kaikki oli hienoa. Jos tehtävä keskeytti viestien käsittelyn ja oli varattu suorittamaan jotakin prosessointisilmukkaa, monitehtävä ei enää ollut.

    Windows 3.x -arkkitehtuuri

    Kuten miten Windows-ohjelmat aikaisivat tuottaa ohjausta:

    • Windows 3.1 käyttää yhteistoiminnallista monitehtävää - mikä tarkoittaa, että jokainen käynnissä oleva sovellus ohjataan tarkistamaan ajoittain viestijonon selvittääkseen, kysyykö jokin muu sovellus käyttämään CPU: ta ja, jos on, antamaan ohjauksen sovelluksessa. Monet Windows 3.1 -sovellukset tarkistavat kuitenkin viestirivin vain harvoin tai lainkaan, ja monopolisoivat CPU: n hallinnan niin paljon aikaa kuin ne ovat tarpeen. Ennaltaehkäisevä monitoimijärjestelmä, kuten Windows 95, ottaa CPU-ohjauksen pois käynnissä olevasta sovelluksesta ja jakaa sen niille, joilla on korkeampi prioriteetti järjestelmän tarpeiden perusteella.

    Lähde

    Kaikki DOS näkisi, onko tämä ainoa sovellus (Windows tai muu) käynnissä, mikä ohittaa ohjauksen poistumatta. Teoriassa ennaltaehkäisevä monitehtävä voidaan mahdollisesti toteuttaa DOS: in päällä joka tapauksessa käyttämällä reaaliaikakelloa ja laitteistokeskeytyksiä ohjaamaan väkivaltaisesti ajastinta. Kuten Tonny kommentoi, tämä tapahtui joillakin DOS: in päällä olevilla käyttöjärjestelmillä.

    386 Parannettu tila?

    Huomautus: 386. parannettua Windows 3.x -käyttöjärjestelmää on kommentoitu 32-bittiseksi, ja se tukee ennalta ehkäisevää monitehtävää.

    Tämä on mielenkiintoinen tapaus. Yhteenvetona linkitetystä blogipostista 386 parannettu tila oli pohjimmiltaan 32-bittinen hypervisor, joka juoksi virtuaalikoneita. Yhdessä näistä virtuaalikoneista suoritettiin Windows 3.x -standarditila, joka tekee kaikki edellä mainitut asiat.

    MS-DOS kulkisi myös näissä virtuaalikoneissa, ja ilmeisesti ne olivat ennalta monikäyttöisiä - joten näyttää siltä, ​​että 386: n parannettu tila hyperviisi jakaa CPU-aikaviipaleet virtuaalikoneiden välillä (joista yksi oli normaali 3.x ja toiset, jotka käyttivät MS-DOS: a), ja jokainen VM tekee oman asian - 3.x toimisi yhteistyössä monitehtävän kanssa, kun taas MS-DOS: n tehtävänä olisi yksi.

    MS-DOS

    Itse DOS oli paperi yksiosainen, mutta sillä oli tuki TSR-ohjelmille, jotka pysyisivät taustalla, kunnes laitteiston keskeytys käynnistyy. Kaukana kaukana todellisesta monitehtävästä, mutta ei myöskään täysin yhden tehtävän hoitamisesta.

    Kaikki tämä puhuminen bitistä? Kysyin monitehtäviltä!

    No, tiukasti ottaen bittinen ja monitehtävä eivät ole riippuvaisia ​​toisistaan. Minkä tahansa monitoimintatilan pitäisi olla mahdollista toteuttaa missä tahansa bittinopeudessa. Siirtyminen 16-bittisistä prosessoreista 32-bittisiin prosessoreihin toi mukanaan myös muita laitteistotoimintoja, jotka olisivat voineet tehdä ennaltaehkäisevän monitehtävän helpommaksi toteuttaa.

    Lisäksi, koska 32-bittiset ohjelmat olivat uusia, oli helpompaa saada ne toimimaan, kun heidät pakotettiin ulos - mikä saattaa olla rikkonut joitakin vanhoja 16-bittisiä ohjelmia.

    Tämä on tietenkin spekulaatiota. Jos haluat todella tietää, miksi MS ei toteuttanut ennalta ehkäisevää monitehtävää Windows 3.x -käyttöjärjestelmässä (386 parannettu tila huolimatta), sinun on kysyttävä jonkun, joka työskenteli siellä.

    Halusin myös korjata oletuksesi, että Windows 95 oli vain kääre DOS: lle.

    Vastausta Pete: ltä:

    Nykyaikaisessa käyttöjärjestelmässä käyttöjärjestelmä ohjaa kaikkia laitteistoresursseja, ja käynnissä olevat sovellukset pidetään hiekkalaatikoissa. Sovellus ei saa käyttää muistia, jota käyttöjärjestelmä ei ole kohdistanut kyseiselle sovellukselle, eikä se voi suoraan käyttää tietokoneen laitteita. Jos laitteistoon on tarvetta, sovelluksen on kommunikoitava laiteajureiden kautta.

    Käyttöjärjestelmä voi valvoa tätä ohjausta, koska se pakottaa CPU: n siirtymään suojattuun tilaan.

    Toisaalta DOS ei koskaan pääse suojattuun tilaan, vaan pysyy todellisessa tilassa (*Katso alempaa). Todellisessa tilassa käynnissä olevat sovellukset voivat suorittaa mitä tahansa, eli haluaa käyttää laitteistoa suoraan. Mutta todellisessa tilassa käynnissä oleva sovellus voi myös kertoa CPU: lle siirtyvän suojattuun tilaan.

    Ja viimeinen osa mahdollistaa esimerkiksi Windows 95: n kaltaisten sovellusten käynnistämisen monisäikeiseen ympäristöön, vaikka ne olisivat periaatteessa käynnistetty DOS: sta.

    DOS (Disk Operating System) oli tietysti paljon enemmän kuin tiedostojen hallintajärjestelmä. Se tarjosi tiedostojärjestelmän, mekanismit tiedostojärjestelmän navigoimiseksi, muutamia työkaluja ja mahdollisuuden käynnistää sovelluksia. Se mahdollisti myös joidenkin sovellusten pysymisen asuinpaikassa, eli hiiren ohjaimet ja EMM-emulaattorit. Mutta se ei yrittänyt hallita tietokoneen laitteistoa modernin käyttöjärjestelmän tapaan.

    *Kun DOS luotiin ensimmäisen kerran 1970-luvulla, CPU: ssa ei ollut suojattua tilaa. Vasta 1980-luvun puolivälissä 80286-prosessorissa suojattu tila tuli osaksi CPU: ta.

    Varmista, että selaat alkuperäiselle langalle ja lue tämän aiheen vilkasta keskustelua alla olevan linkin avulla!


    Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.