kap 3 & 4: processer & trådar

24
Silberschatz, Galvin and Gagne ©2009 perating System Concepts – 8 th Edition, Kap 3 & 4: Processer & trådar

Upload: sirius

Post on 19-Jan-2016

47 views

Category:

Documents


4 download

DESCRIPTION

Kap 3 & 4: Processer & trådar. Processkonceptet. Ett operativsystem exekverar oftast flera olika program samtidigt Ett program som exekverar kallas för en process En process består av: Programkoden (text section) Programräknare Innehållet i CPU-registren En stack En datasektion - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Kap 3 & 4:  Processer & trådar

Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition,

Kap 3 & 4: Processer & trådar

Page 2: Kap 3 & 4:  Processer & trådar

3.2 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Processkonceptet

Ett operativsystem exekverar oftast flera olika program samtidigt Ett program som exekverar kallas för en process

En process består av: Programkoden (text section) Programräknare Innehållet i CPU-registren En stack En datasektion En heap (ibland)

Page 3: Kap 3 & 4:  Processer & trådar

3.3 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

En process i minnet

Page 4: Kap 3 & 4:  Processer & trådar

3.4 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Processens tillstånd

En process kan befinna sig i olika tillstånd:

new: processen skapas

running: instruktioner exekveras

waiting: processen väntar på att något ska inträffa

ready: processen väntar på att få börja exekvera

terminated: processen har exekverat klart

Page 5: Kap 3 & 4:  Processer & trådar

3.5 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Process Control Block (PCB)

OS har information om varje process i ett PCB

Vilket tillstånd den befinner sig i

Processnummer för identifikation

Programräknare – adress till nästa instruktion

Värden i CPU-registren

Schemaläggningsinformation

Minneshanteringsinformation

I/O-status (öppna filer, allokerade I/O-enheter)

Page 6: Kap 3 & 4:  Processer & trådar

3.6 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Process-schemaläggning

Många processer i systemet – vem ska få exekvera när?

Beslutas av process-schemaläggaren

En process flyttar mellan olika köer:

Job queue – här ligger alla processer i systemet

Ready queue – processer som ligger i primärminnet och är klara för att börja exekvera

Device queues – processer som väntar på en I/O-enhet

Page 7: Kap 3 & 4:  Processer & trådar

3.7 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Ready Queue And Various I/O Device Queues

Page 8: Kap 3 & 4:  Processer & trådar

3.8 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Representation of Process Scheduling

Page 9: Kap 3 & 4:  Processer & trådar

3.9 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Schemaläggare

Long-term scheduler (or job scheduler) – väljer vilka processer som skall flyttas till ready queue

Anropas sällan (sekunder, minuter) Short-term scheduler (or CPU scheduler) – väljer vilken

process som skall exekvera härnäst Anropas ofta (millisekunder) Processer beskrivs som antingen CPU-bound eller I/O-bound Vissa system har också en medium-term scheduler

Page 10: Kap 3 & 4:  Processer & trådar

3.10 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Addition of Medium Term Scheduling

Page 11: Kap 3 & 4:  Processer & trådar

3.11 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Context Switch

När CPUn växlar till en annan process måste systemet spara tillståndet hos den gamla processen och ladda in det sparade tillståndet för den nya processen. Detta kallas för en context switch

Tillståndet sparas i processens PCB

Tiden för en context switch är overhead; systemet gör inget nyttigt under denna tid

Page 12: Kap 3 & 4:  Processer & trådar

3.12 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Skapa processer

Föräldraprocesser skapar barnprocesser som i sin tur kan skapa andra processer, vilket gör att ett processträd skapas

Resursdelning

Förälder och barn delar alla resurser

Barnen delar en delmängd av förälderns resurser

Förälder och barn delar inga resurser

Exekvering

Förälder och barn exekverar parallellt

Föräldern väntar tills barnet exekverat klart

Adressutrymme

Barnet är ett duplikat av föräldern

Barnet har ett nytt program inladdat i det

Page 13: Kap 3 & 4:  Processer & trådar

3.13 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Skapa en ny process i C (UNIX)

