Proces

Proces er et begreb, som forekommer i forbindelse med parallelle programmer og styresystemer med multitasking eller flere samtidige brugere. Ordet proces er kun et ud af mange ord, der bruges. Andre ord, som er leverandørspecifikke termer eller bruges om de forskellige varianter af begrebet, er: Task, thread, tråd, corutine, activity, login, daemon.

Det er ikke helt enkelt at give en definition på proces-begrebet, idet definitionen afhænger af, hvilken indfaldsvinkel man har: styresystem-konstruktør, programmør af tidstro systemer, Pascal-programmør, teoretiker. Der er en række muligheder for definitionen på en proces, og de følgende har alle været brugt:

  • Et program under udførelse
  • Genstanden for multiprogrammering
  • De ressourcer, der skal være til rådighed i en maskine, for at et program skal kunne afvikles: arbejdslager, CPU-tidsandel, ressourcer på baggrundslager, accesrettigheder
  • En datastruktur i styresystemets kerne
  • En del af et parallelt program, som udføres sekventielt
  • En virtuel CPU

Begrebet proces bruges således til at beskrive noget, som svarer til en CPU, men ikke nødvendigvis er en selvstændig processor, og som kan afvikle et program parallelt med andre programmer; der er altså tale om en abstraktion af en computer.

Procesbegrebet benyttes dels som struktureringsmekanisme i programmeringssprog (på linie med blokke, procedurer og klasser), dels som et element i styresystemer. Findes procesbegrebet i et programmeringssprog, må det omgivende system også have et procesbegreb. Er disse begreber ikke ens, kan det give problemer med udførelseshastigheden.

I mange tilfælde kan en kompliceret programmeringsopgave løses simplere ved at opdele programmet i et antal processer. Disse processer kan selv skabe nye processer, når det er nødvendigt. Det er f.eks. meget brugt i programmel til datakommunikation at lade én proces tage sig af at sende data, mens en anden varetager modtagelse af data. Den del af programmellet, der har brug for kommunikationen, vil da typisk udgøre en tredje proces eller selv være underopdelt. Grundlæggende for denne type af programmel er, at processerne har brug for indbyrdes kommunikation til koordinering (synkronisering) og intern dataudveksling.

At der findes mange forskellige varianter af begrebet proces, skyldes hensynet til effektiviteten. Mange tidstro systemer arbejder med strenge tidskrav. Styresystemets håndtering af skift mellem processer i multiprogrammerede systemer er derfor meget kritisk, og de forskellige varianter er hver designet med henblik på et givet sæt opgaver.

Processer i et styresystem vil ofte optræde i familier eller grupper, der hører sammen, fordi de stammer fra enten samme program eller samme terminalsession. Denne sammenhæng kan give sig udtryk i de ressourcer og rettigheder, en proces besidder. Processer organiseres ofte i et familietræ (eller hierarki), hvor rettigheder nedarves fra faderproces til barneproces. Faderprocessen bestemmer de attributter, ressourcer og rettigheder, barnet har; eksempler er prioritet, lagerplads og adgangsrettigheder til filer og ydre enheder.

Ofte vil der forekomme en afhængighed mellem fader- og barneproces, f.eks. at faderprocessen venter, indtil barneprocessen terminerer. Faderprocessen vil ofte have et vist ansvar for, hvorledes barneprocessen opfører sig, og skal kunne rydde op efter en fejlramt barneproces. Faderprocesser understøttes af styresystemer som UNIX og OS/2.

Forfattere: 
Klaus Hansen
Casper Thomsen