Hva er forskjellen mellom en prosess og en tråd?

Hva er den tekniske forskjellen mellom en prosess og en tråd?

Jeg får følelsen av at et ord som 'prosess' er overbrukt, og det finnes også maskinvare- og programvaretråder. Hva med lettvektsprosesser i språk som Erlang? Er det en definitiv grunn til å bruke det ene begrepet fremfor det andre?

Løsning

Både prosesser og tråder er uavhengige kjøringssekvenser. Den typiske forskjellen er at tråder (av samme prosess) kjører i et delt minneområde, mens prosesser kjører i separate minneområder.

Jeg er ikke sikker på hvilke "maskinvare" vs. "programvaretråder" du kanskje refererer til. Tråder er en driftsmiljøfunksjon, snarere enn en CPU-funksjon (selv om CPU-en vanligvis har operasjoner som gjør tråder effektive).

Erlang bruker begrepet "prosess" fordi det ikke eksponerer en multiprogrammeringsmodell med delt minne. Å kalle dem "tråder" ville innebære at de har delt minne.

Kommentarer (10)

En søknad består av en eller flere prosesser. En prosess er enkelt sagt et kjørende program. En eller flere tråder kjører i sammenheng med prosessen. En tråd er den grunnleggende enheten som operativsystemet tildeler prosessortid til. En tråd kan utføre hvilken som helst del av prosesskoden, inkludert deler som for øyeblikket utføres av en annen tråd. En fiber er en utførelsesenhet som må planlegges manuelt av applikasjonen. Fibre kjører i sammenheng med trådene som planlegger dem.

Stjålet fra her.

Kommentarer (2)

Både tråder og prosesser er atomiske enheter av OS-ressursallokering (dvs. det er en samtidighetsmodell som beskriver hvordan CPU-tid er delt mellom dem, og modellen for å eie andre OS-ressurser). Det er en forskjell i:

  • Delte ressurser (tråder deler minne per definisjon, de eier ikke noe annet enn stakken og lokale variabler; prosesser kan også dele minne, men det er en egen mekanisme for det, vedlikeholdt av OS)
  • Allokeringsplass (kjerneplass for prosesser vs. brukerplass for tråder)

Greg Hewgill ovenfor hadde rett om Erlang-betydningen av ordet "prosess", og her er det en diskusjon om hvorfor Erlang kunne gjøre prosesser lette.

Kommentarer (0)