multitasking

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken

De term multitasken [ ˌMʌltitɑːskɪŋ ] ( Engl. ) Of meer procesmodus verwijst naar het vermogen van een besturingssysteem om meerdere taken ( taken ) (quasi-) gelijktijdig uit te voeren. Over het algemeen biedt de processor hiervoor ook ondersteunende hardwarestructuren . De verschillende processen worden afwisselend met zulke korte tussenpozen geactiveerd dat de indruk van gelijktijdigheid ontstaat. Multitasking is dus een variant van een tijdverdelingsmultiplexmethode . Als een computer meerdere CPU-cores heeft en dus meerdere taken tegelijk kan uitvoeren, is er sprake van multiprocessing . Beide methoden worden in moderne computers gecombineerd gebruikt.

Doel van multitasken

Multitasking kan nuttig zijn voor verschillende vereisten, vooral bij het optimaliseren van de werklast en voor een evenwichtige of op prioriteit gebaseerde verdeling van middelen, afhankelijk van het doel.

Het basisidee achter de "optimalisatie van de belasting" is dat het grootste deel van de rekentijd in een gemiddelde computer niet kan worden gebruikt omdat er vaak moet worden gewacht op relatief trage, externe gebeurtenissen (bijvoorbeeld de volgende toetsaanslag door de gebruiker) . Als er maar één proces liep (bijvoorbeeld de wachtende tekstverwerking), zou deze wachttijd volledig ongebruikt verloren gaan (zie " actief wachten "). Door multitasking kan de wachttijd van het ene proces echter worden gebruikt door andere processen.

Als daarentegen een computer of zijn rekentijd grotendeels wordt gebruikt, bijvoorbeeld door individuele rekenintensieve processen, kunnen meerdere gebruikers of processen toch een deel van de rekentijd krijgen in plaats van te moeten wachten op het einde van een ander proces. Dit is vooral gunstig voor de interactiviteit.

Doordat het systeem prioriteiten voor de verschillende processen tegelijk kan meewegen, is een passende weging mogelijk, afhankelijk van de doelstelling. Een server kan bijvoorbeeld de voorkeur geven aan de diensten die hij zou moeten aanbieden, maar prioriteit geven aan directe gebruikersinteracties met een lage prioriteit. Omgekeerd zal een desktop-pc primair de voorkeur geven aan invoer en uitvoer van / naar de gebruiker, en hiervoor achtergrondprocessen uitstellen.

Voorloper en ontwikkeling

Multiprogrammering en TSR-programma's

De voorloper van multitasking is multiprogrammeren met als doel een hoger CPU-gebruik in tegenstelling tot de sequentiële uitvoering van de taken met batchverwerking . Bij multiprogrammering vindt de contextverandering van de programma's plaats met de toegang tot randapparatuur, aangezien dit onvermijdelijk een wachttijd tot gevolg heeft. De eerste benaderingen zijn gebaseerd op het concept van Christopher Strachey uit 1959. Dergelijke concepten konden echter alleen in de praktijk worden gebracht met krachtige hardware, waarbij de ontwikkeling van TSR-programma's mogelijk was met de interruptbesturing.

Algemene procedure

Het technische proces voor multitasking is in principe altijd hetzelfde.

Een belangrijke basisvereiste van multitasking is over het algemeen dat een proces dat wordt onderbroken ten gunste van een ander niets hoeft te “weten” van deze ander (of mogelijk meerdere anderen). Dit wordt gewoonlijk bereikt doordat elke werkwijze heeft zijn eigen zogenaamd proces context dat de toestand beschrijft. Een proces verandert alleen zijn eigen procescontext, nooit die van een ander proces.

Gewoonlijk wordt de gehele procescontext (de toestand van het proces) opgeslagen wanneer deze wordt onderbroken, b.v. B. op de stapel . Het blijft opgeslagen totdat het betreffende proces weer rekentijd krijgt. Onmiddellijk voordat dit proces weer actief wordt, wordt de opgeslagen status opnieuw geladen, zodat het voor het proces lijkt alsof het helemaal niet is onderbroken; ongeacht of, hoeveel en wat voor processen er in de tussentijd zijn uitgevoerd. Dit schakelen tussen afzonderlijke processen staat bekend als een " taakwisseling ".

Op deze manier kan een proces zijn gedefinieerde omgeving terug vinden wanneer het na de onderbreking blijft draaien, ook als er in de tussentijd andere processen zijn uitgevoerd.

Bij coöperatieve multitasking lijkt de taakverandering sterk op het aanroepen van procedures of functies in procedureel programmeren .

Coöperatief multitasken

