Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
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