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