Windows-procesbeheer. Procesbeheer in Windows

Taakbeheer is een van de krachtigste en handigste tools in NT, ontworpen voor het beheren van processen. Het heet Ctrl+Shift+Esc, of door het te selecteren in het menu dat verschijnt nadat u met de rechtermuisknop op de taakbalk klikt. Taakbeheer in Windows XP bestaat uit vijf tabbladen: Toepassingen, Processen, Prestatie, Netwerken en Gebruikers. Laten we beginnen met Prestaties.

Dit tabblad toont informatie over de belasting van de processor(s) in realtime (gebruikersprocessen in groen, systeemprocessen in rood), fysieke geheugenbelasting wordt weergegeven en het laat zien hoeveel RAM bezet/vrij is, en hoeveel systeemwissel is bezet. Daarnaast wordt andere aanvullende informatie gegeven, bijvoorbeeld Threads en Processes - het aantal threads en processen dat momenteel op de machine draait, Peak - de piekgrootte van Swap tijdens de sessie, Nonpaged - de hoeveelheid geheugen die aan de kernel is toegewezen. Deze informatie kan worden gebruikt bij het beantwoorden van de vraag welke factor in het systeem het “knelpunt” is dat het werk vertraagt ​​(hoewel het beter is om Performance Monitor voor deze doeleinden te gebruiken).

Tweede bladwijzer Processen, bevat een lijst met processen die momenteel actief zijn.

Voor elk proces kunt u aanvullende informatie vinden, zoals: PID (Process ID), de hoeveelheid RAM die wordt gebruikt, het aantal threads dat door het proces wordt gegenereerd en nog veel meer. Onder de nuttige toevoegingen die in XP verschenen, moet worden opgemerkt dat de kolom Gebruikersnaam verscheen. Hierin kunt u zien welke gebruiker of systeemdienst een bepaald proces heeft gestart. U kunt weergegeven parameters toevoegen/verwijderen via Beeld -> Kolommen selecteren.

Bovendien kunnen met elk van deze processen bepaalde acties worden uitgevoerd. Om dit te doen, hoeft u er alleen maar met de rechtermuisknop op te klikken, er verschijnt een contextmenu waarmee u het proces kunt beëindigen ("kill") (Proces beëindigen); Je kunt ook zowel het proces zelf als alle andere processen die het “voortbracht” beëindigen (End Process Tree). U kunt de prioriteit van het proces instellen, van de hoogste Real-Time tot de laagste, Laag. Als de machine twee processors en een multiprocessorkern heeft, verschijnt er een ander item in dit menu, Set Affinity, waarmee u het proces kunt overbrengen naar een andere processor, Cpu 0, Cpu1, enzovoort tot Cpu31.

Bladwijzer - Toepassingen Hiermee kunt u een lijst met actieve applicaties bekijken en deze allemaal "doden". Met Taakbeheer kunt u niet alleen applicaties beëindigen, maar ook nieuwe applicaties starten. Bestand -> Nieuwe taak (Uitvoeren..). Soms kan dit erg handig zijn. Als de gebruikersinterface om de een of andere reden bijvoorbeeld vastloopt, kunt u deze eenvoudig 'doden' (het proces explorer.exe) en vervolgens opnieuw beginnen. Bovendien hoeft het niet explorer.exe te zijn. U kunt bijvoorbeeld progman.exe uitvoeren en een interface krijgen die lijkt op de W3.1-interface, of op een van de externe interfaces die in overvloed op internet te vinden zijn.

Bladwijzer

Bladwijzer Gebruikers. Hierop kunt u de gebruikers zien die momenteel op de machine werken. Als u over voldoende rechten beschikt, kunt u deze gebruiker uitschakelen of hem eenvoudigweg een bericht sturen. Soortgelijke dingen worden al lang op grote schaal gebruikt in een verscheidenheid aan software die is ontworpen om systemen met meerdere gebruikers te beheren, maar het was in Taakbeheer dat deze functie voor het eerst verscheen.

Voor elke applicatie die onder Microsoft Windows draait, creëert het besturingssysteem zijn eigen taak, met andere woorden, het wijst een bepaalde hoeveelheid RAM toe voor de uitvoering van dit programma en controleert de werking van de applicatie die met computerbronnen in het geheugen is geladen. Naast taken heeft Windows XP ook processen: virtuele geheugenadresruimte die is toegewezen voor de uitvoering van procedures door een programma of het besturingssysteem zelf. Eén taak kan verschillende processen in Windows activeren: een webbrowser kan bijvoorbeeld tegelijkertijd toegang krijgen tot de modempoort om bepaalde gegevens te ontvangen en te verzenden en op het scherm het resultaat weer te geven van de Java-applet die in de webpagina is ingebouwd. Aan elk proces wordt automatisch een individueel identificatienummer toegewezen, de zogenaamde Process ID of PID, ontworpen om het proces op unieke wijze in het systeem te identificeren.
Als een programma dat u onverwachts hebt gestart ervoor zorgt dat de computer vastloopt, is het in de meeste gevallen niet nodig om een ​​noodherstart uit te voeren: het is voldoende om de taak die de fout veroorzaakte in het geheugen te vinden en deze te verwijderen, dat wil zeggen de taak met kracht te stoppen. verdere uitvoering. Een andere situatie is ook mogelijk: als u een onverwacht vastgelopen programma afsluit door de taak te annuleren, kunt u het onderbroken werk met geen enkel bestand of document voortzetten. Als u bijvoorbeeld Microsoft Word uit het geheugen van uw computer verwijdert, kunt u de tekst die u zojuist hebt bewerkt niet opnieuw laden, omdat het besturingssysteem denkt dat dit document al door een ander programma wordt gebruikt. Dergelijke verschijnselen doen zich voor omdat na het verwijderen van de taak het proces dat door deze taak wordt geïnitieerd, nog steeds in het geheugen blijft - in ons geval is dit het proces van het verwerken van een Word-document. Door het inbreukmakende proces te stoppen, kunt u Windows XP gewoon blijven gebruiken.

