logo

Multithreading i operativsystem

EN tråd er en sti som følges under et programs utførelse. Flertallet av programmene som er skrevet nå om dagen, kjøres som en enkelt tråd. La oss si at et program for eksempel ikke er i stand til å lese tastetrykk mens du lager tegninger. Disse oppgavene kan ikke utføres av programmet samtidig. Dette problemet kan løses gjennom multitasking slik at to eller flere oppgaver kan utføres samtidig. Multitasking er av to typer: prosessorbasert og trådbasert. Prosessorbasert multitasking styres fullstendig av OS, men multitasking gjennom multithreading kan til en viss grad kontrolleres av programmereren. Konseptet av flertråding trenger riktig forståelse av disse to begrepene - en prosess og en tråd . En prosess er et program som kjøres. En prosess kan videre deles inn i uavhengige enheter kjent som tråder. En tråd er som en liten lettvektsprosess i en prosess. Eller vi kan si at en samling tråder er det som kalles en prosess. Applikasjoner - Gjenger brukes mye i nesten alle felt. Mest utbredt ses det over internett i dag hvor vi bruker transaksjonsbehandling av alle typer som oppladinger, nettoverføring, banktjenester osv. Threading er et segment som deler koden inn i små deler som er veldig lette og har mindre belastning på CPU minne slik at det enkelt kan utarbeides og kan oppnå mål i ønsket felt. Konseptet med gjenger er designet på grunn av problemet med raske og regelmessige endringer i teknologi og mindre arbeid på forskjellige områder på grunn av mindre bruk. Så som det sier behovet er generering av skapelse eller innovasjon, og ved å følge denne tilnærmingen utvikler menneskesinnet konseptet tråd for å forbedre evnen til programmering.

sortert tuppelpyton

Livssyklusen til en tråd

Det er ulike stadier i livssyklusen til en tråd. Følgende er stadiene en tråd går gjennom i hele sitt liv.

  • Ny: Livssyklusen til en født tråd (ny tråd) starter i denne tilstanden. Den forblir i denne tilstanden til et program starter.
  • Kjørbar : En tråd blir kjørbar etter at den starter. Den anses å utføre oppgaven den er gitt.
  • Venter : Mens du venter på at en annen tråd skal utføre en oppgave, går tråden som kjører i ventetilstand og går deretter tilbake igjen etter å ha mottatt et signal fra den andre tråden.
  • Tidsbestemt venting: En løpbar tråd går inn i denne tilstanden for et spesifikt tidsintervall og går deretter tilbake når tidsintervallet utløper eller hendelsen tråden ventet på inntreffer.
  • Avsluttet (død) : En tråd går inn i denne tilstanden etter å ha fullført oppgaven.

Typer utførelse i OS

Det er to typer utførelse:



panda smelter
  1. Samtidig utførelse: Dette skjer når en prosessor lykkes med å bytte ressurser mellom tråder i en flertrådsprosess på en enkelt prosessor.
  2. Parallell utførelse: Dette skjer når hver tråd i prosessen kjører på en separat prosessor på samme tid og i samme flertrådede prosess

Ulemper med multithreading

Multithreading er komplekst og mange ganger vanskelig å håndtere. Den har noen få ulemper. Disse er:

  • Hvis du ikke bruker låsemekanismene riktig, mens du undersøker problemer med datatilgang, er det en sjanse for problemer som datainkonsekvens og dødlås.
  • Hvis mange tråder prøver å få tilgang til de samme dataene, er det en sjanse for at situasjonen med trådsult kan oppstå. Problemer med ressursstrid er et annet problem som kan plage brukeren.
  • Visningsproblemer kan oppstå hvis tråder mangler koordinering ved visning av data.

Fordeler med multithreading:

  • Multithreading kan forbedre ytelsen og effektiviteten til et program ved å utnytte de tilgjengelige CPU-ressursene mer effektivt. Ved å kjøre flere tråder samtidig, kan det dra fordel av parallellitet og redusere den totale utførelsestiden.
  • Multithreading kan øke responsen i applikasjoner som involverer brukerinteraksjon. Ved å skille tidkrevende oppgaver fra hovedtråden, kan brukergrensesnittet forbli responsivt og ikke fryse eller ikke reagere.
  • Multithreading kan muliggjøre bedre ressursutnyttelse. For eksempel, i en serverapplikasjon, kan flere tråder håndtere innkommende klientforespørsler samtidig, slik at serveren kan betjene flere klienter samtidig.
  • Multithreading kan legge til rette for bedre kodeorganisering og modularitet ved å dele komplekse oppgaver inn i mindre, håndterbare utførelsesenheter. Hver tråd kan håndtere en bestemt del av oppgaven, noe som gjør koden lettere å forstå og vedlikeholde.