Le SE (système d’exploitation) ou OS est une couche logicielle située entre le matériel et le programme d’application.
Les outils de gestions de l'ordinateur ainsi que l'interface graphique sont également des applications.
Le SE est étroitement lié au matériel.
Ce qui fait que les applications sont indépendantes du matériel, mais, restent dépendantes du langage de programmation du microprocesseur.
On peut donc dire que le SE fournit une "couche virtuelle" pour toutes les applications.
Le SE réalise les opérations suivantes :
il fournit une interface utilisateur, qui peut être texte mais est le plus souvent graphique :
pour la gestions des données
pour la communication entre programmes ou entre machines
il gère le chargement en mémoire centrale d’un ou plusieurs programmes puis l'exécution de ces programmes.
il gères l'utilisation des ressources de la machine, la répartition de ces ressources entre les différents programmes
il permet de masquer les caractéristiques physiques de l’ordinateur :
Cela donne une vision uniforme des périphériques quelque soit le type.
Quelques définitions :
Ressource :
moyen matériel ou logiciel nécessaire au lancement d’un processus.
Le gestionnaire d'entrées-sorties, qui lui même, fait appel au gestionnaire de fichiers qui utilise
Les pilotes de périphériques (en Anglais device driver ou driver, c'est à ce niveau que ce fait le lien entre matériel et logiciel
Un programme ne doit jamais accéder directement au matériel, mais toujours utiliser les drivers, sinon il n'est pas portable d'une machine à une autre.
La mémoire de masse représente les disques durs mécaniques ou utilisant des mémoires flash.
Chaque couche est une couche intermédiaire entre la couche inférieure et la couche supérieure.
Le moniteur
Le gestionnaire de processus
Description
Il attribut le ou les processeurs aux différents processus ou tâches à exécuter.
En environnement multiprocesseur les différents processus sont répartis sur les processeurs.
En environnement monoprocesseur, tout se passe comme si chaque processus avait son propre processeur, mais en réalité c’est un processeur qui se partage à chaque processus.
Un seul processeur traite tous les processus de manière séquentielle.
L'ensemble des données utilisées par le processus est appelé le contexte d'exécution :
Données propres ou communes à d’autres processus
Compteur ordinal du processeur
Pointeur de pile
Divers autres registres
La table de processus est un tableau qui contient l’environnement de chaque processus.
Différents états d'un processus
Les principaux états d'un processus sont :
actif : en cours d’exécution
activable : suspendu provisoirement pour permettre l’exécution d’un autre processsus
bloqué : en attente de réponse d’un périphérique pour reprendre.
L'ordonnancement des tâches en temps partagé
L’ordonnanceur des tâches définit à chaque instant quel processus va être activé.
Chaque processus dispose de la même tranche de temps processeur. Le passage d'une tâche à une autre s'appelle la commutation de tâche qui effectue :
A la fin de chaque tranche de temps définie par une horloge (timer)
Sur des évènements particuliers :
I Fin de tâche en cours avant la fin de la tranche de temps
Tâche en cours fait appel à un périphérique avant la fin de la tranche de temps, elle est mise en attente.
Lors de la commutation :
La tâche en cours est suspendue (environnement de travail sauvegardé)
La tâche suivante est exécutée (restitution de l’environnement de travail et exécution)
Le système temps réel à contrainte de temps souple (soft real time) qui accepte des variations de temps pour les traitements de l’ordre de 500ms (systèmes multimédias).
Le système temps réel à contrainte de temps dure (hard real time) qui impose des contraintes de temps plus strictes de l’ordre de la µs.
Les critères de contrainte dure sont :
Le déterminisme logique : les mêmes entrées produisent les mêmes effets
Le déterminisme temporel : une tâche doit être exécutée dans les temps qui lui est imparti
La fiabilité : le système doit toujours être disponible pour chaque évènement
Hiérarchie entre les processus
Un processus (père) peut en lancer un autre (fils).
En environnement multitâche le processus père continue de fonctionner pendant que le fils est exécuté, le fils est une nouvelle tâche ajoutée à la table des processus.
Un fils peut être le père d’un autre processus. On a une structure arborescente des processus.
En environnement monotâche le processus père s’arrête pour laisser le processus fils s’exécuter.
Le fils hérite d’une copie du contexte d’exécution du père.
La Mémoire partagée est une zone mémoire accessible par les processus.
Le Sémaphore est une méthode de synchronisation des échanges lors de l'accès à la mémoire.
Le gestionnaire de mémoire
La mémoire est partagée entre :
Système d’exploitation : en ROM ou Flash et en RAM chargé lors du boot
Pilotes de périphériques
Programmes utilisateurs qui sont chargés en RAM chargé lors de l'exécution
Avec certains système, le processeur accède directement à la mémoire physique avec l’adresse, donc tous les processus peuvent accéder à la même zone mémoire.
Dans la majorité des cas, le processeur n'accède pas directement à la mémoire physique, mais via un système de pagination mémoire, la MMU (Memory Management Unit).
Chaque processus accède à la zone mémoire qui lui est allouée, mais pas à celle des autres processus.
S’il n’y a pas assez de mémoire pour charger tous les processus en mémoire, il sont chargés en mémoire depuis le disque au moment de l’utilisation.
Si la mémoire RAM est insuffisante, le système utilise le disque, cette méthode s’appelle le swapping. On parle de partition swap sur le disque dur.
La gestion des périphériques et des fichiers
Le gestionnaire d'entrées-sorties
Organisation des fichiers sur le disque dur
Le système de fichiers utilise une structure arborescente composée de répertoires. Le disque dur est composé de partitions.
Sous Windows chaque partition est une unité logique comme A :, C :, D :, ... qui est la racine d’une arborescence.
Sous Linux et Unix, il y a une seule arborescence, les partitions sont montées (incluses) dans cette arborescence.
Dans chaque partition le système de fichier dépend du SE :
Fichiers conteneurs qui contiennent les références à d’autres fichiers.
Descripteurs de périphériques :
dans /dev, points d’accès aux périphériques
Ces fichiers ont un numéro majeur relatif au type de périphérique et mineur représentant le périphérique.
Liens symboliques :
Inodes qui ne contiennent qu’une référence (un pointeur) à un autre fichier ou un autre répertoire
Cela permet d’utiliser un même fichier sous plusieurs noms sans avoir à le dupliquer sur le disque.
Un inode contient :
des valeurs binaires pour indiquer les droits d’accès
le numéro du propriétaire et du groupe
la taille en octets du fichier
l’heure et la date du dernier accès et la date de la dernière modification de l’inode (changement des droits d’accès, du propriétaire)
le nombre de liens physiques
les numéros de blocs des données
Les attributs des inodes indiquent le type de l'inode :
Indication de répertoire D
Indication de lien symbolique L
Indication de périphérique caractères C
Indication de périphérique bloc B
Indication de tube P
3 groupes de mode d’accès en lecture, écriture, exécution, définissent les autorisations d'accès aux inodes
Accès propriétaire : RWX
Accès groupe d'utilisateurs: RWX
Accès autre utilisateurs RWX
Exécution de programme avec les droits du propriétaire par un autre utilisateur S au lieu de X
Le système FAT
Le système FAT (File Allocation Table) utilisé par les mémoires SD et les anciens systèmes Windows, utilise une arborescence uniquement pour les fichiers.
Il existe 2 catégories de fichiers :
fichiers binaires : octets de 0 à 255
fichiers textes : codes ASCII et caractères de contrôle 0x0a,0x0d fin de ligne, 0x1a (Ctrl-Z) fin de fichier.
Une partition contient :
Un répertoire racine de la partition, où chaque information sur le fichier est codé sur 32 octets.
Un bloc FAT qui contient la liste des clusters correspondant à chaque fichier.
Un deuxième bloc FAT qui est une copie du bloc précédent
Les clusters contenant les fichiers et sous-répertoires (un sous-répertoire est un fichier contenant les enregistrements de 32 octets)
Un enregistrement du répertoire contient les informations relatives aux fichiers :
Nom sur 8 octets
Extension sur 3 octets
Heure sur 2 octets
Date sur 2 octets
Attribut sur 1 octet
A archive
R lecture seule
D répertoire
H caché
S système
V nom de l’unité disque
1er Cluster 4 octets
Le système VFAT permet l’enregistrement des noms de fichiers sur 255 caractères.
La FAT (table d’allocation de fichiers) contient les numéros de clusters pour chaque fichier.
Historiquement, il existe plusieurs format
FAT 16 : Index de la FAT sur 16 bits, une partition peut contenir un maximum de 65536 clusters avec une capacité maximale de 2Go.
FAT 32 : Index de la FAT sur 32 bis (28 bits + 4 bits réservés), une partition peut donc contenir 268435456 clusters avec une capacité maximale de 32Go.
La capacité minimum utilisée sur le disque par un fichier est celle d’un cluster.
Exemple pour une partition de 2Go
taille de cluster de 32K avec une FAT16
taille de cluster de 4k avec une FAT32
Le fichier logique
Le concept de fichier logique permet à chaque processus d’accéder à un fichier à un instant donné.
Les fichiers logiques sont représentés par un numéro qui correspond à l’indice d’une table de descripteurs.
Avant tout accès au fichier, le programme doit établir un lien entre le fichier logique et le périphérique (open).
Il existe des assignations par défaut réalisées par le système d’exploitation :
0 : entrée standard assignée à la console
1 : sortie standard assignée à la console
2 : sortie d’erreur assignée à la console
La redirection des entrées-sorties
Le concept de fichier logique permet de modifier l’assignation en utilisant les symboles > et <
Exemples :
programme 2> erreurs.txt
redirige la sortie d’erreur (2) vers le fichier erreurs.txt
programme 2> /dev/null
évite l’affichage des messages d’erreur.
Programme < fichier.txt
lit ses valeurs dans le fichier.txt au lieu du clavier (entrée standard)
Le gestionnaire de fichiers
Le gestionnaire permet de s’affranchir du type de périphérique (caractère ou bloc) en fournissant un ensemble de fonctions de traitement de fichier :
lecture ou écriture de N octets sur le périphérique désigné par un nom
positionnement sur un octet si le périphérique est adressable
contrôle de flux pour les périphériques distants
Le pilote de périphériques
Il réalise l’interface entre le matériel et le logiciel. Il contient des fonctions de gestions du circuit périphérique :