Université Mustapha STAMBOULI Année 2019/2020
Faculté des Sciences et de la Technologie
Département d’électrotechnique
Module : Systèmes d’exploitation des systèmes embarqués Master 1 ELN des Sys Embarqués.
Chapitre 1 : Introduction au Systèmes d’exploitation
1. Introduction
La société actuelle fait de plus en plus appel à des appareils fonctionnant de manière
autonome, ou dont le fonctionnement complexe se fait sans grande intervention de
l'utilisateur. Ainsi distributeurs, aspirateurs, téléphones et autres drones sont -ou sont en passe
de devenir- des objets courants. Cette hausse en quantité entraîne une baisse des coûts, mais
aussi une meilleure maîtrise des outils qui s'y rapportent.
À l'origine (et encore pour certains) conçus comme des automates, ces systèmes se sont vus
étoffés de comportements plus agréables à l'utilisateur final. D’automates, ils sont donc
devenus des systèmes programmés ; l'évolution de l'informatique et de l'électronique aidant.
Parmi ces systèmes, rares sont ceux programmés « à même le matériel » : la puissance de
calcul disponible permettant de les faire fonctionner comme un ordinateur « normal ». De fait,
ces éléments sont des « Systèmes (informatiques) Embarqués » ; ordinateurs, programmes, et
matériel spécifiques.
Cela va de soi, tous les « Systèmes Embarqués » ne sont pas identiques. Pourtant, il est
nettement plus rentable de les programmer de manière similaire. Pour ce faire, deux solutions
sont possibles :
- utiliser systématiquement le même matériel, ou du matériel similaire, quelque soit le
système cible,
- ou bien abstraire les particularités « restrictives » du système cible, et bénéficier d'un
socle commun entre les systèmes embarqués.
Cette seconde solution, appliquée dans la micro-informatique courante, est la plus intéressante
: le but étant de simplifier le développement, sans restreindre les usages. Comme pour la
micro-informatique usuelle, elle passe par l'utilisation de systèmes d’exploitation spécifiques,
tels Windows CE, Android. .
Parmis ces Systèmes d'Exploitations, une grande variété s'appuie sur une base fortement
commune. Un système d'exploitation courant, maîtrisé, et de surcroît libre. Cela ne signifie
pas que les systèmes d’exploitation de Microsoft ou d'Apple (pour ne citer qu'eux) soient
minoritaires. Cela dénote seulement d'une maturité des outils issus du « libre ». L'une de ces
bases communes, dont il sera partiellement question dans ce présent rapport, est le noyau
Linux.
Plutôt que de s'attaquer au noyau Linux, ce document -comme le titre peut l'indiquer-
compare deux systèmes d'exploitations différents, basés tous deux sur un noyau Linux. Ainsi,
Ångström, une distribution issue du monde du « Libre », et BlueCat, issue du monde
industriel, seront décrites, puis comparées. Ces deux systèmes d’exploitation sont bien
évidemment basés sur Linux.
2. Présentation des systèmes d’exploitation
Un système d'exploitation est un programme qui doit permettre aux utilisateurs d'utiliser les
fonctionnalités d'un ordinateur. Mais il doit aussi aider le programmeur à développer des
logiciels de la façon la plus efficace possible. Un système d'exploitation est mis en route dès
qu'on met en marche l'ordinateur. Dans les grosses machines, il est toujours en exécution. Le
système constitue donc une interface entre l'utilisateur et la machine physique.
Le système d'exploitation gère et contrôle les composants de l'ordinateur. Il fournit une base
appelée machine virtuelle, sur laquelle seront construits les programmes d'application et les
utilitaires au moyen des services ou appels système. Le but d'un système d'exploitation
consiste donc à développer des applications sans se soucier des détails de fonctionnement et
de gestion du matériel.
3. Historique des systèmes d’exploitation
Sans trop détailler l’histoire des systèmes d’exploitation, on va se limiter à une présentation
brève des principales dates donnant lieu à des changements important dans l’histoire de
l’informatique et des systèmes. Cette histoire peut être classée en cinq générations :
- La première génération : le traitement par lots ;
- La deuxième génération : la multiprogrammation ;
- La troisième génération : le temps partagé ;
- La quatrième génération : le temps réel ;
- La cinquième génération : les systèmes distribués ;
4. Les principales fonctions d’un système d'exploitation
Les rôles du système d'exploitation sont divers :
· Gestion du processeur : le système d'exploitation est chargé de gérer l'allocation du
processeur entre les différents programmes grâce à un algorithme d'ordonnancement. Le
type d'ordonnanceur est totalement dépendant du système d'exploitation, en fonction de
l'objectif visé.
· Gestion de la mémoire vive : le système d'exploitation est chargé de gérer l'espace mémoire
alloué à chaque application et, le cas échéant, à chaque usager. En cas d'insuffisance de
mémoire physique, le système d'exploitation peut créer une zone mémoire sur le disque dur,
appelée «mémoire virtuelle». La mémoire virtuelle permet de faire fonctionner des
applications nécessitant plus de mémoire qu'il n'y a de mémoire vive disponible sur le
système. En contrepartie cette mémoire est beaucoup plus lente.
· Gestion des entrées/sorties : le système d'exploitation permet d'unifier et de contrôler
l'accès des programmes aux ressources matérielles par l'intermédiaire des pilotes (appelés
également gestionnaires de périphériques ou gestionnaires d'entrée/sortie).
· Gestion de l'exécution des applications : le système d'exploitation est chargé de la bonne
exécution des applications en leur affectant les ressources nécessaires à leur bon
fonctionnement. Il permet à ce titre de «tuer» une application ne répondant plus correctement.
· Gestion des droits : le système d'exploitation est chargé de la sécurité liée à l'exécution des
programmes en garantissant que les ressources ne sont utilisées que par les programmes et
utilisateurs possédant les droits adéquats.
· Gestion des fichiers : le système d'exploitation gère la lecture et l'écriture dans le système
de fichiers et les droits d'accès aux fichiers par les utilisateurs et les applications.
· Gestion des informations : le système d'exploitation fournit un certain nombre d'indicateurs
permettant de diagnostiquer le bon fonctionnement de la machine.
5. Composantes d’un système d'exploitation
Le système d'exploitation est composé d'un ensemble de logiciels permettant de gérer les
interactions avec le matériel. Parmi cet ensemble de logiciels on distingue généralement les
éléments suivants :
· Le noyau (en anglais kernel) représentant les fonctions fondamentales du système
d'exploitation telles que la gestion de la mémoire, des processus, des fichiers, des entrées-
sorties principales, et des fonctionnalités de communication.
· L'interpréteur de commande (en anglais shell, traduisez «coquille» par opposition au
noyau) permettant la communication avec le système d'exploitation par l'intermédiaire d'un
langage de commandes, afin de permettre à l'utilisateur de piloter les périphériques en
ignorant tous des caractéristiques du matériel qu'il utilise, de la gestion des adresses
physiques, etc.
· Le système de fichiers (en anglais «file system», noté FS), permettant d'enregistrer les
fichiers dans une arborescence.
6. Les différents types d’un SE :
6.1.1 Systèmes multitâches
Un système d'exploitation est dit «multi-tâche» (en anglais multithreaded) lorsque plusieurs
«tâches» (également appelées processus) peuvent être exécutées simultanément.
Les applications sont composées en séquence d'instructions que l'on appelle «processus
légers» (en anglais «threads»). Ces threads seront tour à tour actifs, en attente, suspendus ou
détruits, suivant la priorité qui leur est associée ou bien exécutés séquentiellement.
Un système est dit préemptif lorsqu'il possède un ordonnanceur (aussi appelé planificateur),
qui répartit, selon des critères de priorité, le temps machine entre les différents processus qui
en font la demande.
Le système est dit à temps partagé lorsqu'un quota de temps est alloué à chaque processus
par l'ordonnanceur. C'est notamment le cas des systèmes multi-utilisateurs qui permettent à
plusieurs utilisateurs d'utiliser simultanément sur une même machine des applications
différentes ou bien similaires : le système est alors dit «système transactionnel». Pour ce
faire, le système alloue à chaque utilisateur une tranche de temps.
6.1.2 Systèmes multi-processeurs
Le multiprocessing est une technique consistant à faire fonctionner plusieurs processeurs en
parallèle afin d'obtenir une puissance de calcul plus importante que celle obtenue avec un
processeur haut de gamme ou bien afin d'augmenter la disponibilité du système (en cas de
panne d'un processeur).
On appelle SMP (Symmetric Multiprocessing ou Symmetric Multiprocessor) une architecture
dans laquelle tous les processeurs accèdent à un espace mémoire partagé.
Un système multiprocesseur doit donc être capable de gérer le partage de la mémoire entre
plusieurs processeurs mais également de distribuer la charge de travail.
6.1.3 Systèmes embarqués
Les systèmes embarqués sont des systèmes d'exploitation prévus pour fonctionner sur des
machines de petite taille, telles que des PDA (personal digital assistants ou en français
assistants numériques personnels) ou des appareils électroniques autonomes (sondes
spatiales, robot, ordinateur de bord de véhicule, etc.), possédant une autonomie réduite. Ainsi,
une caractéristique essentielle des systèmes embarqués est leur gestion avancée de l'énergie et
leur capacité à fonctionner avec des ressources limitées.
Les principaux systèmes embarqués «grand public» pour assistants numériques personnels
sont :
· PalmOS
· Windows CE / Windows Mobile / Window Smartphone
6.1.4 Systèmes temps réel
Les systèmes temps réel (real time systems), essentiellement utilisés dans l'industrie, sont des
systèmes dont l'objectif est de fonctionner dans un environnement contraint temporellement.
Un système temps réel doit ainsi fonctionner de manière fiable selon des contraintes
temporelles spécifiques, c'est-à-dire qu'il doit être capable de délivrer un traitement correct
des informations reçues à des intervalles de temps bien définis (réguliers ou non).
Voici quelques exemples de systèmes d'exploitation temps réel :
· OS-9 ;
· RTLinux (RealTime Linux) ;
· QNX ;
· VxWorks.
6.1.5 Exemples de systèmes d'exploitation
On distingue plusieurs types de systèmes d'exploitation, selon qu'ils sont capables de gérer
simultanément des informations d'une longueur de 16 bits, 32 bits, 64 bits ou plus.
7. Structure interne d'un système d'exploitation
7.1 Structure en couches
Le système d'exploitation est structuré en couches. Chaque couche utilise les fonctions des
couches inférieures. La principale difficulté est la définition des différentes couches. Par
exemple, on peut l'organiser en cinq couches, comme montré sur la Fig 1.1 :
– Au plus bas niveau on trouve le noyau, l'interface entre le matériel et le logiciel. Il se
charge, en utilisant les fonctions fournies par le matériel, de gérer la UCT, les interruptions et
les processus (la communication et la synchronisation). Il doit entièrement résider en
mémoire.
– Au second niveau, on trouve le gestionnaire de la mémoire qui se charge du partage de la
mémoire entre les processus en attente d'exécution.
Figure 1.1. structure en couches
– Au troisième niveau, on a le module de gestion des entrées/sorties qui se charge de gérer
tous les périphériques (clavier, écran, disques, imprimantes, etc.).
– Au quatrième niveau, on trouve le gestionnaire de fichiers qui se charge de la gestion de
l'espace du disque, de la manipulation des fichiers tout en assurant l'intégrité des données, la
protection des fichiers, etc.
– Au cinquième niveau, on a le module d'allocation de ressources qui se charge d'assurer une
bonne utilisation des ressources ; de comptabiliser et de fournir des statistiques sur
l'exploitation des ressources principales ; de créer de nouveaux processus et leur attribuer un
niveau de priorité : de permettre à chaque processus existant dans le système d'obtenir les
ressources nécessaires dans des limites de temps raisonnables ; d'exclure mutuellement les
processus qui demandent une ressource non partageable et d'éviter les situations de blocage.
7.2 Structure monolithique
Les systèmes d'exploitation sous une structure monolithique () sont un ensemble de
procédures de —presque— le même niveau : une procédure principale qui appelle la
procédure de service requise, des procédures de service qui exécutent les appels système et un
ensemble de procédures utilitaires qui assistent les procédures de service, par exemple la
recherche de données des programmes utilisateur. Unix et Linux sont des exemples de
systèmes monolithiques.
7.3 Micro-kernel
Une architecture plus moderne que celle monolitique est l'architecture micro-kernel (voir la
figure …) utilisée en MACH5/ HURD6, Minix et NT. L'attribut principal qui distingue les
micro-kernels des kernels monolitiques est l'implantation de leurs architectures respectives en
mode superviseur (kernel mode) et en mode usager (user mode). L'architecture monolitique
met en oeuvre tous les services du Système d'exploitation (controleurs de dispositifs, mémoire
virtuelle, système de chiers, réseaux, etc) dans le domaine du mode superviseur de l'UCT.
Par contre, l'architecture micro-kernel fait une division entre les services du Système
d'exploitation, en les divisant en « haut-niveau » implantés dans le domaine de l'utilisateur et
« bas-niveau » implantés dans l'espace du mode superviseur.
7.4 Le modèle client/serveur
Dans le modèle client/serveur Le système d'exploitation est composé d'un noyau et d'un
ensemble de serveurs. Le noyau gère la communication entre les clients et les serveurs. Les
clients sont les demandeurs de services. Par exemple, pour demander un service, comme la
lecture d'un bloc d'un fichier, un processus utilisateur (aussi appelé processus client) envoie
une requête à un processus serveur qui effectue le travail et renvoie une réponse. Les serveurs
s'exécutent en mode utilisateur. Ils ne peuvent donc pas accéder directement au matériel. Par
conséquent, une erreur ou un bogue dans le serveur de fichiers, par exemple, n'affectera pas,
en général, l'ensemble de la machine. Les dégâts se limitent au serveur.
7.5 Machines virtuelles
Le coeur du système se charge de la multiprogrammation en fournissant à la couche au dessus
plusieurs machines virtuelles. Des systèmes d'exploitation différents peuvent tourner au
dessus d'une machine virtuelle.
Exemples de machines virtuelles :
– IBM VM : offre à chaque usager sa propre machine virtuelle monotâche. Les machines
virtuelles étaient planifiées avec du temps partagé.
– Java : les programmes compilés en Java tournent sur une machine virtuelle (JVM).
– VMWare7: sur PC, exécute en même temps des sessions Windows, Linux, OS/2, etc.
– Nachos : SE qui s'exécute dans une machine virtuelle MIPS, qui tourne sur Unix.