Process (beräkning) - Process (computing)

I beräkning , en process är exempel på ett datorprogram som exekveras av en eller flera trådar . Den innehåller programkoden och dess aktivitet. Beroende på operativsystemet (OS) kan en process bestå av flera körningstrådar som utför instruktioner samtidigt .

Medan ett datorprogram är en passiv samling instruktioner som vanligtvis lagras i en fil på disk, är en process utförandet av dessa instruktioner efter att de har laddats från disken till minnet. Flera processer kan vara associerade med samma program; till exempel, öppnar flera instanser av samma program resulterar ofta i att mer än en process körs.

Multitasking är en metod för att tillåta flera processer att dela processorer (CPU: er) och andra systemresurser. Varje CPU (kärna) utför en enda uppgift i taget. Multitasking gör det dock möjligt för varje processor att växla mellan uppgifter som utförs utan att behöva vänta på att varje uppgift är klar ( preempt ). Beroende på operativsystemets implementering kan switchar utföras när uppgifter initieras och väntar på att ingångs-/utdataoperationer är klara, när en uppgift frivilligt ger CPU: n, avbryter maskinvaran och när operativsystemsplaneraren beslutar att en process har löpt ut. andel av CPU -tiden (t.ex. av den helt rättvisa schemaläggaren för Linux -kärnan ).

En vanlig form av multitasking tillhandahålls av CPU: s tidsdelning som är en metod för att sammanfoga körningen av användares processer och trådar, och även av oberoende kärnuppgifter - även om den senare funktionen endast är möjlig i förebyggande kärnor som Linux . Preemption har en viktig bieffekt för interaktiva processer som ges högre prioritet med avseende på processbundna processer, därför tilldelas användarna omedelbart beräkningsresurser vid ett enkelt tryck på en tangent eller när de flyttar en mus. Dessutom ges applikationer som video och musikåtergivning någon form av realtidsprioritet, vilket förhindrar alla andra processer med lägre prioritet. I tidsdelning system, kontext växlar utförs snabbt, vilket gör det verkar som flera processer som körs samtidigt på samma processor. Denna samtidiga körning av flera processer kallas samtidighet .

För säkerhet och tillförlitlighet förhindrar de flesta moderna operativsystem direkt kommunikation mellan oberoende processer, vilket ger strikt förmedlad och kontrollerad kommunikation mellan processer.

Representation

En lista över processer som visas av htop
En processbord som visas av KDE System Guard
En processbord som visas av KDE System Guard

I allmänhet består en datorsystemprocess av (eller sägs äga ) följande resurser:

  • En bild av den körbara maskinkoden som är associerad med ett program.
  • Minne (vanligtvis någon region av virtuellt minne ); som inkluderar den körbara koden, processspecifika data (in- och utdata), en samtalsstack (för att hålla reda på aktiva underrutiner och/eller andra händelser) och en hög för att hålla mellanliggande beräkningsdata som genereras under körtid.
  • Operativsystemets beskrivningar av resurser som tilldelas processen, till exempel filbeskrivare ( Unix -terminologi) eller handtag ( Windows ), och datakällor och sänkor.
  • Säkerhetsattribut , till exempel processägaren och processens uppsättning behörigheter (tillåtna operationer).
  • Processortillstånd ( sammanhang ), till exempel registerinnehåll och adressering av fysiskt minne. Det tillstånd är normalt lagras i datorregistren när processen körs, och i minnet annars.

Operativsystemet innehåller det mesta av denna information om aktiva processer i datastrukturer som kallas processkontrollblock . Varje delmängd av resurserna, vanligtvis åtminstone processortillståndet, kan associeras med var och en av processens trådar i operativsystem som stöder trådar eller underordnade processer.

Operativsystemet håller sina processer åtskilda och tilldelar de resurser de behöver, så att de är mindre benägna att störa varandra och orsaka systemfel (t.ex. dödläge eller stötar ). Operativsystemet kan också tillhandahålla mekanismer för kommunikation mellan processer för att möjliggöra för processer att interagera på säkra och förutsägbara sätt.

Multitasking och processhantering

Ett multitasking -operativsystem kan bara växla mellan processer för att ge utseende på många processer som körs samtidigt (det vill säga parallellt ), men i själva verket kan bara en process köras samtidigt på en enda CPU (om inte CPU: n har flera kärnor , då kan multithreading eller annan liknande teknik användas).

Det är vanligt att associera en enda process med ett huvudprogram och barnprocesser med alla spin-off, parallella processer, som beter sig som asynkrona underrutiner. En process sägs äga resurser, varav en bild av dess program (i minnet) är en sådan resurs. I flerbearbetningssystem kan emellertid många processer köras ur eller dela samma återinträdande program på samma plats i minnet, men varje process sägs äga sin egen bild av programmet.