Om taken en processen te beheren, biedt Microsoft Windows XP een speciaal systeemhulpprogramma genaamd Windows Taakbeheer, waarvan het venster op het scherm verschijnt wanneer u op de toetsencombinatie Ctrl+Alt+Del drukt

Utility-venster Taakbeheer Windows XP heeft vijf functionele tabbladen.
Tab Toepassingen(Applicaties) bevat een lijst met alle taken die in het systeem worden uitgevoerd: in het veld Taak(Taak) de naam van de taak wordt in het veld weergegeven Staat(Status) - de huidige status. De normale taakstatus is Werken(Rennen). Als een taak vastloopt en niet reageert op systeemverzoeken, wordt de status ervan bepaald als Reageert niet(Reageert niet).
Om een ​​van de taken te verwijderen, selecteert u deze door in het menu te klikken Taak(Taak) en klik op de knop Taak annuleren(Einde taak).
Om naar een taak over te schakelen, dat wil zeggen: open het venster ervan op het scherm, selecteer de gewenste taak in de lijst en klik op de knop Schakelaar(Overschakelen naar).
U kunt een nieuwe taak starten door op de knop te klikken Nieuwe taak(Nieuwe taak) en specificeer de volledige naam en het pad naar het programma dat moet worden gestart in het overeenkomstige veld van het venster dat wordt geopend, of door dit programma visueel te identificeren met behulp van de knop Beoordeling(Bladeren).

Tab Processen(Processen) maakt het mogelijk om processen die in het systeem draaien te beheren.

Het menu op dit tabblad toont de namen van de processen - Naam afbeelding(Afbeeldingsnaam), identificatiegegevens van procesinitiatoren - Gebruikersnaam(Gebruikersnaam), kenmerken van hardwareverwerkingsprocessen - CPU(CPU) en de hoeveelheid RAM die door processen wordt ingenomen - Geheugen(Geheugengebruik). U kunt de weergave van andere proceskenmerken inschakelen (bijvoorbeeld PID, I/O-bereik, hoeveelheid cache die door het proces wordt gebruikt, enz.) met behulp van de functie Selecteer Kolommen(Kolommen selecteren) opdrachtmenu Weergave(Weergave). Om de uitvoering van een proces te stoppen, selecteert u de titel met een muisklik en klikt u op de knop Beëindig het proces(Eindproces).
Als u wilt dat dit menu processen weergeeft die door alle gebruikers op uw systeem zijn gestart, vinkt u het vakje naast aan Geef processen van alle gebruikers weer(Toon processen van alle gebruikers). U kunt ook de prioriteit van een proces instellen door met de rechtermuisknop op de titel te klikken en te selecteren Een prioriteit(Prioriteit instellen) en specificeer de uitvoeringsmodus die aan dit proces is toegewezen:

Realtime - realtimemodus (alle verzoeken die door het proces worden geïnitieerd, worden door het systeem uitgevoerd zodra ze binnenkomen);
Hoog - hoogste prioriteit;
Boven normaal - hoge prioriteit;
Gemiddeld (normaal) - standaardprioriteit;
Onder normaal - lage prioriteit;
Laag - de laagste prioriteit.

Hoe hoger de prioriteit van een proces, hoe sneller de verzoeken die het initieert worden uitgevoerd. Het systeem levert eerst hardware- en softwarebronnen aan processen met hoge prioriteit. Houd er bij het herverdelen van procesprioriteiten rekening mee dat als u een hoge prioriteit geeft aan een klein proces, de prioriteit van een van de systeemprocessen die essentieel zijn voor Windows automatisch laag kan worden, waardoor de snelheid van het systeem als geheel merkbaar zal afnemen. anders wordt de uitvoering van dit proces volledig geblokkeerd, waardoor de computer vastloopt. U moet alleen een hoge prioriteit aan een van de processen geven als de uitvoering ervan met een “normale” prioriteit om de een of andere reden moeilijk of onmogelijk is.

Tab Prestatie Het (Prestatie)venster van Windows Taakbeheer bevat informatie over de belasting van de processor, RAM en het gebruik van andere hardwarebronnen van de computer.

(CPU-gebruik) en Geschiedenis van CPU-belasting(CPU-gebruiksgeschiedenis) toont de belasting van de processor van uw computer, indicatoren Bestand wisselen(PF-gebruik) en Gebruiksgeschiedenis van wisselbestanden(PF-gebruiksgeschiedenis) - gebruik van het wisselbestand tijdens het cachen van systeemgegevens, indicator Fysiek geheugen(Fysiek geheugen) - de mate van RAM-belasting in kilobytes.

Zo ook het tabblad Netto(Netwerken) toont de belasting van uw lokale netwerk.
Als u ten slotte een lijst wilt zien van alle gebruikers die momenteel op uw systeem werken, gaat u naar de Gebruikers(Gebruikers).


Als u in het systeem bent geregistreerd als beheerder van deze computer, kunt u de verbinding met een van de gebruikers verbreken door de naam van zijn Windows-sessie in het menu te markeren door met de muis te klikken en vervolgens op de knop Uitzetten(Loskoppelen). Daarnaast kunt u hem een ​​bericht sturen door op de knop te klikken stuur een bericht(Bericht versturen). Om uw huidige Windows-sessie te beëindigen, klikt u op Uitgaan van het systeem (Afmelden). besturingssysteem– een zeer complex softwaresysteem in de architectuur, waarin de volgende hoofdcomponenten te onderscheiden zijn:
  1. Procesmanagement
  2. Beheer van het hoofdgeheugen
  3. Bestandsbeheer
  4. Systeem beheer IO
  5. Extern geheugenbeheer
  6. Netwerkondersteuning
  7. Beschermingssysteem
  8. Ondersteuningssysteem commando tolk.
  9. Grafische schaal.

