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

Relevanta dokument
Institutionen för elektro- och informationsteknologi, LTH

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Datorsystemteknik Föreläsning 7DAVA14

Polling (cyklisk avfrågning) Avbrott

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

Lösningar till tentamen i EIT070 Datorteknik

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 4. Polling och avbrott. Institutionen för elektro- och informationsteknologi, LTH. Mål

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

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

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

Stack och subrutiner Programmeringskonventionen

Tentamen i EIT070 Datorteknik

F8: Undantagshantering

Digital- och datorteknik

Fö 5+6 TSEA81. Reflektion av Lab 2. clock.c (module) Real-time kernel + Real-time OS

Datorteknik ERIK LARSSON

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

A-del motsvarande KS1

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

F5: Högnivåprogrammering

F5: Högnivåprogrammering

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Föreläsningsanteckningar 3. Mikroprogrammering II

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Digital- och datorteknik

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

Tentamen i EIT070 Datorteknik

TSEA28 Datorteknik Y (och U)

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Mekanismer. (implementation)

CE_O3. Nios II. Inför lab nios2time

In- och Utenheter. Fö 3: In/Ut matning och kopplingsstruktur. Några exempel. Egenskaper. In- och Utenheter. Styrning.

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

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Datorsystemteknik DVGA03 Föreläsning 5

TSEA28 Datorteknik Y (och U)

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

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

LABORATION. Datorteknik Y

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel

Hur delas CPU? Processormodell. Vårt produk9onsbolag igen. Produkt 2. Produkt Vinster med aa göra saker sam9digt.

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

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

Datorsystemteknik DVGA03 Föreläsning 8

Systembeskrivning. Systemskiss. Moduler.

Maskinorienterad programmering

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

3. Mikroprogrammering II

Trådar och Multiprocessorer. Föreläsning 6

TSEA28 Datorteknik Y (och U)

F4: Assemblerprogrammering

LABORATION. Datorteknik Y

Övning2 Datorteknik, HH vt12 - Programmering

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

Synkronisering. Ordning och reda

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

Övningsuppgifter i Mikrodatorteknik 4p/5p

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Datorsystemteknik DAVA14 Föreläsning 10

Föreläsning 2. Operativsystem och programmering

Industriella styrsystem, TSIU06. Föreläsning 2

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

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

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

Tentamen. Datorteknik Y, TSEA28

Digitala projekt rapport

Maskinorienterad programmering

Laboration 2 i Datorteknik- Assemblerprogrammering II

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Digital- och datorteknik

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Avbrottshantering. Övningsuppgifter

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Exam Concurrent and Real-Time Programming

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Tentamen i TDIU16 Process- och operativsystemprogrammering

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

LV6 LV7. Aktivera Kursens mål:

Digital- och datorteknik

Digital- och datorteknik

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Styrenheten styrsignalsekvenser programflödeskontroll

Datorsystem Laboration 2: Minnesmappade bussar

Tentamen. Datorteknik Y, TSEA28

Lösningsförslag till tentamen i IS1500 Datorteknik

Digitala Projekt (EITF11)

Institutionen för elektro- och informationsteknologi, LTH

Transkript:

Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd Att du ska veta hur odelbara resurser kan hanteras Att du ska känna till funktionen hos en realtidskärna 1

Innehåll Avbrott - repetition Vad är ett realtidssystem? Microgravityugnen Hur får man en processor att utföra flera uppgifter? Trådar - Vad, när och hur? Hur fungerar en realtidskärna? Vad är ömsesidig uteslutning och hur implementeras det? Exempel på en realtidskärna för MIPS Repetition av avbrott Avbrott: En yttre (eller inre) händelse kan kopplas till en subrutin Avbrottsrutinen körs automatiskt när avbrottet kommer Avbrottsrutinen måste spara undan alla register som den använder Avbrott och MIPS: Sex externa användar-definierade avbrott Ett antal maskindefinierade avbrott finns Alla avbrott leder till att exekvering på adress 0x80000080 Efter avbrottet innehåller Causeregistret orsaken till avbrottet 2

