UDVIKLING/EMBEDDED Figur 3: At ændre TaskB fra en “busy loop” wait-tilstand til en udsat wait-tilstand har gjort det muligt for TaskA at bruge næsten 100 procent af CPU-tiden og dermed udføre dobbelt så meget arbejde inden for den samme tidsramme. Figur 4: Prioritetsinvertering vist i Tracealyzer. prioritet. Tasks med lav prioritet suspenderes, når tasks med høj prioritet banker på og spørger efter processorplads. Under visse omstændigheder kan det modsatte dog ske. Problemet er kendt som prioritetsinvertering. Flag eller semaforer bliver en gang imellem brugt til at syn- kronisere adgang til en fælles ressource. Når en task indgår i en kritisk sektion for at få ad- gang til globalt delte ressourcer, prøver den at ”overtage” sema- foren. Hvis semaforen allerede er taget – og en anden task altså er i gang med at eksekvere den kritiske sektion, vil RTOS-kernen suspendere den ene task indtil den anden task frigiver sema- foren. Det relativt almindelige møn- ster skaber et potentielt pro- blem, hvis en task med lav prioritet holder semaforen, og en task med mellemprioritet får fortrinsret. I så fald vil alle tasks, der venter på semaforen bliver forsinkede – selv task med høj prioritet. På den måde vil task med høj prioritet komme til at vente på tasks med lavere prio- ritet. Altså prioritetsinvertering. Et højt profileret tilfælde af prioritetsinvertering gav vir- kelig problemer på et NASA- rumfartøj. Under Pathfinder- missionen til Mars i 1997 havde NASA-ingeniørerne overset et prioritetsinverteringsproblem. En task med lang running-time kunne ganske ofte blokere ek- sekveringen af højprioritets tasks, hvilket så kunne få en watchdog-timer til at løbe ud. Det kunne give en total system-reset under missionen – selv om NASA’s ingeniører løste problemerne i løbet af nogle få dage. De kunne reproducere omstændighe- derne på Jorden på en kopi af systemet gennem tracing af systemeksekveringen, og på den måde fik de til sidst loka- liseret problemet. Prioriteternes ”arv” En RTOS-funktion kaldet prio- ritetsarv kan bruges til at for- hindre prioritetsinvertering. ”Arven” løfter temporært prioriteten i scheduling af en task, som holder en ressource fast på samme niveau som en ventende task, hvilket forhin- Fortsættes på side 32 PARTNER Vi er jeres udvikling, produktion og logistikpartner R&D DEVELOPMENT Stor ekspertise og mere end 20 års erfaring med udvikling TEKNOLOGI Vi kan supportere jer gennem hele produktets livscyklus loT hardware, udvikling og produktion af elektronik under ét tag i Danmark Din specialist inden for udvikling af IoT-løsninger Fra idé til volumenproduktion af din løsning Vores udviklingsafdeling er eksperter i Design For Manufacturing Udvikling af intelligente elektronikløsninger Kontakt os for mere information på +45 6615 3000 eller contact@micro-technic.com micro-technic.com - nr. 9 | september 2021 31
Download PDF fil
Cookiepolitik
Se arkivet med udgivelser af Aktuel Elektronik her
TechMedias mange andre fagblade kan læses her