Processer kallas ofta "uppgifter" i inbäddade operativsystem. Känslan av "process" (eller uppgift) är "något som tar tid", i motsats till "minne", som är "något som tar plats".

Ovanstående beskrivning gäller både processer som hanteras av ett operativsystem och processer som definieras av processberäkningar .

Om en process begär något som den måste vänta på kommer den att blockeras. När processen är i blockerat tillstånd är den berättigad att byta till disk, men detta är transparent i ett virtuellt minnessystem , där regioner i processens minne verkligen kan finnas på hårddisken och inte i huvudminnet när som helst. Observera att även delar av aktiva processer/uppgifter (kör program) är berättigade att byta till disk, om delarna inte har använts nyligen. Alla delar av ett körprogram och dess data måste inte finnas i det fysiska minnet för att den associerade processen ska vara aktiv.

Processlägen

De olika processtillstånden, som visas i ett tillståndsdiagram , med pilar som indikerar möjliga övergångar mellan tillstånd.

Ett operativsystem kärna som tillåter multitasking behov processer för att ha vissa stater . Namn på dessa tillstånd är inte standardiserade, men de har liknande funktioner.

  • Först "skapas" processen genom att den laddas från en sekundär lagringsenhet ( hårddisk , CD-ROM , etc.) i huvudminnet . Därefter tilldelar processchemaläggaren statusen "väntar".
  • Medan processen "väntar" väntar den på att schemaläggaren ska göra en så kallad kontextväxling . Kontextomkopplaren laddar in processen i processorn och ändrar tillståndet till "kör" medan den tidigare "körande" processen lagras i ett "väntande" tillstånd.
  • Om en process i tillståndet "kör" måste vänta på en resurs (vänta på att användarinmatning eller fil öppnas, till exempel), tilldelas den "blockerad" status. Processläget ändras tillbaka till "väntar" när processen inte längre behöver vänta (i ett blockerat tillstånd).
  • När processen är klar med körningen eller avslutas av operativsystemet behövs den inte längre. Processen tas bort direkt eller flyttas till "avslutat" tillstånd. När den tas bort väntar den bara på att tas bort från huvudminnet.

Kommunikation mellan processer

När processer behöver kommunicera med varandra måste de dela delar av sina adressutrymmen eller använda andra former av interprocesskommunikation (IPC). Till exempel i en skalrörledning måste utgången från den första processen passera till den andra, och så vidare; ett annat exempel är en uppgift som kan brytas ned i samarbetsvilliga men delvis oberoende processer som kan köras på en gång (dvs med samtidighet eller sann parallellism - den senare modellen är ett särskilt fall av samtidig körning och är genomförbart när tillräckligt med CPU -kärnor är tillgängliga för alla processer som är redo att köras).

Det är till och med möjligt att två eller flera processer körs på olika maskiner som kan köra olika operativsystem (OS), därför behövs några mekanismer för kommunikation och synkronisering (kallade kommunikationsprotokoll för distribuerad dator) (t.ex. Message Passing Interface, ofta helt enkelt kallad MPI ).

Historia

I början av 1960 -talet hade datorstyrningsprogramvara utvecklats från programvara för bildskärmsstyrning , till exempel IBSYS , till mjukvara för exekutiv kontroll . Med tiden blev datorer snabbare medan datortiden fortfarande var varken billig eller fullt utnyttjad; en sådan miljö gjorde multiprogrammering möjlig och nödvändig. Multiprogrammering innebär att flera program körs samtidigt . Först mer än ett program körde på en enda processor, som ett resultat av underliggande uniprocessor datorarkitektur, och de delade knappa och begränsade resurser hårdvara; följaktligen var samtidigheten av seriell karaktär. På senare system med flera processorer kan flera program köras samtidigt parallellt .

Program består av sekvenser av instruktioner för processorer. En enda processor kan bara köra en instruktion i taget: det är omöjligt att köra fler program samtidigt. Ett program kan behöva någon resurs , till exempel en inmatningsenhet, som har en stor fördröjning, eller ett program kan starta lite långsamt, till exempel att skicka utmatning till en skrivare. Detta skulle leda till att processorn är "inaktiv" (oanvänd). För att hålla processorn upptagen hela tiden avbryts körningen av ett sådant program och operativsystemet byter processorn för att köra ett annat program. För användaren verkar det som om programmen körs samtidigt (därav termen "parallell").

Kort därefter utvidgades begreppet "program" till begreppet "exekverande program och dess sammanhang". Konceptet med en process föddes, vilket också blev nödvändigt med uppfinningen av kod för återinträde . Trådarna kom något senare. Men med tillkomsten av begrepp som tidsdelning , datanät och flera CPU delade minnes datorer, den gamla "multiprogrammering" gav vika för sann multitasking , flera processorer och senare multitrådning .

Se även

Anteckningar

Referenser

Vidare läsning

externa länkar