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

Relevanta dokument
Realtidssystem. - Schemaläggning - EDAF85 - 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

Tentamen Lösningar EDA698 Realtidssystem

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

Exam Concurrent and Real-Time Programming

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

Aktivitetsschemaläggning för flerkärninga processorer

Omtentamen i Realtidsprogrammering för Au3, D3, E3

Tentamen i Realtidsprogrammering för Au3, D3, E3

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

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

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

Tentamen EDA698 Realtidssystem (Helsingborg)

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

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.

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

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

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

Tentamen EDA698 Realtidssystem (Helsingborg)

Fö 7 TSEA81. Scheduling

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

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

Realtidsprogrammering

INSTITUTIONEN FÖR DATA- OCH INFORMATIONSTEKNIK

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

Synkronisering. Föreläsning 8

Tentamen EDA698 Realtidssystem (Helsingborg)

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 13 Innehåll

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

Tentamen i Realtidsprogrammering

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

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

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

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

Föreläsning 13 Innehåll

Tentamen i Realtidsprogrammering

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

PROGRAMMERINGSTEKNIK TIN212

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

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

Tentamen, EDAA10 Programmering i Java

Föreläsning 5 Innehåll

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

Kompletterande kompendium till kursen Realtidsprogrammering

Trådar. Aktiva objekt

Klasshierarkier - repetition

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

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal

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

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

Tentamen. Datorteknik och realtidssystem

Realtidssystem, device drivers. Föreläsning 10

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

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

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

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

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

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

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

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

Spekulativ exekvering i CPU pipelining

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

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

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

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

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Mekanismer. (implementation)

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

Operativsystem - Processkedulering

Föreläsning 2 Datastrukturer (DAT037)

Datorsystemteknik Föreläsning 7DAVA14

Föreläsning 13 Innehåll

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

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

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

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

DAT043 - Föreläsning 7

Tentamen, EDA501 Programmering M L TM W K V

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

Tentamen. Datorteknik och realtidssystem

OOP Objekt-orienterad programmering

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

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

DAT043 - föreläsning 8

Seminarium 13 Innehåll

Classes och Interfaces, Objects och References, Initialization

Datakom II (MNP) ht 1998 Bengt Ahlgren 1. Vad är speciellt med implementering av kommunikationsprotokoll?

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

Öka prestanda i Shared-Cache multi-core processorer

TENTAMEN OOP

Synkronisering - Semaforen. Om att vänta men inte i onödan

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

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

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

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

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

Transkript:

Realtidssystem - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 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

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 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 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) } RlowP 6

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 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 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 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 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 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 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 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 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 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 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 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 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 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 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). Värmeelementet går dock inte att slås på eller av med en gång, slår man av det, så ger det ju fortfarande lite värme, precis som en spisplatta. Man måste alltså räkna ut hur långt i förväg man måste slå av elementet innan man når önskad temperatur, så att det inte går över gränsen, samtidigt som man måste veta när man måste slå på igen innan vattnet blir för kallt. Detta ger ramen för tidsperioden som den styrande tråden får sova innan den kontrollerar temperaturen nästa gång efter att den ha tagit beslut om att slå på eller av elementet - man måste kunna garantera att tråden kolla temperaturen i tid varje gång. 22

Sammanfattning Introducerat begreppen exekveringstid, svarstid, blockeringstid Introducerat schemaläggningsbegreppet och -principer (RMS, EDF) Introducerat begreppen prioritetsinvertering och prioritetsarv Ska kunna förklara dem introducerade begreppen och principer. Lästips: e-bok: del 2, kap 11 + 12, sida 263-294 Buttazzo, Resource Access Protocols 23