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

Slides:



Advertisements
Lignende præsentationer
Anskaffelse af ny teknologi
Advertisements

Et projekt til undersøgelse af udviklingsmetodologi.
Kort om JavaScript Afvikles i browser på klienten Sendes fra server (php, asp, aspx, htm) eller startes i klient som htm/html fil. Skabelon: –”main” -
TEST 2 modul 1 20 spørgsmål. Du skal klikke med musen på det rigtige svar, så kommer du automatisk til næste spørgsmål Klik for start.
Grundlæggende IT Lektion 4 Sådan virker pc’en
Hvordan programmerer man?? STREAM - en model. Programmører arbejder ofte i teams Hver programmør arbejder på sin del af en større helhed.
OS[2]: Processor, tråde og skedulering
Computerens anatomi.
07 – Kort om OO Introduktion.
Et projekt til undersøgelse af udviklingsmetodologi.
Pc-kørekort Sådan virker pc’en Keld Hinsch.
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
Efteruddannelse Embedded C
// Semaphore.java package semaphore; public class Semaphore { int resources = 1; // Constructors Semaphore() {} Semaphore(int i) { resources = i; } synchronized.
Semaforer Hvordan virker semop() hvis der er flere operationer ? I hvilken rækkefølge vækkes blokerede semaforer ? man semop.. The system call semantic.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
DS-kursusgang nr. 4 IPC generelt IPC eksempel: beskedkøer IPC tidsforbrug: kontekstskift, skedulering C: abstraktion, funktionsbiblioteker.
DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning:
Slide 1 Lindalsbakken Hadsund Sandtidssystemer Del 3 Forlæsningsplan Del 1:Introduktion, definition.
Slide 1 Lindalsbakken Hadsund Sandtidssystemer del 2 Forlæsningsplan MM1:Introduktion, definition.
Multiprogrammering[2] Datalogi 1F Forår 2003 Synkronisering og grænseflader Jørgen Sværke Hansen
Datalogi 1F: Multiprogrammering[2]
Datalogi 1F: Multiprogrammering[4] 1 Planen for i dag Repetition af kerner med afbrydelser Kerner med tvungent processkift Præsentation af K1.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Hvorfor trådning? Performance Responsivness. Succeskriterier Forbedring af performance –Opgaverne skal være uafhængige –Jo flere afhængige opgaver, jo.
Adresserum Adresserum: Det interval af adresser, der kan arbejdes med i den samme proces (fra 0 til største adresse) Lippiatt++: adresser fylder 8 bit.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
Operativsystemer [3]: Synkronisering og baglåse Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
11.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Processer Oversigt, principper og teknikker Kapitel 11.
Et projekt til undersøgelse af udviklingsmetodologi.
Begreber og Redskaber 2 BRP.
Swapping og paging Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal.
MMP Model og Metode til Programudvikling – MMP 1 Kursusindhold: Modellering af postkontor Objekt Orienteret Programudvikling - OO* Unified Modelling.
OPI EFFEKTMÅLINGSVÆRKTØJ
Datalogi 1F Forår 2003 Multiprogrammering[3] Eksempler på multiprogrammeringskerner Jørgen Sværke Hansen
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Beskeder/beskedkøer Afsender- proces hej Modtager- proces.. msgsnd(..,"hej",..);.. msgrcv(..);.. Afsender skal bl.a. angive den besked der ønskes afsendt.
Objekter og klasser Rasmus D. Lehrmann DM
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
Procestræ under afvikling af cp init login shell cp cp src dest.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
Process Control Hardware baggrund Process begrebet i et OS Process tilstande Context switching.
Per Printz Madsen 1 Linux kernen Monolithic kernel Support for dynamiske moduler Få kerne tråde Preemptive.
Per P. MadsenStyresystemer og tjenester1 Threads.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Datalogi 1F: Multiprogrammering[3] 1 Planen for idag Kerner uden afbrydelser (KB4 kap. 6): –akernen: kerne med decentralt processkift –bkernen: kerne med.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
1 Processer. 2 fork int fork(); Danner en ny proces med samme indhold som forældre processen. I begge processer er programtælleren placeret lige efter.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
Indledende Programmering Uge 6 - Efterår 2006
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
1587 Server - Blandet miljø Embedded I
Embedded SW – C & picoBlaze
I det efterfølgende vil vi prøve at opnå forbindelse til de knapper som er på boardet. Opgaven er at vi ved at trykke på knapperne kan få lyset til at.
Lav et nyt projekt og tilføj denne gang pakken Graphic LCD.
I det efterfølgende kommer nogle eksempler på C kode som adskiller sig fra det vi normalt anvender i C# Hvis du har behov for hurtigt at afprøve små stumper.
1.08 Test.
Dokumentation.
Præsentationens transcript:

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

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

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

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

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

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)

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

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

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

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.

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

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: ….

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.

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)

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) {..}

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å} }

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).

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.

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