Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Relevanta dokument
Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5

Realtidsprogrammering Ordinarie tentamen

Exam Concurrent and Real-Time Programming

Tentamen Lösningar EDA698 Realtidssystem

Tråd C (ms) T (ms) A 4 16 B 3 10 C 4 25 D 2 12

Omtentamen i Realtidsprogrammering för Au3, D3, E3

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

Tentamen i Realtidsprogrammering för Au3, D3, E3

Realtidssystem Z EDA300 Tentamen 15/ , kl i V-huset

Aktivitetsschemaläggning för flerkärninga processorer

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Tentamen omfattar 40 poäng fördelade på 7 uppgifter. 20 poäng krävs för betyget 3, 30 poäng för betyget 4 och 36 poäng för betyget 5.

Tentamen EDA698 Realtidssystem (Helsingborg)

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

Realtidssystem. - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1

Realtidssystem. - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2

Fö 7 TSEA81. Scheduling

Tentamen EDA698 Realtidssystem (Helsingborg)

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

INSTITUTIONEN FÖR DATA- OCH INFORMATIONSTEKNIK

Realtidssystem. - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 4

Föreläsning 13 Innehåll

Synkronisering. Föreläsning 8

Tentamen EDA698 Realtidssystem (Helsingborg)

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

Realtidsprogrammering

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Föreläsning 3: Händelsestyrda program och användargränssnitt

Tentamen vid Institutionen för Datavetenskap, Linköpings universitet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Tentamen vid Institutionen för Datavetenskap, Linköpings universitet

Tentamen, EDAA10 Programmering i Java

Tentamen i Realtidsprogrammering

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?

Kompletterande kompendium till kursen Realtidsprogrammering

PROGRAMMERINGSTEKNIK TIN212

Föreläsning 13 Innehåll

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal

Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00

Datorarkitekturer med operativsystem ERIK LARSSON

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Föreläsning 5 Innehåll

Realtidssystem, device drivers. Föreläsning 10

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

syftar till att förbättra prestanda. Den kan avse något eller flera av följande mått.

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Tentamen i Realtidsprogrammering

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

Klasshierarkier - repetition

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Trådar. Aktiva objekt

Tentamen. Datorteknik och realtidssystem

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

Tentamen, EDA501 Programmering M L TM W K V

Tentamen. Datorteknik och realtidssystem

Schemaläggning Unix. Minneshantering etc. Linux. Schemaläggning av trådar (kernel threads) Detaljer. Operativsystem - Lektion 7

Realtidssystem. - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Concurrency Saker händer samtidigt. Process En instans av ett program

Några gamla tentamensuppgifter: Processer. 3. Antag givet ett system i vilket rent CPU-bundna processer med följande egenskaper exekveras.

Classes och Interfaces, Objects och References, Initialization

Operativsystem - Processkedulering

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Spekulativ exekvering i CPU pipelining

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Datorsystemteknik Föreläsning 7DAVA14

OOP Objekt-orienterad programmering

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 13 Innehåll

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Mekanismer. (implementation)

Öka prestanda i Shared-Cache multi-core processorer

Tentamen, Algoritmer och datastrukturer

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Schemaläggningsmetodik för multi-core inom Windows 7 OS Vad är scheduling och hur schemalägger Windows OS sina processer?

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

TENTAMEN OOP

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Carl-Fredrik Lindberg, ABB Corporate Research. Automation Scandinavia, Trådlös kommunikation i industrin - ett PiiA-projekt

Föreläsning 2 Datastrukturer (DAT037)

Datorteknik ERIK LARSSON

Tentamen i Objektorienterad modellering och design Helsingborg

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Introduktionsmöte Innehåll

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

Föreläsning 11. Giriga algoritmer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Transkript:

Realtidssystem - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja) 1

Innehåll Schemaläggning Realtid - krav, garanti, exekveringstider Schemaläggningsprinciper Prioritetstilldelning Prioritetsinvertering 2

Från parallellitet till realtid - Realtidskrav Ett realtidssystem måste utföra alla beräkningar logiskt korrekt reagera på inmatningar jämlöpande alltid ha konsistent data att arbeta med producera alla (del-)resultat i tid För att uppnå realtids-korrekthet (real-time correctness) måste mjukvaran säkerställa, att det jämlöpande-korrekta resultatet produceras pålitligt i tid. Ofta handlar det om att hantera både periodiskt upprepade aktiviteter parallelt med händelsestyrda aktiviteter 3

Tidsfördröjningar och väntetider i återkopplingsreglering Control system Software timing sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) (5) 4

Tidpunkterna i grafiken: Tidsfördröjningar och väntetider i återkopplingsreglering Control system Software timing sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) (5) 4

Tidpunkterna i grafiken: Tidsfördröjningar och väntetider i återkopplingsreglering 1. Starttid för regleringen, önskad början av perioden Control system Software timing sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) (5) 4

Tidpunkterna i grafiken: Tidsfördröjningar och väntetider i återkopplingsreglering 1. Starttid för regleringen, önskad början av perioden 2. Faktiska starten av regleringsberäkning, efter trådbyte (release time) Control system Software timing sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) (5) 4

Tidpunkterna i grafiken: Tidsfördröjningar och väntetider i återkopplingsreglering 1. Starttid för regleringen, önskad början av perioden 2. Faktiska starten av regleringsberäkning, efter trådbyte (release time) 3. Givarens mätdata är tillgänglig Control system Software timing sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) (5) 4

