Utvärderingsmodell för COTS och objektorientering i realtidstillämpningar. Rev B

Storlek: px
Starta visningen från sidan:

Download "Utvärderingsmodell för COTS och objektorientering i realtidstillämpningar. Rev B"

Transkript

1 Utvärderingsmodell för COTS och objektorientering i realtidstillämpningar Rev B Torbjorn.Andreasson@emw.ericsson.se Lennart.Bie@emw.ericsson.se Mikael.Jeppsson@emw.ericsson.se Martin.Jigstam@emw.ericsson.se Annika.H.Ohlsson@emw.ericsson.se Kent.Petersson@emw.ericsson.se Ericsson Microwave Systems AB Breda internationella standarder, COTS (Commercial Off The Shelf) och objektorientering skapar nya möjligheter för konstruktion av allmänna datorbaserade system. Fenomenen börjar även göra sig gällande inom realtidsområdet. I rapporten presenteras en modell för utvärdering av fenomenen. Modellen syftar till att ta fram beslutsunderlag för val av plattformar och programmeringsspråk vid utveckling av realtidsorienterade system och applikationer. EMWAOHL / FCP Rev B 1

2 Innehållsförteckning 1 Bakgrund Klassificering av olika realtidssystem Mekanismer/Egenskaper Allmänna egenskaper Objektorienteringsegenskaper Realtidsegenskaper Modellen Språk Plattformar Konstruktionsfall Mätningar och resultat Generella instruktioner testfall Tolkning av resultat Konstruktionsfallsområde: Processhantering Implementering av periodisk process Schemaläggning periodiska processer Avbrottshantering Hantering av semaforköer Förekomst av prioritetsinvertering Maximalt antal användbara prioritetsnivåer Hantering av processer vid inläsning och utskrift Konstruktionsfallsområde: Minneshantering Dynamisk allokering/deallokering av minne Stack vs. Heap Fragmentering av dynamiskt minne Konstruktionsfallsområde: Modularisering och strukturering Åtkomst av dynamiskt allokerat minne Åtkomst av data med generella metoder Skapa instanser med hjälp av generella metoder Abstraktion av dataåtkomst Anpassning av klasser Konstruktionsfallsområde: Kommunikation och Distribution Meddelandeorienterad kommunikation Automatgenererad kommunikation Deterministisk kommunikation Pipes och Filter Abonnemangstjänst Abonnemangstjänst utökad Kommunikation med broker Dispatcher med Publisher-Subscriber (Observer) N-tier kommunikation Terminologi Referenser...83 Appendix A. Fota3_dis1.idl

3 1 Bakgrund Val av tekniker och plattformar för utveckling av moderna hård- och programvarurelaterade system karaktäriseras i mångt och mycket av COTS-orienterade vägval. Ambitionen är att så långt som möjligt undvika konstruktion av egna komponenter vilket var praxis till inte så länge inom försvarsindustrin. Utvecklingstiderna för militära projekt är i allmänhet långa vilket medfört att genomförda COTS-baserade teknikval redan är föråldrade innan systemen är klara. Det är inte alls ovanligt att vissa komponenter inte går att få tag på då systemen skall produceras. Under utvecklingsfasen är det relativt enkelt och smärtfritt att genomföra nya vägval men är betydligt svårare då systemet går till produktion, underhåll- och förvaltning. Det är inget ovanligt att försvarssystem skall underhållas och modifieras i år. Alternativet till COTS-baserad systemutveckling är istället egenkonstruktion, dvs att på egen hand konstruera och utveckla samtliga i systemet ingående komponenter. Denna princip har i allmänhet tillämpats vid utveckling av militära system och varit väl motiverat av t.ex. exceptionella miljökraven och att vara självförsörjande vid ett så kallat skymningsläge. Det finns båda fördelar och nackdelar med egenkonstruktion, t.ex. Dyrbart och resurskrävande att utveckla och underhålla egna komponenter i jämförelse med användning av COTS. Egna komponenter (i förhållande till COTS) tenderar till att vara för gamla redan innan de kan användas i utvecklingsarbetet av det egentliga systemet. En fördel med egenutvecklade system är däremot att man får full kontroll över den egna omgivningen. Det starkaste motivet till egenutvecklad systemutveckling baseras på principen om detaljerad kontroll och kännedom om alla i systemet ingående komponenter. Sådan systemkännedom är i allmänhet mycket svår att åstadkomma i system baserade på COTS-komponenter. Leverantörerna tillhandahåller eller exponerar sällan källkod, omgivning, etc. Därför har det utvecklats en mängd metoder för certifiering av COTSbaserade komponenter och system, t.ex. Black-Box Component Testing, Software Fault Injection, Operational System Testing, etc. Syftet är att skapa metoder som gör det möjligt för systembyggare att utvärdera, verifiera och förvissa sig om att de inköpta komponenterna uppfyller de uppställda kraven. En intressant företeelse i den programvarurelaterade världen är begreppet Open Source. Begreppet betyder att systemutvecklare inte bara får tillgång till färdiga exekverbara komponenter utan även till källkod. Detta innebär att komponenterna kan granskas in i minsta detalj av systembyggaren. Exempel sådana komponenter är operativsystemet Linux, nät-bläddraren Netscape, GNU-komponenterna, referensimplementationen av JDK (Java Development Kit), etc. 3

4 2 Klassificering av olika realtidssystem Det finns många olika definitioner på realtid och realtidssystem varav de flesta liknar följande definition: Realtidssystem är system som måste reagera på händelser från den fysiska omvärlden inom en viss tid. En definition av denna typ, liksom realtidssystem i sig, spänner över ett brett spektrum av system varför en klassificering av realtidssystem är nödvändig. En vanligt förekommande klassificering är uppdelning i hård-, medelhård- och mjuk realtid. Hård realtid Strikta krav på kort predikterbar svarstid. Exempel är flygplanstillämpningar. Medelhård realtid Krav på predikterbar svarstid. Långsammare system. Mjuk realtid Mer diffusa svarstidskrav. Inget krav på predikterbarhet. Exempel är presentationssystem. Ett alternativ är att utgå från olika tidskrav, deadlines och grundläggande implementeringsstrategier och kategorisera realtidssystemen efter dessa. I utvärderingsmodellen kommer ovanstående egenskaper att användas för kategorisering av realtidsapplikationer. Klassificering syftar till att skapa en terminologi som tillämpas i modellen samt för att kunna resonera om resultaten från mätningar. När det gäller tidskrav så kommer följande klassificering att användas: Systemkategorier Snabbt Långsamt Beskrivning Mycket korta svarstider. Särskild hänsyn till prestanda måste tas. Längre svarstider. Prestanda inget problem. Tabell 2-1 Klassificering av tidskrav Klassificeringen av vikten av varje tidskrav definieras enligt följande: Systemkategorier Strikta deadlines Hårda deadlines Mjuka deadlines Beskrivning Katastrofala följder om en deadline missas (värdet av svaret efter deadline är 0). Deadlines är exakt bestämda. Någon enstaka deadline får missas med inte allt för mycket tid (värdet av svaret efter deadline minskar mycket snabbt till 0). Deadline kan sättas inom ett litet tidsintervall. Irriterande med inga värre följder om en deadline missas (värdet av svaret efter deadline minskar långsamt ner till 0). Deadlines satta efter tycke och smak. Tabell 2-2 Klassificering av vikten av att hålla tidskraven 4