Laten we deze componenten eens nader bekijken.

Procesmanagement. Een proces is een gebruikersprogramma zoals het op een computersysteem draait. Het besturingssysteem bestuurt de werking van processen, hun verdeling over processors en systeemkernen, de volgorde van uitvoering en plaatsing in het geheugen, hun synchronisatie wanneer delen van dezelfde taak parallel worden opgelost door verschillende processen.

Beheer van het hoofdgeheugen Het hoofdgeheugen (RAM) kan worden beschouwd als een grote array. besturingssysteem verdeelt geheugenbronnen tussen processen, wijst geheugen toe op verzoek, maakt het vrij wanneer dit expliciet wordt gevraagd of aan het einde van een proces, en slaat lijsten met gebruikt en vrij geheugen op in het systeem.

Extern geheugenbeheer Zoals eerder vermeld, is extern (secundair) geheugen een uitbreiding van het RAM-geheugen van de processor met langzamere, maar ruimere en permanent opgeslagen informatietypen geheugen (schijven, tapes, enz.). Bij het beheren van extern geheugen lost het besturingssysteem problemen op die vergelijkbaar zijn met die bij het beheren van het hoofdgeheugen - geheugentoewijzing op verzoek, geheugen vrijmaken, het opslaan van lijsten met vrij en bezet geheugen, enz. Het besturingssysteem ondersteunt ook het gebruik van associatief geheugen (cachegeheugen) om de toegang tot extern geheugen te optimaliseren.

Netwerkondersteuning Zoals herhaaldelijk is benadrukt, bevindt elk modern computersysteem zich permanent of tijdelijk in verschillende lokale en mondiale netwerken. besturingssysteem biedt het gebruik van netwerkapparatuur (netwerkkaarten of adapters), het aanroepen van de juiste stuurprogramma's, het ondersteunen van interactie op afstand met bestandssystemen op computers in het netwerk, inloggen op afstand op andere computers in het netwerk en het gebruik van hun computerbronnen, verzenden en ontvangen berichten via het netwerk, bescherming tegen netwerkaanvallen

Beschermingssysteem Volgens moderne principes van betrouwbaar en veilig computergebruik (zie “Het concept van een besturingssysteem (OS), het doel van de werking ervan. Classificatie van computersystemen”), moet de werking van het besturingssysteem betrouwbaarheid en veiligheid garanderen, d.w.z. bescherming tegen aanvallen van buitenaf, vertrouwelijkheid persoonlijke en bedrijfsinformatie, diagnose en correctie van fouten en storingen, enz. Het besturingssysteem biedt bescherming voor computersysteemcomponenten, gegevens en programma's, ondersteunt het filteren van netwerkpakketten, het detecteren en voorkomen van externe aanvallen, slaat informatie op over alle acties op systeemstructuren, nuttig voor aanvallen analyseren en bestrijden.

Shell-ondersteuningssysteem.Elk besturingssysteem ondersteunt commandotaal (of set commando talen), bestaande uit gebruikersopdrachten die worden uitgevoerd vanaf de gebruikersterminal (vanaf de gebruikersconsole). Typische opdrachten zijn het verkrijgen van informatie over de omgeving, het instellen en wijzigen van de huidige werkmap, het overbrengen van bestanden, het compileren en uitvoeren van programma's, het verkrijgen van informatie over systeem staat en het uitvoeren van de processen ervan, enz. In het Windows-systeem wordt traditioneel het MS DOS-gebruikersconsolevenster (MS DOS Prompt) gebruikt om opdrachten uit te voeren in het Linux-systeem, een speciaal "Terminal"-venster (Start / Systeemwerkset / Terminal). Het meest krachtig opdrachtverwerkers beschikbaar in systemen van het UNIX-type (UNIX, Solaris, Linux, enz.). Met hun commandotalen kun je schrijven scripts– batchbestanden met veelgebruikte reeksen OS-opdrachten. Dit is het handigst op UNIX. U kunt dergelijke UNIX-opdrachttalen een naam geven als sh (Bourne Shell), csh (C-shell), ksh (Korn-shell), bash Elke UNIX-programmeur heeft zijn eigen favoriete commandotaal en raakt eraan gewend voortdurend scripts en lange, niet-triviale reeksen commando's te gebruiken die hij vanaf de terminal uitvoert. Wat Windows betreft, relatief recentelijk een krachtig commando tolk PowerShell, die wordt aanbevolen voor gebruik. Daarnaast is er een systeem voor Windows CygWin waarmee u UNIX-opdrachten en batchbestanden in een Windows-omgeving kunt uitvoeren. Een typische commandoreeks in UNIX-stijl is: ps –a | grep veilig, die wordt uitgevoerd naar standaard uitvoer informatie over actieve processen, en alleen die van de gebruiker veilig.De verticale balk (p1 | p2) geeft de werking aan transportband (buis), waardoor u kunt gebruiken standaard uitvoer proces p1 als standaard invoer proces p2, wat wordt gebruikt door de grep-bewerking ( stringfiltering met een bepaalde reeks). Meer over UNIX (Linux) kun je lezen in het boek [16].

Grafische schaal– een besturingssysteemsubsysteem dat een grafische gebruikersinterface implementeert voor gebruikers en systeembeheerders met het besturingssysteem. Natuurlijk is het onhandig om alleen commandotaal en systeemaanroepen te gebruiken, dus een eenvoudige en duidelijke grafische gebruikersinterface met het besturingssysteem is noodzakelijk. Er zijn veel bekende grafische shells voor besturingssystemen, en hun mogelijkheden lijken erg op elkaar - zozeer zelfs dat het soms niet helemaal duidelijk is welk besturingssysteem wordt gebruikt. Tot de grafische shells die in UNIX-type systemen worden gebruikt behoren CDE, KDE, GNOME. Windows en MacOS hebben hun eigen, zeer handige grafische shells.