Tidpunkterna i grafiken: Tidsfördröjningar och väntetider i återkopplingsreglering 1. Starttid för regleringen, önskad början av perioden 2. Faktiska starten av regleringsberäkning, efter trådbyte (release time) 3. Givarens mätdata är tillgänglig 4. De beräknade regleringsvärden blir utgivna Control system Software timing sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) (5) 4

Tidpunkterna i grafiken: Tidsfördröjningar och väntetider i återkopplingsreglering 1. Starttid för regleringen, önskad början av perioden 2. Faktiska starten av regleringsberäkning, efter trådbyte (release time) 3. Givarens mätdata är tillgänglig 4. De beräknade regleringsvärden blir utgivna 5. Reglering och exekvering är avslutade, inkluderande förberedelse för nästa mätomgång Control system Software timing sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) (5) 4

Tidpunkterna i grafiken: Tidsfördröjningar och väntetider i återkopplingsreglering 1. Starttid för regleringen, önskad början av perioden 2. Faktiska starten av regleringsberäkning, efter trådbyte (release time) 3. Givarens mätdata är tillgänglig 4. De beräknade regleringsvärden blir utgivna 5. Reglering och exekvering är avslutade, inkluderande förberedelse för nästa mätomgång Control system Software timing sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) (5) Control delay och control response time är något som folk i reglerteknik tittar på, medans vi behandlar execution time (exekveringstid) och response time (svarstid) från mjukvaruperspektivet. 4

Tiden som en aktivitet (tråd) förbrukar 5

Tiden som en aktivitet (tråd) förbrukar Att hantera något i realtid betyder att garantera ett korrekt (användbart) svar inom en given tid 5

Tiden som en aktivitet (tråd) förbrukar Att hantera något i realtid betyder att garantera ett korrekt (användbart) svar inom en given tid Vi måste då titta på två olika typer av tider som ingår i en tråds sammanlagda arbetstid, alltså den maximala svarstiden (maximum response time, R) som vi vill garantera: 5

Tiden som en aktivitet (tråd) förbrukar Att hantera något i realtid betyder att garantera ett korrekt (användbart) svar inom en given tid Vi måste då titta på två olika typer av tider som ingår i en tråds sammanlagda arbetstid, alltså den maximala svarstiden (maximum response time, R) som vi vill garantera: 1. Exekveringstiden i värsta fall (Worst Case Execution Time, WCET), plus väntetider, ifall det finns delade resurser och preemption. 5

Tiden som en aktivitet (tråd) förbrukar Att hantera något i realtid betyder att garantera ett korrekt (användbart) svar inom en given tid Vi måste då titta på två olika typer av tider som ingår i en tråds sammanlagda arbetstid, alltså den maximala svarstiden (maximum response time, R) som vi vill garantera: 1. Exekveringstiden i värsta fall (Worst Case Execution Time, WCET), plus väntetider, ifall det finns delade resurser och preemption. 2. Starttid (som hänger direkt ihop med andra trådars exekveringstid och trådbytestider). 5

Tiden som en aktivitet (tråd) förbrukar Att hantera något i realtid betyder att garantera ett korrekt (användbart) svar inom en given tid Vi måste då titta på två olika typer av tider som ingår i en tråds sammanlagda arbetstid, alltså den maximala svarstiden (maximum response time, R) som vi vill garantera: 1. Exekveringstiden i värsta fall (Worst Case Execution Time, WCET), plus väntetider, ifall det finns delade resurser och preemption. 2. Starttid (som hänger direkt ihop med andra trådars exekveringstid och trådbytestider). Eftersom vi vill kunna ge garantier, kommer vi alltid utgå från det värsta möjliga läget, 5

Tiden som en aktivitet (tråd) förbrukar Att hantera något i realtid betyder att garantera ett korrekt (användbart) svar inom en given tid Vi måste då titta på två olika typer av tider som ingår i en tråds sammanlagda arbetstid, alltså den maximala svarstiden (maximum response time, R) som vi vill garantera: 1. Exekveringstiden i värsta fall (Worst Case Execution Time, WCET), plus väntetider, ifall det finns delade resurser och preemption. 2. Starttid (som hänger direkt ihop med andra trådars exekveringstid och trådbytestider). Eftersom vi vill kunna ge garantier, kommer vi alltid utgå från det värsta möjliga läget, Release time (maximal starttid) WCET (maximal exekveringstid) }R Maximum response time (Svarstid) 5

Svarstider och prioritet 6

Svarstider och prioritet Svarstiderna, dvs väntetider och fördröjningar beror också på trådens prioritet 6

Svarstider och prioritet Svarstiderna, dvs väntetider och fördröjningar beror också på trådens prioritet Högst prioriterade tråden Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) }RhighP 6

Svarstider och prioritet Svarstiderna, dvs väntetider och fördröjningar beror också på trådens prioritet Högst prioriterade tråden Andra trådar Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) }RhighP Tid för kontextbyte (trådbyte) + WCET för alla högre / likt prioriterade trådar Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) + n* WCET för alla högre / likt prioriterade trådar (vid preemption, beror på periodtider) (+ n*kontextbyte) } RlowP 6

Svarstider och prioritet Svarstiderna, dvs väntetider och fördröjningar beror också på trådens prioritet Högst prioriterade tråden Andra trådar Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) }RhighP Beräkningen av den maximala svarstiden (Worst case response time) hänger alltså ihop med den valda schemaläggningen och trådarnas periodiska aktivitet Tid för kontextbyte (trådbyte) + WCET för alla högre / likt prioriterade trådar Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) + n* WCET för alla högre / likt prioriterade trådar (vid preemption, beror på periodtider) (+ n*kontextbyte) } RlowP 6

