• Aucun résultat trouvé

III.4 Vers une passerelle sécurisée et temps réel pour le traitement de flux multi-

II.2.1 Architecture logicielle de la solution PikeOS

– Le principe de compartimentation spatiale, définissant un espace de mémoire allouée de

manière stricte, associé à une politique d’accès aux périphériques définie par

configura-tion

– Le principe de compartimentation temporelle, définissant une durée et une période

d’acti-vation. Cette compartimentation permet d’assurer une charge processeur et une réactivité

minimum assurée pour la où les tâches exécutée(s) dans le compartiment temporel.

La solution PikeOS permet de gérer les politiques d’ordonnancement de type Rate

Mono-tonic (RM) avec 255 niveaux de priorités. Il permet de plus de définir une séparation temporelle

de type TDM pour les différents compartiments temporels, venant s’ajouter à la politique

d’or-donnancement RM initiale, afin de déterminer des fenêtres d’ord’or-donnancement strictes et

péri-odiques.

En terme de séparation spatiale, PikeOS permet d’assurer une séparation spatiale stricte en

définissant une répartition des compartiments en mémoire par configuration, et assure la

ségré-gation des accès aux périphériques via la MMU pour les espaces mémoire d’entrée/sortie et au

travers d’une gestion fine du contrôleur d’interruption pour associer chaque ligne d’interruption

à un compartiment spatial donné. C’est par l’assignation d’une compartimentation spatiale et

temporelle à chaque entité devant être ordonnancée que la solution PikeOS permet à la fois de

supporter des exigences en terme de temps réel et de sécurité.

En terme de portabilité, la solution PikeOS a déjà été portée sur un grand nombre

d’architec-tures processeur (ARM, PowerPC, MIPS, x86, etc.), et est conçu pour simplifier (et donc limiter

le coût financier) d’un portage vers une nouvelle architecture, selon le besoin.

Synthèse de la solution PikeOS

La capacité à ordonnancer à la fois des OS complexes et des tâches certifiables fait de cette

solution logicielle un bon candidat à l’intégration des moniteurs de sécurité tels que nécessités

par une architecture de type MLS ou MILS [BB09]. Il est en effet compatible avec la Propriété

II.1.2.2d’un système MLS. Les trois autres propriétés (II.1.2.1,II.1.2.3etII.1.2.4) peuvent être

supportées via l’intégration d’éléments complémentaires exécutées au dessus du micro-noyau.

De plus, le micro-noyau PikeOS est compatible avec le besoin de certification, y compris à haut

niveau, du fait de son très faible volume de code (environ 5000 lignes de codes dans le

micro-noyau et 5000 lignes de code dans le gestionnaire de communications s’exécutant au dessus).

Un tel volume de code implique également une consommation mémoire extrêmement faible

de la part du micro-noyau. Ce dernier est également portable sur un grand nombre

d’architec-tures (ARM, PowerPC, x86, MIPS, SH4, etc.), évitant ainsi toute limitation suite à un choix

stratégique de la solution dans un ensemble de produits aux usages multiples.

II.2.2 Synthèse

L’usage d’une solution logicielle de virtualisation à faible empreinte mémoire est un bon

can-didat au besoin MILS et MLS. Une telle solution permet ainsi d’exécuter divers environnements

dont les niveaux de sécurité et de sureté de fonctionnement peuvent être hétérogènes.

Cepen-dant, cela implique une compatibilité de la solution de virtualisation logicielle avec à la fois

des exigences de temps réel et de sécurité. Le choix d’une telle solution est malheureusement

limitée par les différents accord internationaux, comme par exemple ITAR (International

Traf-fic in Arms Regulation), limitant les accès et l’usage des solutions Américaines ayant atteint

des niveaux d’assurance élevés, comme par exemples les solutions VXWorks de WindRiver et

Integrity de GreenHiils Softwares.

Il est de plus nécessaire, afin de permettre l’intégration de sécurité, d’avoir la possibilité de faire

s’exécuter sur l’hyperviseur d’autres éléments logiciels que des systèmes virtualisés, comme je

le propose pour PikeOS dans la SectionII.2.1.5. Ainsi, l’hyperviseur doit non seulement

perme-ttre l’exécution de systèmes d’exploitations virtualisés, mais également des threads directement

ordonnancés par ce dernier, tout en assurant une compartimentation spatiale et temporelle forte.

Parmi les différentes solutions de virtualisation étudiées, seule la solution PikeOS de Sysgo

permet de répondre à l’ensemble de ces besoins tout en prenant en compte les contraintes

com-merciales liées à ITAR. C’est cette solution que je considère dans ma thèse afin de répondre à

la problématique d’architecture de sécurité pour répondre à la fois aux exigences de temps réel

et de sécurité. Dans le cadre de ma thèse, je définis toute une architecture de modules logiciels

complémentaires permettant à la fois de répondre aux besoins des systronique et aux propriétés