Procesmanagement

Proces - is een gebruikersprogramma wanneer het wordt uitgevoerd op een computersysteem. Het proces vereist een aantal bronnen, inclusief CPU-tijd, geheugen, bestanden, I/O-apparaten, netwerkapparaten, enz.

In het klassieke UNIX-schema, wanneer het creëren van een proces er wordt een nieuwe virtuele geheugenruimte voor gecreëerd, d.w.z. tabel met pagina's die moeten worden weergegeven virtuele adressen in fysieke gevallen, zijn eigen voor elk nieuw proces. Dit vergt aanzienlijke hulpbronnen. Gezien het feit dat in UNIX elke gebruikersopdracht (bijvoorbeeld ls) de inhoud uitvoert huidige map) loopt als afzonderlijk proces, dan wordt duidelijk hoe ‘duur’ het creëren van een proces in de klassieke zin is. Terug in de jaren tachtig dus. er verscheen een concept gefaciliteerd proces(lichtgewicht proces) – draait in dezelfde virtuele geheugenruimte als het bovenliggende proces. Wanneer een nieuw lichtgewicht proces wordt gemaakt, maakt het besturingssysteem alleen stapel– een systeemresidente array in het geheugen die is ontworpen om de uitvoering van procesprocedures te ondersteunen en hun lokale gegevens op te slaan en informatie daartussen te verbinden.

Het OS is verantwoordelijk voor de volgende activiteiten met betrekking tot procesmanagement:

Processen aanmaken en verwijderen. Bij het creëren van een proces het is noodzakelijk om de juiste systeemstructuren in het geheugen te creëren (paginatabel, stapel, enz.). Wanneer een proces wordt verwijderd, wordt het geheugen dat het in beslag nam, vrijgegeven, en worden ook alle bestanden gesloten en alle andere bronnen vrijgegeven die het proces gebruikte, tenzij het proces dit expliciet deed.

Processen pauzeren en hervatten. De uitvoering van het proces pauzeert tijdens de uitvoering synchrone I/O, evenals een systeemaanroep of opdracht (zoals opschorten). Laten we meteen opmerken dat dergelijke bewerkingen expliciet worden gebruikt opschorting van processen moet met voorzichtigheid worden gebruikt, omdat het proces dat wordt opgeschort mogelijk op zichzelf staat kritieke sectie– verwerking uitvoeren op een gedeelde bron waartoe elk proces exclusieve toegang krijgt, zodat de situatie zich voordoet wanneer het wordt opgeschort impasse) – een opgeschort proces kan de hulpbron niet vrijgeven, en een concurrerend proces kan deze niet verkrijgen. Wanneer een proces wordt opgeschort, slaat het besturingssysteem de uitvoeringsstatus op, en wanneer het wordt hervat, herstelt het deze.

Processynchronisatie. Processen werken parallel en strijden tegelijkertijd om gedeelde bronnen, en moeten ook wachten tot bepaalde gebeurtenissen zich op bepaalde punten in de berekeningen voordoen. Om mogelijke conflicten en inconsistenties te voorkomen, b.v. race conditie- inconsistente toegang tot gedeelde gegevens, waarbij het ene proces oude gegevens leest en een ander proces deze op hetzelfde moment bijwerkt - het besturingssysteem biedt middelen synchronisatie(Bijvoorbeeld, seinpalen En monitoren, besproken in de volgende sectie).

Procesinteractie Wanneer processen parallel werken, hebben ze interactie nodig om verschillende delen van hetzelfde probleem gecoördineerd op te lossen. Processen kunnen communiceren via overdracht berichten elkaar, maar ook met de hulp van de zogenaamde voorwaardelijke variabelen En afspraak(al deze soorten interactie worden later besproken). Het besturingssysteem biedt al deze hulpmiddelen, in de vorm van systeemaanroepen, om adequate en gemakkelijke interactie tussen processen te organiseren.

Semaforen.In 1966, in het werk [17] prof. Edsger Dijkstra stelde een nieuwe methode voor processynchronisatie, die klassiek is geworden, zijn semaforen.

Binaire semafoor– variabele S, die zich in twee toestanden kan bevinden: “open” en “gesloten”; Er zijn twee bewerkingen (“semafoorhaakjes”) gedefinieerd over S: P(S) – sluiten, V(S) – openen. Wanneer wordt geprobeerd een reeds gesloten semafoor te sluiten, vindt er een interrupt plaats en voegt het besturingssysteem het huidige proces toe aan de wachtrij van de gesloten semafoor. Operatie V(S) activeert het eerste proces dat in de wachtrij staat voor S en dat operatie P(S) met succes voltooit. Als semafoor S al open is, heeft de V(S)-bewerking geen effect.

Als we dus aannemen dat de hardware en het besturingssysteem een ​​dergelijk semafoorconcept ondersteunen, is het een handig hulpmiddel voor het synchroniseren van bronnen. Laten we bellen kritieke sectie code die door verschillende processen parallel kan worden uitgevoerd en toegang heeft tot een bron die gemeenschappelijk is voor alle processen - een globaal geheugengebied, een gedeeld bestand, enz. Laten we de code aanduiden kritieke sectie kritieke sectie Als we ervan uitgaan dat deze code in meerdere processen direct parallel kan worden uitgevoerd, kan er een situatie ontstaan ​​die ons al bekend is raceconditie ( concurrentie om gedeelde gegevens): één proces kan een hulpbron veranderen, en de tweede leest op dit moment de (onjuiste) status ervan, of twee processen zullen tegelijkertijd proberen dezelfde te veranderen

Afdeling Computerwetenschappen

Essay


    Procesbeheertools in Windows OS

