What information does an operating system hold about a process?

Processer: Din computers usynlige motor

24/09/2023

Rating: 4.25 (6161 votes)

Hver gang du starter din computer, tænder for en browser eller udskriver et dokument, sætter du en række usynlige arbejdere i gang. Disse arbejdere, kendt som processer, er den grundlæggende enhed for arbejde i ethvert moderne operativsystem. De er selve livsnerven i din computers funktionalitet. Uden dem ville din computer være en livløs kasse. Men hvad er en proces egentlig? Forestil dig en proces som en aktiv opgave, der skal udføres. Et program på din harddisk er passivt, ligesom en opskrift i en kogebog. Først når du beslutter dig for at lave retten – læser opskriften, samler ingredienserne og begynder at lave mad – bliver det til en aktiv proces. På samme måde bliver et program til en proces, når operativsystemet indlæser det i hukommelsen og begynder at udføre dets instruktioner.

What is a process in a computer?
In an operating system, a process can be defined as an entity that represents the basic unit of work to be implemented in the system. When a user boots up a PC, many processes are started unknown to the user. Some of the most common processes are as follows. A process that waits for incoming email.

Selv på et system med en enkelt CPU-kerne kan det virke, som om mange ting sker på én gang. Du kan lytte til musik, mens du browser på internettet og downloader en fil. Denne illusion af parallelitet, kendt som pseudoparallelisme, opnås ved, at CPU'en skifter mellem forskellige processer i en utrolig høj hastighed. Den arbejder på én proces i et par millisekunder, gemmer dens tilstand, og skifter så til den næste. Fordi det sker så hurtigt, opfatter vi det som en jævn og samtidig udførelse af flere opgaver.

Indholdsfortegnelse

Hvad er en procesmodel?

For at holde styr på disse utallige aktive opgaver, organiserer operativsystemet al kørende software i en struktureret model. Når et program bliver til en proces, tildeles det et specifikt område i computerens hukommelse, som typisk er opdelt i fire hovedsektioner:

  • Tekst (Text): Denne sektion indeholder selve programkoden, altså de instruktioner, som CPU'en skal udføre. Denne del er normalt skrivebeskyttet for at forhindre processen i ved et uheld at ændre sine egne instruktioner.
  • Data: Her lagres globale og statiske variabler, som er initialiseret i programkoden. Det er de data, som processen arbejder med fra starten.
  • Heap: Dette er et fleksibelt hukommelsesområde, der tildeles dynamisk til processen, mens den kører. Når en proces har brug for mere hukommelse til f.eks. at oprette nye objekter eller datastrukturer, anmoder den om det fra 'heapen'.
  • Stak (Stack): Stakken bruges til midlertidige data såsom lokale variabler i funktioner, funktionsparametre og returadresser. Hver gang en funktion kaldes, skubbes en ny ramme (frame) på stakken, og når funktionen er færdig, fjernes rammen igen. Dette er en meget organiseret LIFO (Last-In, First-Out) struktur.

Denne organisering sikrer, at hver proces har sit eget private arbejdsområde, isoleret fra andre processer, hvilket forhindrer dem i at forstyrre hinanden og bidrager til systemets overordnede stabilitet.

En proces' livscyklus: Fra fødsel til afslutning

Ligesom alt levende har en proces en livscyklus. Den bliver skabt, den udfører sit arbejde, og til sidst afsluttes den. At forstå denne cyklus er afgørende for at forstå, hvordan et operativsystem administrerer ressourcer.

Processkabelse: Hvordan starter det hele?

En proces opstår ikke ud af ingenting. Der er flere begivenheder, der kan udløse oprettelsen af en ny proces:

  • Systemopstart: Når operativsystemet starter, oprettes en række baggrundsprocesser (også kendt som dæmoner i UNIX-lignende systemer), der håndterer netværk, brugerlogin, planlægning og meget mere.
  • Brugeranmodning: Den mest almindelige årsag er, når en bruger bevidst starter et program ved at dobbeltklikke på et ikon eller skrive en kommando.
  • En kørende proces anmoder om det: En eksisterende proces kan oprette en ny proces for at udføre en specifik opgave. Et webserver-program kan f.eks. oprette en ny proces for hver indkommende anmodning.

Når en proces skaber en anden, opstår et forælder-barn-forhold. Den oprindelige proces kaldes forælderproces, og den nye kaldes en barneproces. Barneprocessen kan arve mange af forælderens egenskaber, såsom åbne filer, men den får sit eget unikke proces-ID og sit eget adresserum i hukommelsen for at sikre uafhængighed.

Procesafslutning: Hvorfor slutter de?

Enhver proces vil på et tidspunkt nå sin ende. Denne afslutning kan ske af flere årsager, som groft kan opdeles i frivillige og ufrivillige kategorier.

Frivillig afslutning:

  • Normal afslutning: Den mest almindelige årsag. Processen har fuldført sin opgave og kalder et systemkald (f.eks. `exit()` i UNIX) for at meddele operativsystemet, at den er færdig.

Ufrivillig afslutning:

  • Fejlagtig afslutning: Processen støder på en fatal fejl, den ikke kan håndtere. Eksempler inkluderer forsøg på at dividere med nul, adgang til ulovlig hukommelse eller udførelse af en ugyldig instruktion.
  • Afsluttet af en anden proces: En proces med de nødvendige rettigheder kan anmode operativsystemet om at afslutte en anden proces (f.eks. via `kill`-kommandoen i UNIX). Dette bruges ofte af administratorer til at stoppe processer, der opfører sig dårligt.
  • Forælderprocessen afsluttes: I nogle systemer vil afslutningen af en forælderproces automatisk medføre afslutning af alle dens barneprocesser.