Statisk schemaläggning 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Cyklisk upprepade exekvering av schemat 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Cyklisk upprepade exekvering av schemat T1 T2 T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Fördelar Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Cyklisk upprepade exekvering av schemat T1 T2 T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Fördelar Garanterad schema, alla får köra, allt utförs inom angivna tidsramar Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Cyklisk upprepade exekvering av schemat T1 T2 T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Fördelar Garanterad schema, alla får köra, allt utförs inom angivna tidsramar Varje aktivitet kan alltid utföras färdigt, inga avbrott, inga kritiska sekvenser Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Cyklisk upprepade exekvering av schemat T1 T2 T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Fördelar Garanterad schema, alla får köra, allt utförs inom angivna tidsramar Varje aktivitet kan alltid utföras färdigt, inga avbrott, inga kritiska sekvenser Lätt att beräkna den maximala svarstiden Cyklisk upprepade exekvering av schemat T1 T2 T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Fördelar Garanterad schema, alla får köra, allt utförs inom angivna tidsramar Varje aktivitet kan alltid utföras färdigt, inga avbrott, inga kritiska sekvenser Lätt att beräkna den maximala svarstiden Nackdelar Cyklisk upprepade exekvering av schemat T1 T2 T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Cyklisk upprepade exekvering av schemat Fördelar Garanterad schema, alla får köra, allt utförs inom angivna tidsramar Varje aktivitet kan alltid utföras färdigt, inga avbrott, inga kritiska sekvenser Lätt att beräkna den maximala svarstiden Nackdelar Fragmentering, inget bra nyttjande av CPUtiden T1 T2 T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Cyklisk upprepade exekvering av schemat T1 T2 Fördelar Garanterad schema, alla får köra, allt utförs inom angivna tidsramar Varje aktivitet kan alltid utföras färdigt, inga avbrott, inga kritiska sekvenser Lätt att beräkna den maximala svarstiden Nackdelar Fragmentering, inget bra nyttjande av CPUtiden Aktiviteter måste eventuellt delas upp i onaturliga avsnitt för att få dem in i en enstaka tidsintervall T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall 7

Statisk schemaläggning Används för extremt kritiska trådar och i enkla styrsystem Tiden blir delad i små intervall (slots) Alla aktiviteter (trådars exekveringstid) måste vara tillräckligt små så att de passar in i ett intervall Aktiviteterna är schemalagda i passande tidsintervaller innan systemet börjar köras Cyklisk upprepade exekvering av schemat T1 T2 T1: 50 gånger / sek, 8ms WCET, T2: 25 gånger / sek, 8ms WCET, 10ms tidsintervall Fördelar Garanterad schema, alla får köra, allt utförs inom angivna tidsramar Varje aktivitet kan alltid utföras färdigt, inga avbrott, inga kritiska sekvenser Lätt att beräkna den maximala svarstiden Nackdelar Fragmentering, inget bra nyttjande av CPUtiden Aktiviteter måste eventuellt delas upp i onaturliga avsnitt för att få dem in i en enstaka tidsintervall Schemat kan bli ganska komplext, och måste eventuellt göras om när programmet ändras 7

Dynamisk schemaläggning 8

Dynamisk schemaläggning Används i de flesta, inte helt så kritiska system, ofta också där resurserna måste utnyttjas till högsta möjliga grad 8

Dynamisk schemaläggning Används i de flesta, inte helt så kritiska system, ofta också där resurserna måste utnyttjas till högsta möjliga grad Beroende på den valda schemaläggningsprincip hanteras trådarna dynamiskt allt eftersom de startas up 8

Dynamisk schemaläggning Används i de flesta, inte helt så kritiska system, ofta också där resurserna måste utnyttjas till högsta möjliga grad Beroende på den valda schemaläggningsprincip hanteras trådarna dynamiskt allt eftersom de startas up Strict priority (Prioritetsbaserad) - trådarna sorteras i en väntekö enligt deras prioritet 8

Dynamisk schemaläggning Används i de flesta, inte helt så kritiska system, ofta också där resurserna måste utnyttjas till högsta möjliga grad Beroende på den valda schemaläggningsprincip hanteras trådarna dynamiskt allt eftersom de startas up Strict priority (Prioritetsbaserad) - trådarna sorteras i en väntekö enligt deras prioritet Round robin - trådarna sorteras i en FIFO-kö 8

Dynamisk schemaläggning Används i de flesta, inte helt så kritiska system, ofta också där resurserna måste utnyttjas till högsta möjliga grad Beroende på den valda schemaläggningsprincip hanteras trådarna dynamiskt allt eftersom de startas up Strict priority (Prioritetsbaserad) - trådarna sorteras i en väntekö enligt deras prioritet Round robin - trådarna sorteras i en FIFO-kö Vi måste anta dynamisk, prioritetsbaserad schemaläggning för att kunna bygga realtidssystem, annars måste man känna till alla trådar i systemet (så att man kan räkna in dem i schemaläggningsanalysen) 8