5 Implementeringsstrategier klassificeras enligt följande: Systemkategorier Beskrivning Händelsestyrt Händelser bearbetas momentant då de uppstår. Bearbetning av flera samtidiga händelser sker parallellt. Cykliskt Aktiviteter bearbetas enligt ett sekventiellt schema som upprepas kontinuerligt. Tabell 2-3 Klassificering av olika implementeringsstrategier. Observera att ett system kan vara en kombination av dessa kategorier. Ett system kan vara både händelsestyrt och cykliskt. Det är uppenbarligen en stor skillnad på olika system enligt ovanstående tabeller, till exempel mellan ett snabbt, cykliskt system med strikta deadlines och ett långsamt händelsestyrt system med mjuka deadlines. Ytterligare synpunkter på systemkategoriseringen Vissa starkt cykliska applikationer, ofta av DSP-karaktär, där allting är cykliskt kan snarast sägas vara av filterkarraktär. I dessa applikationer kan ofta all tillgänglig tid planeras (nästan 100% CPU-utnyttjande). Oftast behöver inte avbrott användas. Denna typ av applikationer anser vi inte tillhöra gruppen realtids-applikationer trots att de ofta förekommer där det finns stränga tidskrav. Den typiska realtidsapplikationen har en stark koppling till avbrott. Ofta är karaktären av typen kontroll-applikation, i det att den kontrollerar andra förlopp som ofta varierar över tiden. Dessa typer av system kallas ofta för reaktiva system (reactive systems). Händelserna i dessa reaktiva applikationer är ofta avbrottsstyrda och obestämda i tiden och när de inträffar krävs en deterministisk reaktion från realtidsapplikationen. Reaktiva system har oftast en mycket högre nivå av komplexitet än de cykliska. Om kraven på determinism är höga och det samtidigt förekommer många oförutsägbara asynkrona avbrott kan det vara en utmaning att konstruera denna typ av system och speciella prioriterings-algoritmer kan behöva användas för att kunna garantera worst case - svarstider. Applikationer kan ofta utnyttja sin cykliskhet till att planera arbete under sin cykel. Däremot sker ändå synkroniseringen mot de yttre cykliska förloppen direkt eller indirekt via avbrott. Dessutom kan dessa applikationer därutöver ha ytterligare avbrottsstyrda händelser som kan ha högre prioritet och därmed påverka och försvåra det cykliska arbetet. Sammantaget gör detta att denna typ av applikationer ändå ibland implementeras utan att cykliskheten utnyttjas alltför mycket, eller t.o.m. inte alls. I andra fall kan denna typ av applikationer använda prioriteringen mellan applikationens processer (tasks) för att garantera svarstiden (jfr. rate monotonic algoritmen). I många system som endast behöver uppfylla mjuk realtid är det tillräckligt att beakta den genomsnittliga svarstiden, något som absolut inte är tillräckligt för system för hård realtid. 5

6 Självklart har alla operativsystem, som gör anspråk på att kunna härbärgera realtidsapplikationer, olika prioriteringsalgoritmer och OS-primitiver som uppfyller realtidskrav. Detta innefattar t.ex. preemptive scheduling, priority inversion och att det går att kontrollera prioriteringar, köordningar m.m. i anropen till primitiverna. 6

7 3 Mekanismer/Egenskaper Ett realtidssystem har krav på egenskaper som systemet måste ha. För att uppfylla dessa krav är det nödvändigt att komponenterna som systemet är uppbyggt av också har ett antal egenskaper. I utvärderingsmodellen beaktas de egenskaper som beskrivs nedan. Observera att egenskaperna inte är oberoende av varandra. Den allmänna egenskapen modifierbarhet, till exempel, beror i stor utsträckning på vilken struktur en komponent har och för att möjliggöra en bra struktur finns till exempel de objektorienterade egenskaperna arv och inkapsling. 3.1 Allmänna egenskaper Komplexitet hur stort och (o)begripligt systemet är. Implementerbarhet hur lätt det är att implementera en viss typ av tjänst på en plattform. Modifierbarhet hur lätt det är att ändra eller lägga till funktionalitet till systemet. Portabilitet hur enkelt systemet/applikationen går att flytta till en annan plattform. Skalbarhet hur lätt det är att utöka systemet med nya instanser av komponenter som redan ingår. Robusthet hur stora förändringar från omvärlden som systemet klarar innan påverkan på funktionaliteten blir oacceptabel. 3.2 Objektorienteringsegenskaper Polymorfism möjligheten att implementera metoder (procedurer och funktioner) som fungerar för olika typer av data. Dynamisk bindning möjligheten att vänta med bindningen mellan operationsnamn och dess implementering till exekveringstillfället (run-time). Arv möjligheten att strukturera data på ett utbyggbart sätt. Tillsammans med polymorfism används arv för att underlätta återanvändning av kod. Aggregering möjligheten att beskriva att en klass är sammansatt av andra klasser eller sätta samman objekt så att de bildar ett nytt objekt på en högre nivå. Inkapsling möjligheten att strukturera data så att användning och implementering särskiljs. Med en väl genomförd inkapsling skall många ändringar av implementeringen kunna genomföras utan att användningen av data behöver ändras. Objektinstansiering möjligheten att dynamiskt kunna skapa flera instanser av ett objekt. 7

8 3.3 Realtidsegenskaper Tidsåtgång är den viktigaste egenskapen i realtidssystem. Mäts i olika former t.ex. exekveringstid, åtkomsttid och allokeringstid. Resurshantering hur de (oftast) begränsade resurserna utnyttjas i systemet. Exempel på resurser är processorkapacitet och minne. Determinism förutsägbarhet avseende tidsåtgång och resurshantering. Jitter maximum av den från gång till gång varierande fördröjningen mellan teoretisk starttid och faktisk starttid. Konfigurerbarhet möjlighet att variera systemets beteende. Konfigurationskrav krav att konfigurera systemets beteende i detalj. Latens tiden från en begäran till dess att begäran är uppfylld. 8

9 4 Modellen Modellen definierar tre klasser/dimensioner av alternativa vägval som måste beaktas vid utveckling av realtidssystem, se Figur 4-1. Den syftar till att tjäna som verktyg för att ta fram rekommendationer och beslutsunderlag då olika kombinationer övervägs. Modellen är flexibel genom att ta bort eller utöka mängden konstruktionsfall, språk och plattformar. Konstruktionsfall Språk Plattform Figur 4-1 Modellen De tre klasserna/dimensionerna i modellen har följande betydelse: Språk beskriver en mängd olika programmeringsspråk. Plattform beskriver en mängd olika kombinationer av middleware, operativsystem och hårdvara. Konstruktionsfall beskriver en mängd olika typkonstruktioner. Varje konstruktionsfall tydliggör en eller flera egenskaper i systemet eller egenskaperna för en mekanism. Konstruktionsfallen är generella och kan appliceras på valfri plattform och språk, även på framtida sådana företeelser. Genom att applicera ett konstruktionsfall på alla kombinationer av plattformar och språk, dvs täcka ett horisontellt plan i figuren ovan, kan olika plattformar och språk jämföras med varandra. För att undersöka egenskaperna hos en specifik kombination av språk och plattform, implementeras samtliga konstruktionsfall i det valda språket på den valda plattformen. I praktiken är det omöjligt att täcka alla kombinationer av rymden som definieras av modellen. En del konstruktionsfall kanske inte går att implementera på alla plattformar. Framför allt är det ointressant att lägga ner tid på en absurda kombinationer. För att kunna jämföra plattformar med varandra är det dock viktigt att ett antal konstruktionsfall spänner över de plattformar som ska jämföras. Detsamma gäller om flera språk ska jämföras. Att jämföra olika konstruktionsfall med olika språk är heller inte meningsfullt. 9