que doivent respecter les systèmes MLS et décrites dans le ChapitreII.1.2.1.

Focus sur l’ordonnancement hiérarchique

et la criticité mixte

Sommaire

II.3.1 Solutions pour l’ordonnancement hiérarchique de tâches. . . . 61

II.3.1.1 Principes généraux de l’ordonnancement hiérarchique. . . 61

II.3.1.2 Synthèse. . . 64

II.3.2 État de l’art de l’ordonnancement de tâches à criticité mixte . . . . 65

II.3.2.1 Principe de la criticité mixte . . . 65

II.3.2.2 Synthèse. . . 66

L’usage d’un Separation Kernel est un des moyens proposées pour répondre aux besoins

des architectures MILS et MLS. Cette architecture, impliquant potentiellement de la

virtuali-sation de plusieurs environnements autonomes, s’appuie sur un ordonnancement hiérarchique

de tâches virtualisées. Dans le cadre de ma thèse, il est également nécessaire de considérer

la problématique de criticité mixte, du fait des contraintes fortes des systèmes systroniques en

terme de puissance processeur. Ce chapitre décrit un état de l’art sur ces deux thèmes.

II.3.1 Solutions pour l’ordonnancement hiérarchique de

tâches

II.3.1.1 Principes généraux de l’ordonnancement hiérarchique

On parle d’ordonnancement hiérarchique lorsqu’une tâche est ordonnancée au travers de deux

politiques d’ordonnancement distinctes hiérarchisées. Dans les systèmes temps réels, on

con-sidère alors un ensemble de jeux Γ

i

de tâches exécutés en concurrence. Pour chaque jeu de

tâches, on considère un ensemble de tâchesτ

i

1. Une politique d’ordonnancement des jeux de tâches, nommé ordonnancement global

2. Une politique d’ordonnancement des tâches dans un jeu donné, nommé ordonnancement

local

L’ordonnancement hiérarchique a été beaucoup étudié ces dernières années. Ainsi, la capacité

à ordonnancer en concurrence des jeux de tâches sur un même cœur d’un processeur permet

de pouvoir prendre en considération une classification de ces jeux. La prise en compte d’une

classification des jeux de tâche permet de différencier leur ordonnancement en fonction des

besoins. On peut ainsi différencier des traitements temps réel de traitement non temps réel.

C’est typiquement le cas de Linux qui ordonnance des tâches temps réel et non temps réel

en concurrence, en garantissant que les tâches temps réel sont prioritaires sur les autres. Il est

également possible de pouvoir ordonnancer en concurrence deux jeux de tâches en utilisant

deux politiques d’ordonnancement différentes, pouvant ainsi optimiser les performances selon

les propriétés de chaque jeu de tâches.

Aujourd’hui, la plupart des travaux [LB05] ont pour hypothèse une connaissance initiale de

l’ensemble des tâches.

La classification des jeux de tâches peut par exemple être faite en fonction des exigences

de réactivité associées à ceux-ci. Ainsi, dans [LB05], les auteurs différencient les tâches de

traitements des interruptions matérielles, exigeant une forte réactivité, des autres tâches. La

FigureII.3.1décrit une répartition implémentée dans les noyaux Linux jusqu’à la version 2.6.32.

Le but de cette classification de jeux de tâches et de pouvoir différencier l’ordonnancement :

– de certains traitements consécutifs à des évènements asynchrones, comme les traitements

des IRQ

– des tâches temps réel ordonnancées par l’ordonnanceur FIFO

– des tâches temps réel ordonnancées par l’ordonnanceur RR

La figure II.3.1 décrit le cas de certaines tâches parmi l’ensemble des tâches que l’on peut

trouver sous Linux, comme la gestion des interruptions timer, souris et clavier, ou encore les

bottom halves[Wil03], c’est à dire les traitements déportés dans le temps de certaines fonctions.

Ordonnancement hiérarchique et principe de virtualisation

Lorsque la hiérarchisation de l’ordonnancement est la conséquence de l’emploi de la

virtual-isation, les deux politiques d’ordonnancement (locale et globale) s’ignorent l’une l’autre. Ainsi,

l’état de l’ordonnancement des tâches locales, et leur besoin en terme de charge n’est pas connu

de l’ordonnanceur global. Le cas de l’hyperviseur Xen est particulier, car il est capable de

déter-miner une variation de charge d’une machine virtuelle lorsque cette variation est la conséquence

de traitements de type entrées/sorties. Celles-ci transitant par le domaine de contrôle, ce dernier

peut alors informer l’hyperviseur afin de modifier l’ordonnancement des machines virtuelles

root timer (high) mouse keyboard (low) IRQ RT FIFO

bh highres timers (high) bh net send

bh net recv (low)

RT RR

job 1 (high) job 2

job 3 (low) handlers

F

IGURE

II.3.1 – Répartition des tâches du noyau Linux par jeux autonomes, en fonction des

Documents relatifs