Tråder og concurrency i Linux

Like dokumenter
Mer om C programmering og cuncurrency

Deadlocks og mer om concurrencymekanismer

Eksempler på ikke-blokkerende systemkall:

Forslag til løsning på oppgavesett for uke 40

Concurrency. Lars Vidar Magnusson. September 20, Lars Vidar Magnusson () Forelesning i Operativsystemer September 20, / 17

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

Kort notat om parallellstyring IN147

Introduksjon til kurset og dets innhold

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

Fra sekvensielt til parallelt

Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre

Repetisjon - Modul 1

Forelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy

Fra sekvensielt til parallelt

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

Dagens program. Sanntidsprogrammering med Linux. Embedded Linux: Begrensninger. Hvorfor Linux?

DAT kandidatnummer: 142

Faglig kontakt under eksamen: Orestis Gkorgkas

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Definisjon av prosess

Eksamen DAT 103. Oppgave 2. Kandidatnr.: 145 1) B 2) B 3) A 4) A 5) D 6) C 7) B 8) A 9) A 10) D

Oversikt over IN147(A):

Generelt om operativsystemer

Plan for dagen Dagens sidesprang: Sverres editorer gjennom tidene & verktøyet tinyclip. Meldingsbasert synkronisering & kommunikasjon

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data

Prosesser og Tråder. Ketil Danielsen January 16, en tråd arbeider sekvensielt gjennom program

IN 147 Program og maskinvare

AlgDat 10. Forelesning 2. Gunnar Misund

HØGSKOLEN I SØR-TRØNDELAG

1. Introduksjon til operativsystemer

oppgavesett 4 INF1060 H16 Hans Petter Taugbøl Kragset Øystein Dale Christian Resell 27. september 2016 Institutt for informatikk, UiO

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Oversikt. Historie Struktur Moderne UNIX systemer Moderne UNIX kernel struktur 1 UNIX. 2 Linux. 3 Process. 4 Process models

Tråder Repetisjon. 9. og 13. mai Tråder

Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser?

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt

Dagens tema. Nyttige programmer Programmet make. Hvis én fil endres, hvilke filer må da kompileres på nytt?

Generelt om operativsystemer

Tråder Repetisjon. 9. og 13. mai Tråder

Definisjon av prosess

Eksamensinformasjon. Linux kommandolinje. Linux kommandolinje. Eksamensinformasjon. Fakultet: Teknologi, kunst og design. Tid: 3 t.

Løsningsforslag for TDT4186 Operativsystemer

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix

Fakultet for informasjonsteknologi,

E K S A M E N FAKULTET FOR TEKNOLGI OG REALFAG. Emnekode: ELE217 Emnenavn: Mikrokontrollere og styresystemer.

CORBA Objektmodell (Java RMI)

INF1060 Introduksjon til operativsystem og datakommunikasjon

static int ant_steiner; //antall steiner static int teller2 = 0; //teller for printing til Thread^ murer; //murertråden

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4186 Operativsystemer 14. august 2006,

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

STE6221 Sanntidssystemer LØSNINGSFORSLAG TIL EKSAMEN

EKSAMEN. Operativsystemer. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Operativsystemer og grensesnitt

Innføring i Linux. Operativsystemer

IN 147 Program og maskinvare

AlgDat 12. Forelesning 2. Gunnar Misund

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

Del 1 En oversikt over C-programmering

Applikasjonsutvikling med databaser

Dagens tema: Enda mer MIPS maskinkode

Løsningsforslag for TDT4186 Operativsystemer

INF2810: Funksjonell Programmering. Strømmer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

Minnehåndtering. Lars Vidar Magnusson. October 4, Lars Vidar Magnusson () Forelesning i Operativsystemer October 4, / 20

INF2810: Funksjonell Programmering. Strømmer

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

1,r H øgs kolen i Østfol d

Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

INF1010 Repetisjonskurs i tråder

IN 147 Program og maskinvare

Løsningsforslag til eksamen i IN147(A)

Forelesning Instruksjonstyper Kap 5.5

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon

Tildeling av minne til prosesser

Begrepet kritisk region er sentralt i forbindelse med datamaskinsystemer.

Løsningsforslag for TDT4186 Operativsystemer

UNIVERSITETET I OSLO

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

INF2810: Funksjonell Programmering. Muterbare data

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

VMware ESX og krav til hardware

Oppgave 1 - Linux kommandolinje (%)

Prosesser og tråder. Martin Gilje Jaatun. 30. april 2007

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

