Chapitre 6 : Architectures matérielles et systèmes d'exploitation

Architectures matérielles

Quelques dates :

L'architecture de base de tout outil numérique s'appuie sur trois éléments :

Principe de fonctionnement d
Principe de fonctionnement d'un processeur

L'interaction entre ces trois éléments est ce qui permet tous nos usages numériques. Les quatre étapes élémentaires d'un cycle d'exécution sont :

  1. le chargement de l'instruction élémentaire dans le CPU : cette instruction correspond à l'opération à effectuer,
  2. le chargement des opérandes : il s'agit des données sur lesquelles vont s'appliquer l'opération,
  3. le calcul,
  4. l'écriture du résultat dans la mémoire.

La mémoire

La mémoire utilise le magnétisme dans les disques durs (HDD pour Hard Drive Disc) ou l'électricité pour la RAM, les clés USB, les SSD (Solid-State Drive) pour stocker les bits d'information.
Elle peut être :

Dans un ordinateur, il existe plusieurs familles de mémoire que l'on peut hiérarchiser ainsi :

Hiérarchie des mémoires
Hiérarchie des mémoires

Le processeur

Un microprocesseur est un circuit intégré sur puce composé de milliards de transistors permettant d'exécuter des instructions. La taille des CPU est de plus en plus réduite grâce aux avancées scientifiques qui permettent des techniques de gravures en-dessous de la dizaine de nanomètres.
Selon la technologie utilisée, un microprocesseur peut effectuer un jeu d'instruction prédéfinie lors de se conception. Cela peut généralement être une opération arithmétique (addition, multiplication ...) ou une opération logique (et, ou ...).
Historiquement, il existe deux familles de microprocesseurs :

Les évolutions technologiques actuelles tendent à faire disparaître cette distinction.

Un processeur fonctionne de manière cadencées. Il est caractérisé par la fréquence à laquelle il réalise un cycle d'exécution. Pour les processeurs d'aujourd'hui cette fréquence est de l'ordre du GigaHertz soit 1 milliards d'opérations par seconde.
Il peut être constitué de plusieurs coeurs, ce qui lui permet d'exécuter des instructions en parallèle, et d'augmenter encore ses performances. Cette stratégie multicoeurs permet de compenser les limitations de l'augmentation de la fréquence qui entraîne une plus forte consommation électrique et donc un besoin de dissipation d'énergie thermique.

Schéma du circuit intégré d
Schéma du circuit intégré d'un processeur Intel Core I7
Survoller chaque processeur pour faire apparaître le schéma de son circuit intégré. Y retrouver les différents composants (coeurs et mémoires cache) intégrés et déterminer leur nombre de coeurs respectif. Combien d'opérations par seconde peut théoriquement effectuer :
le processeur AMD Am286 simple-coeur cadencé entre 8 et 20 MHz, sorti en 1983 ? entre 8 et 20 millions
le processeur Intel Pentium II simple-coeur cadencé à 233 MHz, sorti en 1997 ? 233 millions
le processeur AMD Athlon simple-coeur cadencé entre 850 et 1733 MHz, sorti en 2001 ? entre 850 millions et 1,733 milliard
le processeur AMD Athlon 64 X2 avec deux coeurs cadencés à 2,2 GHz sorti en 2006 ? 4,4 milliards
le processeur Intel Core i7-1160G7 possédent 4 coeurs cadencés à 4,40 GHz sorti en 2020 ? 17,6 milliards
le processeur Intel Core i7-10875H de 8 coeurs cadencés à 5,10 Ghz sorti en 2020 ? 40,8 milliards
le processeur AMD Ryzen Threadripper 3990X possédant 64 coeurs cadencés entre 2,9 et 4,3 GHz sorti en 2020 ? entre 185,6 et 275,2 milliards
Trouver, installer et utiliser une application pour connaître l'état du CPU de votre smartphone. CPU-Z pour Android ou CPU-x sur iOS

Système intégré sur puce

La miniaturisation des composants électroniques permet d'intégrer tous les composants utiles à une fonction sur une même puce.
Un système intégré sur puce ou SoC (System On Chip) vise à effectuer une tâche précise, de manière complète, robuste et rapide en regroupant sur une unique puce les différents composants nécessaire à sa fonction. Les composants qui peuvent être intégrés sont nombreux : CPU, mémoires, dispositifs de communication sans fil, dispositifs d'entrée/sortie, capteurs ... Ce phénomène d'intégration est apparue avec l'ère des smartphones et l'émergence de systèmes tout-en-un. Presque tout le contenu d'un ordinateur se retrouve intégré sur une seule puce dans un smartphone. Il en résulte que les composants sont bien plus interconnectés qu'ils ne le sont dans un ordinateur classique où chaque composant était plus ou moins indépendant et liés par une carte mère.