10 Rekommendationer för val av plattform och/eller språk görs genom att realisera modellens konstruktionsfall med hjälp av ett antal kandiderande språk och plattformsalternativ. Resultaten analyseras därefter med avseende på de önskade realtidsegenskaperna. 4.1 Språk Modellen skall appliceras på en mängd olika språk vilket betyder att konstruktionsfallen skall implementeras i de olika språken. De språk som först och främst avses innehåller objektorienterade mekanismer, vilket alltså inte nödvändigtvis är detsamma som objektorienterade språk. De mekanismer som ska finnas är implementeringsstöd för arv, polymorfism, inkapsling och instantiering. Dessa mekanismer är typiska för objektorienterad design och räcker för att enkelt kunna implementera en sådan design. Objektorienterade språk har förutom ovanstående mekanismer begrepp som klass och objekt. Tyvärr har begreppet objekt en tvetydig betydelse och kommer därför inte att användas i det fortsatta resonemanget. Istället används begreppen klass och instans. Naturligtvis går det att tillämpa utvärderingsmodellen på icke objektorienterade språk som helt saknar objektorienterade mekanismer. Då blir man tvungen att på egen hand realisera/implementera ovan definierade mekanismer. 4.2 Plattformar Med begreppet plattform menar vi kombinationen av de komponenter som används för att exekvera ett konstruktionsfall som är implementerat i ett programmeringsspråk. Exempel på olika sorters plattformskomponenter är: Hårdvara (processorer, bussar, etc.), Operativsystem (t.ex. Windows, Linux, VxWorks, EPOC, etc), Middleware (t.ex. CORBA, RMI, RPC, etc.), Även operativsystemen kan indelas i olika klasser, se Tabell 4-1. Operativsystemstyp Beskrivning DesktopOS Operativsystem som i första hand utvecklats för hantering av t.ex. administrativa applikationer, utvecklingsmiljöer för programvara eller hårdvara. Systemen erbjuder en rik flora av fönstersystem, kommunikationstjänster, och andra stödsystem. Exempel på operativsystem med dessa egenskaper är Windows och Solaris. RealtidsOS (RTOS) Specialiserade OS Operativsystem som i första hand utvecklats för att hantera stränga realtidskrav t.ex. reglersystem för flygplan. Exempel på operativsystem med sådana egenskaper är OSE, VxWorks och psos. Operativsystem som i första hand utvecklats för att stödja realisering av komponenter inom speciella områden t.ex. utveckling av DSP:er och smart-cards. Tabell 4-1 Klassificering operativsystem 10

11 Olika plattformar ger olika mycket stöd för de konstruktionsfall som ska implementeras. I Figur 4-2, illustreras fyra sätt att implementera ett konstruktionsfall. a) OS med få stödfunktioner, största delen av konstruktionsfallet implementeras på egen hand. b) OS med många stödfunktioner alternativt samma OS som i a men med extra hjälpprogramvara (t.ex. något middleware). En delar av implementeras fortfarande på egen hand. c) Inköpt programvara har utnyttjats så mycket det går för realisering av det önskade konstruktionsfallet. d) Inköpt programvara erbjuder det önskade konstruktionsfallet. Heldragna pilar symboliserar inköpt plattform och streckade pilar den del man måste implementera själv. Konstruktionsfall a b c d Maskin Figur 4-2 Arbetsinsats vid implementering av konstruktionsfall på olika plattformstyper Förutom dessa fyra alternativ finns även ett femte: implementera även operativsystemet (eller de nödvändiga funktionerna) själv. 4.3 Konstruktionsfall För att utvärdera olika egenskaper implementeras ett antal konstruktionsfall byggda på mönster. Eftersom samma konstruktionsfall implementeras på olika plattformar och i olika språk kan resultaten från de olika plattformarna/ språken jämföras Områden Konstruktionsfallen är uppdelade i följande områden: Processhantering Konstruktionsfall för utvärdering av synkronisering och möjligheter att styra schemaläggning. 11

12 Minneshantering Konstruktionsfall för utvärdering av olika sätt att hantera minne, t ex statisk allokering, dynamisk allokering och garbage collection. Modularisering och strukturering Konstruktionsfall för att utvärdera modulariserings- och metoder för strukturering. Kommunikation och distribution Konstruktionsfall för att utvärdera kommunikations- och distributionsmetoder Konstruktionsfallsmall Konstruktionsfall definieras av ett antal beskrivningar med tillhörande rubriker: Namn beskrivande namn på konstruktionsfallet. Efter namnet följer en motivering till varför konstruktionsfallet är av intresse i sammanhanget Beskrivning beskrivning av konstruktionsfallet genom exempel på typapplikation. Beskrivningen innehåller nödvändig information om konstruktionsfallet som inte passar under de andra rubrikerna. Struktur definieras i första hand med UML-diagram [13]. Strukturen kan även hänvisa till kända mönster som i så fall ska följas. I de fall funktionaliteten för ingående klasser/objekt inte anses självklar efter den ovan nämnda beskrivningen finns en mer detaljerad beskrivning. Implementering mer detaljerade krav på implementeringen av konstruktionsfallet för att få implementationerna i olika språk på olika plattformar så lika som möjligt. Testfall hur systemet ska testas med hjälp av konstruktionsfallet. Mätningar vad som ska mätas under testerna. 12

13 5 Mätningar och resultat För att mätningar på en implementering av ett konstruktionsfall ska kunna jämföras med mätningar på andra implementeringar måste mätningarna utföras enligt en gemensam mall. Vissa anvisningar som är specifika för konstruktionsfallet finns specificerat i respektive konstruktionsfall. Utöver de specifika anvisningarna gäller instruktionerna i 5.1. Resultaten av mätningarna ska sedan tolkas enligt Generella instruktioner testfall Nedanstående instruktioner gäller samtliga testfall om inget motstridigt står angivet i testfallet. Vid motstridigheter gäller anvisningarna i testfallet. Mät i stabila tillstånd Under uppstart och ändring av parametrar beter sig systemet oftast annorlunda än i stabila tillstånd. Mätningarna i denna rapport är avsedda att utföras när systemets beteende är stabilt. Upprepa mätningarna Genom att upprepa mätningarna undviks resultat som beror på ej önskvärda transienta störningar. Efter ett antal upprepade mätningar bör majoriteten av mätresultaten ligga inom en liten felmarginal. Rapportera spridning i resultatet Spridning mellan mätresultaten förekommer alltid. En stor spridning kan bero på faktorer i plattformen som inte kan påverkas eller att påverkande faktorer inte kontrollerats under mätningarna. Variera parametrar Variera parametrar och undersök hur mätningarna påverkas. Mätningarna kan påverkas av en parameter som inte anses ha någon betydelse. Parametrar som påverkar resultatet bör ensas för att resultaten ska kunna jämföras. Om resultatet inte påverkas av en parameter som borde påverka systemet kan mätmetoden vara felaktig. Kontrollera att mätmetoden inte påverkar Vid mätning i ett system påverkas alltid systemet. För att få ett korrekt resultat av en mätning måste en mätmetod med minimal inverkan på resultatet användas. Variera parametrar och uppskatta rimligheten i mätresultaten. Sök förklaringar Mätresultat som inte blir som förväntat bör förklaras. Om orsaken inte kan åtgärdas är sambandet mellan orsak och verkan ett användbart resultat i sig. Går orsaken att åtgärda kan mätningarna göras om med bättre resultat. 13

14 5.2 Tolkning av resultat Utvärdering av en plattform eller språk enligt modellen i denna rapport är tänkt att ge fyra typer av resultat. Mätningarna på de olika implementeringarna av konstruktionsfallen kommer att ge en mängd värden. Dessa värden är resultat i sig och ger för den insatte en bild av de olika egenskaperna hos plattformarna och språken. För att underlätta kunskapsspridning bör mätvärdena även tolkas och översättas till termer av egenskaper och beteende. En jämförelse av egenskaperna och beteendet hos det utvärderade systemet med de egenskaper som krävs av de olika typerna av realtidssystem som diskuterats tidigare ger möjlighet att sprida resultaten till en bredare publik. Ett annat mycket viktigt resultat är de erfarenheter som framkommer under arbetet med utvärderingen. En femte typ av resultat fås om flera plattformar och språk utvärderas och jämförs. 14

15 6 Konstruktionsfallsområde: Processhantering I realtidssammanhang är det bara de allra enklaste systemen som består av en enda process. Det vanliga är att system består av ett antal processer som skall exekveras på ett antal processorer där antalet processer överskrider antalet processorer. Detta leder till att flera processer exekverar på samma processor och därmed konkurrerar om tid att exekvera på. Beteendet hos systemet beror på: 1. hur processorns tid delas mellan processerna, d.v.s. om processerna exekverar enligt en förutbestämd (cyklisk) ordning eller om flera exekverbara processer konkurrerar. 2. hur nästa process som får exekvera väljs ut, d.v.s. vilken av de vid tillfället exekverbara processerna som står i tur att exekvera. 3. hur länge en process får exekvera, d.v.s. om processen får exekvera tills den inte kan fortsätta exekvera eller om den blir avbruten. Processerna i ett system där samtliga processer ska exekvera cykliskt på en processor enligt ett förutbestämt schema kan slås ihop till en process som exekverar cykliskt. Det enda kravet ett sådant system ställer på plattformen är att den klarar av att hantera en cyklisk (periodisk) process. I system där flera processer är exekverbara samtidigt och konkurrerar med varandra om tiden används ofta prioriteter för att avgöra vilken process som ska exekvera. Vilken prioritet en process har och hur prioriteten används varierar beroende på språk och plattform. Konstruktionsfallen i detta kapitel syftar till att undersöka hur plattform och språk hanterar processer i olika sammanhang. De två första konstruktionsfallen är inriktade på hantering av periodiska processer; det första huruvida plattformen kan hantera periodiska processer och det andra konstruktionsfallet vilka olika schemaläggningsalgoritmer som kan användas. En annan typ av processer som är vanliga i realtidssystem är processer som ska exekvera vid avbrott vilka behandlas i det tredje konstruktionsfallet. Resterande konstruktionsfall är inriktade på hantering av prioriteter i olika situationer; placering i köer, prioritetsinvertering, antal tillgängliga prioritetsnivåer samt inläsning och utskrift. 15