Taakbeheer is een van de krachtigste en handigste hulpmiddelen in WinNT/2000/XP/2003/Vista voor het beheren van processen. Het heet Ctrl+Shift+Esc, of Ctrl+Alt+Del, of door het te selecteren in het menu dat verschijnt nadat u met de rechtermuisknop op de taakbalk klikt. Met dit hulpprogramma kunt u actieve toepassingen en lopende processen in realtime volgen en de belasting van de systeembronnen en het netwerkgebruik van uw computer beoordelen.

Het geopende venster bevat vier tabbladen die overeenkomen met de vier soorten activiteiten die worden bijgehouden. ^ Manager: applicaties, processen, performance (gebruik van systeembronnen) en Netto.

Opent standaard een bladwijzer Processen, dat een volledige lijst toont van processen die op het systeem draaien (één programma kan meerdere processen tegelijk activeren). Vaak is de lijst behoorlijk lang, dus voor het gemak kunt u het venster uitbreiden Verzender.

Als er geen gebruikersprogramma's op de computer draaien, dan ^ Taakbeheer mag alleen serviceprocessen bevatten van het besturingssysteem dat op de computer is geïnstalleerd.

Voor elk proces worden de parameters weergegeven: afbeelding naam(meestal hetzelfde als de naam van het bestand dat wordt gestart), Gebruikersnaam(van h
wiens naam het proces is gestart), de centrale processor (kolom CPU) En de hoeveelheid RAM die het in beslag neemt.

In sommige gevallen moet u mogelijk een bepaald proces handmatig beëindigen. Dit kan via de knop ^ Beëindig het proces . Bovendien kunnen met elk van deze processen bepaalde acties worden uitgevoerd. Om dit te doen, hoeft u er alleen maar met de rechtermuisknop op te klikken, er verschijnt een contextmenu waarmee u het proces kunt voltooien en "doden" ( Beëindig het proces ), kun je het proces zelf doden, en alle andere die het “voortbracht” ( Einde procesboom ). U kunt de prioriteit van het proces instellen, van de hoogste ( Echte tijd ) naar de laagste ( Kort ). Als de machine twee processors en een multiprocessorkern heeft, verschijnt er een ander item in dit menu: Wedstrijd instellen , waarmee u het proces naar een andere processor kunt overbrengen - Cpu 0, Cpu1, enzovoort tot Cpu31.

Kolom Gebruikersnaam - toont voor elk proces informatie over welke gebruiker het draait. Processen met gebruikersnamen SYSTEM, LOCAL SERVICE, NETWORK SERVICE worden gestart door het besturingssysteem en zijn de belangrijkste (ze zorgen voor een correcte apparaatherkenning, zijn verantwoordelijk voor de werking van de firewall en beheren de gegevensoverdracht via internet). Andere processen verschijnen onder de naam van de ingelogde gebruiker. Dit betekent dat ze betrekking hebben op het programma dat door die gebruiker is gestart, zoals de tekstverwerker Word of de ICQ-client.

Kolom CPU laat zien hoeveel CPU door een bepaald proces wordt geladen. De normale waarde voor de meeste processen is minder dan 20% belasting. Als processen de CPU met 50-99% belasten, gaan daarachter zeer resource-intensieve programma's of plaagprogramma's schuil.

Kolom Geheugen geeft informatie weer over hoeveel RAM-ruimte een proces gebruikt. Het is het beste om regelmatig op deze kolom te letten: als de hoeveelheid RAM die aan een proces wordt toegewezen met grote sprongen groeit, betekent dit dat er een softwarefout is of dat er een met een virus geïnfecteerd bestand actief is.

Volgende bladwijzer Verzender - Toepassingen , kunt u een lijst met actieve applicaties bekijken en deze allemaal 'doden'. Om dit te doen, klikt u op de knop Taak annuleren . Verzender Hiermee kunt u niet alleen applicaties beëindigen, maar ook nieuwe applicaties starten: Bestand -> Nieuwe taak (Uitvoeren..).

Derde tabblad Prestatie . Dit tabblad toont informatie over de belasting van de processor(s) in realtime, toont de belasting van het fysieke geheugen en laat zien hoeveel RAM wordt gebruikt/vrij. Daarnaast wordt daar ook andere aanvullende informatie gegeven, bijvoorbeeld het aantal threads en processen dat momenteel op de machine draait.

Literatuur


  1. Andreev A.G. enz. XP: Home Edition en Professional. Russische versies/Onder algemeen. red. A.N.Chekmareva. –SPb.: BHV-Petersburg, 2003

  2. Tanenbaum E. Moderne besturingssystemen. 2e druk. – Sint-Petersburg: Peter, 2002.

  3. Figurnov V.E. IBM PC voor de gebruiker// - Ufa: NPO "Informatica en computers", 1993.

In tegenstelling tot de ‘anderhalve taak’ MS-DOS, die al het werk (en alle risico’s) van het organiseren van het parallel functioneren van processen overlaat aan de applicatieprogrammeur, bieden multitasking besturingssystemen de programmeur een min of meer handige en rijke een reeks systeemfuncties waarmee verschillende parallelle processen kunnen worden uitgevoerd en hun interactie kan worden georganiseerd (processynchronisatie, gegevensuitwisseling, wederzijdse uitsluiting, enz.). Tegelijkertijd moet het besturingssysteem de correcte en efficiënte organisatie van proceswisseling, de verdeling van processortijd, geheugen en andere bronnen daartussen garanderen.

De complexiteit van het probleem van het organiseren van de interactie van parallelle processen is aanzienlijk verschillend voor systemen die gebruik maken van preventieve en niet-preventieve procesverzending. Met preventieve verzending kan het proces op vrijwel elk moment door de coördinator worden onderbroken. Naast de taak van het opslaan en vervolgens herstellen van de procescontext (zie paragraaf 4.2.5), die door het besturingssysteem zelf moet worden opgelost, zijn er ook problemen bij het garanderen van wederzijdse uitsluiting bij het uitvoeren van kritieke secties in multitasking-applicaties. Alleen de programma-ontwikkelaar kan beslissen welke delen van zijn programmatekst kritische secties zijn en beschermd moeten worden door semaforen.