Les principaux concepteurs de SoC, aussi appelés «fondeurs», sont : AMD, Apple, Broadcom, Intel, Nvidia, Qualcomm, Samsung et Texas Instrument.

Par abus de langage, on appelle toujours "processeur", ce qui est en réalité des SoC. En effet, les CPU d'aujourd'hui intègre tous de la mémoire. C'est encore plus vrai pour les processeurs de téléphones portables qui intègre, sur une même puce, de plus en plus des composants supplémentaire tels que :

Avantages :

Inconvénients :

Exemples :

Raspberry Pi 4
Raspberry Pi 4
Effectuer des recherches sur les SoC ci-dessous afin de déterminer leurs caractéristiques : fabricant, taille de gravure, mémoire, fréquence, composants intégrées ...
  • Raspberry PI : Soc Broadcom BCM2711
  • Apple iPhone 11 : SoC A13 Bionic
  • Samsung Galaxy S11 : SoC Exynos 990
  • Nintendo Switch : SoC Nvidia Tegra
Effectuer une recherche pour identifier le SoC de votre smartphone et déterminer ses caractéristiques.

Systèmes d'exploitation

Quelques dates :

Rechercher les parts de marché actuelles, des OS d'ordinateur d'un part et des OS de smartphone d'autre part.

Ses fonctions

Souvent appelé l'OS (Operating System), le système d'exploitation est un ensemble de programme qui permet d'utiliser les éléments physiques d'un ordinateur pour exécuter les applications nécessaires à l'utilisateur. L'élément fondamental du système d'exploitation est son noyau, c'est lui qui permet l'accès aux ressources matérielles.
Toute machine est doté d'un OS qui a pour fonction :

  • de charger les programmes depuis la mémoire de masse,
  • de gérer leur exécution en leur créant des processus et en ordonnançant les tâches,
  • de gérer les ressources (microprocesseur, mémoire, disques, carte graphique, carte réseau, clavier, souris, ...),
  • de gérer des accès aux ressources pour permettre : d'une part à tous les utilisateurs de travailler simultanément, et d'autre part de ne permettre l'utilisation d'une ressource qu'aux utilisateurs autorisés.
  • de traiter les interruptions,
  • d'assurer la sécurité globale du système.
Historique des logos de Windows
Historique des logos de Windows
Architecture globale d
Architecture globale d'un système d'exploitation

Les processus

Pour permettre le fonctionnement d'un ordinateur, un système d'exploitation multitâche doit permettre l'exécution simultanée de plusieurs applications par plusieurs utilisateurs. Pour cela, il crée et gère l'exécution de nombreux processus. Attention à ne pas confondre programme et processus.
Un processus est un programme en cours d'exécution. Un programme exécuté/instancié plusieurs fois (dans le temps ou par plusieurs utilisateurs simultanément) génère autant de processus. On dit que le système d'exploitation exécute des instances d'un programme, chargées en mémoire, dans des processus dédiés.
Chaque processus possède en mémoire les instructions à exécuter et ses données. L'OS multitâche exécute chaque processus dans un environnement mémoire cloisonnée et protégé. Par sécurité, un processus ne peut lire ou écrire les données en mémoire que dans la zone que le système d'exploitation lui a dédié.

Les processus affichés dans le gestionnaire des tâches de Windows 10
Les processus affichés dans le gestionnaire des tâches de Windows 10

