LET 624 (6 hp) Sd nr 1 TENTAMEN KURSNAMN PROGRAM: namn REALTIDSSYSTEM åk / läsperod DAI2 samt EI3 KURSBETECKNING LET 624 0209 ( 6p ) EXAMINATOR TID FÖR TENTAMEN Onsdagen den 19/10 2011 kl 14.00 18.00 HJÄLPMEDEL Godkänd räknedosa ANSV LÄRARE: namn (7725726) telnr besöker tentamen kl ca 15 samt ca 16.30 DATUM FÖR td och plats för gransknng ÖVRIG INFORM. Gransknng Onsdagen den 2/11 kl 10.00-10.30 Sal J121 Alternatvt även på Johanneberg för E3 : Torsdagen den 3/11 kl 09.45 sal ES51 Betygsgränser : Max 24 poäng 3:11 15,5 4: 16 19,5, 5: 20 -
LET 624 (6 hp) Sd nr 2 FORMELSAMLING RMSA enkel analys FÖRUTSÄTTNINGAR: Varje process uppsättnngen är perodsk Deadlne (d) och perodtd (p) är lka stora. Konstant exekverngstd för processer Ingen processkommunkaton förekommer Alla processer är avbrytbara n n(2 1/n 1 ) 1 1,000 2 0,828 3 0,780 4 0,757 5 0,743 En uppsättnng processer (P 1,P 2,...P n ) är schemaläggnngsbar om: n c 1 p n 2 1 n ( 1 ) där c är är exekverngstden för P och p är perodtden för P. RMSA exact analys ( krav som ovan men här räcker det med att d <= p) Beräknng av svarstden för process under nterferens från högre prorterade processer j ges av sambandet R n1 c b jhp( ) R p n j c j Där b är blockerngsfaktorn, nterferens från lägre prorterade processer. Svarstdsanalys vd processuppsättnngar med fx prortet och godtycklg deadlne. För en uppsättnng processer gäller att maxmal svarstd R, nom ett fönster w, kan beräknas. För blockerngsfaktorn b gäller att prortetstaksprotokoll (max en blockerng) är mplementerat. w w n n1 ( ) ( q) ( q 1) c b jhp( ) p j q J j c j Iteratonen utförs tlls : w,q <=( q+1) p Svarstden R ges av: R max w ( q) qp J q0,1,2,... och där: w är det fönster nom vlket v betraktar svarstder q är den start, numrerad 0,1,2..., nom fönstret v betraktar c är processens exekverngstd b är blockerngsfaktor för processen p är processens perodtd J är maxmalt jtter för processen
LET 624 (6 hp) Sd nr 3 Uppgft 1. (3p) a) För CAN-protokollet fnns en beskrvnng av ramformatet, dvs en beskrvnng av vad varje fält ramen har för funkton. Det första fältet ramen består av den s.k. arbtrerngskoden. Beskrv vlka vktga funktoner som koden har samband med en sändnng. b) Antag att v har ett system bestående av två datornoder bestående av MC12 kort av samma typ som använts vd våra laboratoner. Noderna är anslutna tll varandra va en CAN-buss enlgt fguren nedan. I varje nod fnns ett flertal CAN-moduler av vlka v denna uppgft använder oss av modulerna 0 och 4. NOD 1 NOD 2 CAN 0 CAN 4 CAN 0 CAN 4 CAN modul CAN-BUSS V har tllgång tll ett program som nterar nod1 och sänder 2 meddelanden respektve läser ett av de sända meddelande nom den egna noden enlgt programlstan nedan. Skrv ett program för Nod 2 som läser n och skrver ut båda de sändande texter termnalfönstret tll systemet. V kan förutsätta att nod 2:s program har samma nlednng som nod1 tll nedan rad med undantag för att strängarna sendtxt[] respektve sendtxt2[] ej behövs. // --------------------------------- Skrv program tll Nod 2 från denna rad ------ Program Nod 1 vod man(vod){ nt length=0, ; char sendtxt[]={"send_1\0"; char sendtxt2[]={ From_1\0 ; char ntxt[8]; unsgned long dentfer; REG8(DDRB)=0xFF; //confgure CAN0 & CAN4 confg_can_port(can0pm01,can4pm67); nt_can_ponters();
LET 624 (6 hp) Sd nr 4 //default ntalze CAN0 o CAN4 default_can(ptrcan0_nt, ptrcan0); default_can(ptrcan4_nt, ptrcan4); //ntalze CAN0/4 for transmsson/ recepton nt_can(ptrcan0_nt,ptrcan0, CANreceve); nt_can(ptrcan4_nt,ptrcan4, CANreceve); // --------------------------------- Skrv program tll Nod 2 från denna rad ------ //Acceptence Reg 1o2 ptrcan4->can_ar_mr_id[0]=0x0aaaaaac; // ID acc reg ptrcan4->can_ar_mr_id[1]=0x0aaaaaac; // ID acc reg ptrcan4->can_ar_mr_id[2]=0xf0000000; // ID mask reg //---------------------- Huvudloop ------------------------------------------------------ whle(1){ //send message_1 //transmsson address ptrcan0->can_ar_mr_id[4]=0x0aaaaaac; for(=0; <7;++) ptrcan_trans_message->byte[]=sendtxt[]; ptrcan_trans_message->length=7; transmt_can(ptrcan0,ptrcan_trans_message,txe0); / /send message //send message_2 //transmsson address ptrcan0->can_ar_mr_id[4]=0x0aaaaaaf; for(=0; <7;++) ptrcan_trans_message->byte[]=sendtxt2[]; ptrcan_trans_message->length=7; transmt_can(ptrcan0,ptrcan_trans_message,txe0); f(receve_can(ptrcan4,ptrcan_rec_message)==1){ length=ptrcan_rec_message->length; for ( =0;<length;++){ ntxt[]=(ptrcan_rec_message->byte[]); ntxt[]='\0'; puts(ntxt); else puts("no message\n\r"); / /send message //f receved message // antal databytes // fxa strängslut // End Huvudloop // End Man Uppgft 2 ( 3p ). I ett realtdssystem med stöd av en realtdskärna kan man exekvera flera processer samtdgt va tdsdelnng. I ett sådant system är prncperna för schemaläggnng av central betydelse och samband med detta fnns ett antal olka begrepp. Försök så gott det går att kort förklara nnebörden av följande begrepp : a) Pre-emptve respektve non pre-emptve process. b) Round robn. c) Tdsdelad respektve serell exekverng. d) Statsk schemaläggnng respektve dynamsk schemaläggnng.
LET 624 (6 hp) Sd nr 5 Uppgft 3 ( 3p ) Antag att v har ett system med tre processer som exekveras samtdgt ett system med stöd av en realtdskärna. Realtdskärnan stödjer användande av semaforer. Två av processerna delar på en global buffert med varabler av typen heltal där varje process kan läsa respektve skrva data tll bufferten enlgt kodexemplet nedan. I exemplet fnns det krtska regoner för vlka man vll garantera ömsesdg uteslutnng med hjälp av en gemensam Semafor S1. PROCESS nr_1 { whle(1){ // krtsk regon 1 // ta ut ett tal från bufferten f n>0{ tal=buf[n]; n=n-1;.. PROCESS nr_2{ whle(1){. // krtsk regon 2 // lägga n et tal bufferten f n<max{ n=n+1; buf[n]=ntal; a) Beskrv kort vad en semafor är och vlka operatoner man kan utföra på semaforen. Beskrv även hur operatonen påverkar själva semaforen. b) Beskrv vad man menar med : - Krtsk regon ett program. - Odelbar regon ett program. - Ömsesdg uteslutnng. c) Ange hur man processerna ovan bör använda sg av semaforen S1 för att garantera ömsesdg uteslutnng mellan de krtska regonerna processerna ovan. Uppgft 4 ( 2p ) I en realtdskärna utan stöd för ömsesdg uteslutnng på masknnära nvå har Dekker vsat att man kan mplementera ömsesdg uteslutnng mellan krtska regoner två processer, Dekkers algortm. Dekker beskrver sn algortm genom att först beskrva ett antal enklare algortmer ( Dekker 1 4 ) som vsar ett antal begränsnngar form av deadlock och svält. Utfrån de fyra cke fungerande lösnngarna så tar Dekker fram den slutlga lösnngen för två processer.
LET 624 (6 hp) Sd nr 6 nt 1=FALSE ; nt 2=FALSE; PROCESS P1() { whle(1){ // cke krtsk regon whle( 2==TRUE); 1=TRUE; // Krtsk regon. 1=FALSE; PROCESS P2() { whle(1){ // cke krtsk regon whle( 1==TRUE); 2=TRUE; // Krtsk regon. 2=FALSE; a) Ovan processer beskrver en av Dekkers algortmer. Vsa med ett scenaro, dvs beskrv en följd av processbyten mellan processerna som ger upphov tll problem. Beskrv även vlket problem som uppstår. b) Beskrv kort begreppen : deadlock respektve svält Uppgft 5 ( 3p ) Antag att v har en uppsättnng av processer med data enlgt tabellen nedan. Processerna skall schemaläggas med ett statskt schema. Processerna får avbrytas. a) För ett antal perodska processer med perodtderna p n kan man för perodtderna beräkna ett sk LCMtal. Justera perodtderna för nedan system av processer så att ett för statsk schemaläggnng lämplg LCM-tal för perodtderna kan beräknas. Beräkna därefter LCM-talet för perodtderna både före och efter justerngen. b) Rta ett möjlgt statskt schema för processerna med den eller de justerade perodtderna. Process p c d P1 6 2 4 P2 14 2 5 P3 18 5 10 Uppgft 6 ( 3) Antag att vllkoren för dynamsk schemaläggnng enlgt RMSA är uppfyllda för nedan uppsättnng av processer. Processerna är uppställda fallande prortetsordnng där prorteten för P1 är högst. Process p (ms ) c ( ms ) d(ms) P1 18 4 10 P2 34 6 20 P3 68 12 30 P4 68 16 60 a) Vsa att processerna är schemaläggnngsbara. b) Antag att processerna delar användande av en semafor S1 enlgt följande beskrvnng: P2 : Använder S1 3 ms dvs cs P2,S1 = 2 ms P4 : Använder S1 5 ms dvs cs P4,S1 = 5 ms Beräkna maxmala svarstden för P3 med hänsyn tll de nya förutsättnngarna.
LET 624 (6 hp) Sd nr 7 Uppgft 7 ( 2p ) Antag att v har ett system av processer där v nte har några krav på svarstderna men har krav på en vss prortetsordnng. En av processerna P 2 är dessutom av den karaktären att den har ett startjtter +/- 0,5 ms. Processernas data ges av tabellen nedan där de är lstade prortetsordnng. Beräkna maxmala svarstden för P3 enlgt metoden för godtycklg deadlne och med prorterng enlgt tabellen. Proc Prortet p ( ms ) c ( ms ) J P1 0 20 5 - P2 1 25 6 1 P3 2 8 3 - Uppgft 8 ( 2p ) I en process fnns nedanstående rutn som läser n ett tal från en nport systemet. Man har för avskt att teoretskt uppskatta exekverngstden för programdelen. (Not: Uppgften och svar är justerad efter tentamenstllfället pga av felaktgheter) #defne ReadInport *((unsgned char*) 0x9C00) nt antal; unsgned char nkod, temp; 1 antal=0; 2 nkod= ReadInport; 3 4 temp=nkod & 0xF; If(temp){ 5 whle(!(temp & 0x01 ) && (antal < 4 ) ){ 6 7 temp = temp >> 1; 8 antal++; 9 10 a) Rta en programflödesgraf för raderna 1 8 b) Beräkna exekverngstden [mn,max] för programdelen om följande uppskattnngar gäller: BB1= [5,5 ] BB2= [ 5,5 ] BB3= [ 20,30 ] BB4= [5,5 ] BB5= [ 25,35 ] BB6= [ 0,0, ] BB7= [ 5,8 ] BB8= [5,8]
LET 624 (6 hp) Sd nr 8 Uppgft 9 ( 3p ) Studera nedan programexempel. Programmet skapar en länkad lsta med poster av typen REGTYP. Uppgfter: a) Skrv en funkton med funktonsprototypen : REGTYP* add_frst(regtyp* temp, nt data); Som lägger tll en ny post först lstan och tlldelar fältet tal värdet enlgt nparametern data. Funktonen skall returnera en pekare tll den nya första posten lstan. b) Ange hur anropet av funktonen ser ut från huvudprogrammet. Se avsedd plats programlstans huvudprogram. /******************************************** Programexempel 9 tentamen realtdssystem ** 2011-10-19 / ** ********************************************/ #nclude <stdo.h> #nclude <cono.h> #nclude <strng.h> #nclude <stdlb.h> //#### Konstanter ##### #defne MAX 5 // ( alternatvt 1 ) // ##### Typdeklaretoner #### typedef struct q{ nt tal; struct q *next; struct q *prev; REGTYP; // ##### Funktonsprototyper ##### REGTYP* slumpa_lsta(); REGTYP* add_frst(regtyp* temp, nt data); //###### Huvudprogram ####### nt man(nt argc, char *argv[]) { nt nr=0; nt ntal; REGTYP *akt_post, *head=null; srand(254); head=slumpa_lsta(); akt_post=head; whle( akt_post!=null){ prntf("\n Post nr %d : %d", nr++, akt_post->tal); akt_post=akt_post->next; // Programdel där heltalet ntal tlldelas ett vsst värde, dvs ntal=xxx; // Skapa en ny post först lstan vlken ntal skrvs n. // Här anropas den nya funktonen.
LET 624 (6 hp) Sd nr 9 // --- Frgör mnnet whle((akt_post=head)!=null){ head=akt_post->next; free(akt_post); //------------------ system("pause"); return 0; // ==== Slut man ====================================== REGTYP* slumpa_lsta(){ nt nr,=0; REGTYP *top, *old, *tem; tem=(regtyp*) malloc(szeof(regtyp)); top=tem; tem->tal=0; tem->next=null; tem->prev=null; old=tem; whle(<max){ return(top); tem=(regtyp*) malloc(szeof(regtyp)); nr=rand()%100; tem->tal=nr; tem->next=null; old->next=tem; tem->prev=old; old=tem; ++; //========================================================== REGTYP* add_frst(regtyp* temp, nt data){ // Funkton som lägger tll ett element först den länkade lstan samt // lägger n talet data elementets fält tal. Lycka tll önskar!
LET 624 (6 hp) Sd nr 10