Del 3. Pekere RR 2016

INF2440 Uke 4, våren2014 Avsluttende om matrisemultiplikasjon og The Java Memory Model + bedre forklaring Radix. Arne Maus OMS, Inst.

Forelesning inf Java 1

Forelesning inf Java 1

Læringsmål for forelesningen

INF1020 Algoritmer og datastrukturer. Dagens plan

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

- analyse og implementasjon

Løsningsforslag til eksamen i IN 147(A)

Transkript:

Tråder og concurrency i Linux Lars Vidar Magnusson September 27, 2011 Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 1 / 14

Oversikt Tråder i Linux 1 Tråder i Linux Repetisjon om tråder Repetisjon om Pthreads Pthreads API 2 Pthread mutex 3 Atomic operations 4 Spinlocks Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 2 / 14

Tråder i Linux Repetisjon om tråder Repetisjon om tråder Linux kjernen skiller ikke mellom tråder og prosesser. Prosesser kan grupperes sammen slik at de kan dele operere i det samme minnet. Nye prosesser lages med clone. Kan benytte Pthreads for enklere lage tråder (prosesser). Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 3 / 14

Tråder i Linux Repetisjon om Pthreads Repetisjon om Pthreads Pthreads er en del av POSIX (Portable Operating Systems Interface) som er en standard API for UNIX lignende OS. Pthreads tilbyr et enklere interface enn clone(). Samme API på kryss av platform. Ikke i standard manpages Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 4 / 14

Pthreads API Tråder i Linux Pthreads API Det trengs to systemkall for å bruke Pthreads. #i n c l u d e <p t h r e a d. h> i n t p t h r e a d c r e a t e ( p t h r e a d t thread, const p t h r e a d a t t r t a t t r, void ( s t a r t r o u t i n e ) ( void ), void arg ) ; i n t p t h r e a d j o i n ( p t h r e a d t thread, void r e t v a l ) ; Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 5 / 14

Oversikt Pthread mutex 1 Tråder i Linux 2 Pthread mutex Pthreads mutex API 3 Atomic operations 4 Spinlocks Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 6 / 14

Pthread mutex Pthreads API har også støtte for mutex operasjoner. Ligner en binary semaphore Ikke i standard manpages Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 7 / 14

Pthreads mutex API Pthread mutex Pthreads mutex API En pthreads mutex opereres med fire funksjoner. #i n c l u d e <p t h r e a d. h> i n t p t h r e a d m u t e x i n i t ( p t h r e a d m u t e x t mutex, p t h r e a d m u t e x a t t r t a t t r ) ; i n t p t h r e a d m u t e x d e s t r o y ( p t h r e a d m u t e x t mutex ) ; i n t p t h r e a d m u t e x l o c k ( p t h r e a d m u t e x t mutex ) ; i n t p t h r e a d m u t e x t r y l o c k ( p t h r e a d m u t e x t mutex ) ; Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 8 / 14

Oversikt Atomic operations 1 Tråder i Linux 2 Pthread mutex 3 Atomic operations Atomic integers 4 Spinlocks Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 9 / 14

Atomic operations En atomic operasjon er en operasjon som ikke kan avbrytes. Kan brukes for å unngå race conditions Inneholder automatisk sikring mot aksess fra flere prosessorer To typer Integer - Opererer med et heltall (32/64 bit) Bitmap - Opererer med en bit i en serie av bits. Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 10 / 14

Atomic integers Atomic operations Atomic integers Under er et utvalg av tilgjengelige operasjoner på atomic integers. ATOMIC INIT ( i n t i ) i n t a t o m i c r e a d ( a t o m i c t v ) ; void a t o m i c s e t ( a t o m i c t v, i n t i ) ; void atomic add ( i n t i, a t o m i c t v ) ; void a t o m i c s u b ( i n t i, a t o m i c t v ) ; Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 11 / 14

Oversikt Spinlocks 1 Tråder i Linux 2 Pthread mutex 3 Atomic operations 4 Spinlocks Bruke spinlocks Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 12 / 14

Spinlocks Enkel mekanisme for å sørge for mutual exclusion fra critical sections. Bruker busy-wait når en prosess må vente Enkel men kan skade ytelsen. Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 13 / 14

Bruke spinlocks Spinlocks Bruke spinlocks Spinlocks settes opp med et funksjonskall. DEFINE SPINLOCK ( varname ) s p i n l o c k (&varname ) ; // C r i t i c a l s e c t i o n s p i n u n l o c k (&varname ) ; Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 27, 2011 14 / 14