16 6.1 Implementering av periodisk process För att undvika dynamik i realtidssystem, och därmed få större kontroll över systemets beteende, väljer man ofta att polla indata och beräkna utdata periodiskt istället för att beräkna utdata när indata har ändrats. En del applikationer, till exempel styrsystem, som innehåller kontroll-loopar lämpar sig väl för en sådan implementering. Detta konstruktionsfall avser att undersöka hur plattformen hanterar en periodisk process Beskrivning I moderna flygplan styr man inte höjd- och skevroder direkt med styrspaken utan via en dator. Datorn hämtar periodiskt information om höjd, hastighet, stigningsvinkeln, pådrag på motorerna, mängden kvarvarande bränsle, utsläpp från motorerna, pilotens inställningar och utslag på styrspaken. Med hänsyn till alla dessa och ett antal andra parametrar ställer man in höjd- och skevroder, pådrag på motorerna, bränsleblandning mm. Detta är ett exempel på en reglerloop som med fördel implementeras som en periodisk process som läser av inställningar och styrutrustningens lägen, beräknar nya värden och lägger ut de nya värdena Struktur Ett lämpligt mönster att utgå ifrån är Control loop [4]. Process * Sensor {abstract} GetValue() SensorImpl GetValue() 1 ControlLoop Initialize() Shutdown() Step() 1 * Actuator {abstract} SetValue() ActuatorImpl SetValue() Figur 6-1 Objekt-/klassdiagram kontroll-loop Systemet styrs av en process som exekverar en oändlig loop där ett nytt varv påbörjas med ett bestämt tidsmellanrum. Varje varv anropas metoden step i klassen ControlLoop. I metoden step hämtas värden från samtliga sensorer (av klassen SensorImpl), nya värden för ställdonen beräknas och sätts i respektive ställdon (av klassen ActuatorImpl). För att enkelt kunna byta ut sensorer och ställdon, har abstrakta klasser införts som gränssnitt mot dessa (Sensor respektive Actuator). 16

17 6.1.3 Implementering Implementera en kontroll-loop enligt struktur ovan. Alla referenser till sensorer och ställdon i klassen ControlLoop skall vara referenser till de abstrakta klasserna. Exekveringstiden samt perioden i loopen skall vara konfigurerbar. Observera att fördröjningar för att förlänga exekveringstiden måste vara av typen busy-wait, d.v.s. processen ska vara upptagen med arbete. Fördröjningar i processen för att åstadkomma en längre period måste däremot vara inaktiv väntan. Antalet sensorer och ställdon anpassas för att få en algoritm i loopen med lagom komplexitet. Det bör finnas sensorer och ställdon av olika typer. Algoritm TBD Testfall 1. Olika lång period. Variera perioden samtidigt som exekveringstiden hålles konstant. Upprepa med några olika exekveringstider. 2. Olika lång exekveringstid. Håll perioden konstant och variera exekveringstiden. Upprepa med några olika periodlängder Mätningar Utvecklingstid Uppskatta hur lång tid det tar att implementera en kontroll-loop på detta sätt jämfört med att utveckla samma kontroll-loop utan objektorientering. Undersök hur lång tid tar det att byta ut en sensor. Jitter Mät tiden och spridningen i tid från när exekveringen av ett varv ska börja tills exekveringen startar. Kontrollera att tiden inte ökar för varje varv. Faktisk exekveringstid Mät tiden från när exekveringen i ett varv börjar till när den slutar. Kontrollera om den är konstant (vilket den borde vara) eller om processen avbryts av andra sporadiska processer. Påverkan Undersök om jitter och faktisk exekveringstid beror på periodens längd och/eller (inställd) exekveringstid. 17

18 6.2 Schemaläggning periodiska processer Detta konstruktionsfall syftar till att undersöka möjligheter till olika schemaläggning av periodiska processer Beskrivning Ett antal processer med olika periodicitet och exekveringstid schemaläggs enligt ett antal olika algoritmer för att undersöka hur enkelt/svårt det är att påverka schemaläggningen och hur bra olika algoritmer fungerar på plattformen Struktur Systemet består av fem processer med olika periodicitet, exekveringstid, deadlines och prioriteter. Process 1 har exekveringstid 1x och period p/6. Process 2 har exekveringstid 1x och period p/4. Process 3 har exekveringstid 2x och period p/3. Process 4 har exekveringstid 2x och period p/2. Process 5 har exekveringstid 4x och period p. Deadline för samtliga processer är slutet på perioden. Med rate monotonic scheduling [6] är systemet schemaläggningsbart enligt Figur ruta = 1x Figur 6-2 Processerna schemalagda med p = 24x med rate monotonic scheduling Implementering Implementera fem processer med exekveringstid enligt ovan så att x kan varieras. Perioden enligt ovan (p = 24x) skall hanteras som en minsta möjliga (teoretisk) period. Vid exekvering av systemet skall perioden p (och därmed perioderna för de enskilda processerna) kunna ändras mellan exekveringarna Testfall Utför följande testfall med olika schemaläggningsalgoritmer, t.ex.: rate monotonic, earliest deadline first och round robin [6], [11]. 1. Lång period, långa exekveringstider. Välj ett relativt stort värde på x. Sätt p mycket större än 24x så att alla deadlines uppfylls lätt. 2. Minska perioden. Minska perioden p successivt tills minst en deadline inte klaras. 18

19 3. Kort exekveringstid Gör om 1 och 2 med litet värde på x Mätningar Jitter Mät tiden och spridningen i tid från när exekveringen av en process ska börja tills exekveringen startar. Ändrad schemaläggningsalgoritm Undersök hur enkelt/svårt det är att byta schemaläggningsalgoritm. Prova både egenhändigt implementerade algoritmer och algoritmer tillhandahållna av systemet (om några). Upplösning på tiden Undersök hur jitter, exekveringstider och minsta möjliga period varierar vid olika lång exekveringstid. Kontrollera vilken upplösning på tiden som används i systemet. Periodlängd Mät upp kortast möjliga faktiska periodlängd. Undersök orsaken till skillnaden mellan kortaste uppmätta period och kortaste teoretiska period. Exekveringsordning Kontrollera att processerna exekverar i den ordning de borde enligt aktuell schemaläggningsalgoritm. Default schemaläggningsalgoritm Ta redo på vilken schemaläggningsalgoritm som är default i systemet. 19

20 6.3 Avbrottshantering En speciell typ av processer är de som skall exekvera vid avbrott. Till skillnad från processer som exekverar kontinuerligt (med eventuell väntan) skapas och startas dessa processer av systemet när ett avbrott sker och tas bort när avbrottet behandlats. För att detta skall fungera måste dessa processer göras kända för systemet. Om och hur det görs behandlas i detta konstruktionsfall Beskrivning En enkel process ska implementeras och läggas in som avbrottsrutin i systemet Struktur Strukturen består av en enda process som ska exekveras som avbrottsrutin Implementering Implementera en process som gör något detekteringsbart. Om plattformen eller det valda sättet att generera avbrott har specifika krav på nollställning av avbrottet måste dessa uppfyllas. Avbrottet ska vara av sådan sort att systemet i sig inte avbryter avbrottsrutinen Testfall 1. Avbrott Se till att avbrott genereras med jämna mellanrum Mätningar Utvecklingstid Uppskatta hur enkelt/svårt det är att skapa en avbrottsrutin. Exekveringsstart Mät tiden och spridningen i tiden mellan avbrottet och start av avbrottsrutinen. Exekveringstid Mät tiden från exekveringsstart tills processen har exekverat klart. 20

