12Sep

Miten Multi-Tasking mahdollinen vanhemmissa Windows-versioissa?

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

Päivän kysymys &Vastausistunto tulee meille kohteliaasti SuperUser-osastoon Stack Exchange, yhteisöllinen ryhmittely Q & A verkkosivuilla.

Windows 95: n kuvakaappaus Wikipediasta.

Kysymys

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

Luin, että DOS on yksi tehtäväpohjainen käyttöjärjestelmä.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

SuperUser-avustajat Bob ja Pete ovat meille vastauksemme. Ensin, Bob:

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

  • : n laatiminen MS-DOS palvelee kahta tarkoitusta Windows 95: ssa: 1.) Se toimi käynnistyslataajana.& Amp;2.) Se toimi 16-bittisenä vanha laiteohjainkerros.

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

Pre-Windows 95

Windows 3.x ja vanhemmat olivat enimmäkseen 16-bittisiä( lukuun ottamatta Win32s, eräänlainen yhteensopivuuskerros, joka siltoja 16 ja 32, mutta sivuutamme sen täällä), olivat riippuvaisempia DOS: stä jakäytetään vain yhteistyöhön perustuvaa 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).

  • Monitoimiohjelma oli yhteistyöhön, kuten MacOS: n vanhoissa versioissa( toisin kuin Multi-tasking DOS 4.x, joka edisti ennalta ehkä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ä aikaisemmista Windows-ohjelmista saadaan hallintaan:

  • Windows 3.1 käyttää yhteistyössä toimivaa monitoimityötä - mikä tarkoittaa, että jokaista käynnissä olevaa sovellusta kehotetaan tarkistamaan sanomajonot säännöllisestitoinen sovellus pyytää CPU: n käyttöä ja, jos on, antaa hallinnan kyseiselle sovellukselle. Kuitenkin monet Windows 3.1 -sovellukset tarkistavat viestijonoa vain harvoin tai ei lainkaan, ja monopoli CPU: n ohjaukseen 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ä ohittaa ohjauksen 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 huomautuksia 386. Windowsin 3.x-laajennetun 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 ajettaisiin myös näissä virtuaalikoneissa ja ilmeisesti ne olivat ennalta ehkäiseviä monipuhdistettuja - joten näyttäisi siltä, ​​että 386-laajennetun tilan hypervisorin jakaa keskeneräisten aikakatkaisujen kesken virtuaalikoneiden( joista yksi suoritti normaalia 3.xja muut, jotka toimittivat MS-DOS), ja jokainen VM tekee oman asiansa - 3.x toimisi yhteistyössä monen tehtävän kanssa, 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ä puhetta bit-ness? Kysyin monitoimista!

No, tarkasti 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, ja niiden käyttö oli helpompaa, kun heidät pakotettiin heikosti pois päältä - 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ä.

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

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.

OS voi valvoa tätä ohjausta, koska se pakottaa CPU: n pääsemään suojattuun tilaan.

DOS, toisaalta, ei koskaan tule suojatulle tilalle, mutta pysyy reaalissa( * katso alla).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äikeen ja lue läpi vilkas keskustelu tästä aiheesta alla olevasta linkistä!

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