Datorer för mätning och styrning Datorer används i många sammanhang för att mäta och styra olika processer - Pappersmaskiner - Autopiloter för flygplan - Styrsystem för truckar - Övervakningssystem på sjukhus Mätning och styrning timer avbrottsingång Analog insignal Analog styrsignal A/D D/A in ut Datorsystem Datorsystemets program läser insignalen med jämna tidsmellanrum och beräknar utifrån dessa styrsignaler Särskilda enheter omvandlar mellan analoga och digitala signaler 3

Vad är ett realtidssystem? Datorsystem med tidskrav Flera insignaler och flera utsignaler, möjligen med olika tidskonstanter Exempel: Bränsleinsprutningssystem för bilar (100 varv/s) Kraftverk Tvättmaskiner Switch/router för Internet Microgravity-experimentugn Halogenlampor Prov Ihålig kolcylinder Termoelement 1 gång/s: Styrsignaler till lamporna (värmer provet) 2 ggr/s: Mätsignaler från termoelement Huvudprogram: Beräkna styrsignaler, sänd telemetri till raketbasen (temp, status, ) 4

Microgravity-experimentugn Tre olika uppgifter för processorn Två av dessa är tidskritiska Mätningen och styrningen utformades i en avbrottsrutin Avbrotten genererades som externa med en timer En processor - flera olika uppgifter Hur kan en processor utföra flera uppgifter samtidigt? Nyckeln: Avbrottsmekanismen Kan användas för att realisera ett system som klarar flera olika processer 5

Trådar tråd 2 tråd 1 tråd 0 styrning mätning beräkning tid För vi har ju en enda processor! tid/100 tidsavbrott Trådar Trådar är program som gör olika saker, och turas om att köra på en och samma processor Olika strategier finns: Alla trådarna kan köras i turordning Trådarna kan ha proritet och köras i prioritetsordning 6

En tråds olika tillstånd Tidsavbrott Exekverande Redo Tex Systemanrop Väntan på händelser Blockerad Händelse som vi väntat på Skapa tråd Kan vi hindra tråden att bli avbruten? Ibland vill vi att tråden ska köra färdigt något kritiskt Ex: Utskrift, ställa om styrvärden, läsa av en givare Då får ingen annan tråd gå in och ta över processorn Kallas ömsesidig uteslutning - mutual exclusion Hur kan vi ordna det? Ledning: Vad gör att vi byter tråd? 7

Problem med gemensam resurs Tråd 1: printf( Detta är tråd 1!\n ); Tråd 2: printf( Detta är tråd 2!\n ); Ovanstående kod kan resultera i en utskrift som liknar: DeDtettat a äär r tråtd 1!r åd 2! Varför? Texten skrivs ut tecken för tecken Hur löser man det här? Ömsesidig uteslutning Tråd 1: lock(); printf( Detta är tråd 1!\n ); unlock(); Tråd 2: lock(); printf( Detta är tråd 2!\n ); unlock(); Hela utskriften kan skrivas ut utan att den andra tråden kommer in Detta är tråd 1! Detta är tråd 2! lock() hindrar andra trådar att köra, unlock() tillåter det igen. 8

Ömsesidig uteslutning - en lösning Vi vill inte att någon ann tråd ska köra Lösning: stäng av avbrotten. Ingen annan tråd kommer då att kunna köra. Lite för drastiskt ibland - det kan ju finnas andra, viktiga avbrott som vi då inte tillåter... Struktur för ömsesidig uteslutning Semaforer - en struktur för detta Två operationer, wait() och signal() Semaforen initieras till ett värde, oftast 1. Den tråd som vill komma åt en resurs gör wait() på semaforen som hör till resursen Den tråd som släpper resursen gör signal() på semaforen. 9

Semaforer - wait() och signal() wait(sem) { while (sem<=0) { /* Vänta - Gör inget */ } sem = sem-1; } /* Tråden väntar tills värdet blir större än 0, låser sedan för andra */ signal(sem) { sem = sem+1; } /* Tråden låser upp semaforen */ Vad är en realtidskärna? Med en enda processor kan ju bara en enda tråd exekvera åt gången För varje tråd måste vi hålla reda på hur processorns status var för den tråden Statusen är innehållet i de vanliga registren, EPC, Status, Cause, HI och LO Vi måste kunna välja vilken tråd som ska köra efter nästa tidsavbrott - det gör SCHEDULERN 10