In een systeem met niet-preventieve verzending hoeft de programmeur alleen maar te controleren of kritieke secties geen oproepen naar blokkerende en preventieve functies bevatten. In dit geval kunt u garanderen dat er tijdens de uitvoering van de kritieke sectie geen proceswisseling zal plaatsvinden.

Alle versies van Windows, van 1.0 tot 3.11, waren behoorlijk krachtige multitasking-systemen met niet-preventieve planning. Versies die beginnen met Windows NT en Windows 95 gebruiken preventieve planning.

Het concept van een object in Windows

In Windows OS wordt het concept van system voorwerp . In wezen is elk object een datastructuur die zich in de systeemadresruimte bevindt. Omdat toepassingen geen toegang hebben tot dit geheugen, moet de toepassing het object verkrijgen om met het object te kunnen werken hendel object – een voorwaardelijk nummer dat dit object vertegenwoordigt bij toegang tot API-functies. Een proces krijgt een handvat, meestal bij het aanroepen van de functie CreateXxx (hier is Xxx de naam van het object), waarmee een nieuw object kan worden gemaakt of een bestaand object kan worden geopend dat door een ander proces is gemaakt. Met functies als OpenXxx kunt u alleen een bestaand object openen.

Windows-objecten zijn onderverdeeld in kernelobjecten (KERNEL) waarmee u processen kunt beheren, USER-objecten die beschrijven hoe u met vensters moet werken, en GDI-objecten die grafische Windows-bronnen specificeren. Deze cursus behandelt alleen kernelobjecten. Processen, threads en geopende bestanden zijn voorbeelden van kernelobjecten.

Een van de onderscheidende kenmerken van kernelobjecten is beveiligingsattributen , die kan worden opgegeven bij het maken van een object. Deze attributen definiëren de toegangsrechten tot een object voor verschillende gebruikers en groepen. Bovendien kunt u, wanneer u een kernelobject maakt, de naam ervan opgeven, die wordt gebruikt om ervoor te zorgen dat andere processen hetzelfde object kunnen openen door de naam ervan te kennen.

De handle van een object kan alleen worden gebruikt door het proces dat het object heeft gemaakt of geopend. Je kunt de handle-waarde niet zomaar doorgeven aan een ander proces; het werkt niet in een andere context. Er is echter een functie genaamd DuplicateHandle, die een correcte kopie van een handle maakt door van u te eisen dat u opgeeft welk proces de kopie maakt, welke handle deze is en voor welk proces de kopie bedoeld is.

Als de handle van een object niet langer nodig is voor een bepaald proces, moet deze worden gesloten met behulp van de functie CloseHandle, die gebruikelijk is voor verschillende typen objecten.

Een object bestaat totdat alle handvatten die ernaar verwijzen gesloten zijn.

Processen en draden

Het algemene concept van een proces, hierboven besproken in paragraaf 4.2.1, voor Windows OS lijkt in twee concepten te worden opgesplitst: het proces zelf en draden (thread; sommige boeken gebruiken de term stroom ). In dit geval is de thread een werkeenheid, neemt hij deel aan de concurrentie om processortijd, verandert zijn status en prioriteit, zoals hierboven beschreven voor het proces. Wat een proces in Windows betreft, het kan bestaan ​​uit verschillende threads die gebruikmaken van gedeeld geheugen, geopende bestanden en andere bronnen die bij het proces horen. In een notendop: het proces bezit (geheugen, bestanden), threads werken, terwijl de bronnen van hun proces worden gedeeld. Het is waar dat een thread ook iets bezit: vensters, een berichtenwachtrij, een stapel.

Er wordt een proces aangemaakt wanneer een programma (EXE-bestand) wordt gestart. Er wordt één procesthread tegelijk gemaakt (er moet iemand aan het werk zijn!). Het maken van processen wordt uitgevoerd met behulp van de CreateProcess API-functie. De belangrijkste parameters bij het aanroepen van deze functie zijn de volgende.

· Bestandsnaam van het programma dat moet worden gestart.

· De opdrachtregel wordt doorgegeven aan het proces wanneer het start.

· Beveiligingskenmerken voor het gemaakte proces en de thread. Zowel het proces als de thread zijn objecten van de Windows-kernel en kunnen als zodanig worden beschermd tegen ongeoorloofde toegang (bijvoorbeeld tegen pogingen van andere processen om de werking van dit proces te verstoren).

· Verschillende vlaggen die de procesaanmaakmodus specificeren. Deze omvatten de prioriteitsklasse van het proces, de debug-modusvlag (waarin het systeem het bovenliggende proces op de hoogte stelt van de acties van het onderliggende proces) en de vlag voor het maken van een opgeschort proces dat pas begint te lopen als de hervattingsfunctie is ingeschakeld. genaamd.

· Procesomgevingsblok.

· Huidige map van het proces.

· Parameters van het eerste venster dat wordt geopend wanneer het proces start.

· Het adres van het informatieblok waarmee de functie vier getallen retourneert aan het bovenliggende proces: de gemaakte proces-ID, de thread-ID, de proceshandle en de thread-handle.

Als het proces met succes is gemaakt, retourneert de functie CreateProcess een waarde die niet nul is.

De prioriteitsklasse van een proces wordt gebruikt om de prioriteiten van de threads te bepalen. Meer details hierover in paragraaf 4.5.3.

Met de handle naar een Windows-kernelobject (in dit geval een proces of thread) kunt u verschillende bewerkingen op dat object uitvoeren. Zie sectie 4.5.4 voor meer informatie over handvatten en identificatiegegevens.

