Systèmes d'exploitation- OS

Les Systèmes d'Exploitation (Opérating System)

1°) Différentes façons d’utiliser un ordinateur

a) En temps réel

L’ordinateur est utilisé pour un travail immédiat qui peut varier de quelques micro-secondes à quelques secondes.

Exemples : utilisation pour la conduite de gros processus industriels : pilotage fusées, trains,

robots, trains, réacteurs chimiques,….

b) En temps différé

Un ensemble de travaux est reporté à plus tard (1 heure, quelques jours,…). L’ordinateur travaille sur des ensembles de même nature ou lots(batch-processing) avec des files d’attente pour les priorités.
Exemples : factures à la fin de la journée, bulletins de paie à la fin du mois …

c) En mode conversationnel

En temps réel, l’utilisateur dialogue à partir du clavier avec l’ordinateur.
Exemples : interrogations de fichiers(réservation avions…), mise au point de programmes,…

d) En multiprogrammation

A un instant donné, plusieurs programmes actifs se trouvent chargés dans la mémoire de l’ordinateur et se partagent ses ressources.
Les transactions, l’ordre de priorité, la gestion de la mémoire sont contrôlés par un superviseur qui réside en mémoire et qui peut être aidé par un pupitreur en salle-machine.
Les programmes passent :
– soit par priorité
– soit par tranches de quelques milli-secondes
– soit par à-coups
L’ordre de priorité des travaux est le suivant :
- les travaux en temps réel
- les travaux utilisant des unités lentes
- les travaux très brefs comme la compilation
-les travaux utilisant un ou deux périphériques
- les travaux qui durent très longtemps comme le traitement de gros fichiers
- les travaux qui utilisent beaucoup de périphériques
Plusieurs techniques de gestion de mémoire sont utilisées :
- le tassement
- la pagination
- l’échange de programmes
- la mémoire virtuelle

e) En multitraitement

C’est de la multiprogrammation avec un ordinateur disposant de plusieurs unités centrales(multi-processeurs)

f) En temps partagé (time-sharing)

Une partie de la capacité d’un gros ordinateur est à la disposition de plusieurs utilisateurs.
2°) Nécessité d’un système d’exploitation
Pour qu'un ordinateur soit capable de faire fonctionner un programme informatique (appelé parfois application ou logiciel), la machine doit être en mesure d'effectuer un certain nombre d'opérations préparatoires afin d'assurer les échanges entre le processeur, la mémoire et les périphériques.
Un bon OS utilise au maximum les possibilités d’un ordinateur.

Schéma de représentation abstraite en couches :


Le système d'exploitation (noté SE ou OS, abréviation du terme anglais Operating System), est chargé d'assurer la liaison entre les ressources matérielles, l'utilisateur et les applications (traitement de texte, jeu vidéo, ...).

Ainsi lorsqu'un programme désire accéder à une ressource matérielle, il ne lui est pas nécessaire d'envoyer des informations spécifiques au périphérique, il lui suffit d'envoyer les informations au système d'exploitation, qui se charge de les transmettre au périphérique concerné via son pilote.
En l'absence de pilotes il faudrait que chaque programme reconnaisse et prenne en compte la communication avec chaque type de périphérique !

Le système d'exploitation permet ainsi de "dissocier" les programmes et le matériel, afin notamment de simplifier la gestion des ressources et offrir à l'utilisateur une interface homme-machine (notée «IHM») simplifiée afin de lui permettre de s'affranchir de la complexité de la machine physique.

Un OS est conçu pour un type de processeur. Il est long à écrire car il nécessite des centaines de milliers d’instructions d’où son prix. Maintenant on l’écrit d’abord puis on construit les UC.
Rôles d’un système d’exploitation

Ils sont divers car l’OS organise les échanges au sein du système informatique et dialogue avec l’utilisateur :

- 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 :
lecteurs-enregistreurs de disques, imprimantes, tables traçantes, écran, clavier, souris, stylo optique, modem, hub, routeur,….
par l'intermédiaire des pilotes ou drivers (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. Il range, met à jour, modifie, supprime, renomme, copie les fichiers.

- Gestion des informations : le système d'exploitation fournit un certain nombre d'indicateurs permettant de diagnostiquer le bon fonctionnement de la machine.
Il traite les erreurs d’utilisation, les erreurs de programmation, les erreurs causées par la défaillance du matériel.

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 tout 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.
Propriétés des systèmes d’exploitation

1 - Systèmes multi-tâ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.

Il existe 3 grands types :

a) Les systèmes multi-tâches coopératifs
Les applications autorisent ou non d'autres applications à exécuter des fonctions.
Le système n'intervient pas dans la répartition des ressources et temps processeurs.
b) Les systèmes multi-tâches préemptifs
Le système gère tout. L'OS répartit le temps processeur et les ressources à chaque application. 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.
c) Les systèmes à temps partagé
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.
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.
3 – Les 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

4 – Les systèmes en 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 :
- Mac OS-10
- RealTime Linux

Evolution des types 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.
Au début, dans les années 1950, ils s’appelaient DOS(Disk Operating system) ou SED (système d’exploitation de disquettes car le système était livré sur des disquettes –systèmes dites disquettes maîtres.
L’évolution de la technologie a entraîné une complexité de plus en plus grande dans l’utilisation ordinateurs, il était donc nécessaire que les systèmes d’exploitation connaissent un développement parallèle d’une génération à l’autre.

- 1ère génération : le programme est enregistré en mémoire centrale grâce à un programme appelé « chargeur ». le traitement des travaux s’effectue en séquentiel dans le temps.

- 2ème génération : On peut conduire simultanément calcul et opérations d’entrée/sortie mais cette simultanéité n’est possible qu’à l’intérieur d’un même programme car le traitement des travaux demeure séquentiel.

- 3ème génération : plusieurs programmes peuvent résider simultanément en mémoire centrale. Un seul utilisant le processeur, les autres peuvent traiter des entrées-sorties : c’est de la « multiprogrammation ».

- 4ème génération : système conversationnel, mémoire virtuelle,…

Système

Codage processeur Mono-utilisateur Multi-utilisateurs Mono-
tâche

Multi-tâches

CP /M

Zilog Z80 * *

PC-DOS
MS-DOS
1980

16 bits Intel 8086,8088 * *

PROLOGUE

1975

Intel 8086,8088 * *

OS/2

Intel 80286,80386

AppleDOS

1976

Maxwell 6502 * *

MacOS

1984

Motorola 68000 * *

Windows3.1 1990

16/32 bits Intel

80286,80386

*

non préemptif

Windows95/98/Me

32 bits Intel 80486 *

coopératif

WindowsNT/2000

32 bits Intel Pentium *

préemptif

WindowsXP

32/64 bits Intel Pentium *

préemptif

Unix 1969/ Linux1991
32/64 bits Multi-plateformes *

préemptif

MAC/OS X

32 bits PowerPC d’IBM et de Motorola *

préemptif

MACOS10.6

32 bits Intel Core Duo *

préemptif

Windows Vista 2007

Intel Pentium *

préemptif