Bij “coöperatieve multitasking” wordt multitasking geïmplementeerd door een centraal procesbeheer in de systeemkernel: een eenvoudige, zogenaamde scheduler . De planner bewaart de procescontext van de zojuist onderbroken taak, selecteert het volgende proces dat rekentijd moet krijgen, creëert zijn procescontext en draagt ​​vervolgens de processor over naar dit nieuwe proces. De planner kan lijsten bijhouden met taken met verschillende prioriteit en dienovereenkomstig zelden taken met een lage prioriteit oproepen. Er kan ook rekening worden gehouden met de rekentijd die al door een taak wordt gebruikt. In de regel worden taken binnen het besturingssysteem eerst uitgevoerd voordat een nieuwe taak de processor ontvangt. Het is aan elk proces om te beslissen wanneer de controle wordt teruggegeven aan de kern; In de regel gaat ten minste elk serviceverzoek aan het besturingssysteem gepaard met een taakwijziging.

Het voordeel van deze werkwijze is dat vele systeemfuncties (bijvoorbeeld de output) hoeft niet te worden opnieuw betreedbare en daarom niet te worden gesynchroniseerd, hetgeen een aanzienlijke vereenvoudiging van de fabrikant. ( Interrupt- routines moeten dit probleem echter altijd oplossen.) Deze vorm van multitasking heeft, net als het TSR-concept, als nadeel dat programma's die niet meewerken de rest van het systeem tot stilstand brengen. Redenen voor dergelijk programmagedrag kunnen zijn:

  • fouten in het programma;
  • storing van een door de programmeur bedoeld systeem;
  • Opzettelijke (voordelige) "exclusieve controle" van het programma, bijvoorbeeld voor een tijdkritische toepassing zoals een computerspel.

Het concept werd bijvoorbeeld gebruikt

Deze vorm van multitasken is in principe snel en resourcebesparend en technisch relatief eenvoudig te implementeren. Het was nooit een levensvatbaar alternatief voor mainframecomputers voor meerdere gebruikers. B. nooit gebruikt onder Unix , omdat één gebruiker alle anderen kon blokkeren door middel van een niet-coöperatief programma. Zelfs in de nieuwere Windows-besturingssystemen van de NT-lijn en in Mac OS X wordt deze technologie, die nu als verouderd wordt beschouwd, niet gebruikt. Soms ondersteunen ze in beperkte mate vergelijkbare functionaliteit, bijvoorbeeld als threads in de gebruikersmodus , maar in ieder geval alleen ingebed in preventieve multitasking.

Preventief multitasken

De basis van de methode die tegenwoordig standaard wordt gebruikt, is preventieve multitasking :

Het huidige bedrijfsproces na een bepaalde verwerkingstijd (zijn " timeslot ", en time slice, Eng. Timeslice) door de interrupt onderbrak een hardwaretimer. Deinterruptserviceroutine (onderdeel van het besturingssysteem) onderbreekt het proces en slaat de procescontext op - het proces wordt "in slaapstand gezet"; geeft het vervolgens door aan de planner - het besturingssysteem heeft (opnieuw) de controle gekregen. Tenzij er een besturingssysteemspecifiek proces is, selecteert de planner nu een proces dat klaar is om te worden uitgevoerd (mogelijk hetzelfde proces dat zojuist is onderbroken), herstelt de procescontext, start de hardwaretimer en draagt ​​het vervolgens over naar het proces.

Gewoonlijk wordt aan elk proces een "absolute" tijdschijf toegewezen (alle tijdschijven hebben dezelfde, vaste duur; meestal enkele milliseconden); of hij krijgt per gedefinieerde tijdseenheid een bepaald percentage van deze tijdseenheid toegewezen (bijvoorbeeld afhankelijk van zijn prioriteit), die hij maximaal kan gebruiken (de lengte van de tijdschijf wordt dus telkens opnieuw bepaald). Als het een functie van het besturingssysteem nodig heeft voordat de time slice afloopt, wordt het onmiddellijk gestopt en gemarkeerd als "niet gereed voor verwerking" totdat het besturingssysteem de gewenste service heeft geleverd. Alleen processen die zijn gemarkeerd als "ready to compute" ontvangen processortijdtoewijzingen.

Het volgende proces kiezen

Een populaire implementatie van preventieve multitasking is het gebruik van een prioriteitswachtrij in combinatie met de round robin- planningsstrategie . Er is ook de processortoewijzing afhankelijk van de taakprioriteit , vooral in realtime systemen z. B. MicroC / OS-II . Dit speelt slechts een ondergeschikte rol voor multitasking, aangezien preëmptieve multitasking de kernel- of processorcontrole over de processen beschrijft.

