'Forskjellen mellom prosess og tråd' er et av de mye stilte spørsmålene i tekniske intervjuer. Både prosesser og tråder er relatert til hverandre og er veldig like, og skaper derfor forvirring for å forstå forskjellene mellom dem begge. Prosessen og tråden er en uavhengig sekvens av utførelse, men begge er differensiert på en måte som prosesser utføres i forskjellige minneplasser, mens tråder av samme prosess kjøres i delt minneplass.
I dette emnet vil vi forstå den korte introduksjonen av prosesser og tråder og hva som er andre forskjeller mellom dem begge.
Hva er prosess?
En prosess er en forekomst av et program som kjøres. Når vi kjører et program, kjøres det ikke direkte. Det tar litt tid å følge alle trinnene som kreves for å kjøre programmet, og å følge disse utføringstrinnene er kjent som en prosess.
En prosess kan opprette andre prosesser for å utføre flere oppgaver om gangen; de opprettede prosessene er kjent som klon eller barneprosess , og hovedprosessen er kjent som foreldreprosess . Hver prosess inneholder sin egen minneplass og deler den ikke med de andre prosessene. Det er kjent som den aktive enheten. En typisk prosess forblir i skjemaet nedenfor i minnet.
En prosess i OS kan forbli i en av følgende tilstander:
Hvordan fungerer prosesser?
Når vi begynner å kjøre programmet, begynner prosessoren å behandle det. Den tar følgende trinn:
- For det første lastes programmet inn i datamaskinens minne i binær kode etter oversettelse.
- Et program krever minne og andre OS-ressurser for å kjøre det. Ressursene som registre, programteller og en stabel, og disse ressursene er levert av OS.
- Et register kan ha en instruksjon, en lagringsadresse eller andre data som kreves av prosessen.
- Programtelleren opprettholder sporet av programsekvensen.
- Stabelen har informasjon om de aktive underrutinene til et dataprogram.
- Et program kan ha forskjellige forekomster av det, og hver forekomst av det kjørende programmet er kjent som den individuelle prosessen.
Funksjoner av prosessen
- Hver gang vi oppretter en prosess, må vi foreta et eget systemkall for hver prosess til OS. De gaffel () funksjonen skaper prosessen.
- Hver prosess eksisterer innenfor sin egen adresse eller minneplass.
- Hver prosess er uavhengig og behandles som en isolert prosess av OS.
- Prosesser trenger IPC (Inter-process Communication) for å kunne kommunisere med hverandre.
- En skikkelig synkronisering mellom prosesser er ikke nødvendig.
Hva er tråd?
En tråd er delmengden av en prosess og er også kjent som lettvektsprosessen. En prosess kan ha mer enn én tråd, og disse trådene administreres uavhengig av planleggeren. Alle trådene i én prosess er knyttet til hverandre. Tråder har noe vanlig informasjon, som f.eks datasegment, kodesegment, filer osv., som deles med jevnaldrende tråder. Men inneholder sine egne registre, stack og teller.
Hvordan fungerer tråden?
Som vi har diskutert at en tråd er en underprosess eller en utførelsesenhet i en prosess. En prosess kan inneholde en enkelt tråd til flere tråder. En tråd fungerer som følger:
tøm cache npm
- Når en prosess starter, tildeler OS minnet og ressursene til den. Hver tråd i en prosess deler bare minnet og ressursene til den prosessen.
- Tråder brukes hovedsakelig for å forbedre behandlingen av en søknad. I virkeligheten kjøres bare en enkelt tråd om gangen, men på grunn av rask kontekstveksling mellom tråder gir en illusjon om at tråder kjører parallelt.
- Hvis en enkelt tråd kjøres i en prosess, er den kjent som en entrådet Og hvis flere tråder kjøres samtidig, er det kjent som flertråding.
Typer tråder
Det finnes to typer tråder, som er:
1. Tråd på brukernivå
Som navnet antyder, administreres trådene på brukernivå kun av brukere, og kjernen har ikke sin informasjon.
Disse er raskere, enkle å lage og administrere.
Kjernen tar alle disse trådene som en enkelt prosess og håndterer dem kun som én prosess.
Trådene på brukernivå implementeres av biblioteker på brukernivå, ikke av systemkallene.
vert linux
2. Tråd på kjernenivå
Trådene på kjernenivå håndteres av operativsystemet og administreres av kjernen. Disse trådene er tregere enn tråder på brukernivå fordi kontekstinformasjon administreres av kjernen. For å lage og implementere en tråd på kjernenivå, må vi foreta et systemkall.
Funksjoner av tråd
- Tråder deler data, minne, ressurser, filer osv. med sine likeledes i en prosess.
- Ett systemanrop er i stand til å opprette mer enn én tråd.
- Hver tråd har sin egen stabel og register.
- Tråder kan kommunisere direkte med hverandre ettersom de deler samme adresseområde.
- Tråder må synkroniseres for å unngå uventede scenarier.
Viktige forskjeller mellom prosess og tråd
- En prosess er uavhengig og er ikke inneholdt i en annen prosess, mens alle tråder er logisk inneholdt i en prosess.
- Prosesser er tungt vektet, mens tråder er lette.
- En prosess kan eksistere individuelt ettersom den inneholder sitt eget minne og andre ressurser, mens en tråd ikke kan ha sin individuelle eksistens.
- En skikkelig synkronisering mellom prosesser er ikke nødvendig. Derimot må tråder synkroniseres for å unngå uventede scenarier.
- Prosesser kan kun kommunisere med hverandre ved hjelp av kommunikasjon mellom prosesser; i kontrast kan tråder kommunisere direkte med hverandre ettersom de deler samme adresseområde.
Forskjellenstabell mellom prosess og tråd
Prosess | Tråd |
---|---|
En prosess er en forekomst av et program som kjøres eller behandles. | Tråd er et segment av en prosess eller en lett prosess som administreres av planleggeren uavhengig. |
Prosesser er uavhengige av hverandre og deler derfor ikke et minne eller andre ressurser. | Tråder er gjensidig avhengige og deler minne. |
Hver prosess behandles som en ny prosess av operativsystemet. | Operativsystemet tar alle trådene på brukernivå som en enkelt prosess. |
Hvis en prosess blir blokkert av operativsystemet, kan den andre prosessen fortsette utførelsen. | Hvis en tråd på brukernivå blir blokkert, blokkeres også alle dens peer-tråder fordi OS tar dem alle som en enkelt prosess. |
Kontekstveksling mellom to prosesser tar mye tid da de er tunge sammenlignet med tråd. | Kontekstveksling mellom trådene går raskt fordi de er veldig lette. |
Datasegmentet og kodesegmentet til hver prosess er uavhengig av den andre. | Tråder deler datasegment og kodesegment med sine peer-tråder; derfor er det samme for andre tråder også. |
Operativsystemet bruker lengre tid på å avslutte en prosess. | Tråder kan avsluttes på svært kort tid. |
Oppretting av nye prosesser tar mer tid ettersom hver ny prosess tar alle ressursene. | En tråd trenger mindre tid for å lage. |