21 6.4 Hantering av semaforköer En process med högre prioritet ska gå före en process med lägre prioritet om de väntar på samma semafor oavsett i vilken ordning de begärde semaforen. På grund av kömekanismer eller för att undvika svält kan det på en del plattformar hända att processen med lägre prioritet får gå före [5], [6] Beskrivning Exekveringsordningen testas genom att implementera två processer med åtkomst till samma semafor. Den ena processen har hög prioritet, tar, väntar och släpper semaforen tre gånger i rad utan att vänta mellan gångerna och väntar sedan en stund innan den börjar om. Den andra processen har lägre prioritet, exekveras kontinuerligt och tar och släpper semaforen ofta. På en plattform som hanterar kön till semaforen på rätt sätt kommer processen med högre prioritet att exekvera färdigt innan den andra processen får fortsätta exekvera Struktur Strukturen är mycket enkel och består av två processer och en gemensam semafor enligt Figur 6-3. process A process B High priority Synchronization through common semaphore Low priority Figur 6-3 Process-struktur 21

22 6.4.3 Implementering Processerna implementeras enligt nedanstående pseudokod. Process A() { SetPriority(high); Signal(Semaphore); Loop Wait(1000); For (i=0; i<3; i++) { Wait(Semaphore); PutString( A ); WaitTime(1000); Signal(Semaphore); } } } Process B() { SetPriority(low); Loop Wait(Semaphore); PutString( B ); WaitTime(330); Signal(Semaphore); } } Testfall 1. Med utskrift Exekvera processer enligt ovan och kontrollera att processen med hög prioritet får exekvera färdigt innan processen med låg prioritet för exekvera (utskrift BBBBAAABBBBAAABB...). 2. Utan utskrift Tag bort utskriftssatserna och kontrollera på något annat sätt i vilken ordning processerna exekverar. Studera om exekveringsordningen ändras. 3. Annan synkronisering Byt ut synkroniseringsmekanismen mot t.ex. ett skyddat objekt eller monitor Mätningar Exekveringstid och ordning Kontrollera i vilken ordning processerna exekverar och deras exekveringstid (ett varv i loopen) samt spridningen i exekveringstid. Utskrift Undersök hur mycket utskrifterna påverkar beteendet. Synkroniseringsmekanismer Undersök vad som skiljer i tid och beteende mellan olika synkroniseringsmekanismer. 22

23 6.5 Förekomst av prioritetsinvertering Detta konstruktionsfall studerar ytterligare ett fall där processer kan komma att exekveras i en felaktig ordning [7]. Orsaken i detta fall är att en process med låg prioritet håller en resurs som en process med hög prioritet behöver tillgång till, och därmed hindrar exekvering av processen med hög prioritet Beskrivning För att undersöka detta fall behövs tre processer med hög, medelhög respektive låg prioritet. Processerna med hög och låg prioritet behöver båda exklusiv tillgång till en och samma resurs. Antag att processen med låg prioritet har exklusiv tillgång till resursen när processen med medelhög prioritet börjar exekvera. Processen med medelhög prioritet avbryter då processen med låg prioritet. Antag sedan att processen med hög prioritet ska exekveras. Processen med hög prioritet avbryter processen med medelhög prioritet och exekverar tills den behöver tillgång till den gemensamma resursen som är låst av processen med låg prioritet. Om detta fall inte specialbehandlas är det bara processen med medelhög prioritet som kan exekvera, vilket betyder att processen med hög prioritet får vänta på processen med medelhög prioritet Struktur Systemets struktur med dess tre processer och gemensamma resurs (semafor) visas i Figur 6-4. process C Medium priority process A process B High priority Synchronization through common semaphore Low priority Figur 6-4 Process-struktur Implementering Implementera 3 processer med olika prioritet (låg, medel, hög). Processen med låg prioritet håller en resurs större delen av tiden. Samma resurs skall begäras av processen med hög prioritet. Processen med medel prioritet får inte använda sig av resursen. Se till att processerna är redo för exekvering i prioritetsordning med den lägsta prioriteten först. 23

24 6.5.4 Testfall 1. Exekvera processerna Exekvera processerna enligt implementering ovan. 2. Serveranrop Byt synkronisering via semafor till anrop till server med kritisk region. Exekvera processerna med olika prioritetsnivåer på servern Mätningar Utvecklingstid Uppskatta hur enkelt/svårt det är att implementera processer. Exekveringstid Mät hur lång tid det tar att exekvera de tre processerna. Exekveringsordning Undersök i vilken ordning processerna exekveras. Undersök möjligheterna att påverka beteendet. Väntetid Mät hur länge processen med hög prioritet får vänta och spridningen i väntetid. Prioritet på servern Undersök vilken prioritet servern bör ha för att processerna ska exekvera i rätt ordning och om serverns prioritet ändras under exekvering. 24

25 6.6 Maximalt antal användbara prioritetsnivåer Många schemaläggningsalgoritmer använder prioriteter för att bestämma exekveringsordningen. Ett exempel är rate monotonic scheduling som använder en prioritetsnivå för varje periodlängd. För schemaläggningsalgoritmer som kräver många prioritetsnivåer kan antalet prioritetsnivåer som är tillgängliga hos plattformen bli begränsande för antalet processer Beskrivning Hur bra en plattform klarar att hantera ett antal prioritetsnivåer kan testas genom att exekvera ett system bestående av processer med ett stort antal olika prioritetsnivåer Struktur Systemet ska byggas upp av ett antal oberoende processer. Vilken process som exekverar ska bestämmas endast av processernas prioritetsnivåer och inte av beroenden mellan processerna. En schematisk bild på systemets struktur visas i Figur 6-5. process 1 process 2 process 3... process N Priority 1 Priority 3 Priority N Priority 2 Figur 6-5 Process-struktur Implementering Implementera ett system med konfigurerbart antal processer och med konfigurerbart antal processer per prioritetsnivå. Processerna får ej innehålla inläsning eller utskrifter om det finns minsta misstanke om att det skulle kunna påverka prioriteterna. Samtliga processer ska exekvera periodiskt (samma period) och bli exekverbara samtidigt. Perioden ska vara så lång att systemet blir schemaläggningsbart Testfall 1. Prioritetsnivåer Exekvera ett antal (5 50) processer med olika prioritetsnivåer. 2. Processer per prioritetsnivå Utöka systemet med att antal (1 5) processer per prioritetsnivå. 25

26 6.6.5 Mätningar Exekveringsordning Kontrollera att processerna exekverar i rätt ordning. Antal prioritetsnivåer Undersök hur många prioritetsnivåer en användare/utvecklare har tillgång till. Hantering av prioritetsnivåer Undersök hur många prioritetsnivåer plattformen använder internt och hur en eventuell översättning från användarens/utvecklarens prioritetsnivåer till de interna prioritetsnivåerna görs. 26

27 6.7 Hantering av processer vid inläsning och utskrift En del plattformar har speciell hantering av processer som läser in från eller skriver ut till skärm. Till exempel kan sådana processer exekveras med annan prioritet än den satta på grund av just inläsning/utskrift. En annan underlig hantering är att klassa en process som väntar på indata (från terminal) som exekverbar under väntetiden. Detta får till effekt att systemet under långa perioder kan stå helt stilla även om det finns processer som skulle kunna exekvera utan att vänta Beskrivning Ett exempel som testar detta är följande: Systemet består av tre processer och två buffertar. Process A läser från terminal och lagrar data i Buffer 1. Process B hämtar data från Buffer 1 och lägger in data i Buffer 2. Process C slutligen hämtar data från Buffer 2 och skriver ut den på skärmen. Det förväntade beteendet är att det man skriver in ekas tillbaka inom en (mycket) kort tid Struktur Figur 6-6 visar systemets struktur med de tre aktiva objekten (processerna) samt de två passiva datalagringsobjekten (buffertarna). process A buffer 1 process B buffer 2 process C Figur 6-6 Process- och objektstruktur Implementering Implementera ett system enligt beskrivningen och strukturen ovan. Processerna skall avslutas när man skickar EOF (Ctrl-D). Prioriteterna på processerna skall vara konfigurerbara Testfall 1. En prioritetsnivå Exekvera systemet med samma prioritet på alla tre processerna. 2. Två prioritetsnivåer Exekvera systemet med högre/lägre prioritet på en av processerna. Testa för olika processer. 3. Tre prioritetsnivåer Exekvera systemet med olika prioritet på processerna. Variera prioritetsordningen. 27

