Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.

Lignende præsentationer


Præsentationer af emnet: "Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov."— Præsentationens transcript:

1 Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov for cpu og i/o Mange kortlivede processer 1 langvarig interaktiv proces Af og til 1 langvarig cpu-tung proces

2 Skedulerings-målsætning Retfærdighed (fairness): alle processer (httpd, ftp, ls, cc) får lige meget CPU-tid opmuntrer til processkabelse retfærdighed ift. samlet forbrug ?? ftphttpdlscc Skal måske have forrang

3 Målsætninger for skedulering Effektivitet (cpu-udnyttelse) CPU-en aktiv hele tiden processer der venter på i/o skal give plads til andre høj prioritet til processer der skifter tilstand fra blokeret til klar ?? Lav svartid (interaktive brugere) lille kvantum retfærdighed ift. samlet forbrug ! Effektivitet (færdiggørelse af processer) stort kvantum

4 To-niveau skedulering kørende blokeretklar blokeret (ej i arb.lager) klar (ej i arb.lager) Høj-niveau skedulator udvælger processer til arbejds- lager Lav-niveau skedulator udvælger klar proces i arbejdsplager

5 Simpel skeduleringsmulighed: Round-Robin indenfor 1 kø kørendeklar Lav-niveau skedulator bruger simpel kø (FIFO) af processer der er klar lsftpcc ftpccls ftpccls

6 Virkemidler for (lav-niveau) skedulator Størrelsen af tidskvantum hvor længe en proces råder over cpu-en (medmindre den blokeres) Statisk prioritet generel forrang for udvalgte processer f.eks. webserver Dynamisk prioritet prioritering mellem processer med normal statisk prioritet default er "Round Robin", modificeres for at fremme "klargjorte" processer (retfærdighed ift. løbende tidsforbrug) nye processer (retfærdighed ift. samlet tidsforbrug)

7 Fordel ved stort tidskvantum P1 (1 kvantum)P2 (1 kvantum) Proces- skift Proces- skift... Minimering af spildtid - tid til processkift er lille i forhold til tidskvantum

8 Fordel ved lille tidskvantum P1P2 Proces- skift Proces- skift... P117 Hvornår bliver det min tur ? Et lille tidskvantum er vigtigt for lavere svartid til interaktive processer forudsat: det pgld. input kan behandles inden for 1 tidskvantum der er mange processer processer, der har været i/o-blokerede, ikke prioriteres systematisk

9 Dynamisk prioritet: placering af "klare" processer i prioritetsklasser ftp ls cc Httpd ikke med da den er i klasse for sig pga. høj statisk prioritet Prioritet 4 Prioritet 3 Prioritet 1 Har ventet på disk input Har ventet på terminal input Har brugt megen cpu-tid Prioritet 2

10 Tildeling af dynamisk prioritet ud fra forbrugt cpu-tid Formål: at begunstige nye processer Princip: jo mere forbrugt cpu-tid, desto lavere prioritet Pragmatik: alle processer der har kørt 2-3 sek. har kørt "længe" Implementation: Formel: New Priority = Base + CPU-usage (Tanenbaum s. 302) Tid i sidste sekund tæller 100%, tid i forrige tæller 50%, etc.

11 Skedulering - opsummering Enkelte særligt vigtige processer kan give forrang med statisk prioritet f.eks. webserverproces Alle andre processer har principielt lige adgang til cpu-en Størrelsen af tidskvantum vælges som kompromis Dynamisk prioritet bruges til finjustering undgå nedprioritering af processer der blokeres ofte sikre en (begrænset) nedprioritering af processer der har kørt længe

12 Hvordan foregår proces-skift ? P1P2 Proces- skift Proces- skift Skift fra P1 til skedulator: 1. Interrupt sendes af timer eller anden hw-komponent f.eks. HD 2. Interrupt registreres af cpu efter færdiggjort cpu-cyklus 3. Udskiftning af PC (implementeret i hardware) 4. Udskiftning af øvrige registre (program skrevet direkte i assembler) 5. Start af skedulator (program skrevet i C og oversat til maskinsprog) Skift fra skedulator til P2: ….

13 Implementation af "test og sæt lås" med semafor (forenklet)..; første tilgang af ressource;.. sidste tilgang til ressource;..; semaphore sem; down(sem); up(sem); Hvad er en semafor ? Har talværdi som altid er større end eller lig nul. Har atomisk "down" operation som trækker 1 fra hvis muligt, ellers blokeres. Har atomisk "up" operation som lægger 1 til og vækker blokerede processer.

14 Hvorfor er semaforer nødvendige? Multiple processer Automatisk ("preemptive") skedulering Tilgængelige, fælles ressourcer Race conditions (kritisk region) Procesblokering f.eks. v.hj.a. semaforer Fejl, inkonsistens Baglås (evt. udsultning)

15 Problem som kan løses med pointere // to parameteroverførte tal skrives ud sorteret #include void swap(int *,int *); main(int argc,char *argv[]) { int a,b; a = atoi(argv[1]); // tolker tekststreng som heltal b = atoi(argv[2]); if (a > b) swap(&a,&b); printf("Mindste tal: %d. Største tal: %d. \n",a,b); } swap(int *pa,int *pb) {..}

16 Brug af pointere i swap() Kaldsomgivelser 3 a: 2 b: Kaldt funktion pa: pb: swap(int *pa,int *pb) { {ombyt det pa og pa peger på} }

17 getchar(), putchar() (jf. Kernighan/Ritchie s. 16) #include main() { int c = 'A'; while (c != EOF) { c = getchar(); putchar(c); } EOF er defineret i stdio.h (vhja. #define) som et bestemt heltal. putchar() og getchar() skriver/læser til/fra stdout/stdin Når alm. tegn lagres som heltal arbejdes med tegnets ASCII-værdi. Specielle 'tegn' har specielle talværdier som evt. overskrider hvad der kan lagres som 1 tegn (7 bits).

18 Lavniveau-læsning fra fil #include main () { int c = 'A', fd, count = 1; char myfile[] = "low_level_io.c"; fd = open(myfile,O_RDONLY); if (fd < 0) exit(1); while (count > 0) { count = read(fd,&c,1); write(1,&c,1); } close(fd); } open/read/write/close arbejder med fildeskriptorer og tegnarrays.

19 Højniveau-læsning fra fil #include main () { int c = 'A'; char myfile[] = "high_level_io.c"; FILE *stream; stream = fopen(myfile,"r"); while (c != EOF) { c = fgetc(stream)) putchar(c); // eller fputc(stdout,c) } fclose(stream); } fopen/fclose/fgetc/putchar m.fl. arbejder med streams og tilbyder pænere grænseflade


Download ppt "Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov."

Lignende præsentationer


Annoncer fra Google