kap 3 & 4: processer & trådar
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 PresentationTRANSCRIPT
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition,
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)
3.3 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
En process i minnet
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
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)
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
3.7 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Ready Queue And Various I/O Device Queues
3.8 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Representation of Process Scheduling
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
3.10 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Addition of Medium Term Scheduling
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
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
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);
}}
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
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
3.16 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Communications Models
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.
3.18 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Single and Multithreaded Processes
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
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?
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)
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)
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
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