28 6.7.5 Mätningar Latens Mät tiden (och spridningen i tiden) det tar för olika mängd data att passera igenom systemet. Exekveringsordning Kontrollera i vilken ordning processerna exekverar. Prioriteter Undersök om processerna exekverar med den givna prioriteten. Om annan prioritet förklara varför. 28

29 7 Konstruktionsfallsområde: Minneshantering Problem inom området minneshantering hanteras i realtidssystem på ungefär samma sätt som inom övriga områden. För konstruktören är det, som så många andra gånger, en avvägning mellan generella verktyg och specialsydda lösningar. Fördelar med generella verktyg är att: 1. de ofta redan finns implementerade, vilket medför billigare utvecklingskostnader (COTS) 2. de generella verktygen används av många, vilket ofta medför att de är mer uttestade och tenderar till att fungera bättre än egna lösningar Nackdelarna är bland annat att: 1. man inte kan använda speciell kunskap om det enskilda problemet vilket medför att den generella lösningen därför kan bli alltför kostsam resursmässigt 2. man kan ha dålig kunskap om den generella lösningen vilket gör att man inte vågar använda den eftersom man inte kan prediktera vilka resurser som behövs. Den dåliga kunskapen kan bero på att man inte har tillgång till alla detaljer (t.ex. källkod) eller att man helt enkelt inte har tid och/eller kunskap att sätta sig in i produkten. Inom realtidssystem är resurser i fråga om tid och minne många gånger mycket knappa vilket gör att speciallösningar blir mer vanliga än annars. Dessutom är predikterbarhet en önskvärd egenskap vilket gör att de generella lösningarna många gånger inte duger. När det gäller minneshantering så skall generella lösningar på både allokerings- och deallokerings-problemet bedömas. I första och tredje konstruktionsfallet mäts skillnaden i allokerings- och deallokerings-tid mellan en konventionell och en objektorienterad lösning. I konstruktionsfall tre allokeras minnet i en mer godtycklig ordning än i första fallet, detta fall är tänkt att försöka mäta i vilken utsträckning fragmentering av minnet kan påverka resursåtgången. I det andra konstruktionsfallet mäts skillnaden mellan stackallokering och heapallokering av minne. 29

30 7.1 Dynamisk allokering/deallokering av minne. Det förekommer ofta att objekt måste allokeras under exekvering, det går helt enkelt inte att i förväg bestämma hur många instanser som måste allokeras. Det är därför viktigt att ta reda på hur objektorienterade egenskaper påverkar allokeringstiden Beskrivning Detta konstruktionsfall försöker mäta hur mycket mer tid och minne som krävs för att allokera instanser av olika klasser (med vissa OO-egenskaper som exempelvis arv) jämfört med att enbart allokera data i en post som är brukligt i icke OO-språk Struktur Programmets struktur kommer att vara ganska enkel. För att få en någorlunda rättvis jämförelse behövs det dock ett antal klasser. Dessa kan förslagsvis se ut enligt (pseudo kod): OO Class1 { private type1 a1, a2; private type2 a3; private type3 a4; public get/set a1; public get/set a2; public get/set a3; public get/set a4; } Class2 extends Class1 { private type1 a5; private type2 a6; public get/set a5; public get/set a6; } Class3 extends Class2 { private type4 a7; public get/set a7; } Icke OO Struct class1 { type1 a1, a2; type2 a3; type3 a4; } get/set a1; get/set a2; get/set a3; get/set a4; Struct class2 { type1 a1, a2, a5; type2 a3, a6; type3 a4; } get/set a1; get/set a2; get/set a3; get/set a4; get/set a5; get/set a6; Struct class3 { type1 a1, a2, a5; type2 a3, a6; type3 a4; type4 a7; } get/set a1; get/set a2; get/set a3; get/set a4; get/set a5; get/set a6; get/set a7; Tabell 7-1 Exempel på en arvsstruktur och dess motsvarighet i icke OO-språk Dessa objekt kommer att användas genomgående i detta kapitel. 30

31 7.1.3 Implementering Implementeras på lämpligt sätt för att uppfylla testfallen (se nedan). Deallokeringen av instanser kan görs på tre olika sätt för att ge en bild av hur OS/implementeringsspråk optimerar sitt minne. 1. Instanserna deallokeras i samma ordning som de allokerats (FIFO). 2. Instanserna deallokeras i bakvänd ordning som de allokerats (LIFO). 3. Instanserna deallokeras i slumpvis ordning. För att inte val av slumptalsalgoritm ska påverka resultaten på något sätt bör en egen enkel slumptalsgenerator implementeras, exempelvis enligt [9]: X n+1 = a*x n + b (mod m) där konstanternas värden kan vara a = b = m = 2 15 X 0 = 1234 I objektorienterade språk anropas en konstruktor vid instantieringen av en klass. Denna konstruktor har till uppgift att göra, för den specifika instansen, nödvändiga initieringar, exempelvis tilldela alla variabler initialvärden. För att kunna göra rättvisa mätningar mellan OO-implementeringar och icke OO-implementeringar måste därför en av följande åtgärder vidtagas: 1. Klasserna implementeras utan konstruktorer. 2. Tiden för allokering av objekt inkluderar tilldelning av initial data till variablerna i posten Testfall 1. Allokering och deallokering av enskilda instanser av Class3 utan arv. Detta testfall görs för att få en uppfattning om hur lång tid det tar att allokera/deallokera en instans resp. en post i olika typer av språk, samt hur mycket minnesutrymme som går åt i de båda fallen. 2. Allokering och deallokering av enskilda instanser av Class3 med arv. Samma testfall som ovan, men de allokerade instanserna har några arvsnivåer. Frågan som förhoppningsvis får ett svar i detta testfall är hur mycket arvet påverkar allokeringstid och minnesutrymmet. Föregående testfall ger en referens för hur allokeringstid och minnesutrymme påverkas. 3. Allokering och deallokering av flera instanser av Class3 utan arv. Detta testfall tvingar fram nyallokering av instanserna. I föregående testfall finns möjligheten att samma minne som just raderades återanvänds direkt (en typ av cache funktion). Effekter av krav på nyallokering av minnessidor från RTsystemet påverkar den totala exekveringstiden. Språk som använder GC kommer att få en chans att åtminstone statistiskt kunna visa sina starka resp. svaga sidor vid deallokering av objekt. För att dessa effekter ska kunna visas bör testfallet upprepas flera gånger utan att testprogrammet startas om. 31

32 4. Allokering och deallokering av flera instanser av Class3 med arv. Som föregående testfall men med arv Mätningar Allokeringstid I de fall då enskilda instanser allokeras mäts tiden för själva allokeringen. Då flera instaser allokeras mäts den totala tiden för allokeringen. Sedan kan resultatet delas med antalet allokerade instanser. Deallokeringstid Mäts på samma sätt som allokeringstiden. Minnesåtgång Hur stor plats i minnet tar de olika elementen, med och utan arv. Är det någon skilnad? 32

