If-Koubou

Miten Multi-Tasking mahdollinen vanhemmissa Windows-versioissa?

Miten Multi-Tasking mahdollinen vanhemmissa Windows-versioissa? (Miten)

Kun otetaan huomioon, että DOS oli yksi tehtäväpohjainen käyttöjärjestelmä ja siihen liittyvät siteet aikaisemmilla Windows-versioilla, miten aiemmat Windows-versiot onnistuivat suorittamaan monen tehtävän? Tämän päivän SuperUser Q & A -viesti käsittelee vastauksia tähän kysymykseen.

Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.

Windows 95: n kuvakaappaus Wikipediasta.

Kysymys

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

Luin, että DOS on yksitoiminen OS. Mutta jos vanhemmat Windows-versiot (myös Windows 95?) Olivat vain DOS: n käärejä, miten ne toimisivat monitoimijärjestelmänä?

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

Vastaus

Bob ja Pete ovat vastauksemme meille. Ensin ylös, Bob:

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

  • MS-DOS toimi kahdessa tarkoituksessa Windows 95: ssa: 1.) Se toimi käynnistyslataajana. & 2.) Se toimi 16-bittisenä vanhanaikaisena laiteohjainkerroksena.

Windows 95 todella koukutti / ohittaa lähes kaiken MS-DOS: n, pitää sen yhteensopivuustasona tekemällä samalla kaiken raskaan nostamisen. Se myös toteutti ennalta ehkäisevän monitoimityön 32-bittisille ohjelmille.

Ennen Windows 95: tä

Windows 3.x ja vanhemmat olivat enimmäkseen 16-bittisiä (lukuun ottamatta Win32: ää, eräänlainen yhteensopivuuskerros, joka siltoja 16 ja 32, mutta sivuutamme sen täällä), olivat riippuvaisempia DOS: stä ja käyttivät vain yhteistyön monitoimista - se on sellainen, jossa ne eivät pakota käynnissä olevaa ohjelmaa pois päältä; he odottavat, että käynnissä oleva ohjelma antaa hallinnan (pohjimmiltaan sanotaan "olen valmis" kertomalla OS: lle seuraavan odottamattoman ohjelman suorittaminen).

  • Monitoimityö oli yhteistyöhön, kuten MacOS: n vanhoissa versioissa (toisin kuin monitoimiohjelmassa DOS 4.x, joka edisti ennaltaehkäisevää monitoimityötä). Tehtävän oli annettava OS: lle eri tehtävän aikataulun tekemiseksi. Tuotot rakennettiin tiettyihin API-kutsuihin, erityisesti sanomien käsittelyyn. Niin kauan kuin tehtävä käsitteli viestejä ajoissa, kaikki oli hienoa. Jos tehtävä lopetti viestien käsittelyn ja oli kiireinen suorittamalla jotain prosessointisilmukkaa, monitoimityö ei enää ollut.

Windows 3.x -arkkitehtuuri

Mitä aikaisempien Windows-ohjelmien tuottamisessa hallitaan?

  • Windows 3.1 käyttää yhteistoiminnallista monitoimityötä - mikä tarkoittaa, että jokaista käynnissä olevaa sovellusta kehotetaan tarkistamaan säännöllisesti sanomajono, jotta saataisiin selville, onko jokin muu sovellus pyytänyt CPU: n käyttöä, ja jos se on, hallinnoimaan sitä että hakemus. Kuitenkin monet Windows 3.1 -sovellukset tarkistavat viestijonoa vain harvoin tai ei ollenkaan ja monopolisoivat CPU: n hallinnan niin kauan kuin ne vaativat. Ennalta ehkäisevä monitoimijärjestelmä, kuten Windows 95, vie CPU-ohjauksen pois käynnissä olevasta sovelluksesta ja jakaa sen niille, joilla on korkeampi prioriteetti järjestelmän tarpeiden mukaan.

Lähde

Kaikki DOS näkee, onko tämä yksittäinen sovellus (Windows tai muu) käynnissä, mikä ohittaisi hallinnan ilman poistumista. Teoriassa ennalta ehkäisevä monitoimityö voidaan mahdollisesti toteuttaa DOS: n päällä käytännössä reaaliaikaisen kellon ja laitteiston keskeytysten avulla, jotta voimme antaa valvonnan ajastimelle. Kuten Tonny kommentoi, tosiasiallisesti tehtiin jotkut käyttöjärjestelmät, jotka toimivat DOS: n päällä.

386 Enhanced Mode?