Prioritetsbaserad schemaläggning 9

Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning 9

Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning Dynamisk schemaläggning bestämmer online vilken tråd (av de som är flaggad ready ) ska köra 9

Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning Dynamisk schemaläggning bestämmer online vilken tråd (av de som är flaggad ready ) ska köra De flesta system-schemaläggare är baserad på prioriteter (som syns i Java-klasserna) 9

Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning Dynamisk schemaläggning bestämmer online vilken tråd (av de som är flaggad ready ) ska köra De flesta system-schemaläggare är baserad på prioriteter (som syns i Java-klasserna) Vi antar interrupt-driven schemaläggning, dvs avrbytbar (med preemption), men detta kan kringgås på program-nivå med java.lang.thread.yield(), ifall en ny schemaläggning behövs 9

Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning Dynamisk schemaläggning bestämmer online vilken tråd (av de som är flaggad ready ) ska köra De flesta system-schemaläggare är baserad på prioriteter (som syns i Java-klasserna) Vi antar interrupt-driven schemaläggning, dvs avrbytbar (med preemption), men detta kan kringgås på program-nivå med java.lang.thread.yield(), ifall en ny schemaläggning behövs Om prioriteterna är fasta, alltså inte ändras efter att tråden har skapats, pratar vi om fixed priority scheduling 9

Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning Dynamisk schemaläggning bestämmer online vilken tråd (av de som är flaggad ready ) ska köra De flesta system-schemaläggare är baserad på prioriteter (som syns i Java-klasserna) Vi antar interrupt-driven schemaläggning, dvs avrbytbar (med preemption), men detta kan kringgås på program-nivå med java.lang.thread.yield(), ifall en ny schemaläggning behövs Om prioriteterna är fasta, alltså inte ändras efter att tråden har skapats, pratar vi om fixed priority scheduling Hur sätter man då en tråds prioritet? 9

Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning Dynamisk schemaläggning bestämmer online vilken tråd (av de som är flaggad ready ) ska köra De flesta system-schemaläggare är baserad på prioriteter (som syns i Java-klasserna) Vi antar interrupt-driven schemaläggning, dvs avrbytbar (med preemption), men detta kan kringgås på program-nivå med java.lang.thread.yield(), ifall en ny schemaläggning behövs Om prioriteterna är fasta, alltså inte ändras efter att tråden har skapats, pratar vi om fixed priority scheduling Hur sätter man då en tråds prioritet? Trådens prioritet påverkar schemaläggningen, dvs väljer man fel kan det bli omöjligt att hitta ett fungerande schema 9

Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning Dynamisk schemaläggning bestämmer online vilken tråd (av de som är flaggad ready ) ska köra De flesta system-schemaläggare är baserad på prioriteter (som syns i Java-klasserna) Vi antar interrupt-driven schemaläggning, dvs avrbytbar (med preemption), men detta kan kringgås på program-nivå med java.lang.thread.yield(), ifall en ny schemaläggning behövs Om prioriteterna är fasta, alltså inte ändras efter att tråden har skapats, pratar vi om fixed priority scheduling Hur sätter man då en tråds prioritet? Trådens prioritet påverkar schemaläggningen, dvs väljer man fel kan det bli omöjligt att hitta ett fungerande schema Både för att bestämma prioritet och för att sen kunna garantera en maximal svarstid, måste man analysera värsta fallet - schemaläggningsanalys med WCET. 9

Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms 10

Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms A: T2 får högre prioritet än T1: 10

Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms A: T2 får högre prioritet än T1: T2 T1 10

Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms A: T2 får högre prioritet än T1: T2 T1 T1 får inte köra i sin första period (FEL) 10

Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms A: T2 får högre prioritet än T1: T2 T1 T1 får inte köra i sin första period (FEL) B: T1 får högre prioritet än T2: 10

Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms A: T2 får högre prioritet än T1: T2 T1 T1 får inte köra i sin första period (FEL) B: T1 får högre prioritet än T2: T1 T2 10

Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms A: T2 får högre prioritet än T1: T2 T1 T1 får inte köra i sin första period (FEL) B: T1 får högre prioritet än T2: T1 T2 T2 blir avbruten av T1 vid 2ms och 6ms, men får ändå köra inom den tänkte 5ms-perioden varje gång 10

Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms A: T2 får högre prioritet än T1: T2 T1 T1 får inte köra i sin första period (FEL) B: T1 får högre prioritet än T2: T1 Det fungerar alltså om högst frekvens får högst prioritet T2 T2 blir avbruten av T1 vid 2ms och 6ms, men får ändå köra inom den tänkte 5ms-perioden varje gång 10

RMS - Rate monotonic scheduling 11

RMS - Rate monotonic scheduling RMS regel: välj prioritet i relation till perioden; Kort period motsvarar hög prioritet. 11

RMS - Rate monotonic scheduling RMS regel: välj prioritet i relation till perioden; Kort period motsvarar hög prioritet. Fråga: Hur bra är denna tumregel? Kan vi granskar ett system mera noggrant? Hur exakt kan vi bestämma, om ett system kommer att fungera? 11

RMS - Rate monotonic scheduling RMS regel: välj prioritet i relation till perioden; Kort period motsvarar hög prioritet. Fråga: Hur bra är denna tumregel? Kan vi granskar ett system mera noggrant? Hur exakt kan vi bestämma, om ett system kommer att fungera? Fråga: Hur mycket CPU-tid kan vi använda? Går det att utnyttja CPUn till 100% om flera trådar ska samsas om den, som var för sig har en viss grad av nyttjande av CPUtid? 11

RMS - Rate monotonic scheduling RMS regel: välj prioritet i relation till perioden; Kort period motsvarar hög prioritet. Fråga: Hur bra är denna tumregel? Kan vi granskar ett system mera noggrant? Hur exakt kan vi bestämma, om ett system kommer att fungera? Fråga: Hur mycket CPU-tid kan vi använda? Går det att utnyttja CPUn till 100% om flera trådar ska samsas om den, som var för sig har en viss grad av nyttjande av CPUtid? Scheduling analysis enligt RMS: Hur mycket CPU-användning kan vi ha och fortfarande garantera att det finns ett schema som fungerar? 11