Vad gör en scheduler? När en tråd avbryts (av tex ett tidsavbrott) gör schedulern följande: - Sparar status för den aktuella tråden ( i minnet) - Väljer en ny tråd av dem som är klara att köra - Laddar status för denna tråd från minnet - Statusen: Registren, HI, LO, EPC, Status, Cause - Återhopp sker till nya trådens EPC. Varför? Statusbyte sp sp sp ra TCB1 (minne) ra TCB2 (minne) ra TCB3 (minne) EPC EPC EPC Tråd 1 avbryts Tråd 1 ska köras sp ra Processorns register EPC 11

Statusbytet Varje tråd har sin egen stackpekare. Varje tråd måste ha sin egen stack - måste specificeras då tråden initieras! Realtidskärnan En realtidskärna måste göra följande: Initiering av trådhantering, avbrottsrutin, etc Sätta upp strukturer då en tråd skapas Tillhandahålla primitiver för ömsesidig uteslutning Köra en scheduler som byter mellan de olika trådarna 12

Exempel: ITS Utvecklad av Mats Brorsson Skriven i C och assembler Bara det nödvändigaste är skrivet i assembler: - avbrottsrutinen - sparande av status (TCB) - skrivande av register (TCB) - hantering av avbrottsregister Grundfunktionerna i ITS ITS_init(): Initiering ITS_create_thread(routine,&arg,&stack) : Skapa tråd ITS_enter_critical(): Primitiv för ömsesidig uteslutning ITS_leave_critical() ITS_yield(): För trådar som vill släppa sin exekvering (om de t.ex. väntar) 13

Initiering ITS_init() Sätter upp och initierar datastrukturer En tråd sätts igång Avbrottsrutinen initieras Avbrott tillåts Skapa ny tråd ITS_create_thread(routine,&arg,&stack) Skapar och förbereder för ny tråd Subrutinens namn i routine Argument till subrutinen i arg Stackutrymme för tråden i stack Initierar några register i TCB: sp,a0,epc osv 14

Ömsesidig uteslutning ITS_enter_critical() Vill hindra andra trådar att köra - stänger av avbrotten! Kan användas för att implementera semaforer Ömsesidig uteslutning ITS_leave_critical() Tillåter avbrott igen när tråden passerat den kritiska regionen 15

Om man inte vill exekvera ITS_yield() Om en tråd inte kan eller vill köra vidare Vill släppa exekveringen till någon annan tråd Genererar ett mjukvaruavbrott (genom att skriva i Causeregistret) Vad händer i avbrottsrutinen? Vid avbrott avbryts den körande trådens exekvering Avbrottsrutinen måste spara trådens status i dess TCB - detta måste skrivas i assembler Värdet i trådens EPC är den adress där exekveringen ska återupptas (den blev ju avbruten!) ITS_scheduler anropas. Den väljer en ny tråd som ska köras, skickar dess TCB-adress i register k0 16

Hur väljer schedulern en ny tråd? Tråden måste vara redo för körning Man skulle sedan kunna välja efter prioritet Enkel strategi: turordning - round robin Schedulern behöver inte skrivas i assembler, och är det heller inte i ITS Hur startas nästa tråd i ordningen? Den nya trådens TCB skrivs till registren (utom EPC) - vi återställer den status som tråden hade senast Kopiera trådens EPC till register k1 Hoppa tillbaka med jr k1 Återställ med rfe 17

ITS ITS är en relativt enkel realtidskärna, som trots det kan användas till mycket. Den visar på de viktigaste principerna. Naturliga utvidgningar av kärnan vore att implementera prioriteter vid trådbyte, och möjlighet till systemanrop. Var hittar vi realtidskärnor? Windows Unix Läspennor Telefoner mm 18

Sammanfattning Realtidssystem används flitigt överallt En processor kan utföra många uppgifter samtidigt Trådar och trådbyte Avbrott är nyckeln till system med flera trådar Realtidskärnan - vad gör den? Schedulern - vad har den för roll och funktion? Ömsesidig uteslutning ITS - en enkel, pedagogisk, realtidskärna 19