Casa > Exposició > Contingut

Gestors de la interrupció del sistema operatiu en temps real i el planificador

Mar 08, 2019

Atès que un controlador d’interruptes bloqueja la tasca de prioritat màxima d’execució, i com que els sistemes operatius en temps real estan dissenyats per mantenir la latència del fil mínim, els gestors d’interrupcions s’acostumen a mantenir tan curts com sigui possible. El gestor d'interrupcions difereix tota la interacció amb el maquinari si és possible; típicament, només cal reconèixer o desactivar l’interrupció (de manera que no es torni a produir quan el controlador d’interrupcions torni) i notificar una tasca que cal fer. Això es pot fer desbloquejant una tasca del controlador mitjançant l'alliberament d'un semàfor, establint un senyalador o enviant un missatge. Un planificador sovint proporciona la possibilitat de desbloquejar una tasca des del context del gestor d'interrupcions.


Un sistema operatiu manté catàlegs d'objectes que gestiona, com ara fils, mutexos, memòria, etc. Les actualitzacions d’aquest catàleg han de ser controlades estrictament. Per aquesta raó, pot ser problemàtic quan un gestor d'interrupcions truca una funció de sistema operatiu mentre l’aplicació s’encarrega també de fer-ho. La funció del sistema operatiu anomenada des d’un gestor d’interrupció podria trobar la base de dades d’objectes en un estat inconsistent a causa de l’actualització de l’aplicació. Hi ha dos enfocaments principals per abordar aquest problema: l'arquitectura unificada i l'arquitectura segmentada. Els RTOS que implementen l'arquitectura unificada resolen el problema simplement desactivant les interrupcions mentre s'actualitza el catàleg intern. El desavantatge d'això és que la latència d'interrupcions augmenta, podent-se perdre interrupcions. L’arquitectura segmentada no fa trucades de sistema operatiu directe, sinó que delega el treball relacionat amb el sistema operatiu a un controlador separat. Aquest controlador s'executa amb una prioritat més alta que qualsevol fil, però inferior als controladors d’interrupcions. L’avantatge d’aquesta arquitectura és que afegeix molt pocs cicles per interrompre la latència. Com a resultat, els sistemes operatius que implementen l'arquitectura segmentada són més previsibles i poden tractar amb taxes d'interrupció més altes en comparació amb l'arquitectura unificada.


De la mateixa manera, el mode de gestió del sistema en maquinari compatible amb x86 pot trigar molt de temps abans de retornar el control al sistema operatiu. Generalment és incorrecte escriure programari en temps real per al maquinari x86.