RMS - Rate monotonic scheduling RMS regel: välj prioritet i relation till perioden; Kort period motsvarar hög prioritet. Fråga: Hur bra är denna tumregel? Kan vi granskar ett system mera noggrant? Hur exakt kan vi bestämma, om ett system kommer att fungera? Fråga: Hur mycket CPU-tid kan vi använda? Går det att utnyttja CPUn till 100% om flera trådar ska samsas om den, som var för sig har en viss grad av nyttjande av CPUtid? Scheduling analysis enligt RMS: Hur mycket CPU-användning kan vi ha och fortfarande garantera att det finns ett schema som fungerar? 11

RMS - Rate monotonic scheduling RMS regel: välj prioritet i relation till perioden; Kort period motsvarar hög prioritet. Fråga: Hur bra är denna tumregel? Kan vi granskar ett system mera noggrant? Hur exakt kan vi bestämma, om ett system kommer att fungera? Förenklingar Till en början antar vi: Periodiska trådar Ingen blockering på resurs Deadline = period Fråga: Hur mycket CPU-tid kan vi använda? Går det att utnyttja CPUn till 100% om flera trådar ska samsas om den, som var för sig har en viss grad av nyttjande av CPUtid? Scheduling analysis enligt RMS: Hur mycket CPU-användning kan vi ha och fortfarande garantera att det finns ett schema som fungerar? 11

RMS - Rate monotonic scheduling RMS regel: välj prioritet i relation till perioden; Kort period motsvarar hög prioritet. Fråga: Hur bra är denna tumregel? Kan vi granskar ett system mera noggrant? Hur exakt kan vi bestämma, om ett system kommer att fungera? Fråga: Hur mycket CPU-tid kan vi använda? Går det att utnyttja CPUn till 100% om flera trådar ska samsas om den, som var för sig har en viss grad av nyttjande av CPUtid? Scheduling analysis enligt RMS: Hur mycket CPU-användning kan vi ha och fortfarande garantera att det finns ett schema som fungerar? Förenklingar Till en början antar vi: Periodiska trådar Ingen blockering på resurs Deadline = period Notation För varje tråd vet vi: T = Period C = Exekveringstid U = C/T = CPU-användning 11

Exempel (RMS) Vi försöker med 100% CPU utnyttjande 12

Exempel (RMS) Vi försöker med 100% CPU utnyttjande T1: C=2ms, T=4ms, C/T=0.5 T2: C=5ms, T=10ms, C/T=0.5 12

Exempel (RMS) Vi försöker med 100% CPU utnyttjande T1: C=2ms, T=4ms, C/T=0.5 T2: C=5ms, T=10ms, C/T=0.5 T1 T2 12

Exempel (RMS) Vi försöker med 100% CPU utnyttjande T1: C=2ms, T=4ms, C/T=0.5 T2: C=5ms, T=10ms, C/T=0.5 T1 T2 12

Exempel (RMS) Vi försöker med 100% CPU utnyttjande T1: C=2ms, T=4ms, C/T=0.5 T2: C=5ms, T=10ms, C/T=0.5 T1 T2 Men med T2: C=2ms, T=4ms, C/T=0.5 hade det fungerat... problemet ligger alltså i relationen mellan perioderna 12

Exempel (RMS) Vi försöker med 100% CPU utnyttjande T1: C=2ms, T=4ms, C/T=0.5 T2: C=5ms, T=10ms, C/T=0.5 T1 T2 Men med T2: C=2ms, T=4ms, C/T=0.5 hade det fungerat... problemet ligger alltså i relationen mellan perioderna Värsta fallet som fortfarande går att schemalägga för två trådar utan blockering Med T1: C=1ms, T=2ms (C/T=0.5) får man T2: C=1ms, T=3ms som minsta U = C/T som fortfarande går att schemalägga. Totalt blir U = C/T = 1/2 + 1/3 0.83 12

EDF- earliest deadline first 13

EDF- earliest deadline first Ett annat schemaläggningsprincip, som alltid ger CPUn till den tråden som är närmast sin deadline 13

EDF- earliest deadline first Ett annat schemaläggningsprincip, som alltid ger CPUn till den tråden som är närmast sin deadline T1: C=2ms, T=4ms T2: C=5ms, T=10ms 13

EDF- earliest deadline first Ett annat schemaläggningsprincip, som alltid ger CPUn till den tråden som är närmast sin deadline T1: C=2ms, T=4ms T2: C=5ms, T=10ms T1 T2 13

EDF- earliest deadline first Ett annat schemaläggningsprincip, som alltid ger CPUn till den tråden som är närmast sin deadline T1: C=2ms, T=4ms T2: C=5ms, T=10ms T1 T2 Här kan man få 100% CPU användning, 13

EDF- earliest deadline first Ett annat schemaläggningsprincip, som alltid ger CPUn till den tråden som är närmast sin deadline T1: C=2ms, T=4ms T2: C=5ms, T=10ms T1 T2 Här kan man få 100% CPU användning, men: dyrt att implementera (ligger ovanpå prioritetsbaserad schemaläggare) 13

EDF- earliest deadline first Ett annat schemaläggningsprincip, som alltid ger CPUn till den tråden som är närmast sin deadline T1: C=2ms, T=4ms T2: C=5ms, T=10ms T1 T2 Här kan man få 100% CPU användning, men: dyrt att implementera (ligger ovanpå prioritetsbaserad schemaläggare) samt leverar riktigt dåliga resultat när det blir fel någonstans, då kommer alla trådar missar sina deadlines 13