Processernes hierarki: Familieforhold i computeren

Forholdet mellem forælder- og barneprocesser kan skabe en træstruktur eller et hierarki. Hvordan dette hierarki håndteres, varierer dog betydeligt mellem forskellige operativsystemer. Det er vigtigt at forstå disse forskelle, da det påvirker, hvordan processer interagerer og administreres.

OperativsystemHåndtering af hierarki
UNIX/LinuxHar et stærkt og veldefineret hierarki. Enhver proces (undtagen den allerførste 'init'-proces) har én forælder. Processer og deres efterkommere (børn, børnebørn osv.) kan danne en 'procesgruppe'. Dette gør det muligt at sende signaler, f.eks. et afslutningssignal fra tastaturet, til hele gruppen på én gang.
WindowsHar intet formelt proceshierarki. Alle processer behandles som ligeværdige. Når en proces opretter en anden, modtager forælderen et specielt 'handle' (en reference) til barneprocessen, som giver den kontrol. Denne 'handle' kan dog overføres til en helt anden proces, hvilket effektivt bryder det oprindelige forælder-barn-link.

Forstå processens tilstande

En proces er ikke altid aktivt i gang med at bruge CPU'en. I løbet af sin levetid skifter den mellem forskellige tilstande. En simpel model, to-tilstandsmodellen, opdeler blot processer i 'kørende' og 'ikke-kørende'. En mere detaljeret og udbredt model er fem-tilstandsmodellen, som giver et mere nuanceret billede af en proces' rejse gennem systemet. Denne tilstandsmodel er fundamental for operativsystemets planlægningsalgoritmer.

  • Ny (New): Processen er ved at blive oprettet. Operativsystemet har endnu ikke tildelt den alle de nødvendige ressourcer eller optaget den i puljen af klar-processer.
  • Klar (Ready): Processen har alt, hvad den behøver for at køre, og er indlæst i hukommelsen. Den venter kun på at blive tildelt CPU-tid af systemets planlægger (scheduler).
  • Kørende (Running): Processens instruktioner bliver i øjeblikket udført af CPU'en. På et system med én kerne kan der kun være én proces i denne tilstand ad gangen.
  • Ventende (Waiting): Processen kan ikke fortsætte, fordi den venter på en begivenhed. Det kan være afslutningen af en I/O-operation (f.eks. at læse fra en fil), eller at den venter på et signal fra en anden proces.
  • Afsluttet (Terminated): Processen har afsluttet sin kørsel. Operativsystemet er i gang med at rydde op og frigive de ressourcer, processen brugte (hukommelse, filer osv.).

Bag kulisserne: Hvordan holder systemet styr på det hele?

Med potentielt hundredvis eller tusindvis af processer, der kører samtidigt, hvordan holder operativsystemet styr på dem alle? Svaret ligger i en central datastruktur kaldet procestabellen. Man kan tænke på dette som operativsystemets kartotek over alle aktive processer.

For hver enkelt proces i systemet findes der en post i denne procestabel. Hver post, ofte kaldet en Process Control Block (PCB), indeholder al den information, operativsystemet har brug for for at administrere processen. Indholdet kan variere, men inkluderer typisk:

  • Proces-ID (PID): Et unikt identifikationsnummer for processen.
  • Procestilstand: Den aktuelle tilstand (Ny, Klar, Kørende, Ventende, Afsluttet).
  • Programtæller (Program Counter): Peger på adressen for den næste instruktion, der skal udføres for denne proces. Dette er afgørende for at kunne genoptage en proces, efter den har været pauset.
  • CPU-registre: En kopi af indholdet i CPU'ens registre. Når en proces pauses, gemmes disse værdier, så de kan gendannes, når processen skal køre igen.
  • Hukommelsesinformation: Oplysninger om, hvilke dele af hukommelsen processen har adgang til (f.eks. base- og grænseregistre).
  • Regnskabsinformation: Statistikker som f.eks. hvor meget CPU-tid processen har brugt, tidsgrænser osv.
  • I/O-statusinformation: En liste over I/O-enheder tildelt processen og en liste over åbne filer.

Denne tabel er hjertet i operativsystemets processtyring. Når CPU'en skifter fra en proces til en anden, gemmer den den nuværende process' tilstand i dens post i procestabellen og indlæser den næste process' tilstand fra dens post.

Ofte Stillede Spørgsmål (FAQ)

Er en proces det samme som et program?

Nej, selvom de er tæt beslægtede. Et program er en passiv fil med instruktioner, der ligger på din harddisk (f.eks. `chrome.exe`). En proces er en aktiv, kørende instans af et program, der er blevet indlæst i hukommelsen og har tildelt systemressourcer. Du kan have flere processer kørende fra det samme program (f.eks. flere åbne Chrome-vinduer).

Kan min computer køre flere processer på én gang?

Det afhænger af din CPU. En computer med en enkelt CPU-kerne kan kun udføre én instruktion ad gangen. Den skaber dog illusionen af multitasking ved at skifte mellem processer ekstremt hurtigt (konkurrerende udførelse). En computer med flere CPU-kerner (multi-core) kan køre flere processer ægte samtidigt, én på hver kerne (parallel udførelse).

Hvad er en 'child process'?

En 'child process' (barneproces) er en ny proces, der er oprettet af en eksisterende proces (en 'parent process' eller forælderproces). Dette er en almindelig måde at uddelegere opgaver på. Barnet arver typisk visse attributter fra sin forælder, men fungerer som en uafhængig enhed med sit eget hukommelsesrum og ressourcer.

Hvis du vil læse andre artikler, der ligner Processer: Din computers usynlige motor, kan du besøge kategorien Teknologi.

Go up