Comment fonctionne Linux ? Comment l'utiliser pour faire un système embarqué ?

Introduction

Dans ce cours on va voir comment fonctionne Linux embarqué, quelles sont les différent éléments de ce système d’exploitation et comment l’utiliser dans les systèmes embarqués.

  • Linux est un système multi utilisateur : plusieurs utilisateurs peuvent utiliser le système d’exploitation en même temps (en parallèle) après un login.Le système d’exploitation gère des droits d’accès, (user, group, others) et limité. Ceci réglemente les accès aux ressources (fichiers, périphérique , E/S, mémoire…).
  • Linux est un système d’exploitation multiprocessus : Plusieurs processus ou programme s’ éxécutent en parallèle sur le système.

Cela peut-être un processus utilisateur ou un processus système.

Découverte de Linux

Un système d’exploitation linux a la gestion de :

  • processeur
  • mémoire
  • entrées/sorties
  • l’éxécution des processus
  • temps
  • droits
  • système de fichiers
  • synchronisations et des communications inter-processus
  • interruptions et des exceptions
  • Le kernel (Noyau)

Le kernel est la zone la plus centrale du calculateur. Il y a deux états dans un kernel : superviseur et utilisateur.

Les principales fonctions d’un kernel sont : Interruption + exceptions, Entrée/sortie, gestion ḿémoire,
ordonnancement, processeur, réseau, temps…

  • Ordonnancement


Le principe de l’ordonnancement c’est de gérer le parallèle d’exécution entre processus.

L’ordonnancement possède pluieurs caractéristiques :

  • le temps
  • les droits d’accès,
  • le système de fichier
  • les synchronisations et communcation inter processus
  • interruption et exceptions : quel événement va arriver dans le système ?
  • ressources allouées, requises
  • état du processus (actif, attente …).
  • implementation mémoire
  • priorité
  •  Processus

Un processus est un programme qui s’ éxécute en mémoire (RAM). Cette zone mémoire lui est attribuée par le système d’exploitation et lui est propre. Aucun processus ne peut accéder à cette zone. Toute tentative d’accès à cette zone par un autre processus provoque une exception “violation de mémoire” gérée par la système d’exploitation. Cette exception provoque généralement l’arrêt du procecssus autour de la tentative d’accès.

La zone mémoire occupée par un processus lui est attribué par le système d’exploitation.

Le système d’exploitation tient à jour une table des processus :

  • chaque entrée dans cette table identifie un processus : descripteur du processus (DDP)
  • LE DDP d’un processus contient notamment le PID (Processus Identifier).

La création d’un processus sous linux est caractérisé par :

  • son PID
  • ses données
  • son code
  • ses besoins en ressources

La seule façon de créer un nouveau processus sous linux est de dupliquer un processus déjà existant :

  • nouveau processus : le fils
  • processus créateur : le père

Cela inplique qu’au lancement de linux il y ait au moin un processus crée : le processus “init”, père de tous les autres processsus.

Pour créer un processur fils, le père est “cloné” dans une autre zone de la mémoire avec le même code et les même données. Néanmoisn les deux processus sont totalement indépendants.

 

Le processus peut être dans 4 états possibles : Actif, prêt, attente et hors service

  • Actif : Le processus possède l’UC (le processus). Un processus actif sera ensuite en attente pour libérer le processeur.
  • Attente : le processus a fait une requête de ressources et attend qu’elles lui soient alloués.
  • prêt : le processus a toutes les ressources requises sauf le processeur. Le porcessus est en mémoire, il a toute les ressources pour s’éxécuter sauf le processeur.
  • hors service : Le processus ne participe pas à la gestion du procédé, il est inutile à cet instance de l’ éxécution. Ici le processus n’est qu’un programme situé sur disque dur, mémoire flash. Il n’a pas d’entrée dans la table des processus.

Les processus sont en compétition ou en concurrence pour pouvoir s’éxécuter.
Préempter cela veut dire que le processus qui était actif redevient prêt car le processeur à besoin de reprendre la main.
Un processus passe dans les trois états jusqu’à temps que le processus se termine.

Le processus envoie un signal à un autre processus qui va démarrer. C’est binaire, le processus peut être arrivé ou non arrivé.
 
  • Démarrage d’un ordinateur

Le démarrage d’un ordinateur commence par l’initialisation du bios.

  1. Le bios

Le bios , après avoir effectué ces initialisations, lit le 1er secteur de disque dur, et le charge en moire RAM. Le bios passe ensuite la main au préchargeur.

2. Le préchargeur

Celui-ci continue les initialisations et lit un autre secteur du disque dur dans lequel se trouve le chargeur, l’installe en mémoiré et lui passe la main.

3. Le chargeur
Le chargeur continue les initialisations, charge le noyau et lui passe la main.

4. Le noyau

Le noyau charge le système de gestion de fichier et démarre le 1er processus ”init”.

  • Cas de la rapsberry pi


Le disque dur est replacé par la carte SD. La raspberry contient un microprogramme ( ́equivalent du BIOS). Ce microprogramme vient faire des initialisations et lire la partition 1 de la carte SD.

La partition 1 de la carte SD contient des programmes d’initialistion et le kernel.
Le kernel lance la lecture du système de gestion de fichier.

  • Mode d’adressage

Le mode d’adressage d’écrit le moyen d’accéder aux opérandes d’une instruction Au démarrage d’une machine on force une adresse dans le compteur ordinal. On lance un cycle de lecture instruction sur cette adresse.
Cette adresse doit être physiquement situés dans une zone de code rémanente. (rom ou flash).