Svarstider under tillfällig blockering Trådar i ett realtidssystem borde exekveras med absolut prioritetsbaserad ordning, dvs en tråd med hög prioritet ska inte behöva vänta på en tråd med lägre prioritet under en obestämt tidsperiod Därför (i ett realtidssystem): CPUn tilldelas alltid den högst prioriterade tråden som är redo (ready) Semaforer och monitorer har prioritetskö Det finns en ingångskö för nya och nyligen blockerade trådar till delade monitorer Kan vi då garantera rätt exekveringstid för högt prioriterade trådar utan att känna till exekveringstiden av mindre prioriterade trådar? Vad händer när det blir blockering på delade resurser? 14

Prioritetsinvertering 15

Prioritetsinvertering Ett problematiskt scenario: 15

Prioritetsinvertering Ett problematiskt scenario: Tre trådar med H(ög), M(edel) och L(åg) prioritet, där H och L delar en resurs. 15

Prioritetsinvertering Ett problematiskt scenario: Tre trådar med H(ög), M(edel) och L(åg) prioritet, där H och L delar en resurs. L exekveras och kommer in i en kritisk region (kommer in i resursen) 15

Prioritetsinvertering Ett problematiskt scenario: Tre trådar med H(ög), M(edel) och L(åg) prioritet, där H och L delar en resurs. L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera 15

Prioritetsinvertering Ett problematiskt scenario: Tre trådar med H(ög), M(edel) och L(åg) prioritet, där H och L delar en resurs. L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter och försöker komma in i den delade resursen, som L håller. H är blockerad. 15

Prioritetsinvertering Ett problematiskt scenario: Tre trådar med H(ög), M(edel) och L(åg) prioritet, där H och L delar en resurs. L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter och försöker komma in i den delade resursen, som L håller. H är blockerad. M fortsätter exekvera under en obestämd tidsperiod, och blockerar både L och H. 15

Prioritetsinvertering Ett problematiskt scenario: Tre trådar med H(ög), M(edel) och L(åg) prioritet, där H och L delar en resurs. L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter och försöker komma in i den delade resursen, som L håller. H är blockerad. M fortsätter exekvera under en obestämd tidsperiod, och blockerar både L och H. 15

Prioritetsinvertering Ett problematiskt scenario: Tre trådar med H(ög), M(edel) och L(åg) prioritet, där H och L delar en resurs. L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter och försöker komma in i den delade resursen, som L håller. H är blockerad. M fortsätter exekvera under en obestämd tidsperiod, och blockerar både L och H. 15

Prioritetsarv 16

Prioritetsarv Ett botemedel mot prioritetsinvertering är prioritetsarv 16

Prioritetsarv Ett botemedel mot prioritetsinvertering är prioritetsarv Idé: Låt en tråd med låg prioritet som håller i resurser som behövs av högre prioriterade trådar ärva den högre prioriteten, så att de blir klara så snart som möjligt och inte blockerar längre. 16

Prioritetsarv Ett botemedel mot prioritetsinvertering är prioritetsarv Idé: Låt en tråd med låg prioritet som håller i resurser som behövs av högre prioriterade trådar ärva den högre prioriteten, så att de blir klara så snart som möjligt och inte blockerar längre. Det finns olika protokoll som implementerar prioritetsarv: 16

Prioritetsarv Ett botemedel mot prioritetsinvertering är prioritetsarv Idé: Låt en tråd med låg prioritet som håller i resurser som behövs av högre prioriterade trådar ärva den högre prioriteten, så att de blir klara så snart som möjligt och inte blockerar längre. Det finns olika protokoll som implementerar prioritetsarv: Dynamiskt prioritetsarv (basic inheritance protocol) 16

Prioritetsarv Ett botemedel mot prioritetsinvertering är prioritetsarv Idé: Låt en tråd med låg prioritet som håller i resurser som behövs av högre prioriterade trådar ärva den högre prioriteten, så att de blir klara så snart som möjligt och inte blockerar längre. Det finns olika protokoll som implementerar prioritetsarv: Dynamiskt prioritetsarv (basic inheritance protocol) Prioritetstak (priority ceiling protocol) 16

Prioritetsarv Ett botemedel mot prioritetsinvertering är prioritetsarv Idé: Låt en tråd med låg prioritet som håller i resurser som behövs av högre prioriterade trådar ärva den högre prioriteten, så att de blir klara så snart som möjligt och inte blockerar längre. Det finns olika protokoll som implementerar prioritetsarv: Dynamiskt prioritetsarv (basic inheritance protocol) Prioritetstak (priority ceiling protocol) Direkt prioritetsarv (immediate inheritance protocol) 16

Dynamiskt prioritetsarv 17

Dynamiskt prioritetsarv Det problematiska scenariot räddad med prioritetsarv (?) 17

Dynamiskt prioritetsarv Det problematiska scenariot räddad med prioritetsarv (?) L exekveras och kommer in i en kritisk region (kommer in i resursen) 17

Dynamiskt prioritetsarv Det problematiska scenariot räddad med prioritetsarv (?) L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera 17

Dynamiskt prioritetsarv Det problematiska scenariot räddad med prioritetsarv (?) L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter 17

Dynamiskt prioritetsarv Det problematiska scenariot räddad med prioritetsarv (?) L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter och försöker komma in i den delade resursen, som L håller. H är blockerad. L ärver Hs prioritet och avslutar jobbet i den kritiska sekvensen. L får sen tillbaka sin egen prioritet och blir avbruten av H. 17

Dynamiskt prioritetsarv Det problematiska scenariot räddad med prioritetsarv (?) L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter och försöker komma in i den delade resursen, som L håller. H är blockerad. L ärver Hs prioritet och avslutar jobbet i den kritiska sekvensen. L får sen tillbaka sin egen prioritet och blir avbruten av H. H avsluter och M fortsätter exekveringen 17

