Multithreading

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 16. marts 2016; checks kræver 43 redigeringer .

Multithreading  ( eng.  Multithreading ) er en egenskab ved en platform (for eksempel et operativsystem , en virtuel maskine osv.) eller en applikation , der består i, at en proces genereret i operativsystemet kan bestå af flere tråde , der kører " sideløbende ", og spis derefter uden en ordineret rækkefølge i tide . For nogle opgaver kan denne adskillelse opnå en mere effektiv brug af computerressourcer .

Sådanne tråde kaldes også threads of execution (fra engelsk  thread of execution ); nogle gange kaldet "tråde" (bogstavelig oversættelse af engelsk  tråd ) eller uformelt "tråde".

Beskrivelse

Essensen af ​​multithreading er quasi-multitasking på niveauet af én eksekverbar proces, det vil sige, at alle tråde udføres i processens adresserum . Derudover deler alle tråde i en proces ikke kun et fælles adresseområde, men også fælles filbeskrivelser . En kørende proces har mindst én (master) tråd.

Multithreading (som en programmeringsdoktrin ) bør ikke forveksles med hverken multitasking eller multiprocessing , selvom operativsystemer, der implementerer multitasking , har tendens til også at implementere multithreading.

Fordelene ved en multithreaded implementering af et bestemt system frem for en multitasking inkluderer følgende:

Fordelene ved en multi-threaded implementering af et bestemt system frem for en enkelt-threaded inkluderer følgende:

I tilfælde af at udførelsestråde kræver relativt kompleks interaktion med hinanden, kan multitasking-problemer som f.eks. dødvande opstå.

Hardwareimplementering

På en konventionel processor håndteres trådhåndtering af operativsystemet. Tråden udføres, indtil der opstår en hardwareafbrydelse, et systemkald forekommer, eller indtil den tid, som styresystemet har tildelt den, udløber. Derefter skifter processoren til operativsystemkoden, som gemmer trådens tilstand (dens kontekst) eller skifter til tilstanden for en anden tråd, som også er tildelt tid til udførelse. Med en sådan multithreading bruges et tilstrækkeligt stort antal processorcyklusser på operativsystemkoden, der skifter kontekst. Hvis trådunderstøttelse er implementeret i hardware, så vil processoren selv være i stand til at skifte mellem tråde og i det ideelle tilfælde udføre flere tråde samtidigt for hver clock-cyklus. For operativsystemet og brugeren vil en sådan fysisk processor blive set som flere logiske processorer.

Der er to former for multithreading, der kan implementeres i processorer i hardware:

Trådimplementeringstyper

  1. Ingen timerafbrydelse inden for samme proces
  2. Når du bruger en blokeringssystemanmodning på en proces, blokeres alle dens tråde.
  3. Implementeringens kompleksitet

Trådinteraktion

I et multithreaded miljø er der ofte opgaver, der kræver suspension og genoptagelse af nogle tråde afhængigt af andres arbejde. Disse er især opgaver relateret til forebyggelse af adgangskonflikter ved brug af de samme data eller enheder fra parallelle eksekverbare tråde. For at løse sådanne problemer bruges specielle objekter til trådinteraktion, såsom gensidige udelukkelser (mutexes), semaforer, kritiske sektioner, begivenheder osv. Mange af disse objekter er kerneobjekter og kan bruges ikke kun mellem tråde i den samme proces, men også til interaktion mellem tråde i forskellige processer.

Kritik af terminologi

Oversættelsen af ​​det engelske udtryk tråd som "tråd" i en kontekst relateret til programmering modsiger dets oversættelse "tråd" i en generel sprogkontekst og skaber også kollisioner med termen Datastrøm .

Udtrykket "strøm" er dog forbundet med oversættelser af udenlandsk teknisk litteratur lavet i 1970'erne af forlaget Mir. I øjeblikket betragtes det i "akademiske kredse" (det vil sige i lærebøger, læremidler, universitetskurser, afhandlinger osv.) som en reference. Udtrykkene "tråd", "tråd" osv. betragtes som teknisk jargon .

Se også

Litteratur

Noter

  1. Jeffrey Richter . "Jeffrey Richter. Vinduer til professionelle. Opbygning af effektive WIN32-applikationer skræddersyet til specifikationerne for 64-bit Windows. 2001
  2. MSDN http://msdn.microsoft.com/en-us/library/ms682530%28VS.85%29.aspx Arkiveret 23. december 2011 på Wayback Machine

Links