33 7.2 Stack vs. Heap Genom att göra funktionsanrop allokeras det ideligen nya variabler på stacken i minnesarean. Hur mycket tid förlorar man på det? Går det fortare att allokera data på stacken än på heapen och i så fall hur mycket. Syftet med detta konstruktionsfall är i första hand att försöka ta reda på detta och mäta skillnader i exekveringstid (och minnesåtgång) när det gäller att allokera på stacken jämfört med att allokera på heapen och hur olika plattformar påverkar detta Beskrivning En typ av algoritmer, som är enkla att implementera och lätta att skala, är sorteringsalgoritmer. Många av dessa algoritmer tillhör klassen Divide and Conquer[10], d.v.s. dela upp problemet i mindre delar och lös delproblemen var för sig. Till dessa hör bl.a. Quicksort[10] och Mergesort[10]. Utav dessa två algoritmer är Mergesort den som är enklast att mäta på, och det är dessutom den som använder mest minne av de båda Struktur Instanser av typen Class1 (se föregående konstruktionsfall) används och jämförelseoperationen sker på ett av medlemsattributen Implementering Implementera Mergesort på några olika sätt och mät exekveringstiden för de olika fallen. För att få någorlunda jämförbara program ska algoritmen implementeras på samma sätt i samtliga fall. Skillnaden är enbart hur de temporära fälten, som krävs i mergesort, allokeras. 1. Allokera ett globalt temporärt fält på stacken som är tillräckligt stor för att rymma alla element som ska sorteras. 2. Allokera ett globalt temporärt fält på heap:en som är tillräckligt stort för att rymma alla element som ska sorteras. Fältet deallokeras i slutet av programmet när sorteringen är klar. 3. Allokera temporära fält på stacken i varje anrop till funktionen merge. Fälten ska vara precis så stora som krävs för att sammanfläta de delfält som merge anropas med. 4. Allokera temporära fält på heap:en i varje anrop till funktionen merge. Fälten ska vara precis så stora som krävs för att sortera de delfält som merge anropas med. Fälten deallokeras i slutet av merge. Algoritmen implementeras enligt: mergesort( in out Array a ) { If length of a > 1 { k length of a / 2; mergesort( a[ 0..k ] ); mergesort( a[ k+1..length of a ] ); merge( a, k ); } } 33

FOTA - 3 COTS och objektorientering i realtidstillämpningar Annika Ohlsson Ericsson Microwave Systems

FOTA - 3 COTS och objektorientering i realtidstillämpningar Annika Ohlsson Ericsson Microwave Systems FOTA - 3 COTS och objektorientering i realtidstillämpningar 2000-05 - 03 Annika Ohlsson Ericsson Microwave Systems annika.h.ohlsson@emw.ericsson.se FOTA - 3 Deltagare Ericsson Microwave Systems (projektledning)

Läs mer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till

Läs mer

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

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

Läs mer

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

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys Realtidssystem HT03 Vad är realtidssystem? Föreläsare: Wang Yi Rum: 1235, yi@it.uu.se, Tel: 471 3110 Assistent: Tobias Amnell Rum: 1216, tobiasa@it.uu.se, Tel: 4717122 Webbsida: www.it.uu.se/edu/course/homepage/realtid/h03

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se

Läs mer

Tentamen i Realtidsprogrammering för Au3, D3, E3

Tentamen i Realtidsprogrammering för Au3, D3, E3 Tentamen i Realtidsprogrammering för Au3, D3, E3 Ordinarie Tentamen Datum: 2005-10-21 Tid: 14:00-19:00 Ansvarig lärare: Telefon: 1438 (kontor) Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng

Läs mer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC (6) Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH 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

Läs mer

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

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH. 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

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2014 2017 jonas.kvarnstrom@liu.se

Läs mer

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

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

Läs mer

Inkapsling (encapsulation)

Inkapsling (encapsulation) UML UML är en standard för att dokumentera och visualisera sina tankar och beslut under analys och design. Att lära sig allt om UML får inte plats i den här kursen, men vi kommer lära oss vissa delar.

Läs mer

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

Läs mer

Realtidsprogrammering Ordinarie tentamen

Realtidsprogrammering Ordinarie tentamen Tentamen i Realtidsprogrammering Ordinarie tentamen Datum: 2006-10-20 Tid: 08:00 13:00 Ansvarig lärare: Telefon: 1438 (kontor) Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng fördelade på 7 uppgifter.

Läs mer

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram Analys och design med hjälp av CRC 83 Klassdiagram Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt,

Läs mer

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

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

Läs mer

Omtentamen i Realtidsprogrammering för Au3, D3, E3

Omtentamen i Realtidsprogrammering för Au3, D3, E3 Omtentamen i Realtidsprogrammering för Au3, D3, E3 Datum: 2004-01-14 Tid: 0800-1300 Ansvarig lärare: Telefon: 1438 (kontor) Hjälpmedel: Inga särskilda hjälpmedel är tillåtna. Poäng: Tentamen omfattar 40

Läs mer

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

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör. Tentamen Inst. för Informationsteknologi Avdelningen för Datorteknik Herbert P Sander Tel: 070 376 06 87 Ämne: Operativsystem Lokal: Post Scriptum, sal 2 Datum: Måndagen den 13 maj 2002 Tid: Kl 09.00-14.00

Läs mer

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

INSTITUTIONEN FÖR DATA- OCH INFORMATIONSTEKNIK

INSTITUTIONEN FÖR DATA- OCH INFORMATIONSTEKNIK INSTITUTIONEN FÖR DATA- OCH INFORMATIONSTEKNIK DIT162 Realtidssystem, 7,5 högskolepoäng Real-Time Systems, 7.5 credits Fastställande Kursplanen är fastställd av Institutionen för data- och informationsteknik

Läs mer

Kursplanering Objektorienterad programmering

Kursplanering Objektorienterad programmering Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund

Läs mer

Objektorienterad programmering, allmänt

Objektorienterad programmering, allmänt Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara

Läs mer

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha? Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet

Läs mer

Distribuerade affärssystem

Distribuerade affärssystem Distribuerade affärssystem Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska

Läs mer

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. (7) Objektinteraktion Objektorienterad programmering 2 Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. Mål Efter övningen skall du kunna konstruera ett program med

Läs mer

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.) Outline för D2, ICT2, E3 och Mek3 Nicholas Wickström Högskolan i Halmstad Sverige p.1/18 Förra föreläsningen Specifikation -Kravspecifikation -Funktionsspecifikation -Blockdiagram Operativsystem -Grunder,

Läs mer

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

PROGRAMMERINGSTEKNIK TIN212

PROGRAMMERINGSTEKNIK TIN212 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:

Läs mer

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

Realtidssystem Z EDA300 Tentamen 15/ , kl i V-huset Realtidssystem Z EDA300 Tentamen 15/12 2005, kl. 08.30 12.30 i V-huset Examinator: Docent Jan Jonsson Förfrågningar: Docent Jan Jonsson Telefon: 031 772 5220 Hjälpmedel: Utdrag ur Ada 95 Reference Manual

Läs mer

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

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn? Fö 7: Operativsystem Introduktion. Klassificering. Vad är ett operativsystem? Program som kontrollerar andra andra program. Gränssnitt mellan användare och hårdvaran. Kärnan. Historisk översikt. Typeset

Läs mer

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

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne. Fö 8: Operativsystem II Minneshantering och Virtuelltminne. Virtuella I/O enheter och Filsystemet. Flerprocessorsystem. Minneshantering Uniprogrammering: Minnet delas mellan operativsystem och användarprogrammet.

Läs mer

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

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram? Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden Parallellitet Ofta är det nödvändigt eller önskvärt att programdelar exekveras

Läs mer

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15 DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

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

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation. Vad är viktigast? Sammanfattning Processer och trådar Avbrottshantering Vad det är och hur det fungerar (på låg nivå) Vilka problem finns Schemaläggning Flerprocessorsystem Varianter, problem Interprocesskommunikation

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Sortering Selectionsort, Bubblesort,

Läs mer

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar Klassbegreppet och C++ OOP UML Klasser och objekt i C++ Uppdelning i filer Attribut och metoder Inkappsling - åtkomst Klassattribut - objektattribut Objekt-orienterad programmering Att använda ett objektorienterat

Läs mer

Tentamen i Realtidsprogrammering

Tentamen i Realtidsprogrammering Tentamen i Realtidsprogrammering Ordinarie Tentamen Datum: 2011-05-14 Tid: 08:15 11:15 Ansvarig lärare: Telefon: 301438 Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng fördelade på 5 uppgifter.

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg

Läs mer

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Universe Engine Rapport

Universe Engine Rapport 1 Universe Engine Rapport Alexander Mennborg 2017-05-08 2 Inledning I denna rapport diskuteras utvecklingsprocessen till projektet Universe Engine. Denna diskussion omfattar hela utveckling från starten

