Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Algorithms and Architectures II
Jens Myrup Pedersen (JMP), Rasmus Løvenstein Olsen (RLO)
Mm3: Algorithm examples: Advanced backtracking, min-max, algorithms for task scheduling - February 23, 2009
Algorithms and Architectures II
1. Processor and Storage Architecture (JMP)2. Vehicular on-board networks and applications (RLO)3. Algorithm examples: Advanced backtracking, min-max, task scheduling (RLO)4. Complexity and complexity classes (RLO)5. Complexity and complexity classes 2 + algorithms for task scheduling (RLO)6. Advanced data structures 1 (JMP)7. Advanced data structures 2 (JMP)8. Graph algorithms 1 (JMP)9. Graph algorithms 2 (JMP)10. Guest Lecture by Rasmus H. Nielsen: Complex Problems in Network
Planning
Dagens program
• Binære træer og min/max søgning• Backtracking • Spanning tree• Task skedulering• Opgaver
Binære træer
Egenskaber ved binære træer:Lad x være et knudepunkt i et binært søge træHvis y er en knude i det venstre deltræ af x, så er key[y] ≤ key[x]. Hvis y er en knude i det højre deltræ af x, så er key[x] ≤ key[y]
5
3
2 5
7
8
23
7
58
4
Forøgede nøgletalFormindskede nøgletal
Intern data repræsentation af binære træer
• Ved anvendelse af (dobbelt) linked lister kan man simpelt repræsentere binære træer
• Eksempelvis til søgning af data elementer
B C D EA
A
B C
D E
Operationer på binære træer; indsæt en knude
• Flyt knuden ned og sammenlign key x med key[y] indtil der ikke er flere undertræer tilbage
• Det indsatte element er derefter en underknude
12
5
2 9
18
15 19
1713
12
18
15
Operations on binary trees – Delete node
12
5
3 12
16
23
20
1810 13
6
7
Brugs eksempel- Opdeling af areal i datastruktur
1. A er roden af træet og hele polygonet2. A splittes ind i B og C3. B splittes ind i D og E.4. D splittes ind i F og G, der er konvekse og derfor bliver blade i træet
Forespørgsler i binære træer
• Lede efter en specifik knude (key[y]) ved brug af nøgle x• Hvis key x = key[y] så stop; knuden er fundet • Hvis key x < key[y] så søg i venstre undertræ• Hvis key x > key[y] så søg i højre undertræ• Hvis der ikke er flere undertræer tilbage, så er der intet resultat • Søgningen kan foretages på O(h) tid (h er højden af træet)
• Maximum og minimum søgninger• Minimum søgning: Følg træets venstre side intil slutningen• Maximum søgning: Følg træets højre side indtil slutningen• Søgningen kan foretages på O(h) tid (h er højden af træet)
Dagens program
• Binære træer og min/max søgning• Backtracking • Spanning tree• Task skedulering• Opgaver
Backtracking – Hvad er problemet?
• Hvad nu hvis vi ikke har nogen nøgler der tillader os at udøve søgning i et binært træ• F.eks. Et problem er blevet nedbrudt i et sæt af mulige løsninger, og
nu har vi behov for at finde den bedste løsning givet et sæt af begrænsinger
Eksempel: Dronninge problemet
• Betragt et n x n skakbræt, og placeringen af dronningen q på brættet uden at denne truer andre dronninger allerede på brættet:
• Løsningsrummet er givet ved {1,2,3,…,n}n
• Efterprøvning af alle mulige løsninger giver nn muligheder, men ved at indse at to dronninger ikke kan være i samme række/kolonne reducerer det til n! muligheder.
En dronning truermange felter
Ø ØØØ Ø
Ø
Eksempel: Convex hull (Graham’s Scan)
• Problemet går ud på at konstruere den korteste polygon der sammenlukker et givet sæt at punkter i et plan
• Gennegå punkter i en eller anden orden, tilføj dem til en partiel løsning ved at lave et knæk på mindre end 180 grader, og backtracke løsningen når der laves et knæk der er større
• Algoritmen kræver O(nLog(n)) tid for at sortere punkterne, og O(n) tid til at udvælge et passende undersæt
Intuitivt
Start med ekstreme punkter
Gennemgå nu mulige løsninger
Backtracking
En potentiel løsning er givet ved et sæt S={v1,v2,..,vn}
Is S a solution
For each v in S, do:
Is {v1,v2,..,vn, v}Acceptable? Try {v1,v2,..,vn, v}
Is S != Ø
Try(S)
Return S
Return S
Yes
Yes
Yes
No
No
No
Karakteristika ved backtracking
• Backtracking er anvendeligt ved gennenmgang i et løsningsrum
• Identifikation af problemet, er den vigtigste del i løsningen
• Beskrivelse og identifikation af regler er nødvendige, men ikke nødvendigvis nemt!• ”Gode” regler kan nem reducere antallet af iterationer der er
nødvendige for at udføre proceduren
Dagens program
• Binære træer og min/max søgning• Backtracking • Spanning tree• Task skedulering• Opgaver
Graph definitions• En graf er defineret ved G=(V,E)
• V: sæt af linjer• E ⊆ VxV: Sæt af kanter• Ensrettet graf: (v1,v2)∈E⇒(v2,v1)∈E
• Basale operationer på grafer• På linjer: Add/Delete/Find• På kanter: Add/Delete/Find
• En sti er defineret ved := En sekvens af kanter• P(v1->vn)={(v1,v2), (v2,v3), (v3,v4),.., (vn-1,vn)}• Sti længden er n
• Applikationseksempler• Routing i computer netværk• Repræsentation og manipulation af (endelige) automataer (fortolkere,
compilers)• Repræsentation af semantiske relationer• …
Et ord om grådige algoritmer
• Grådige algoritmer vælger altid den mulighed der ser bedst ud på et givet tidspunkt
• De leder ikke altid til en optimal løsning, men i mange tilfælge gør de
Minimum spanning tree
• Problemet er at forbinde et træ med mindst mulig ”pris”
• Eksempel på applikationer: • Printudlæg for elektronik hardware, • Planlægning af netværk• Rutning i netværk
∑∈
=Tvu
vuwTw),(
),()(
a
h
b
i
g
c
f
d
e
4
8
11
7
8
2
1
6
2
4
7
14
9
10
At gro et spanning tree
• A er et undersæt af et spanning tree, T• Generiske algoritmer til at genere et minimums spanning tree
• Problemet er at finde en kant der er sikker for A• Kruskal’s algorithm• Prim’s algorithm
1 A ← Ø2 while A does not form a spanning tree3 do find an edge (u,v) that is safe for A4 A ← A∪{(u,v)}5 return A
Kruskal’s algorithm
• ”Brute force” metode til at konstruere et spanning tree• Ideen er at bygget et sæt af kanter E’ ved grådighed (’lokale’ beslutninger)• Algoritmen ser således ud
a
h
b
i
g
c
f
d
e
4
8
11
7
8
2
1
6
2
4
7
14
9
10
1 A ← Ø2 for each vertex v∈V[G]
do MAKE-SET(v)3 sort edges of E into increasing cost by w4 for each edge (u,v)∈E
do if FIND-SET(u)≠ FIND-SET(v)then A ← A∪{(u,v)}
UNION(u,v)5 return A
Prim’s algorithm
• ”Brute force” metode der ”vokser” en løsning• Alle kanter der ikke befinder sig i et træ, er placeret i en min-prioritets kø, Q
• Slutmålet med algoritmen opnås når flg. krav er opnået
}}{:])[,{( QrVvvvA −−∈= π
a
h
b
i
g
c
f
d
e
4
8
11
7
2
1
6
2
4
7
14
9
10
8
1 for each u∈V[G]do key[u] ← ∞
π[u] ← NIL2 key[r]←03 Q←V[G]4 while Q≠Ø
do u←EXTRACT-MIN(Q)for each v∈Adj[u]
do if v∈Q and w(u,v)<key[v]then π[v]←u
key[v] ←w(u,v)}}{:])[,{( rVvvvA −∈= π
Egenskaber ved de to algoritmer
• Udførselstid for de to algoritmer• Kruskal’s algorithm O(E log V)• Prim’s algorithm (afhængig af hvordan Q er implementeret)
• Adjacency matrix: O(V2)• Binær heap: O(E log V)• Fibonacci heap: O(E+V log V)
• Prim’s algorithm indeholder et træ under hele udførslen, mens Kruskal’s algoritme ikke gør
Dagens program
• Binære træer og min/max søgning• Backtracking • Spanning tree• Task skedulering• Opgaver
Task skedulering
• Introduktiont til problemstillingen• Basale strategier for job planlægning og eksekvering• Realtids planlægning• Job interaktion og kommunikation• Multi processor job planlægning
Introduktion til task schedulering
• Anvendelse af computer systemer idag kræver vi• At der kan køre mere end en proces ad gangen• At de bliver kørt fornuftigt, så det virker som parrallelitelt
(pseudo parralellitet ved enkelt CPU systemer)• Ved netværk har vi efterhånden også samme krav
• Vi vil gerne have oplevelsen af et enkelt system udfører vores opgaver
Løsningen er operativ systemer• Hvorfor har vi et behov for operativ systemer?
• At eksekvere flere applikationer/services på en enkelt computer er ikke muligt uden nogen form for kontrol af CPU’en
• Hvad gør det godt for?• Job håndtering• Hukommelsesstyring• Diskette og fil system• Device drivers• Netværk• Sikkerhed• Grafiske bruger flader
• Eksempler på eksisterende OS• Windows, MacOS, Unix, Linux, Solaris, TinyOS, og mange flere
• Basalt set: Et OS er en ressource manager, med CPU’en som den vigtigste ressource!
Et ord om response tider• Decisekunder
• Forventede response tider ved reaktion fra tryk på keyboard• Interaktion med en mus og skærm
• Brøkdele af sekunder• Bestemte typer af tankekrævende arbejde, f.eks. grafik design eller spil
• Mindre end to sekunder• Tilfælde hvor brugeren skal huske information i mellemliggende applikations
interaktioner• Mellem 2 og 4 sekunder
• Kræver høj koncentration af brugeren; kan måske være acceptabelt i nogle situationer
• Mere end 4 sekunder• Generelt ikke acceptabelt, og vil typisk lede til frustrationer hos brugeren
• Mere end 15 sekunder• Utolerable, men der er nogle situationer hvor det er ok, f.eks. i et skak
program• Brugeren bør generelt gives en chance for at gøre andre ting imens
Source: Martin, J., Principles of Data Communication. Englewood Cliffs, NJ: Prentice Hall, 1988
Planlægningsproblem af opgaver
• At en opgave skal udføres, betyder IKKE at vi kan vente i uendelighed• Blød realtid: Bruger interaktion, video, audio• Hård realtid: Kontrol og styre systemer til f.eks. biler, robotter, ...
• Et sæt af enhedsopgaver, S={a1, a2, a3, …., an}
• Et sæt af deadlines D={d1, d2, …., dn}• Hver deadline overholder: 1≤di≤n• Job ai er defineret ved di
• Et sæt af positive vægtninger, straffe eller prioriteringer W={w1, w2, …, wn}• En straf wi er givet hvis Job ai ikke overholder deadline di
• Problemet er nu, i hvilken orden af opgaver S skal de enkelte jobs udføres?
Eksempel på job planlægning
• Ved at anvende den grådige algoritme, GREEDY, kan vi finde et svar
• a5 og a6 vil blive afvist, og udførelsesordenen vil blive <a2, a4, a1, a3, a7, a5, a6>
• Prisen for at afvise a5 og a6 bliver a5+a6=50
ai 1 2 3 4 5 6 7
di 4 2 4 3 1 4 6
wi 70 60 50 40 30 20 10
1. A←Ø2. Sort S[M] into monotonically decreasing order by weight3. for each x∈S[M]
• do if A∪{x}∈l[M]then A←A∪{x}
4. return A
Job planlægning, et eksempel
Task 1
Task 2
Task 3
Time
Task running
Dispatcher
Task ready
Task Blocked
Task not started
Task 4
En model af et programs tilstand i et OS
New Ready Running Exit
Blocked
Admit Dispatch
Time-out
Release
Event wait
Event occurs
Proces context og contex skift
En proces er beskrevet af en blok af data, der typisk indeholder bl.a.• Et ID nummer der identificerer processen• Pointere til programmets lokation og hvor processoren er kommet til• Register indhold• Tilstand af forskellige flag og switche• Pointere til øvre og nedre grænser af hukommelse krævet for processen• En list af åbne filer af processen• Prioriteten af processerne• Status af alle I/O enheder krævet af processen• …
• Ved hvert job skifte, skal processoren på en eller anden måde også hente disse informationer frem
Performance parametre for planlæggere
• Bruger orienterede parametre• Turnaround tid: Tid mellem job instantiering og færddiggørelse• Response tid: Tid fra en forespørgsel er sendt, til et svar er givet• Deadlines: Antallet af deadlines der bliver mødt (bør være så høj som
muligt, evt. udtrykt som antal nåede deadlines ud af antal deadlines eller jobs)
• Forudsigelighed: Et givet job skal bruge ca. samme udførselstid uanset hvor stor belastning der er på systemet -> jitter
Performance metrics for schedulers
• System orienterede parametre• Throughput: Mængden af jobs der bliver færdige per tidsenhed• Processor udnyttelse: Procentandelen af tid processoren er
optaget af at udføre et job• Fairness: Uden bruger indflydelse, bør jobs behandles ens, og have
lige lang CPU tid; job tid versus gennemsnitlig job tid bør være ens• Prioritetsopfølgelse: Prioriterede jobs bør have mere CPU tid; job
tid versus gennemsnitlig job tid bør være større end lavere prioriterede jobs
• Balance mellem resourcer: Planlæggeren bør holde forskellige resourcer i balanceret brug (f.eks. ved multiprocessorer holde alle processorer rimelig balancerede i brug)
Task skedulering
• Introduktiont til problemstillingen• Basale strategier for job planlægning og eksekvering• Realtids planlægning• Job interaktion og kommunikation• Multi processor job planlægning
Basalt job eksekvering - enkelt processor system
CPU Exit programStart program
Preemption
• w = time spent in system, including waiting and executing• e = time spent in execution• s = total service time required by the task, including e.
Blocked queue
Hændelses differencerings kø – enkelt processor
CPU Exit programStart program
Preemption
• w = time spent in system, including waiting and executing• e = time spent in execution• s = total service time required by the task, including e.
Blocked queue
Event 1 queue
Event n queue
Prioritetsbaserede kø systemer – single processor
CPU Exit program
Start program
Preemption
RQ-0
Blocked queue
RQ-1
RQ-n
• w = time spent in system, including waiting and executing• e = time spent in execution• s = total service time required by the task, including e.
• Ikke blot et spørgsmål om at have jobs kørende på forskellige CPU’er• Inter proces synkronisering er svært• Hukommelsesstyring er svært• Overbelastning og uens belastning kan forekomme
• Et sted skal det besluttet hvilken CPU jobbet skal afvikles på
Basalt job eksekvering og livscyklus – multi processor
CPU
Exit programStart program
Preemption
CPU
CPU
Nonpreemptive planlægning
En planlægningsdisciplin er non-preemptive hvis først en proces er blevet tildelt en CPU, så kan den ikke tages væk fra CPU’en
Følgende er karakteriserende ved non-preemptive planlæggere• Korte jobs er sat til at vente på længere jobs, men den gennemsnitlige
behandling af jobs er fair• Response tider er mere forudsigelige fordi indkommende høj
prioritetsjobs ikke kan udskifte ventende jobs• En planlægger eksekverer jobs i de følgende to situationer
• Når et job skifter fra en løbende tilstand til en ventende tilstand• Når et job terminerer
Preemptive planlægning
• En planlægningsdisciplin er pre-emptive hvis først et job er blevet tildelt en CPU, så kan den flyttes
• Denne strategi tillader jobs der er logisk kørbare at blive midlertidig suspenderet i en såkaldt pre-emptive planlægning, og er en kontrast til ”kør indtil færdig” metoden
• Round Robin planlægninsdisciplinen er pre-emptiv (for hvert tidsstykke) og derfor er den effektiv i et tidsdelt miljø der skal kunne garantere rimelige response tider til interaktive brugere.
First-Come-First-Served (FC-FS) planlægger
• Simpel politik: First task der ankommer i buffer, bliver først serviceret• Normaliseret round-trip tid:
• FC-FS er normalt ikke nogen god job planlægger, da den typisk favoriserer processor bundne opgaver
#Tasks
Time
Task 1
Task 2
Task 3
Task 4
Effektivt
1≥+
=serving
servingqueue
ttt
η
Round robin planlægger
• Fair tilgang da den tillader forskellige jobs et minimum af CPU tid• Processor bundne opgaver har en tendens til at få mere CPU tid end andre opgaver
der f.eks. skal vente på I/O hændelser• Udvælgelse af eksekverings tider er ikke nødvendigvis trivielt
• Hvis valgt for kort, bliver RR metoden ineffektive pga. alt for mange proces context skift per tidsenhed
• Hvis valg for høj, risikerer man at opgaverne får høj response tid
#Tasks
Time
Task 1
Task 2
Task 3
Task 4
Effektivt
Mindste opgave næste opgave - planlægger
• En non-preemptive metode• Eksekverer de hurtige opgaver i en kø, før de længerevarende opgaver• Leder til uforudsigelige response tider• Kræver job udvikleren giver et estimat af eksekveringstiden, ellers må kernen
understøtte løbende estimering af eksekveringstider• Følsom overfor fejl/bugs/program typer som While(true);
#Tasks
Time
Task 1
Task 2
Task 3
Task 4
Effektivt
Mindste tid tilbage - planlægger
• En pre-emptive version af den korteste opgave planlægger• Så snart mindre opgaver ankommer i køen, gives disse prioritet• Giver generelt en bedre turnaround time ydelse i forhold til den korteste
opgave planlægger
#Tasks
Time
Task 1
Task 2
Task 3
Task 4
Effektivt
• En non-preemptive disciplin• Prioritet bestemmes af den estimerede eksekveringstid, og den tid
opgaven allerede har haft ventende på CPU tilgang
• Når en opgave er slut, eller blokeret, er opgaven med højest rankering R givet tilgang til CPU’en
• Favoriserer små opgaver, men sikrer på samme tid at opgaver ikke venter ekstremt lang tid, og dermed leder til relativt lavere response tider for alle opgaver
Højest response forhold næste - planlægger
execution
queue
execution
executionqueue
tt
ttt
ˆ1ˆˆ
R +=+
=
Feedback planlægger
• I stedet for at estimere den tilbageværende service tid, er fokus på den allerede spenderede eksekveringstid
• Efterhånden som opgaver kræver forøget processeringstid, bliver de sat i lavere prioritetskøer
CPU Exit programStart programRQ-0
RQ-1
RQ-n
CPU
CPU
Exit program
Exit program
Kombinationer af de forhenværende metoder
• Er muligt med f.eks. FC-FS med Round Robin eller andre kombinationer• Giver dog forøget kompleksitet der er uønsket
• Betragt kompleksitet af implementering af en metode versus den opnåede fleksibilitet og muligheder• Forøget kompleksitet af en planlægningsalgoritme, leder til
• Forøget kode• Højere sandsynlighed for fejl• Højst sandsynligvis også højere context skift tid
• Tiden for at skifte opgave, context skift, bør holdes på et minimum, og ikke være mere end 5-10% af den samlede eksekveringstid
Task skedulering
• Introduktiont til problemstillingen• Basale strategier for job planlægning og eksekvering• Realtids planlægning• Job interaktion og kommunikation• Multi processor job planlægning
Realtids planlægning
To typer af planlægningskrav• Blød realtidskrav
• Er karakteriseret ved• Det er ikke kritisk at møde en deadline, men ønskværdig• Det giver mening at fortsætte eksekvering, selvom deadlines ikke er mødt
• Eksempel• Bruger programmer som Power Point• Log system
• Hård realtidskrav• Er karakteriseret ved
• Det er absolut kritisk at en opgave nås til dens deadline• Hvis en deadline ikke er overholdt, kan der ske fatale fejl,
og det giver ingen mening at fortsætte eksekvering• Eksempel
• Kontrol algoritmer for f.eks. Satellite retnings kontrol, atomkraftværk, robotter, …• Bilers bremsesystemer• ….
Karakteristika ved realtids OS
• Deterministiske• Operationer kan udføres på forudsete tider eller med forudsete
tidsinterval• Ydelse i form at OS’s evne til at minimisere jitter og delay i
eksekvering af periodiske og tidskritiske operationer• Svært at opnå i et multi processor system
• Respons evne• Evnen for et OS til at instantiere en Interrupt
Håndteringssmekasnisme• Evnen til at foretage hurtige proces skifte (context skift)• Udfordringer er hovedsagligt fokuseret omkring indlejrede interrupt
og interrupt håndteringer
Karakteristika ved realtids OS
• Bruger kontrol• For realtids OS er det en vigtig feature at kunne tillade brugere (her
tænkes der applikationsudviklere) at have god kontrol over nøjagtigheden af opgave prioritering
• Fokus er på evnen til at• Sætte opgave prioritet niveau (inkl. Hård/blød realtidskrav)• Kontrol af interupts/atomiske operationer• Politikker til at håndtere opgaver med ens prioritet
• Stabilitet og sikkerhed• For realtidsapplikationer, er det absolut kritisk (for nogle mere end
andre) at opgaverne bliver eksekveret• Redundans på multikerne processorer, eller systemer kan være
løsninger, men introducerer yderligere kompleksitet
Forskellige strategier ved realtids planlægning
Task 1 Task 2 Task n RT-Task
Request for RToperation Schedule RT activity on next time slice
Clock tick
A) Round Robin preemptive scheduler
Task 1 RT-Task
Request for RToperation
Task 2
b) Priority driven nonpreemptive FCFS scheduler
Forskellige strategier ved realtids planlægning
Task 1 RT-Task
Request for RToperation
Task 2
c) Priority driven nonpreemptive FCFS scheduler, with deterministic preemption points
Task 1
Task 1 RT-Task
Request for RToperation
Task 2Task 1
d) Priority driven nonpreemptive FCFS scheduler, with imidiate preemption points
Eksempel: RealTime Linux (RT-Linux)
Hardware platform
RT-Linux kernel
RTTask
RTTask
RTTask
Linux kernel
Userapp
Userapp
Userapp
Userapp
RTTask
Kernel modules inRT-Linux space
Kernel Space –Low priority RT task
• FIFO pipes or shared memory (controlled by the RT-Linux kernel) can be used for communication between RT
User space,Lowest priority...
Warning: a high priority RT Task should always at some time release CPU to other tasks!!!
Generelt for realtids kerner
• Evne til hurtige opgave skift• Små i kode størrelse (især for indlejrede systemer)• Evne til at svare hurtigt på eksterne interrupts (HW/SW)• Multitasking med interproces kommunikationsmuligheder såsom
semaforer, signaler og hændelser (events)• Brug af speciel sekventielle filer, der kan akkumulere data ved hurtige
hastigheder• Pre-emptive planlægning baseret på prioritet• Minimering af interval hvorimellem interrupts er afbrudt• Primitiver til at udsætte opgaver i et givet stykke tid, og til at ændre
tilstande på opgaver mellem f.eks. pause/fortsætte• Specielle alarmer og time-outs (f.eks. watch dog timers)
Task skedulering
• Introduktiont til problemstillingen• Basale strategier for job planlægning og eksekvering• Realtids planlægning• Job interaktion og kommunikation• Multi processor job planlægning
Beskyttelse af resourcer
• Beskyttelse af resourcer er kritisk,men hvordan gøres dette fair?
• Diskution:• Ville det hjælpe med en tjener?• Vil en beskidt gaffel hjælpe og
hvordan? Philosophers dining problem
There is a group of philosophers (usually 5) who eat together at a round table. There are forks placed between the philosophers. Philosophers spend their time either thinking or eating. In order to eat, a philosopher must pick up exactly two forks, one on his immediate left, and the other on his immediate right. When he is done eating, he will put his forks down so that his neighbors may use them, and he thinks again.
Race condition
• Betragt to jobs; • A, B der hver udfører flg.
1. Read X2. Do X=X+13. Write X back
• Hvis eksekveret sekventielt, vil X blive 2 når A og B er færdige
• I et pseudo parrallelt miljø, kan X blive 1 !!
Task A
Task B
Integer X
Read X
Read X
X = X+1
X = X+1
Write X=1
Write X=1
Task A
Task B
Read X Read XX = X+1 X = X+1Write X=1 Write X=2
Time
Time
Deadlocks
“Når to tog nærmer sig hinanden ved et kryds, skal begge stoppe og ingen skal køre videre før at det andet tog har passeret”
Hændelser og inter proces kommunikation
#Tasks
Time
Task 1
Task 2
Task 3
Task 4
Processer har potentielt behov for at• Kommunikere med hinanden, f.eks. Udveksle data objekter/informationer• Vente på hinanden, f.eks. Ved beregning af et resultat, eller eksterne hændelser
(HW/SW interrupts)• Benytte samme ressourcer, såsom
• Diskette drev/filsystem• Hukommelse• Keyboard• …
Job synkronisering
• Typiske operationer som tråde/processer kan anvende• Semaphores og/eller mutexes: Til at undgå inkonsistens mellem
resourcer og data• Signaler: Dedikerede beskeder anvendt til at indikere andre jobs at
de skal udføre et eller andet, f.eks. Stop eksekvering, pause, vent, ...• Hændelse (event): At notificere et job om at et eller andet er sket,
f.eks. Jeg har beregnet X, Y har forespurgt om Z
• IEEE definerer en standard for job interaktion (IEEE Std 1003.1, Posix), se også online på http://standards.ieee.org/regauth/posix/
Task skedulering
• Introduktiont til problemstillingen• Basale strategier for job planlægning og eksekvering• Realtids planlægning• Job interaktion og kommunikation• Multi processor job planlægning
Multiprocessor planlægning
• I nogle systemer er der mere end en CPU til rådighed for at eksekvere en applikation
• Klasser af multiprocessor systemer• Løst koblet eller distribuerede multiprocessors: En samling af
relativt autonome processorer med hver deres egen hukommelse og I/O
• Funktionelt specialiserede processorer: I/O processorer til f.eks. Grafik, lyd, filsystem m.f.
• Tæt koblet multiprocessors: Et sæt af processorer der deler en fælles hukommelse og som er under kontrol af et OS
Distribuering af jobs
• Job deling: De enkelte opgaver er ikke associerede til en enkelt processor. En global kø af eksekverbare jobs er vedligehold, og hver processor vælger og eksekverer et job fra denne kø.
• Gruppe planlægning: Et sæt af relaterede jobs, f.eks. Tæt interagerende processer planlægges at køre på samme processor på samme tid, på et et-til-et basis
• Dedikeret processor tilvalg: Hvert proces er allokeret et antal af processorer lig med antallaet af tråde det genererer. Hver tråd køres påen seperat processor.
• Dynamisk planlægning: Virker på samme måde som den dedikerede processor tilvalg, men eftersom antallet af tråde der generes af en proces kan variere over tid, er tråde tildelt processor dynamisk
Dagens program
• Binære træer og min/max søgning• Backtracking • Spanning tree• Task skedulering• Opgaver
Opgaver
• Diskuter anvendelsen af job planlægning i jeres projekt• Hvilke planlægningsmetoder kan være anvendelige for jeres projekt?• Hvordan skal de kommunikere med hinanden?• Er der flere processorer involveret, eventuelt over netværk? Hvordan
håndterer man distribuerede opgaver efter de viste principper?• Tidskrav
• Hvad er jeres tidskrav? Hvordan finder i frem til dem?• Hvad er konsekvenser for i ikke kan nå jeres opgaver til tiden?
Opgaver
• Projekt Diskussion (15min): Diskuter potential anvendelse af grafer i jeres projekt• Hvad type graf kan være anvendelig (direkte/indirekte) og hvad form
for kant-markering kan være brugbar?• Hvilken type job/algoritme skal i bruge i jeres projekt for at arbejde
med disse grafer?
• Hvor mange dronninger kan man sætte sikker på et• 4x4 felt stort skakbræt?• 8x8 felt stort skakbræt?• 16x16 felt stort skakbræt?• Hvordan vil det være hvis man puttede f.eks. En bonde ind på brættet?• Hvordan vil det være hvis man tog en anden brik, f.eks. Et tårn eller
en springer?