Processer og tråde i styresystemer (OS) har altid været nogle af mine yndlingsemner i datalogi. De giver dig mulighed for at forstå, på en meget dybere måde, hvordan operativsystemet styrer programmer i deres forskellige udførelsesfaser, håndterer spørgsmål vedrørende hukommelse og sikrer isoleret sikkerhed helt ned til kernen. Det er bare forbandet interessant!
Den grundlæggende idé
En proces er simpelthen et program under udførelse. Et program har strengt taget kun én proces tilknyttet. I meget sjældne tilfælde er dette måske ikke altid sandt (Google Chrome som eksempel), men det er sandt det meste af tiden.
Hver proces har forskellige komponenter, der gør det muligt for den at udføre sine planlagte opgaver. Især stakken og heap bruges til henholdsvis tildeling af lokale variabler og dynamisk hukommelse.
Der er flere komponenter, men det er tilstrækkeligt at sige, at hver proces har brug for disse komponenter for at kunne køre som et program.
Overvågning af processer i systemet
På et givet tidspunkt kan der være et par hundrede eller færre processer, der kører. Nogle gange er det nyttigt at se detaljerede oplysninger om dem, især hvis din computer kører langsomt: da visse processer kan beslaglægge computerens hukommelse eller CPU. Det er meget praktisk at kunne lokalisere dem og efterfølgende ødelægge dem, og det kan gøres ret nemt.
Hvis du kører Windows, kan du åbne Task Manager og klikke på fanen Processer for at se disse oplysninger. Hvis du kører Linux eller en Unix-baseret maskine, kan du køre en række forskellige kommandoer:
ps aux // this will display a list of processestop // detailed information about all processes, threads, memory hoggers and network packets
Hvordan styrer operativsystemet processer
En proces kan være i en bestemt tilstand på et hvilket som helst tidspunkt. Den kan netop være blevet oprettet, vente på at blive kørt, vente på adgang til en eller anden I/O-enhed, være afbrudt af en anden proces osv. For at sikre maksimal produktivitet skal operativsystemet forstå tilstanden af alle disse processer og være i stand til intelligent at oprette nye processer, skifte mellem dem, sætte dem på pause, suspendere dem osv. på de rigtige tidspunkter.
For at gøre dette effektivt vedligeholder operativsystemet en såkaldt proceskontrolblok for hver proces. Den indeholder nyttige oplysninger som f.eks. den aktuelle procestilstand, den næste instruktion, der skal udføres, og de aktuelt allokerede enheder til processen.
Dette gør det muligt for operativsystemet at administrere forskellige processer effektivt ved at gemme den aktuelle tilstand i blokken, skifte mellem dem og genindlæse visse processer senere.
Hvordan skifter operativsystemet mellem forskellige processer
Kontekstskifte henviser til den specifikke aktivitet, hvor et operativsystem gemmer tilstanden for en kørende proces og sætter den på pause for at køre en anden proces. Det skal gøre det på en måde, der sikrer, at disse processer ikke kommer i konflikt, og at den gemte proces kan genoptages senere uden problemer. Dette sikrer en vigtig funktion i styresystemer: multitasking. Diagrammet viser, hvordan PCB bruges til at gemme status for en proces, køre en anden og derefter genindlæse og fortsætte den oprindelige proces senere.