Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afAgnete Kjærgaard Redigeret for ca. et år siden
1
Processer/tråde Per P. Madsen1 Et stykke software der håndtere skiftet af CPU’en. Dispatcher. Et antal selvstændige programmer. Processer. Plus det løse til: Oprettelse af processer. Synkronisering af processer. Kommunikation mellem processer.
2
Per P. MadsenStyresystemer og tjenester2 Proces. Et program der eksekveres. En ressource enhed. Egen memory. Egen status for filer. Egen protection ID. Administrative data fx. Start tid, Forbrugt CPU-tid osv. Samt alle alm ting som egen stak, programstatus, CPU’registre, Prioritet
3
Per P. MadsenStyresystemer og tjenester3 Processer/tråde Dispatcher: Et lille progran der skifter til den næste tråd, gør evt. brug af schedulerings algoritmen.
4
Per P. MadsenStyresystemer og tjenester4 Processer/tråde
5
Per P. MadsenStyresystemer og tjenester5
6
Per P. MadsenStyresystemer og tjenester6 Processer/tråde
7
Per P. MadsenStyresystemer og tjenester7 Proces control blok
8
Per P. MadsenStyresystemer og tjenester8 Proces hieraki UNIX/LINUX: En proces er barn af den proces der opretter den. Processen init fødes ved boot. Alle andre er derfor efterkommere efter init. Prøv evt. Kommandoen pstree. Windows: Ingen hieraki dog får forældre processen en handle til barnet.
9
Per P. MadsenStyresystemer og tjenester9 Proces oprettelse 1.Boot time: Init opretter alle de nødvendige processer for at operativsystemet kommer op at køre. 2.Brug af fork() (UNIX/LINUX) eller CreateProcess(...) (Windows) systemkaldene. En shell afvikler et program. Et program/proces oprette en ny proces. 3.Batch job: Jobs der står i kø som operativsystemet afvikler efter en bestemt politik.
10
Per P. MadsenStyresystemer og tjenester10 Simpel shell #include int main (int argc, char *argv[]) { int status, pid; char kommando[80]; while (1) { printf("ppmshell>"); scanf("%s",kommando); pid = fork(); if (pid != 0) while(wait(&status) != pid); else execlp(kommando, (char *)NULL); }
11
Per P. MadsenStyresystemer og tjenester11 EXEC #include int execlp( const char *file, /* program name */ const char *arg0, /* first arg (file name) */ const char *arg1, /* second arg (if needed) */..., /* remaining args (if needed) */ NULL /* arg list terminator */ ); /* Returns -1 on error (sets errno) */ execlp("echo", "echo", "haj", "du.", NULL);
12
Per P. MadsenStyresystemer og tjenester12 EXEC int execl(const char *path, const char *arg0, const char *arg1,..., NULL); int execlp(const char *file, const char *arg0, const char *arg1,..., NULL); int execle(const char *path, const char *arg0, const char *arg1,..., NULL, char *const envv[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envv[]);
13
Per P. MadsenStyresystemer og tjenester13 Software interrupts: Signals
14
Per P. MadsenStyresystemer og tjenester14 Simpel shell #include void slut () {printf(" -- Så er det slut\n"); exit(0);} int main (int argc, char *argv[]) { int status, pid; char kommando[80]; signal (SIGINT, slut); while (1) { printf("ppmshell>"); scanf("%s",kommando); pid = fork(); if (pid != 0) while(wait(&status) != pid); else execlp(kommando, (char *)NULL); }
15
Per P. MadsenStyresystemer og tjenester15 Software interrupts: Realtime Clock #include struct timeval tv; struct itimerval sample_time; struct sigaction sa; void sampel_pc () { // gør noget } sample_time.it_interval.tv_sec = 0; sample_time.it_interval.tv_usec = 100000; sample_time.it_value.tv_sec = 0; sample_time.it_value.tv_usec = 100000; /* Install timer_handler as the signal handler for SIGVTALRM. */ memset (&sa, 0, sizeof (sa)); sa.sa_handler = &sampel_pc; sigaction (SIGALRM, &sa, NULL); setitimer (ITIMER_REAL, &sample_time, ((struct itimerval *) 0)); while (1) sigpause (0);
16
Short-Term Schedulering/dispatching Dispatcheren startes af: Hardware: –Clock interrupts –I/O interrupts Kørende proces/tråd. –Operating system kald –Signals (e.g., semaphores) Per P. MadsenStyresystemer og tjenester16
17
Preemptive/Nonpreemptive Nonpreemptive: Når en proces køre fåe den lov at køre til den selv giver afkald på CPU’en. Preemptive: En proces kan blive afbrugt på et vilkårligd tidspunkt, som følge af et HW-interrupt. Per P. MadsenStyresystemer og tjenester17
18
Per P. MadsenStyresystemer og tjenester18 w = Ventetid e = Eksekveringstid s = Total eksekveringstid tid for proces,
19
Per P. MadsenStyresystemer og tjenester19
20
Simplest scheduling policy Also known as first-in-first- out (FIFO) or a strict queuing scheme When the current process ceases to execute, the longest process in the Ready queue is selected Performs much better for long processes than short ones Tends to favor processor-bound processes over I/O-bound processes
21
Uses preemption based on a clock Also known as time slicing because each process is given a slice of time before being preempted Principal design issue is the length of the time quantum, or slice, to be used Particularly effective in a general-purpose time-sharing system or transaction processing system One drawback is its relative treatment of processor-bound and I/O-bound processes
22
Effect of Size of Preemption Time Quantum
23
Virtual Round Robin (VRR)
24
Nonpreemptive policy in which the process with the shortest expected processing time is selected next A short process will jump to the head of the queue Possibility of starvation for longer processes One difficulty is the need to know, or at least estimate, the required processing time of each process If the programmer’s estimate is substantially under the actual running time, the system may abort the job
25
Preemptive version of SPN Scheduler always chooses the process that has the shortest expected remaining processing time Risk of starvation of longer processes Should give superior turnaround time performance to SPN because a short job is given immediate preference to a running longer job
26
Chooses next process with the greatest ratio Attractive because it accounts for the age of the process While shorter jobs are favored, aging without service increases the ratio so that a longer process will eventually get past competing shorter jobs
27
Feedback Scheduling
28
Feedback Performance
29
Per P. MadsenStyresystemer og tjenester29 Schedulering. Linux 1.Real-time FIFO. 2.Real-time Round Robin. 3.Alm. Threads og processer. Real-Time prioriteter 0 – 99. Kun SuperUser Alm. prioriteter 100 – 139. Default 120 ( nice ) nice(0) ~ 120 (Default). nice(1) – nice(19) : Nedprioritering fx baggrunds job. nice(-1) – nice(-20) : Kun SuperUser.
30
Per P. MadsenStyresystemer og tjenester30 Schedulering af alm. threads og processer Tidskvant tilskrevet en proces/tråd, når den forrige er opbrugt: Tidskvant = (140 – Statisk prioritet) * 20 for Statisk prioritet < 120 (140 – Statisk prioritet) * 5 for Statisk prioritet >= 120 Dvs: nice(-20) ~ 800 mS, nice(0) ~ 100 mS nice(19) ~ 5 mS Dynamisk prioritet: Hvem skal til først ? Dyn. prioritet = max(100, min(sta. prioritet – bonus + 5, 139))
31
Per P. MadsenStyresystemer og tjenester31 Schedulering. Windows
32
Per P. MadsenStyresystemer og tjenester32 Schedulering. Windows
33
Per P. MadsenStyresystemer og tjenester33
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.