Sur votre ordinateur sous Windows, faites la combinaison de touches CTRL + ALT + SUPR et sélectionner "Gestionnaire des tâches" pour observer tous les processus en cours sur votre machine.
Sur les postes du lycée, l'accès au gestionnaire des tâches est verrouillé. Il est possible de créer un raccourci vers le terminal Windows Powershell avec un clic droit sur le bureau puis "nouveau raccourci" avec l'adresse : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe. La commande ps permet de visualiser les processus comme dans le gestionnaire des tâches.
Sous Linux, depuis le terminal, la commande pour afficher les processus est également ps. Utiliser l'émulateur du Terminal Linux en ligne JSLinux pour tester cette commande. Un tableau apparait avec plusieurs champs tels que PID (Identifiant du processus), UID ou USER (Identifiant de l'utilisateur), TIME (temps d'exécution) et CMD ou COMMAND (nom de la commande du processurs.
Avec le module os de Python :

import os
print(os.popen('wmic process get description, processid').read())

L'ordonnanceur

L'OS doit permettre à toutes les applications et tous les utilisateurs de travailler en même temps, mais cette simultanéité n'est qu'illusion. En réalité, il va donner l'impression à chacun qu'il est seul à utiliser l'ordinateur et ses ressources physiques. Cela nécessite une gestion complexe des processus qui est réalisée par une partie spécifique du noyau du système d'exploitation, appelé : l'ordonnanceur (scheduler).

Un coeur de processeur ou un périphérique ne peuvent pas être partagés. Ce qui est réellement partagé c'est leur temps d'utilisation. L'ordonnanceur alloue la ressource à tour de rôle à chaque processus sur un intervalle de temps très courts qui peut varié selon les besoin. Le plus petit intervalle de temps allouable est appelé le quantum de temps du latin "quantum" qui prend ici le même sens que celui utilisé en physique : plus petite mesure indivisible. Généralement, un quantum de temps dure 20 à 50 ms suivant les OS et les algorithmes d'ordonnancement utilisé.

Les objectifs de l'ordonnanceur sont :

Les états d'un processus

En première on a vu qu'un microprocesseur possède des mémoires appelées registres. C'est dans ses registres que les instructions d'un processus en cours d'exécution sont copiées. Lorsqu'un processus est interrompu pour laisser la place à un autre processus, l'état des registres au moment de l'interruption, aussi appelée contexte d'exécution (execution context), doit être sauvegardé afin que lorsque ce sera de nouveau son tour d'être exécuté, son contexte d'exécution soit parfaitement rétabli et qu'il puisse poursuivre son exécution. Cette étape de remplacement d'un contexte d'exécution par un autre s'appelle un changement de contexte (context switching).

Tous les processus qui cohabitent en mémoire à un instant donné ne sont pas forcément en attente d'un quantum de temps processeur. Ils peuvent attendre d'avoir un accès à une autre ressource (périphérique d'entrée/sortie) ou bien ils peuvent également attendre le résultat d'un autre processus. Dans ces cas là, le processus n'est pas éligible à un quantum de temps processeur et on dit qu'il est dans l'état "bloqué". Au contraire quand un processus a tout ce qui lui faut et n'attend qu'un quantum de temps processeur, on dit qu'il est dans l'état "prêt".

Associer chacune des descriptions suivantes à l'état du processus correspondant :
Un processus a été attaché à une instance d'un programme et il n'a encore jamais été exécuté. Son contexte d'exécution initial doit être préparé. Nouveau
La dernière instruction de processus a été exécutée. Ses ressources affectées et son environnement mémoire vont être libérés. Terminé
Un ou plusieurs quantums de temps processeur ont été alloués au processus. Son contexte d'exécution a été copié dans les registres et ses instructions sont exécutées jusqu'à l'écoulement du temp imparti. En cours d'exécution
Le processus est en attente d'une ou plusieurs ressources (réseau, périphériques d'entrée/sortie, action de l'utilisateur, ...) ou du résultat d'un autre processus. Il n'est pas éligible à un quantum de temps processeur. Bloqué
Le contexte d'exécution est sauvegardé et complet. Le processus est en attente de quantums de temps processeur. Prêt

Les algorithmes d'ordonnancement

Il existe plusieurs algorithmes d'ordonnancement de processus. Ils ont tous pour but de répartir les quantums de temps de façon optimale entre tous les processus.

Voici trois processus et leurs instructions :
Trois processus dans l'ordre d'appel.

Donner l'ordonnancement de ces instruction selon l'algorithme FCFS. FCFS : A1 A2 A3 B1 B2 B3 B4 B5 B6 C1 C2 C3 C4
Donner l'ordonnancement de ces instruction selon l'algorithme du tourniquet. Tourniquet : A1 B1 C1 A2 B2 C2 A3 B3 C3 B4 C4B5 B6
Donner l'ordonnancement de ces instruction selon l'algorithme du prioritaire. Prioritaire : B1 B2 B3 B4 B5 B6 A1 A2 A3 C1 C2 C3 C4
Donner l'ordonnancement de ces instruction selon l'algorithme SJF. SJF : A1 A2 A3 C1 C2 C3 C4B1 B2 B3 B4 B5 B6

Le risque de l'interblocage (deadlock)

Une situation d'interblocage se produit lorsque deux processus se bloquent mutuellement soit parce qu'ils monopolisent chacun une ressource que l'autre attend pour poursuivre son exécution, soit parce qu'ils attendent un résultat l'un de l'autre.

Le processus A est dépendant du processus B : pas d'interblocage
Les processus A et B sont interdépendant : interblocage

Pour éviter une situation d'interblocage, il y a l'utilisation de mutex ou l'algorithme du Banquier.

Pour aller plus loin : Verrouillage d'une ressource

EN CONSTRUCTION !

En anglais :

Bibliographie :

Ressources :