Huomaa: on tehty joitain kommentteja 386. Windowsin 3.x: n parannetun tilan 32-bittinen ja tukeminen ennalta ehkäisevää monitoimista.

Tämä on mielenkiintoinen tapaus. Yhteenveto linkitetystä blogikirjoituksesta 386 parannettu tila oli periaatteessa 32-bittinen hypervisori, joka virtasi virtuaalikoneita. Yksi näistä virtuaalikoneista sisälsi Windows 3.x -standarditila, jossa kaikki yllä mainitut tavarat.

MS-DOS toimisi myös näiden virtuaalikoneiden sisällä, ja ilmeisesti ne olivat ennalta pakollisia monipuhdistettuja - joten näyttää siltä, ​​että 386-laajennetun tilan hypervisori jakaa keskeneräisten aikakatkaisujen virtuaalikoneiden välillä (joista yksi suoritti normaalin 3.x: n ja toiset, jotka johti MS-DOS: n), ja jokainen VM tekee oman asiansa - 3.x toimisi yhteistyössä monitoimisena, kun taas MS-DOS olisi yksi tehtävä.

MS-DOS

DOS oli itse tehtäväpaperi, mutta sillä oli tuki TSR-ohjelmille, jotka pysyisivät taustalla, kunnes laitteiston keskeytys käynnistyi. Kauas todellisesta monitoimista, mutta ei täysin yhden tehtävän.

Kaikki tämä puhuus bittiä? Kysyin monitoimista!

Tarkkaan ottaen bit-ness ja monitoimityöt eivät ole riippuvaisia ​​toisistaan. Monitoimityökalun pitäisi olla mahdollista toteuttaa millä tahansa bittiä. Siirtyminen 16-bittisistä prosessoreista 32-bittisiin prosessoreihin toi kuitenkin myös muita laitteisto-ominaisuuksia, jotka olisivat helpottaneet ennaltaehkäisevää monitoimityötä.

Myös 32-bittiset ohjelmat olivat uusia, koska niiden ollessa pakotettuina heitä oli helpompi saada heidät toimimaan - mikä olisi voinut rikkoa joitakin vanhoja 16-bittisiä ohjelmia.

Tämä on tietenkin spekulaatiota. Jos haluat todella tietää, miksi MS ei toteuttanut ennalta ehkäisevää monitoimityötä Windows 3.x: ssä (386 parannettu tila), sinun on kysyttävä joku, joka on työskennellyt siellä.

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

Seuraavaksi Pete vastaus:

Nykyaikaisessa käyttöjärjestelmässä käyttöjärjestelmä ohjaa kaikkia laitteistoresursseja, ja käynnissä olevat sovellukset säilytetään hiekkalaatikossa. Sovellus ei saa käyttää muistiin, jota käyttöjärjestelmä ei ole myöntänyt kyseiselle sovellukselle eikä se voi suoraan käyttää tietokoneen laitteistoja. Jos laitteiston käyttö edellyttää, sovelluksen on toimittava laitteen ohjainten kautta.

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

DOS, toisaalta, ei koskaan tule suojatulle tilalle, mutta pysyy reaalissa (*Katso alempaa). Todellisessa tilassa käynnissä olevat sovellukset voivat tehdä mitä tahansa haluamaasi, ts. Pääsy laitteistoon suoraan. Mutta reaalitilassa käynnissä oleva sovellus voi myös kertoa CPU: lle siirtymään suojattuun tilaan.

Ja tämä viimeinen osa sallii Windows 95: n, kuten Windows 95: n, käynnistää monisäikeisen ympäristön, vaikka ne pohjimmiltaan käynnistettiin DOS: lta.

DOS (Disk Operating System) oli, sikäli kuin tiedän, paljon enemmän kuin tiedostojen hallintajärjestelmä. Se tarjosi tiedostojärjestelmän, mekanismin tiedostojärjestelmän navigointiin, muutamia työkaluja ja mahdollisuuden käynnistää sovelluksia. Se myös mahdollisti joidenkin sovellusten jäävän asumaan, toisin sanoen hiiren ohjaimiin ja EMM-emulaattoreihin. Mutta se ei yrittänyt hallita tietokoneen laitteistoa nykyisen käyttöjärjestelmän tapaan.

*Kun DOS perustettiin ensimmäisen kerran 1970-luvulla, CPU: ssa ei ollut suojattua tilaa. Vasta 1980-luvun puoliväliin asti 80286-suorittimen suojatila tuli osa prosessoria.

Varmista, että selata yli alkuperäisen säiettä ja lue läpi vilkas keskustelu tästä aiheesta alla olevasta linkistä!

Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.