Dynamiskt prioritetsarv Det problematiska scenariot räddad med prioritetsarv (?) L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter och försöker komma in i den delade resursen, som L håller. H är blockerad. L ärver Hs prioritet och avslutar jobbet i den kritiska sekvensen. L får sen tillbaka sin egen prioritet och blir avbruten av H. H avsluter och M fortsätter exekveringen Både H och M väntar enligt sina tidsperioder. L får avsluta. 17

Dynamiskt prioritetsarv Det problematiska scenariot räddad med prioritetsarv (?) L exekveras och kommer in i en kritisk region (kommer in i resursen) M avbryter (preemption) och börjar exekvera H avbryter och försöker komma in i den delade resursen, som L håller. H är blockerad. L ärver Hs prioritet och avslutar jobbet i den kritiska sekvensen. L får sen tillbaka sin egen prioritet och blir avbruten av H. H avsluter och M fortsätter exekveringen Både H och M väntar enligt sina tidsperioder. L får avsluta. 17

Dynamiskt prioritetsarv - problem Högst prioriterade tråden Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) } RhighP 18

Dynamiskt prioritetsarv - problem Högst prioriterade tråden Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) } RhighP Det kan förekommer multipla blockeringer på olika resurser av flera lägre prioriterade (LP) trådar, som tillfälligt får hög prioritet enligt prioritetsarv. Detta kan man komma förbi med: 18

Dynamiskt prioritetsarv - problem Högst prioriterade tråden Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) } RhighP Det kan förekommer multipla blockeringer på olika resurser av flera lägre prioriterade (LP) trådar, som tillfälligt får hög prioritet enligt prioritetsarv. Detta kan man komma förbi med: Prioritetstak (priority ceiling protocol): Enbart EN LP-tråd får komma åt någon av resurserna som HP-tråden behöver vid ett tillfälle. 18

Dynamiskt prioritetsarv - problem Högst prioriterade tråden Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) } RhighP Det kan förekommer multipla blockeringer på olika resurser av flera lägre prioriterade (LP) trådar, som tillfälligt får hög prioritet enligt prioritetsarv. Detta kan man komma förbi med: Prioritetstak (priority ceiling protocol): Enbart EN LP-tråd får komma åt någon av resurserna som HP-tråden behöver vid ett tillfälle. Direkt prioritetsarv (immediate inheritance protocol): LP-tråden som innehar en kritisk region (sekvens) får alltid den högste prioriteten som är förknippad med den aktuella resursen. 18

Dynamiskt prioritetsarv - problem Högst prioriterade tråden Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) } RhighP Det kan förekommer multipla blockeringer på olika resurser av flera lägre prioriterade (LP) trådar, som tillfälligt får hög prioritet enligt prioritetsarv. Detta kan man komma förbi med: Prioritetstak (priority ceiling protocol): Enbart EN LP-tråd får komma åt någon av resurserna som HP-tråden behöver vid ett tillfälle. Direkt prioritetsarv (immediate inheritance protocol): LP-tråden som innehar en kritisk region (sekvens) får alltid den högste prioriteten som är förknippad med den aktuella resursen. Egenskaper: Det blir ett staket kring en grupp av resurser, som då också garanterar att det hela är dödlägesfritt. Nackdelen är något högre hanteringskostnader, eftersom man måste registrerar trådarnas resursbehov. 18

Dynamiskt prioritetsarv - problem Högst prioriterade tråden Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) } RhighP Det kan förekommer multipla blockeringer på olika resurser av flera lägre prioriterade (LP) trådar, som tillfälligt får hög prioritet enligt prioritetsarv. Detta kan man komma förbi med: Prioritetstak (priority ceiling protocol): Enbart EN LP-tråd får komma åt någon av resurserna som HP-tråden behöver vid ett tillfälle. Direkt prioritetsarv (immediate inheritance protocol): LP-tråden som innehar en kritisk region (sekvens) får alltid den högste prioriteten som är förknippad med den aktuella resursen. fence around that set of resources. Egenskaper: Det blir ett staket kring en grupp av resurser, som då också garanterar att det hela är dödlägesfritt. Nackdelen är något högre hanteringskostnader, eftersom man måste registrerar trådarnas resursbehov. 18

Schemaläggning - begrepp 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan Är detta system schemaläggningsbart? 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan Är detta system schemaläggningsbart? Svaret blir ja eller nej. 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan Är detta system schemaläggningsbart? Svaret blir ja eller nej. Scheduling analysis (schemaläggningsanalys) 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan Är detta system schemaläggningsbart? Svaret blir ja eller nej. Scheduling analysis (schemaläggningsanalys) Arbetet att bedöma ett systems egenskaper när det gäller schemaläggningen, utfört under systemets uppbyggande 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan Är detta system schemaläggningsbart? Svaret blir ja eller nej. Scheduling analysis (schemaläggningsanalys) Arbetet att bedöma ett systems egenskaper när det gäller schemaläggningen, utfört under systemets uppbyggande Scheduling (schemaläggning) 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan Är detta system schemaläggningsbart? Svaret blir ja eller nej. Scheduling analysis (schemaläggningsanalys) Arbetet att bedöma ett systems egenskaper när det gäller schemaläggningen, utfört under systemets uppbyggande Scheduling (schemaläggning) Specialfall: statisk schemaläggning 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan Är detta system schemaläggningsbart? Svaret blir ja eller nej. Scheduling analysis (schemaläggningsanalys) Arbetet att bedöma ett systems egenskaper när det gäller schemaläggningen, utfört under systemets uppbyggande Scheduling (schemaläggning) Specialfall: statisk schemaläggning Normalfall: dynamiskt schemaläggning (kan vara prioritetsbaserad eller Round-robin ) 19