int main(){pid_t pid;

/* fork another process */pid = fork();if (pid < 0) { /* error occurred */

fprintf(stderr, "Fork Failed");exit(-1);

}else if (pid == 0) { /* child process */

execlp("/bin/ls", "ls", NULL);}else { /* parent process */

/* parent will wait for the child to complete */

wait (NULL);printf ("Child Complete");exit(0);

}}

Page 14: Kap 3 & 4:  Processer & trådar

3.14 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Avsluta en process

En process avslutas genom systemanropet exit()

Kan returnera ett värde till föräldern (via wait())

Processens resurser avallokeras

En förälder kan avsluta en barnprocess genom abort()

Barnet har överutnyttjat sina resurser

Barnets tjänster behövs inte längre

Page 15: Kap 3 & 4:  Processer & trådar

3.15 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Kommunikation mellan processer

Processer är antingen oberoende eller samarbetande

En samarbetande process kan dela data med andra processer

Anledningar till samarbete:

Dela information

Snabba upp beräkningar

Modularitet

Underlätta för användaren

En mekanism för interprocess communication (IPC) behövs

Två modeller:

Delat minne

Meddelande-utbyte

Page 16: Kap 3 & 4:  Processer & trådar

3.16 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Communications Models

Page 17: Kap 3 & 4:  Processer & trådar

3.17 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Trådar

Processer kan vara antingen enkel- eller flertrådiga

Enkeltrådig process – gör en sak i taget

Flertrådig process – gör flera saker parallellt

En tråd har en egen programräknare, en egen stack och egna register

Tråden delar kod, data, öppna filer mm med andra trådar i processen

Exempel Webbläsare: en tråd för att visa bilder/text och en för att hämta data från nätverket.

Page 18: Kap 3 & 4:  Processer & trådar

3.18 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Single and Multithreaded Processes

Page 19: Kap 3 & 4:  Processer & trådar

3.19 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Fördelar med trådar

Minskade svarstider – en tråd kan ta emot indata från användaren när en annan tråd laddar en bild

Resursdelning – trådar delar minne & andra resurser “by default”

Ekonomi – det kostar mycket mer att skapa och hantera processer än trådar

Skalbarhet – en flertrådad process kan köras på flera processorer samtidigt

Page 20: Kap 3 & 4:  Processer & trådar

3.20 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Multicore-programmering

Flertrådade program innebär att flerkärniga processorer kan användas mer effektivt

Flerkärniga system innebär utmaningar för programmerare, bl a:

Dela upp aktiviteter – hitta programdelar som går att köra parallellt

Balans – programdelarna ska utföra lika mycket arbete

Data splitting – data måste delas upp på de olika kärnorna

Databeroenden – finns det beroenden mellan olika programdelar?

Testning och debugging – blir mycket svårare

Behövs ett helt nytt sätt att designa mjukvara i framtiden?

Page 21: Kap 3 & 4:  Processer & trådar

3.21 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Trådbibliotek

Ett trådbibliotek är ett API för att skapa och hantera trådar

Biblioteket kan antingen ligga i user space eller i kernel space

Huvudsakligen tre bibliotek används:

POSIX Pthreads (user/kernel)

Win32 (kernel)

Java (använder trådbiblioteket i värd-OS:et)

Page 22: Kap 3 & 4:  Processer & trådar

3.22 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Pthreads

Finns både som user-level och kernel-level

POSIX standard (IEEE 1003.1c) definierar ett API för att skapa och synkronisera trådar

Standarden är bara en specifikation, implementationen är upp till utvecklaren

Vanlig i UNIX-operativsystem (Solaris, Linux, Mac OS X)

Page 23: Kap 3 & 4:  Processer & trådar

3.23 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Java Threads

Det grundläggande sättet att köra program på i Java

Många funktioner finns

Javatrådar hanteras av JVM

Javatrådar kan skapas på två sätt:

Skapa en klass som ärver Thread-klassen & överlagra run-metoden

Skapa en klass som implementerar interfacet Runnable

Page 24: Kap 3 & 4:  Processer & trådar

3.24 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Linux Threads

Linux kallar dem tasks istället för threads

Trådar skapas genom systemanropet clone()

clone() tillåter ett barn att dela adressutrymme med föräldern