logo

Process vs. Tråd | Skillnaden mellan process och tråd

'Skillnaden mellan process och tråd' är en av de vanligaste frågorna vid tekniska intervjuer. Både processer och trådar är relaterade till varandra och väldigt lika, vilket skapar förvirring för att förstå skillnaderna mellan dem båda. Processen och tråden är en oberoende sekvens av exekvering, men båda är differentierade på ett sätt som processer körs i olika minnesutrymmen, medan trådar av samma process körs i delat minnesutrymme.

I det här ämnet kommer vi att förstå den korta introduktionen av processer och trådar och vad som är andra skillnader mellan dem båda.

Process vs. Tråd

Vad är process?

En process är en instans av ett program som körs. När vi kör ett program körs det inte direkt. Det tar lite tid att följa alla steg som krävs för att köra programmet, och att följa dessa exekveringssteg kallas en process.

En process kan skapa andra processer för att utföra flera uppgifter åt gången; de skapade processerna kallas klon- eller barnprocess , och huvudprocessen är känd som föräldraprocess . Varje process innehåller sitt eget minnesutrymme och delar det inte med de andra processerna. Det är känt som den aktiva enheten. En typisk process finns kvar i formuläret nedan i minnet.

csma och csma cd
Process vs. Tråd

En process i OS kan förbli i något av följande tillstånd:

    NY: En ny process skapas.REDO: En process är klar och väntar på att tilldelas en processor.LÖPNING: Programmet körs.VÄNTAR: Väntar på att någon händelse ska hända eller inträffa.AVSLUTAD: Utförande avslutat.

Hur fungerar processer?

När vi börjar köra programmet börjar processorn bearbeta det. Det tar följande steg:

prova catch block i java
  • För det första laddas programmet in i datorns minne i binär kod efter översättning.
  • Ett program kräver minne och andra OS-resurser för att köra det. Resurserna som register, programräknare och en stack, och dessa resurser tillhandahålls av OS.
  • Ett register kan ha en instruktion, en lagringsadress eller annan data som krävs av processen.
  • Programräknaren upprätthåller spåret för programsekvensen.
  • Stacken har information om de aktiva subrutinerna i ett datorprogram.
  • Ett program kan ha olika instanser av det, och varje instans av det pågående programmet kallas den individuella processen.

Funktioner i Process

  • Varje gång vi skapar en process måste vi göra ett separat systemanrop för varje process till OS. De gaffel ()-funktionen skapar processen.
  • Varje process finns inom sin egen adress eller minnesutrymme.
  • Varje process är oberoende och behandlas som en isolerad process av OS.
  • Processer behöver IPC (Inter-process Communication) för att kunna kommunicera med varandra.
  • En korrekt synkronisering mellan processer krävs inte.

Vad är tråd?

En tråd är delmängden av en process och är också känd som den lätta processen. En process kan ha mer än en tråd, och dessa trådar hanteras oberoende av schemaläggaren. Alla trådar inom en process är relaterade till varandra. Trådar har en del gemensam information, som t.ex datasegment, kodsegment, filer, etc., som delas med sina kamratrådar. Men innehåller sina egna register, stack och räknare.

Process vs. Tråd

Hur fungerar tråden?

Som vi har diskuterat att en tråd är en delprocess eller en exekveringsenhet inom en process. En process kan innehålla en enda tråd till flera trådar. En tråd fungerar så här:

  • När en process startar tilldelar OS minnet och resurserna till den. Varje tråd i en process delar endast minnet och resurserna för den processen.
  • Trådar används främst för att förbättra behandlingen av en ansökan. I verkligheten exekveras bara en enda tråd åt gången, men på grund av snabb kontextväxling mellan trådar ger en illusion av att trådar löper parallellt.
  • Om en enda tråd körs i en process kallas den en entrådig Och om flera trådar körs samtidigt kallas det multitrådning.

Typer av trådar

Det finns två typer av trådar, som är:

1. Tråd på användarnivå

delsträngsmetod i java

Som namnet antyder, hanteras trådarna på användarnivå endast av användare, och kärnan har inte sin information.

Dessa är snabbare, enkla att skapa och hantera.

Kärnan tar alla dessa trådar som en enda process och hanterar dem bara som en process.

Trådarna på användarnivå implementeras av bibliotek på användarnivå, inte av systemanrop.

2. Tråd på kärnnivå

Trådarna på kärnnivå hanteras av operativsystemet och hanteras av dess kärna. Dessa trådar är långsammare än trådar på användarnivå eftersom kontextinformation hanteras av kärnan. För att skapa och implementera en tråd på kärnnivå måste vi göra ett systemanrop.

hitta i kartan c++

Funktioner i tråden

  • Trådar delar data, minne, resurser, filer etc. med sina peer-trådar inom en process.
  • Ett systemanrop kan skapa mer än en tråd.
  • Varje tråd har sin egen stack och register.
  • Trådar kan direkt kommunicera med varandra eftersom de delar samma adressutrymme.
  • Trådar måste synkroniseras för att undvika oväntade scenarier.

Viktiga skillnader mellan process och tråd

  • En process är oberoende och ingår inte i en annan process, medan alla trådar logiskt finns i en process.
  • Processer är tungt viktade, medan trådar är lätta.
  • En process kan existera individuellt eftersom den innehåller sitt eget minne och andra resurser, medan en tråd inte kan ha sin individuella existens.
  • En korrekt synkronisering mellan processer krävs inte. Däremot måste trådar synkroniseras för att undvika oväntade scenarier.
  • Processer kan kommunicera med varandra endast med hjälp av kommunikation mellan processer; däremot kan trådar direkt kommunicera med varandra eftersom de delar samma adressutrymme.

Skillnadstabell mellan process och tråd

Bearbeta Tråd
En process är en instans av ett program som körs eller bearbetas. Tråd är ett segment av en process eller en lätt process som hanteras av schemaläggaren oberoende.
Processer är oberoende av varandra och delar därför inte ett minne eller andra resurser. Trådar är beroende av varandra och delar minne.
Varje process behandlas som en ny process av operativsystemet. Operativsystemet tar alla trådar på användarnivå som en enda process.
Om en process blockeras av operativsystemet kan den andra processen fortsätta exekveringen. Om någon tråd på användarnivå blockeras, blockeras alla dess peer-trådar också eftersom OS tar alla som en enda process.
Kontextväxling mellan två processer tar mycket tid eftersom de är tunga jämfört med tråd. Kontextväxling mellan trådarna går snabbt eftersom de är väldigt lätta.
Datasegmentet och kodsegmentet för varje process är oberoende av den andra. Trådar delar datasegment och kodsegment med sina peer-trådar; därför är det samma för andra trådar också.
Operativsystemet tar längre tid att avsluta en process. Trådar kan avslutas på väldigt kort tid.
Att skapa nya processer tar längre tid eftersom varje ny process tar alla resurser. En tråd behöver mindre tid för att skapas.