Schemaläggning - begrepp Schedulability (möjligt att schemaläggas): Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Schedulability test (test för möjlig schemaläggning) Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan Är detta system schemaläggningsbart? Svaret blir ja eller nej. Scheduling analysis (schemaläggningsanalys) Arbetet att bedöma ett systems egenskaper när det gäller schemaläggningen, utfört under systemets uppbyggande Scheduling (schemaläggning) Specialfall: statisk schemaläggning Normalfall: dynamiskt schemaläggning (kan vara prioritetsbaserad eller Round-robin ) OBS: Prioriteter och deadlines är till för korrekt realtidshantering (realtime correctness), medan den korrekta hanteringen av jämlöpande exekvering (concurrency correctness) INTE får vara kopplad till prioriteter! 19

Laboration 3 - periodiska trådar och mailbox 20

Laboration 3 - periodiska trådar och mailbox Ofta hamnar man i en situation där vissa aktiviteter i ett system ska utföras återkommande, möjligen med en given tidsperiod som de ska upprepas i (jfr laboration 1, tidsräknaren) 20

Laboration 3 - periodiska trådar och mailbox Ofta hamnar man i en situation där vissa aktiviteter i ett system ska utföras återkommande, möjligen med en given tidsperiod som de ska upprepas i (jfr laboration 1, tidsräknaren) Vissa aktiviteter har i sig ingen upprepning, de ska bara utföras en gång när någon händelse inträffar: när användaren trycker på en knapp ska knapptrycken hanteras, men när det inte händer något med knapparna behöver man inte göra något annat än att vänta (sporadiska trådar) eller rent av inte finnas (transaktionstråd). 20

Laboration 3 - periodiska trådar och mailbox Ofta hamnar man i en situation där vissa aktiviteter i ett system ska utföras återkommande, möjligen med en given tidsperiod som de ska upprepas i (jfr laboration 1, tidsräknaren) Vissa aktiviteter har i sig ingen upprepning, de ska bara utföras en gång när någon händelse inträffar: när användaren trycker på en knapp ska knapptrycken hanteras, men när det inte händer något med knapparna behöver man inte göra något annat än att vänta (sporadiska trådar) eller rent av inte finnas (transaktionstråd). Det kan vara bra att skilja den egentliga aktiviteten från periodhanteringen (om en sådan nu finns), så att man lättare kan komma åt tiden det ska ta för en aktivitet att utföras. En implementering kan då t ex erbjuda en perform -metod, som beskriver trådens jobb, medan run-metoden är redan implementerad i superklassen och implementerar loopen över återkommande anrop till perform. 20

Laboration 3 - periodiska trådar och mailbox Ofta hamnar man i en situation där vissa aktiviteter i ett system ska utföras återkommande, möjligen med en given tidsperiod som de ska upprepas i (jfr laboration 1, tidsräknaren) Vissa aktiviteter har i sig ingen upprepning, de ska bara utföras en gång när någon händelse inträffar: när användaren trycker på en knapp ska knapptrycken hanteras, men när det inte händer något med knapparna behöver man inte göra något annat än att vänta (sporadiska trådar) eller rent av inte finnas (transaktionstråd). Det kan vara bra att skilja den egentliga aktiviteten från periodhanteringen (om en sådan nu finns), så att man lättare kan komma åt tiden det ska ta för en aktivitet att utföras. En implementering kan då t ex erbjuda en perform -metod, som beskriver trådens jobb, medan run-metoden är redan implementerad i superklassen och implementerar loopen över återkommande anrop till perform. class Control extends PeriodicThread { Control() {super(20);} // Sampling period 20ms } public void perform() { // Perform ONE sample (i.e., no loop here!). double yr = getsetpoint(); double y = sample(); double u = controlpid(yr,y); setcontroloutput(u); } 20

Basklasser för periodiska uppgifter 21

Basklasser för periodiska uppgifter se.lth.cs.realtime.* (och Javas grundutbud) tillhandahåller olika typer av trådklasser som man kan bygga sina trådklassar på: 21

Basklasser för periodiska uppgifter se.lth.cs.realtime.* (och Javas grundutbud) tillhandahåller olika typer av trådklasser som man kan bygga sina trådklassar på: CyclicThread: PeriodicThread: SporadicThread: RTThread: JThread: Cykliskt upprepade uppgift utan specifik period Cykliskt upprepade uppgift med specifik period Cykliskt upprepade uppgift med en minimiperiod Basklass för de tre klasserna ovan. Ingen subklass av java.lang.thread Subklass av java.lang.thread, som erbjuder en metod perform som man ska implementera trådens uppgift i; perform kallas i en given period från run. Erbjuder också en mailbox (RTEventBuffer). 21

Tvättmaskiner och annan reglering 22

Tvättmaskiner och annan reglering En tvättmaskin ska enligt sin specifikation håller en viss vattentemperatur, beroende på det valda tvättprogrammet OCH steget i programmet. 22

Tvättmaskiner och annan reglering En tvättmaskin ska enligt sin specifikation håller en viss vattentemperatur, beroende på det valda tvättprogrammet OCH steget i programmet. Temperaturen måste alltså kontrolleras regelbundet och justeras enligt de ställda kraven, utan att det hamnar under eller över en viss gräns (under gränsen är kanske inte farligt, men över brukar inte vara bra för tvätten). 22