Zodra een proces is gemaakt, begint de enkele thread met het uitvoeren van het programma van het proces, parallel aan de threads van andere actieve processen. Als de logica van het programma de parallelle uitvoering van acties binnen één proces inhoudt, kunnen er extra threads worden gemaakt. Hiervoor wordt de CreateThread-functie gebruikt. De belangrijkste parameters zijn als volgt:

· beveiligingskenmerken voor de gemaakte thread;

· draadstapelgrootte;

· startadres van de thread (meestal wordt de thread geassocieerd met de uitvoering van een van de functies die worden beschreven in het procesprogramma, en wordt de naam van de functie aangegeven als het startadres);

· een pointerparameter waarmee u bij het starten een waarde als argument aan de thread kunt doorgeven;

vlag voor het maken van een thread in een opgeschorte staat;

· verwijzing naar een variabele waarin de functie de identificatie van de gemaakte thread moet retourneren.

De retourwaarde van de CreateThread-functie is de handle van de gemaakte thread of NULL als de thread niet kon worden gemaakt.

Een uitstekend voorbeeld van een programma met meerdere threads is Microsoft Word. Terwijl de hoofdthread toetsenbordinvoer verwerkt, kan een afzonderlijke thread dynamisch de paginering van tekst berekenen, en kan een andere thread tegelijkertijd het document afdrukken of opslaan.

Om een ​​thread te beëindigen, gebruikt u de functieaanroep ExitThread. Om het hele proces te beëindigen, kan elk van de threads de functie ExitProcess aanroepen. De enige parameter voor elk van deze functies is de thread- of procesexitcode.

Het beëindigen van een proces resulteert in het vrijgeven van alle bronnen die eigendom zijn van het proces: geheugen, geopende bestanden, enz.

Wanneer een proces eindigt, worden alle threads beëindigd. Omgekeerd, wanneer de laatste thread van een proces eindigt, eindigt het proces zelf.

Het is niet algemeen bekend dat een thread niet de kleinste rekeneenheid is. In feite kunt u met Windows meerdere threads binnen een thread maken. vezels (vezel), die in de gebruikelijke terminologie kan worden omschreven als coroutines of als niet-preventieve verzonden taken die binnen dezelfde preventieve verzonden taak worden uitgevoerd. Het wisselen van vezels gebeurt alleen expliciet met behulp van de SwitchToFiber-functie. Voor het gebruik van coroutines, zie /15/.

Windows-planner

De taak van de planner is om de volgende thread te selecteren die moet worden uitgevoerd. De planner wordt in drie gevallen aangeroepen:

· als het tijdsegment dat aan de huidige thread is toegewezen, afloopt;

· als de huidige thread een blokkeerfunctie aanroept (bijvoorbeeld WaitForMultipleObjects of ReadFile) en in de wachtstatus terechtkomt;

· als een thread met een hogere prioriteit uit het wachten is ontwaakt of net is begonnen.

Er wordt een prioriteitswachtrijalgoritme gebruikt om een ​​thread te selecteren. Voor elk prioriteitsniveau houdt het systeem een ​​wachtrij met actieve threads bij (threads die zich in de gereedheidsstatus bevinden). De volgende thread uit de niet-lege wachtrij met de hoogste prioriteit wordt geselecteerd voor uitvoering.

Wachtrijen met actieve threads worden aangevuld door threads die uit de wachtstatus ontwaken en threads die door de planner worden voorrang genomen. Normaal gesproken wordt de thread aan het einde van de wachtrij geplaatst. Er wordt een uitzondering gemaakt voor een thread die wordt voorrang gegeven voordat het tijdsegment is verstreken door een thread met een hogere prioriteit. Zo'n "beledigde" draad wordt bovenaan de wachtrij geplaatst.

De tijdkwantumwaarde voor Windows-serverinstallaties is doorgaans 120 ms, voor werkstations – 20 ms.

Waarom denk je dat er een langere periode is voor servers?

Laten we nu meer over prioriteiten praten. Hoewel hun algemene doel voor alle versies van Windows hetzelfde is, kunnen de details variëren. De volgende discussie is gebaseerd op Windows NT 4.0.

Alle threadprioriteitsniveaus zijn genummerd van 0 (laagste prioriteit) tot 31 (hoogste). Niveaus 16 tot en met 31 worden opgeroepen realtime prioriteiten , zijn ze ontworpen om tijdkritische systeembewerkingen uit te voeren. Alleen het systeem zelf of een gebruiker met beheerdersrechten kan prioriteiten uit deze groep gebruiken. Niveaus van 0 tot 15 worden opgeroepen dynamische prioriteiten .

Windows gebruikt een prioriteitsschema in twee fasen. Wanneer een proces wordt aangemaakt, wordt het toegewezen aan een van de vier (en kan later door het programma zelf of door de gebruiker worden gewijzigd). prioriteit klassen , aan elk daarvan is een basisprioriteitwaarde gekoppeld:

· Echte tijd (basisprioriteit 24) – de hoogste prioriteitsklasse, alleen geldig voor systeemprocessen die de processor gedurende een zeer korte tijd in beslag nemen;

· Hoog (basisprioriteit 13) – klasse van processen met hoge prioriteit;

· Normaal (basisprioriteit 8) – de gebruikelijke prioriteitsklasse, waartoe de meeste gelanceerde applicatieprocessen behoren;

· Inactief (basisprioriteit 4) – de laagste (letterlijk “inactief” of “inactief”) prioriteitsklasse, typisch voor screensavers, prestatiemonitors en andere programma's die belangrijkere programma's niet mogen hinderen.

