Realtidssystem, device drivers Föreläsning 10
Dagens föreläsning Realtidssystem Device drivers (Multimedia video)
Realtidssystem Karakteristika Mjuka realtidssystem Hårda realtidssystem Schemaläggning
Realtidssystem Uppgifter, jobb, som måste lösas inom givna tidsramar Ett jobb är oftast en ganska liten beräkning Ex: Läsa av och analysera sensordata Styra saker, ex. tändning i en bilmotor, instabila flygplan (JAS 39) Jobb har en deadline som inte får missas Realtidssystem, Device Drivers 4
Jobb Ett jobb har följande attribut starttid S är det tidigaste tillfälle då det kan startas beräkningstid C är den maximala exekveringstid det kan behöva för att utföra sin uppgift (kallas också critical path, kritisk väg) deadline D är tiden då det måste vara utfört S+C D (annars går det inte) Realtidssystem, Device Drivers 5
Periodiska jobb Ett periodiskt jobb sköter en uppgift som utförs med regelbundna intervall Styrsystem (mät,räkna,styr) Mätdatainsamling Tiden mellan två startider för ett jobb är dess period P Ex: mät något 10 ggr/sek ger period P = 0.1 sek Olika jobb i samma system kan ha olika period Ett system med bara periodiska jobb kallas periodiskt Realtidssystem, Device Drivers 6
Aperiodiska jobb Realtidsystem innehåller ofta uppgifter som inte är periodiska utan förorsakas av någon händelse Ex: Styrsystem: någon parameters värde indikerar att systemet måste nödstoppas Vanligt är att realtidsystem innehåller både periodiska och aperiodiska jobb Realtidssystem, Device Drivers 7
Hårda och mjuka system I ett hårt realtidssystem får man inte missa deadlines eftersom det medför fatala fel. Ex: En robotarm bör stoppas innan den slagit genom vindrutan på bilen den sätter samman Styrstavarna i en kärnreaktor bör hinna sänkas ned i härden innan kärnreaktionen skenar I mjuka realtidssystem bör man hålla deadlines men det inträffar inte katastrofer om man missar en deadline. Ex: Spelar man upp en videosnutt och missar en deadline så att det blir ett hack i filmen är det inte bra men heller inte katastrofalt Realtidssystem, Device Drivers 8
Mer eller mindre hårda/mjuka jobb I den mesta grundläggande litteraturen om realtidssystem är världen svart-vit eller hård-mjuk Men många verkliga realtidsystem kan innehålla uppgifter (jobb) som är mer eller mindre viktiga (hårda) Ofta bör man prioritera säkerhetskritiska jobb före sådana som styr normalfallet Ex: styr/kontrollsystem i en bil Vid en inbromsning bör man kanske prioritera att styra ABSbromsarna framför att klara perfekt motorstyrning om man inte klarar bägge optimalt jobb kan ha en vikt som talar om hur viktiga de är Realtidssystem, Device Drivers 9
Vilken typ av stöd från OS behövs? - hårda system Hårda realtidsystem kräver att man inte råkar ut för svårförutsägbara fördröjningar Hårda realtids OS har därför oftast inte stöd för: Virtuellminne Filsystem och många andra typer av I/O-enheter som kan läsas/skrivas under drift av realtidsystemet Data lagras oftast i ROM Exempel på realtids OS: VxWorks, Eneas OS-E... Realtidssystem, Device Drivers 10
Vilken typ av stöd från OS behövs? - mjuka system De flesta moderna UNIX och vissa Windows varianter stödjer mjuka realtids krav Användarna vill kunna titta på video, spela interaktiva spel, utnyttja IP-telefoni etc. Stödet består normalt av Möjlighet att ge processer högre prioritet Mjuka realtidsprocessers prioritet får inte sjunka genom t.ex ageing Möjlighet att låsa sidor i minnet (pinning) Möjlighet att avbryta andra processers systemanrop (kärnan) Realtidssystem, Device Drivers 11
Varför avbryta andra processers systemanrop? Vanligen måste ett OS vänta på att ett systemanrop eller blockerande I/O utförs innan ett processbyte kan utföras Ger upphov till dispatch latency när en ny process skall schemaläggas Kan ge oacceptabla fördröjningar för en (mjuk) realtidsprocess som vill exekvera Lösning: Gör det möjligt att avbryta (pre-emption) systemanrop och kärnan! Realtidssystem, Device Drivers 12
Att avbryta systemanrop och kärnan -forts. Problem: Hur hanteras datastrukturer som är under modifiering när systemanropet avbryts? Två alternativ: Preemption points kärnan kan bara avbrytas på vissa bestämda punkter Kärnan kan avbrytas var som helst men den avbrytande processen kan inte modifiera datastrukturer som den avbrutna processen arbetade med Ex: Solaris 2 och senare Kärnan kan avbrytas var som helst Dispatch latency utan pre-emption på kärnan ~100msec med pre-emption på kärnan ~2msec Realtidssystem, Device Drivers 13
Prioritetsinversion En process med hög prioritet kan bli tvungen att vänta på en process med lägre prioritet om: Processen med låg prioritet håller en resurs som inte kan göras pre-emption på och som procesen med hög prioritet behöver Lösningar: En process (jobb) får bara köra om den kan få alla resurser på en gång som den behöver för att slutföra sin uppgift (nå sin deadline i tid) Ha bara resurser som kan pre-emptas Realtidssystem, Device Drivers 14
Prioritetsinversion forts. - att ärva prioriteter Antag att en högprioriterad process begär att en lågprioriterad process skall utföra ett jobb åt den och att den högprioriterade måste ha svaret innan den kan fortsätta - den högprioriterade processen kan då få vänta på andra processer med mellanhöga prioriteter som avbryter den lågprioriterade! Lösning: låt den lågprioriterade processen ärva den högprioriterades priorited under det att den utför arbetet åt den högprioriterade Realtidssystem, Device Drivers 15
Schemaläggning i realtidssytem -Mål och kvalitetesmått Mål: klara alla deadlines En optimal realtidsschemaläggningsalgoritm är optimal om den bara misslyckas med att klara en deadline om ingen annan schemaläggningsalgoritm heller klarar det Mått som används för schemaläggningsalgoritmer: Minimera en viktad summa av tidpunkterna då jobb är klara (kan vara ett bra mått om man har jobb som är olika viktiga att slutföra) Minimera den maximala tiden T ett jobb missar sin deadline med dvs. maximala förseningen (om T > 0 måste mer resurser tillföras annars klarar man inte alla deadlines) OBS! Säger inget om hur många deadlines som klaras! Realtidssystem, Device Drivers 16
Maximal försening - exempel T1 T2 T3 T4 T5 Missar alla deadline d1 d2 d3 d4 d5 Maximal försening T2 T3 T4 T5 T1 Missar en deadline d1 d2 d3 d4 d5 Realtidssystem, Device Drivers 17 Maximal försening
Bivillkor för schemläggning Bivillkoren för en realtidsschemaläggning kan inkludera Deadlines Beräkningstider, C Starttider, S Ordning mellan jobb (ex. jobb A måste vara klart före jobb B) Vikter Realtidssystem, Device Drivers 18
Schemaläggningsvarianter - del 1 Statisk schemaläggning Alla bivillkor är kända a priori Fix processpopulation Schemaläggningsalgoritm: En statisk schemaläggning som aldrig ändras Dynamisk schemaläggning Alla bivillkor kända för de processer som är aktiva Dynamisk processpopulation, processer kan tillkomma, få nya starttider Schemaläggningen kan förändras med processpopulationen Vill man säkerställa att man kan möta deadline måste begära att nya processer kan deklarera hela sitt resursbehov/alla bivillkor och man kan tvingas neka en process/jobb att starta för att skydda jobb som redan schemalagts Realtidssystem, Device Drivers 19
Schemaläggningsvarianter - del 2 Off-line schemaläggning Schemaläggningen beräknas off-line Kan göras för statisk schemaläggning Bör också användas för att testa värsta fallet vid dynamisk schemaläggning On-line schemaläggning Schemalägningen beräknas vid exekveringen Realtidssystem, Device Drivers 20
Schemaläggning utan pre-emption Jacksons regel Varje schemaläggning som ordnar processerna efter strikt ökande deadline-tider är optimal Realtidssystem, Device Drivers 21
Periodiska system Nödvändigt villkor för att ett periodiskt system skall vara schemaläggningsbart C i /P i <= 1 C/P är andelen av perioden som en process måste få exekvera (last) Realtidssystem, Device Drivers 22
Analys av periodiska system Det kritiska ögonblicket är när alla jobb vill starta var sitt uppdrag samtidigt En prioritetstilldelning fungerar om den fungerar från det kritiska ögonblicket till dess att alla jobb är idle utan att något jobb missar en deadline Realtidssystem, Device Drivers 23
Rate Monotonic Scheduling - statisk schemaläggning för periodiska system Avbrytande (preemptive) schemaläggning med fasta prioriteter Processer kan avbrytas av att högre prioriterade processer blir körbara En process (eller tråd) per jobb Kortast period har högst prioritet p = 1/P Används i många system Realtidssystem, Device Drivers 24
Rate Monotonic Scheduling - schemaläggningsbarhet n oberoende periodiska processer kan schemaläggas med RMS omm: C i /P i <= n(2 1/n 1) Gränsvärde då n går mot : 0.69 8 Realtidssystem, Device Drivers 25
Earliest deadline first Dynamisk avbrytande schemaläggning för periodiska och aperiodiska system Den process som har kortast tid kvar till sin deadline får köra först En process som blir körklar anmäler sin deadline till systemet Optimal enligt Jacksons regel Klarar alla periodiska system med känd processpopulation och last <= 1 Men vid överlast kan den fungera riktigt dåligt och ge en dominoeffekt av jobb som missar sin deadline!!! Realtidssystem, Device Drivers 26
Exempel på schemaläggning T A (C=15, P=30) T B (C=15, P=40) T C (C=5, P=50) RMS prioriteter 1/30 1/40 1/50 Total last: 15/30+15/40+5/50 = 0.975 RMS EDF T C missar sin deadline! 0 10 20 30 40 50 60 70 80 90 100 110 120 Realtidssystem, Device Drivers 27
Schemaläggning med vikter Smiths regel Antag att varje process har en vikt w som anger hur viktig den är En schemaläggning är optimal som schemalägger processerna i icke-avtagande ordning efter C/w Realtidssystem, Device Drivers 28
Vad är svårt (omöjligt) Delade resurser är ett problem... Schemaläggning med allmänna ordningsvillkor (precedence constraints) mellan jobb är ett NP komplett problem Schemaläggning för processer som synkroniserar med semaforer är ett NP-komplett problem Earliest deadline first är icke-optimal om man har fler än en processor ex: 2 processorer jobb: T1(C=1, d=1), T2(C=1, d= 2), T3(C=3, d = 3.5) EDF kör T1 och T2 på var sin processor och T3 missar deadline Realtidssystem, Device Drivers 29
Device drivers Allmänt Lite om LINUX
Vilken kod ska en device driver innehålla Interface mot kärnan Kod för systemanrop Kod för avbrottshantering Kod för initialisering när device drivern installeras Kod för att städa upp om device drivern tas bort Device driver är en typ av svart-låda som ska styra hårdvaruenheten Realtidssystem, Device Drivers 31
Policy och mekansim En device driver bör implementera mekanismer för att hantera enheten En device driver bör inte implementera policy Viss implementation av policy kan dock vara på sin plats när det gäller säkerhet Kontrollera vem som kör rutinen Intialisera dataareor till noll så inte information sprids oavsiktligt (om en gammal datarea återanvänds) Man måste få till det rätt vad avser säkerheten! Realtidssystem, Device Drivers 32
Programmering Oftast vanlig C med lite assembler Alla C s biblioteksfunktioner är inte tillgängliga Kärnan har oftast egna motsvarigheter Ex. från LINUX: kmalloc(), printk() Koden måste vara reentrant Måste hantera parallelism (concurrency) Kod i kärnan kan avbrytas av avbrott! Om OS:et tillåter exekvering på multiprocessorer eller kärnan kan avbrytas kan dessutom flera processer exekvera koden samtidigt Realtidssystem, Device Drivers 33
Kompilering En device driver måste kompileras: För en viss arkitektur Normalt också för en viss version av OS-kärnan Realtidssystem, Device Drivers 34
Debuggning I de flesta fall kan man skriva meddelanden till en demon eller till en speciell fil från kod i kärnan En del system har inbyggda debuggers i kärnan Inte LINUX eftersom Linus T anser att interaktiva debuggers lätt leder till patchar För LINUX finns separatutvecklade kärndebuggers (kdb) Fel leder ofta till att den process som körde i device drivern dör men kärnan överlever oftast Har man riktig otur kan man få en maskin att hänga sig helt så den måste power-switchas Realtidssystem, Device Drivers 35
Device (driver) typer i LINUX Character device Block device Network interfaces Character och Block devices Hanteras som filer open, read, write, close systemanrop Network interfaces Syns i filsystemet Hanterar paket istället för strömmar av data Realtidssystem, Device Drivers 36
LINUX moduler LINUX har ett modulsystem för att kunna länka in /ta bort device drivers dynamiskt Inte länkning i vanlig mening Det byggs ingen exekverbar fil Objektkoden länkas till kärnans funktioner genom att funktionspekare sätts upp Kommandon för att installera/ta bort moduler insmod rmmod Realtidssystem, Device Drivers 37
LINUX moduler - forts. En modul i LINUX skall ha Funktion för installation Registerar funktioner hos kärnan Initierar data Funktion för upprensing om modulen tas bort med rmmod Realtidssystem, Device Drivers 38
LINUX moduler insmod module init_module() kernel proper register_capability() capabilities[] printk()...... rmmod cleanup_module() unregister_capability() Realtidssystem, Device Drivers 39
U s e r s p a c e Systemanrop och device drivers exit(0) Lägg parametern i register t.ex %o0 Lägg koden för systemanropet i register t.ex %g0 Gör trap, ta K e r n e l I TRAP-handlern Kolla att det var ett systemanrop Använd koden för systemanropet och slå upp/anropa funktionen från en tabell %g0 exit(%o0) s p a c e Realtidssystem, Device Drivers 40
U s e r s p a c e K e r n e l Systemanrop och device drivers write(fd, buf, len) TRAP-vektor %g0 write(%o0, %o1, %o2)? fd -> i-nodstabell DeviceDriverTabell write_to_terminal(fd, buf, len) s p a c e write_to_disk Realtidssystem, Device Drivers 41
LINUX moduler Globala variabler och funktioner blir normalt synliga för hela kärnan när en modul installeras För att undvika name-space pollution Deklarera funktioner och globala variabler som bara används lokalt i modulen som static Välj namn på sådant som skall vara synligt utanför modulen så att det går att förstå vad de används till Realtidssystem, Device Drivers 42
Att anropa funktioner i modulen En device driver identifieras av kärnan med ett major device number En enhet som hanteras av en device driver identifieras med ett minor device number När kärnan anropar funktioner i en device driver skickar den med major och minor device number till device drivern För att kärnan skall kunna använda funktioner i en device driver ska device drivern ha fördefinierade datastrukturer med pekare till funktioner struct file_operations med pekare till open, read, write etc. Realtidssystem, Device Drivers 43
Att bli en erkänd device driver En device driver måste välja ett ledigt major device number och registrera det hos kärnan För att skapa en device fil (node) i filsystemet (/dev) används kommandot mknod Kan bara köras av super-user (root) Ex: mknod /dev/scull c 254 0 Realtidssystem, Device Drivers 44
Att ta bort en device driver (modul) Man kan få stora problem om man tar bort en modul (device driver) som används Modulen skall ha en räknare som talar om hur många aktiva användare av modulen som finns Ansvaret att uppdatera räknaren ligger på modulen själv Räknaren måste uppdateras direkt när en ny användare startar använda modulen och räknas ned som det sista som görs när en användare slutar använda modulen Misslyckas man med dessa räknare kan man hamna i lägen då modulen inte går att avinstallera Dessutom skall modulen ha en funktion som rensar upp då modulen tas bort Lämnar tillbaka resurser den allokerat till kärnan som minne, datastrukturer etc. Realtidssystem, Device Drivers 45
Att lära sig mer LINUX device drivers 3 d edition Rubini & Corbet, O Reilly 2001 Boken finns tillgänglig på webben under GNU licens www.it.kth.se/courses/is1350 lab2 &3 www.oreilly.com/catalog/linuxdrive3/chapter/bookindexpdf.html Realtidssystem, Device Drivers 46
Lite om multimedia - både realtid och device drivers
Multimedia Integrering av Video (rörliga bilder) Ljud Text (textremsor) Multimedia blir allt vanligare Filmer på DVD Videoclips från nätet Spel Redigeringsverksamhet (produktion av multimedia) Video on demand Realtidssystem, Device Drivers 48
Karakteristika Ett dokument (t.ex. en film) kan bestå av Videoinformation (bilder) Flera ljudspår på olika språk Flera textspår på olika språk Extra ljud och bildspår för snabbspolning Videoinformationen är huvuddelen av data Oftast MPEG 2 kodad (kompression) Ungefär 4 megabit per sekund Består av bildrutor (25-30 per sekund) som på grund av kompression är olika stora Realtidssystem, Device Drivers 49
Något om videokompression med MPEG 2 En videoström (film) består av 25-30 bildrutor (frames) per sekund De flesta bildrutor skickas som diff av föregående (eller nästa), P (eller B)-frame Mycket kraftigt komprimerande i allmänhet En bild i sekunden eller så skickas som en JPEG bild, kallas I-frame Gör att man kan börja titta där Medger även fortsättning efter fel Kanske 10 gånger större än P eller B-frame Realtidssystem, Device Drivers 50
Krav för hantering av multimediadata Hög bandbredd och stora datavolymer 4-6 megabit per sekund en tvåtimmarsfilm blir 3,6 till 5,4 gigabyte stor ljudet tar ytterligare 70 kilobit per sekund och kanal Realtidskrav data måste komma i jämn ström Förutsägbarhet efter en bild kommer nästan alltid nästa Realtidssystem, Device Drivers 51
Filsystem för multimediadata Prestanda förbättras om filsystemet anpassas Strategi: använd förutsägbarhet lagra all information som används nära i tiden tillsammans en bild (I,B eller P-frame) ljudet för de 33-40 millisekunderna ev annan info read-ahead av data kan kräva stora buffrar men sparar många förflyttningar av diskarmen och kan spara mycket tid Realtidssystem, Device Drivers 52
Organisation av multimediafiler Småblocksmodellen (the small block model) blockstorlek mycket mindre än bildstorlek (inklusive ljud), t.ex. 1 KB varje bild är ett antal block, sista blocket halvfullt blocken i varje bild är konsekutiva på disken ett bildindex ger info om vilket blocknummer en bild ligger på samt hur stor den är diskhantering lite knepig då allokeringsenheten är olika stor Realtidssystem, Device Drivers 53
Organisation av multimediafiler Storblocksmodellen (the large block model) man lagrar flera bilder per block, block är t.ex. 256 KB ett blockindex håller reda på vilken bild som börjar i ett visst block och var på disken det blocket finns om det är plats över i ett block (bara en del av en bild får plats) kan man göra två saker lämna slutet av blocket tomt ha halva bilden i det blocket och andra halvan i nästa Realtidssystem, Device Drivers 54
Multimediafiler och cachning Använd inte LRU Använd inte LRU Använd inte LRU... Realtidssystem, Device Drivers 55
Multimediafiler och cachning Om två användare ser samma film nästan samtidigt kan man låta data ligga kvar efter första filmens hämtning Dock behövs en stor buffer eftersom filmen tar 4-6 megabit per sekund Realtidssystem, Device Drivers 56
Multimediafiler och diskarmsschemaläggning Om man har flera diskoperationer på kö kan man ordna om dem för ökade prestanda Enligt SJF algoritmen skulle man alltid ta det närmaste härnäst, men då svälts vissa operationer ut Man kan dela upp operationerna i grupper och optimera varje grupp för sig Hissalgoritmen lämplig för varje grupp Realtidssystem, Device Drivers 57
Nästa föreläsning Fallstudie LINUX & Windows Realtidssystem, Device Drivers 58