Download Föreläsning 2

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Kap 3 & 4: Processer & trådar
Operating System Concepts – 8th Edition,
Silberschatz, Galvin and Gagne ©2009
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)
Operating System Concepts – 8th Edition
3.2
Silberschatz, Galvin and Gagne ©2009
En process i minnet
Operating System Concepts – 8th Edition
3.3
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.4
Silberschatz, Galvin and Gagne ©2009
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/Oenheter)
Operating System Concepts – 8th Edition
3.5
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.6
Silberschatz, Galvin and Gagne ©2009
Ready Queue And Various I/O Device Queues
Operating System Concepts – 8th Edition
3.7
Silberschatz, Galvin and Gagne ©2009
Representation of Process Scheduling
Operating System Concepts – 8th Edition
3.8
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.9
Silberschatz, Galvin and Gagne ©2009
Addition of Medium Term Scheduling
Operating System Concepts – 8th Edition
3.10
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.11
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.12
Silberschatz, Galvin and Gagne ©2009
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);
}
}
Operating System Concepts – 8th Edition
3.13
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.14
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.15
Silberschatz, Galvin and Gagne ©2009
Communications Models
Operating System Concepts – 8th Edition
3.16
Silberschatz, Galvin and Gagne ©2009
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.
Operating System Concepts – 8th Edition
3.17
Silberschatz, Galvin and Gagne ©2009
Single and Multithreaded Processes
Operating System Concepts – 8th Edition
3.18
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.19
Silberschatz, Galvin and Gagne ©2009
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?
Operating System Concepts – 8th Edition
3.20
Silberschatz, Galvin and Gagne ©2009
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)
Operating System Concepts – 8th Edition
3.21
Silberschatz, Galvin and Gagne ©2009
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)
Operating System Concepts – 8th Edition
3.22
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.23
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.24
Silberschatz, Galvin and Gagne ©2009