Kuidas oli Windowsi vanemates versioonides võimalik mitut ülesannet teha?
Arvestades, et DOS oli ühekordne operatsioonisüsteem ja selle varasemate versioonidega seotud lingid, siis kuidas said Windowsi varasemad versioonid mitme ülesandega täita? Tänane SuperUser Q&A postitus vaatab vastuseid sellele küsimusele.
Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.
Windows 95 ekraanipilt viisakalt Wikipediast.
Küsimus
SuperUser-lugeja LeNoob tahab teada, kuidas vanemad Windowsi versioonid olid võimelised töötama mitme paneks süsteemidena ?:
Ma lugesin, et DOS on ühekordne OS. Kui aga Windowsi vanemad versioonid (sh ka Windows 95?) Oleksid DOS-i jaoks lihtsalt mähkmed, siis kuidas võiksid nad töötada mitme teguriga operatsioonisüsteemina?
Hea küsimus! Kuidas olid vanemad Windowsi versioonid suutelised töötama mitme teguriga süsteemidena?
Vastus
SuperUser'i autoritel Bob ja Pete on meile vastus. Esiteks, Bob:
Windows 95 oli MS-DOS-i jaoks palju enamat kui „lihtsalt pakend“. Tsiteerides Raymond Chenit:
- MS-DOS teenis operatsioonisüsteemis Windows 95 kahte eesmärki:). & 2.) See toimis 16-bitise pärandina seadme draiveri kihina.
Windows 95 tõepoolest konks / ülekirjutas peaaegu kõik MS-DOS-id, hoides seda ühilduvustasemena, tehes samal ajal kõik rasked tõsteseadmed ise. Samuti rakendas see 32-bitiste programmide jaoks ennetavat mitut ülesannet.
Windows 95 eel
Windows 3.x ja vanemad olid enamasti 16-bitised (välja arvatud Win32-d, omamoodi ühilduvuskiht, mida sillad 16 ja 32, kuid me seda siin ignoreerime), olid enam sõltuvad DOS-ist ja kasutasid ainult ühistööd. - see on see, kus nad ei sunni jooksvat programmi välja lülituma; nad ootavad, et jooksev programm annaks kontrolli (põhiliselt öelge, et olen valmis), öeldes operatsioonisüsteemile, et käivitada järgmine oodatav programm.
- Mitmekordne töö oli koostöös, nagu MacOSi vanades versioonides (kuigi erinevalt mitmeosalisest DOS 4.x-st, mis esines mitmeosalise ülesandega). Ülesanne tuli anda operatsioonisüsteemile, et planeerida teistsugust ülesannet. Saagid ehitati teatud API-kõnedesse, eriti sõnumite töötlemisse. Niikaua kui ülesanne töödeldi sõnumeid õigeaegselt, oli kõik suurepärane. Kui ülesanne lõpetas sõnumite töötlemise ja oli hõivatud mõne töötlemisahela täitmisega, ei olnud mitme ülesande kasutamine enam.
Windows 3.x arhitektuur
Nagu Windowsi varasemate programmide juhtimine:
- Windows 3.1 kasutab kooperatiivset mitut ülesannet - see tähendab, et iga käimasolevat rakendust juhendatakse perioodiliselt kontrollima sõnumi järjekorda, et teada saada, kas mõni muu rakendus küsib CPU-d ja kui see on nii, siis andke juhtimine üle taotlust. Kuid paljud Windowsi 3.1 rakendused kontrolliksid teate järjekorda ainult harva või üldse mitte ning monopoliseerivad CPU kontrolli nii palju aega kui vaja. Ennetav mitmeotstarbeline süsteem, nagu Windows 95, võtab CPU juhtimise eemal töötavast rakendusest ja levitab seda neile, kellel on süsteemi vajaduste põhjal kõrgem prioriteet.
Allikas
Kõik DOS näeksid, et see üksik rakendus (Windows või muu) töötab, mis läbiks kontrolli ilma väljumata. Teoreetiliselt võib DOS-i peal realiseerida reaalajas kella- ja riistvarakatkestusi ennetava multi-tasking-i abil, et anda ajastajale jõudu. Nagu Tonny kommenteeris, tegid seda mõned DOS-i peal asuvad OS-id.
386 Tõhustatud režiim?
Märkus: on tehtud mõningaid kommentaare Windowsi 3.x 386 täiustatud režiimi kohta, mis on 32-bitine, ja toetades ennetavat mitmeosalist tööd.
See on huvitav juhtum. Kokkuvõtlikult seotud blogipostituse kohta oli 386 täiustatud režiim põhiliselt 32-bitine hüpervisor, mis jooksis virtuaalseid masinaid. Ühes neist virtuaalsetest masinatest jooksis Windows 3.x standardrežiim, mis teeb kõik ülaltoodud asjad.
MS-DOS töötaks ka nende virtuaalsete masinate sees ja ilmselt olid need eelnevalt mitmetasandilised - seega tundub, et 386 täiustatud režiimi hüperviisor jagab CPU ajaribasid virtuaalsete masinate vahel (millest üks jooksis normaalse 3.x ja teised, kes jooksisid MS-DOS-i) ja iga VM teeb oma asja - 3.x teeb koostööd mitme ülesandega, samal ajal kui MS-DOS oleks üks ülesanne.
MS-DOS
DOS ise oli paberil ühekordne, kuid tal oli toetus TSR-programmidele, mis jääksid taustale, kuni need käivitatakse riistvara katkestuse tõttu. Kahtlemata tegelikest mitmest ülesannetest, kuid mitte täielikult ühekordsetest ülesannetest.
Kõik see räägib natuke nessist? Küsisin mitut ülesannet!
Noh, rangelt öeldes ei ole bittisus ja mitmekülgsus üksteisest sõltuvad. Igas bitiandmises peaks olema võimalik rakendada mitut tegurit. Kuid üleminek 16-bitistest protsessoritest 32-bitistele protsessoritele tõi kaasa ka muu riistvara funktsionaalsuse, mis oleks võinud teostada mitmeotstarbelise teostamise lihtsustamist.
Samuti, kuna 32-bitised programmid olid uued, oli lihtsam neid töötada, kui nad sunniviisiliselt välja lülitati - mis võisid rikkuda mõningaid pärandeid 16-bitisi programme.
Loomulikult on see kõik spekulatsioonid. Kui sa tõesti tahad teada, miks MS ei rakendanud Windows 3.x-s ennetavat mitut ülesannet (hoolimata 386 täiustatud režiimist), peate küsima seal töötanud inimeselt.
Samuti tahtsin parandada teie eeldust, et Windows 95 oli lihtsalt DOSi pakend.
Järgneb Pete vastus:
Kaasaegses operatsioonisüsteemis juhib operatsioonisüsteem kõiki riistvara ressursse ning rakenduste haldamine toimub liivakastides. Rakendusel ei ole lubatud juurdepääsu mälule, mida operatsioonisüsteem ei ole sellele rakendusele eraldanud, ning see ei saa otse arvuti riistvaraseadmetele juurde pääseda. Kui riistvara on vaja, peab rakendus suhtlema seadme draiverite kaudu.
Operatsioonisüsteem võib seda kontrolli teostada, sest see sunnib CPUd kaitstud režiimi sisenema.
Seevastu DOS ei sisene kunagi kaitstud režiimi, vaid jääb režiimis (*vt allpool). Reaalses režiimis saavad käimasolevad rakendused teha midagi, mida ta tahab, s.t ligipääsu riistvarale otse. Kuid reaalses režiimis töötav rakendus võib ka CPU-le öelda kaitstud režiimi.
Ja see viimane osa võimaldab rakendustel, nagu Windows 95, alustada mitme keermega keskkonda, kuigi need olid põhimõtteliselt käivitatud DOS-ist.
DOS (Disk Operating System) oli minu teada palju rohkem kui failihaldussüsteem. See andis failisüsteemi, mehhanismid failisüsteemi navigeerimiseks, mõned tööriistad ja rakenduste käivitamise võimaluse. Samuti võimaldas see mõnedel rakendustel jääda elama, st hiire draiverid ja EMM-emulaatorid. Kuid see ei püüdnud juhtida arvuti riistvara kaasaegse operatsioonisüsteemi toimimisviisi.
*Kui DOS esmakordselt 1970ndatel loodi, polnud CPU-s kaitstud režiimi olemasolu. Alles 1980. aastate keskel asuv 80286 protsessor sai kaitstud režiimist osa CPU-st.
Veenduge, et sirvite üle algse lõime ja loete selle teema elavat arutelu alloleva lingi abil!
Kas teil on midagi lisada selgitusele? Heli on kommentaarides välja lülitatud. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.