Achtergrond

Van RTos naar Linux: lichte thread of zwaar proces?

Jim Ready, Bill Weinberg
Leestijd: 7 minuten

Nu steeds meer ontwikkelaars traditionele RTos‘en de rug toekeren en de applicaties naar embedded Linux verplaatsen, krijgt het poorten van code een steeds belangrijkere rol in softwareontwikkeling. Met name de vraag of een RTos-taak als proces of thread moet worden geïmplementeerd, dringt zich op. Jim Ready en Bill Weinberg wegen deze twee taakarchitecturen tegen elkaar af en geven richtlijnen over het gebruik.

Het overzetten van je RTos-applicatie naar embedded Linux biedt voordelen, maar het poorten van code kan een ingewikkeld proces zijn. Je kunt RTos-emulatiepakketten of virtualisatie gebruiken, of een grootschalige native port uitvoeren. Maar wat je altijd zult moeten beslissen, is welke RTos-taken je als proces en welke je als thread implementeert. De Linux-kernel behandelt processen en threads in principe op vergelijkbare manier voor de scheduling, maar ze hebben verschillende Api‘s voor het creëren en beheren en verschillende prestatiekosten en brongebruik – en voordelen.

Over het algemeen zijn processen ’zwaarder‘ dan threads omdat ze meer context dragen. De context van een Linux-thread bestaat – net als bij een RTos-taak – voornamelijk uit een subreeks CPU-registers, een stack, een actuele program counter (PC) en enkele ingangen in de datastructuur van de kernel (TCB‘s in een RTos). Een proces voegt hieraan een volledige virtuele adresruimte toe. De kernel moet dus op zijn minst ook page translations aanmaken en beheren voor alle code en data die het proces gebruikt.

This article is exclusively available to premium members of Bits&Chips. Already a premium member? Please log in. Not yet a premium member? Become one and enjoy all the benefits.

Login

Related content