Läs mer

Pipelining i Intel Pentium II

Pipelining i Intel Pentium II Pipelining i Intel Pentium II John Abdulnoor Lund Universitet 04/12/2017 Abstract För att en processor ska fungera måste alla komponenter inuti den samarbeta för att nå en acceptabel nivå av prestanda.

Läs mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

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

Operativsystem. Informationsteknologi sommarkurs 5p, 2004. Agenda. Slideset 7. Exempel på operativsystem. Operativsystem Informationsteknologi sommarkurs 5p, 2004 Mattias Wiggberg Dept. of Information Technology Box 337 SE751 05 Uppsala +46 18471 31 76 Collaboration Jakob Carlström Slideset 7 Agenda Exempel på operativsystem

Läs mer

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. (7) Objektinteraktion Objektorienterad programmering Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. Mål Efter övningen skall du kunna konstruera ett program med flera

Läs mer

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... 4 Bussen (projektförslag)... 5 Bakgrund... 5 Klassen Buss

Läs mer

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

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem? DVG A06 Operativsystem, mm Definition Den del av systemet som hanterar all hårdvara och all mjukvara. Kontrollerar: -alla filer -alla enheter -varje del av minnet -varje ögonblick av processortiden (-nätverk

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration

Läs mer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Exempel på problem där materialet i kursen används Hitta k största bland n element Histogramproblemet Schemaläggning PFK (Föreläsning 13) VT 2013 1 / 15 Hitta k största bland n

Läs mer

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

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

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037) Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet

Läs mer

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1 DVG A06 Operativsystem, mm DVG A06 Johan Eklund, 1 2 DVG A06 Johan Eklund, 2 Operativsystem - Vad är ett operativsystem? - Hur fungerar det..? - Vad använder vi operativsystemet till? - Vilka olika operativsystem

Läs mer

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

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp

Läs mer

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2009-04-15 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

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

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 Mål Datorteknik Föreläsning 5 Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av fle processer Att du ska förstå begreppet tråd Att du ska veta hur odelba resurser kan

Läs mer

Dynamisk bindning och polymorfism

Dynamisk bindning och polymorfism Dynamisk bindning och polymorfism I C++ är pekare till basklasser polymorfa, dvs de kan peka på objekt av en subklass typ Vid statisk bindning sker all bindning vid kompileringen -> Vid ett metodanrop

Läs mer

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program. Föreläsning 2 Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program. Vår process Kravbeskrivning (3 dagar). Enkel form av användningsfall (use cases). Analys

Läs mer

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Objektorienterad Programmering (OOP) Murach s: kap 12-16 Objektorienterad Programmering (OOP) Murach s: kap 12-16 2013-01-28 1 Winstrand Development Objektorienterad Programmering Förkortas OOP Objektorientering innebär att man delar in koden i olika block,

Läs mer

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

Fö 5+6 TSEA81. Real-time kernel + Real-time OS Fö 5+6 TSEA81 Real-time kernel + Real-time OS Stackens användningsområde * JSR / RTS : returadress * Temporärdata (push / pop) void myfunc(void) { int i; // hamnar nog i register int test[10]; // hamnar

Läs mer

Föreläsning 5 Innehåll

Föreläsning 5 Innehåll Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur

Läs mer

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design RE SD PD I UT IT ST AT Mjukvarudesign System Requirement Specification Inkrementell och iterativ! Konceptuell design (VAD) Systemdesign (OOA) Arkitekturell (grovkornig, UML) Teknisk design (HUR) Programdesign

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

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

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem? Operativsystem DVG A06 Operativsystem, mm - Vad är ett operativsystem? - Hur fungerar det..? - Vad använder vi operativsystemet till? - Vilka olika operativsystem finns? 2 Definition Den del av systemet

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration

Läs mer

Sökning och sortering

Sökning och sortering Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling

Läs mer

DIG IN TO Dator och nätverksteknik

DIG IN TO Dator och nätverksteknik DIG IN TO Dator och nätverksteknik CCNA 1 Operativsystem Agenda Datorsystemets struktur Vad är ett operativsystem? Minneshantering Threads och processer Threads eller exekveringstrådar Processhantering

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum: Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60 Superscalar vs VLIW Cornelia Kloth IDA2 Inlämningsdatum: 2018-12-05 Abstract Rapporten handlar om två tekniker inom multiple issue processorer

Läs mer

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser Hur används hierarkier för att modellera nära relaterade typer? Nu:

Läs mer

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

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl TDDIU81 Processer och trådar Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl Sammanfattning Den här rapporten innehåller en kort genomgång av allmän process och trådhantering

Läs mer

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering October 29, 2013 Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.

Läs mer

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON Datorarkitekturer med operativsystem ERIK LARSSON Pipelining Tid SSA P Pipelining FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI WO Superscalar pipelining FI DI CO FO EI WO FI DI

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1 Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 1 OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer.

Läs mer

Innehållsförteckning

Innehållsförteckning Innehållsförteckning Ämne Sida Program Hur ska man lära sig programmering med Java? 11 Kapitel 1 Introduktion till programmering 13 1.1 Vad är programmering? 14 1.2 Vad är en algoritm? 16 1.3 Olika sätt

Läs mer

Öka prestanda i Shared-Cache multi-core processorer

Öka prestanda i Shared-Cache multi-core processorer Öka prestanda i Shared-Cache multi-core processorer 1. Abstract Många processorer har nuförtiden flera kärnor. Det är även vanligt att dessa kärnor delar på högsta nivås cachen för att förbättra prestandan.

Läs mer

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

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5 Realtidssystem - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 5 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML Målet Mer OOP Mer om klasser Några exempel UML Modularitet Språkligt modulära enheter Få gränssnitt Små gränssnitt Tydliga gränssnitt Dold information Återanvändbarhet Variation i typer Variation i datastrukturer

Läs mer

TDDD78 Objektorientering: Lagring och livstid

TDDD78 Objektorientering: Lagring och livstid jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()

Läs mer

Hyper-Threading i Intelprocessorer

Hyper-Threading i Intelprocessorer Lunds Tekniska Högskola Campus Helsingborg DATORARKITEKTURER MED OPERATIVSYSTEM EITF60 RAPPORT Hyper-Threading i Intelprocessorer 4 december 2017 Rasmus Hanning IDA2 Sammanfattning Det har sedan den första

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Lärare: pl@cdt.luth.se A 3113 Tomas Klockar klockar@sm.luth.se A 3019 Mats Folke folke@sm.luth.se A 3019 Labhandledare: Natasja Saburova Fredrik Jonsson Lars Persson

Läs mer

Bakgrund. Inför projektet. Mätningar av existerande läge

Bakgrund. Inför projektet. Mätningar av existerande läge Slutrapport, Projekt Hiper. Oktober 2006 Bakgrund libcurl är ett utvecklingsbibliotek för filöverföringar som stöder HTTP, HTTPS, FTP, FTPS, FILE, TELNET, DICT m.fl. Följande rapport är skriven utan att

Läs mer

1 Klasser och objektorientering Vad är objektorientering?

1 Klasser och objektorientering Vad är objektorientering? 1 Klasser och objektorientering Vad är objektorientering? Det finns olika synsätt på programmering, dessa olika synsätt kallas för paradigm. De vanligaste paradigmen är det imperativa/proceduriella, det

Läs mer

SKOLFS. beslutade den -- maj 2015.

SKOLFS. beslutade den -- maj 2015. SKOLFS Föreskrifter om ändring i Skolverkets föreskrifter (SKOLFS 2010:247) om ämnesplan för ämnet programmering i gymnasieskolan och inom kommunal vuxenutbildning på gymnasial nivå; beslutade den -- maj

Läs mer

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

Schemaläggningsmetodik för multi-core inom Windows 7 OS Vad är scheduling och hur schemalägger Windows OS sina processer? LUNDS TEKNISKA HÖGSKOLA Schemaläggningsmetodik för multi-core inom Windows 7 OS Vad är scheduling och hur schemalägger Windows OS sina processer? 2015-12-07 1. Inledning Det är ett faktum idag att multi-core

Läs mer