Eigenlijk is de prioriteit niet gekoppeld aan het proces, maar aan elk van de threads ervan. De prioriteit van een thread wordt bepaald door de basisprioriteit van het proces, waaraan de relatieve prioriteit van de thread wordt toegevoegd: een waarde van -2 tot +2. De relatieve prioriteit wordt aan een thread toegewezen wanneer deze wordt gemaakt en kan indien nodig worden gewijzigd. Het is ook mogelijk om aan een thread een kritische prioriteit (31 voor realtime processen, 15 voor andere) of inactieve prioriteit (16 voor realtime processen, 0 voor andere) toe te wijzen.

Voor real-time procesthreads zijn de prioriteiten statisch in die zin dat het systeem niet probeert deze naar eigen goeddunken te veranderen. Er wordt aangenomen dat voor deze groep processen het prioriteitsevenwicht precies moet zijn zoals de programmeur het bedoeld heeft.

Voor processen van de drie lagere klassen worden hun prioriteiten niet per ongeluk dynamisch genoemd. De planner kan de prioriteiten wijzigen, en tegelijkertijd de tijdsegmenten voor threads tijdens de uitvoering ervan, om een ​​eerlijker verdeling van de processortijd te bereiken. De regels voor het wijzigen van dynamische prioriteiten zijn als volgt.

· Wanneer een geblokkeerde thread heeft gewacht op de gebeurtenis die hij nodig heeft, wordt er een waarde toegevoegd aan de prioriteit van de thread, afhankelijk van de reden voor het wachten. Deze toename kan oplopen tot 6 eenheden (maar de prioriteit mag niet hoger zijn dan 15) als de draad wordt ontgrendeld door op een sleutel of muisknop te drukken. Op deze manier probeert het systeem de reactietijd op gebruikersacties te verkorten. Telkens wanneer een thread zijn tijdsegment volledig gebruikt, wordt de verhoging met 1 verminderd totdat de prioriteit van de thread terugkeert naar de opgegeven waarde.

· Als een thread eigenaar is van het voorgrondvenster (dat wil zeggen het venster waarmee de gebruiker werkt), kan de planner, om de responstijd te verkorten, de tijdkwantum voor deze thread verhogen van 20 ms naar 40 of 60 ms, afhankelijk van de systeeminstellingen .

· Als de planner detecteert dat een thread langer dan 3 seconden in de wachtrij staat, verhoogt hij de prioriteit naar 15 en verdubbelt hij zijn kwantum. Maar deze liefdadigheid is eenmalig: wanneer de Assepoester-draad het verhoogde kwantum opgebruikt of geblokkeerd wordt, keren de prioriteit en het kwantum ervan terug naar hun eerdere waarden. De betekenis van de promotie is duidelijk: het systeem probeert op zijn minst enige promotie te bieden, zelfs voor threads met een lage prioriteit.

Verwerk en draad als objecten

Met het Windows-subsysteem voor procesbeheer kunt u processen en threads beschouwen als objecten waarop threads in verschillende processen verschillende acties kunnen uitvoeren. Hiervoor is een proces- of draadhandvat vereist. Zoals we weten, worden dergelijke handvatten geretourneerd als bijproducten van de functies CreateProcess en CreateThread. Hierdoor kan het proces dat een ander proces of een andere thread heeft gestart, de nodige acties daarop uitvoeren. In sommige gevallen is het echter wenselijk om de mogelijkheid om een ​​proces te beheren niet aan het 'ouderproces' te geven, maar aan een ander, volledig niet-gerelateerd proces (bijvoorbeeld een systeembeheerprogramma). Het probleem hiermee is dat, zoals al opgemerkt, een handle in Windows alleen betekenis heeft binnen het proces dat de Create-functie aanroept en niet zomaar kan worden doorgegeven aan een ander proces.

Met de OpenProcess-functie kan één proces de handle van elk ander proces verkrijgen door twee parameters op te geven: de identificatie van het proces in kwestie en een masker dat de set gevraagde rechten met betrekking tot dit proces specificeert. Als het Windows-beveiligingssubsysteem, na controle van het toegangstoken van het aanvragende proces met de security descriptor van het objectproces (zie paragraaf 3.8.4.1), het verzoek als legitiem beschouwt, zal de functie de vereiste handle retourneren.

Over welke rechten hebben we het precies? Wat kan het ene proces precies met een ander proces doen? De belangrijkste rechten zijn als volgt:

· start een nieuwe procesthread;

· de prioriteitsklasse van een proces opvragen en wijzigen;

· gebruik het proces als synchronisatieobject;

· de procesuitvoering met kracht stopzetten;

· vraag de procesbeëindigingscode op.

Alle bovenstaande acties worden uitgevoerd met behulp van de overeenkomstige API-functies (om bijvoorbeeld een proces te beëindigen, wordt de functie TerminateProcess aangeroepen), waarvan een van de parameters de handle van het open procesobject specificeert.

Synchronisatie van threads

Synchronisatiemethoden

Windows biedt verschillende mogelijkheden voor het synchroniseren van het werk van threads, dat wil zeggen, met andere woorden, voor het organiseren van een thread om passief te wachten op bepaalde gebeurtenissen die verband houden met het werk van andere threads van hetzelfde proces of andere processen.

· De traditionele vorm van synchronisatie voor Windows is delen berichten (berichten). Tegelijkertijd is het berichtenmechanisme niet alleen bedoeld voor synchronisatie, maar ook voor gegevensuitwisseling. Vervolgens wordt het werken met berichten uitgebreid besproken.

· Met behulp van kunnen diverse wachtomstandigheden worden gerealiseerd synchronisatieobjecten En wachtfuncties , waarmee u een thread kunt blokkeren totdat het opgegeven object de signaalstatus bereikt.

· Het gebruik van variabelen van het type CRITICAL_SECTION is, in tegenstelling tot eerdere methoden, alleen mogelijk om threads van hetzelfde proces te synchroniseren, maar het wordt efficiënter geïmplementeerd in termen van tijd en geheugen.