Noodzakelijke hardware-ondersteuning

Aan de hardwarekant , in tegenstelling tot de coöperatieve variant (zie TSR-programma als voorloper), vereist preventieve multitasking een interruptgenerator (meestal een timer ) in de juiste processor, omdat het systeem geen manier heeft om de controle over de processor uit processen te verwijderen . De timer stuurt regelmatig of nadat een ingestelde tijd is verstreken een signaal ( interrupt ) naar de CPU , waardoor de huidige taak wordt onderbroken en de onderbrekingsserviceroutine van het besturingssysteem wordt uitgevoerd.

Geheugenbescherming

Moderne besturingssystemen werken ook met geheugenbescherming die voorkomt dat verschillende processen in het geheugen elkaar beïnvloeden of zelfs overschrijven. Deze beschermende functie wordt uitgevoerd door de geheugenbeheereenheid (MMU) in de pc, die de virtualisatie van het hoofdgeheugen en verschillende autorisatieniveaus (ringen) of modi (kernelmodus versus gebruikersmodus) mogelijk maakt en zo het besturingssysteem in staat stelt om verschillende parallelle processen binnen de computer van elkaar strikt ingekapseld. In de pc werd de MMU voor het eerst gebruikt in computers met i286- processors van Intel. Deze techniek is echter niet absoluut noodzakelijk voor multitasking in engere zin.

verhaal

De eerste wijdverbreide computersystemen die preventieve multitasking onder de knie hadden, waren de Sinclair QL (1984) en de Commodore Amiga (1985) in huis (de Amiga zonder geheugenbescherming / privileges en dus "kan worden gebruikt"), evenals de mainframesystemen die werden bediend onder Unix . Voor het eerst in de 3.x-versies beheerst Windows gedeeltelijk preventieve multitasking, maar alleen voor DOS- programma's en alleen als ze worden uitgevoerd op een systeem met een i386- compatibele processor, omdat dit in dergelijke gevallen hardwarevirtualisatie mogelijk maakt. Moderne besturingssystemen die preventieve multitasking volledig ondersteunen zijn Windows NT (en alle opvolgers), QNX , BeOS en alle Unix-gebaseerde systemen zoals Linux , HP-UX , Solaris , macOS en nog veel meer

Onderscheid van timesharing

Daarnaast moet een onderscheid worden gemaakt tussen time slicing en time sharing ; dit laatste laat meerdere gebruikers of hun processen (bijvoorbeeld op databaseservers of mainframes met terminaltoegang) toe om de beschikbare rekentijd automatisch proportioneel te delen. [1] Dus terwijl bij multitasking meerdere processen van een enkele gebruiker de rekentijd kunnen delen, wordt bij time sharing de tijd van een proces verdeeld over meerdere gebruikers.

Verwijderbare multitasking

Een bijzondere vorm van preventieve multitasking is de minder bekende preemptible multitasking (Engelse spelling Preemptible Multitasking ), die voor het eerst werd geïmplementeerd in het OS/2- besturingssysteem. Veel van de eigen kernelroutines van het besturingssysteem worden uitgevoerd als scheduler-threads; Dit betekent dat applicatieprocessen ook timeslots kunnen ontvangen terwijl er daadwerkelijk een besturingssysteemactie wordt uitgevoerd (met uitzondering van atomaire OS-processen). [2] Het concept maakt snellere responstijden mogelijk. Met versie 2.6 heeft het ook zijn weg gevonden naar de Linux-kernel . [3]

Zie ook

literatuur

  • C. Strachey: tijddeling in grote snelle computers. Proceedings van de internationale conferentie over informatieverwerking. Unesco, 1959.
  • Klaus D. Thies: Real-time multitasking: De kernel - elementaire inleiding tot parallelle systeemprogrammering. Shaker-Verlag, Aken, ISBN 978-3832248673 .

web links

WikiWoordenboek: Multitasking - uitleg van betekenissen, woordoorsprong, synoniemen, vertalingen

Individueel bewijs

  1. van artikel Timesharing in Meyers Taschenlexikon in 24 volumes (BI Taschenbuchverlag) - Meyer wordt expliciet tijdsegmenten in meerdere gebruikers (MS Encarta World Atlas verwijst ook naar meerdere gebruikers in "timesharing").
  2. Präempti hij bl Kernel Linux 2.6 , van http://articles.tutorialonline.biz/, toegankelijk 14 september 2012.
  3. Informatie op www.jakoxx.de ( Memento van 15 augustus 2009 in het internetarchief ).