Système d'exploitation
Le but d'un ordinateur est d'exécuter des processus. Pour que chaque processus n'ait pas à tout gérer (accès au processeur, à la mémoire, au disque dur, au réseau, ...) comme on le ferait avec un circuit imprimé par exemple, on utilise un système d'exploitation (ou OS pour operating system).
Son but est de faire le lien entre le matériel (hardware) et le logiciel (software).
Le matériel comporte tous les éléments physique d'une machine :
- processeur
- mémoire
- disques dur
- clavier, souris, écran
- carte réseau
- ...
Que l'on peut regrouper en trois grandes catégories :
- processeur
- mémoire
- les périphériques ou devices qui regroupent tout le reste. C'est ce qui se branche sur la carte mère.
Les logiciels, que d'un point de vue système on appellera process ou processus auront besoin pour fonctionner d'accéder :
- au processeur pour effectuer les différentes opérations de leur code,
- à la mémoire pour stocker leurs variables
- souvent à des devices comme un disque dur (pour lire un fichiers), à la carte réseau (pour aller lire le contenu du site hacker news), en encore au clavier
Le but d'un système d'exploitation est double :
- il doit permettre d'utiliser les devices de l'ordinateur grâce à des drivers
- il permet l'exécution de process :
- de façon concurrente (on peut écrire dans un gdoc tout en écoutant de la musique)
- de façon sécurisée : le gdoc ne peut accéder aux variables de l'application jouant de la musique
- concurrent : le début d'un process est entre la début et la fin de l'autre
- parallèle : en même temps
Couches Systèmes
Un système d’exploitation n'est pas monolithique, il est constitué de multiples parties qui forment un tout cohérent.
L'organisation logicielle d'un ordinateur (ou plus généralement tout système logiciel assez important) est constitué de couches, comme le stipule le
On peut régler tous les problèmes en ajoutant une couche d'indirection
compliqué
A --------------------> B
simple simple
A --------> C --------> B
Un autre exemple célèbre de couches en ingénierie système est le découpage en couches d'un réseau. Ce principe universel est une instanciation de la deuxième partie du discours de la méthode : il faut diviser chaque difficulté en autant de parties facile à résoudre séparément. D'un point de vue ingénierie, ceci permet en plus de clairement les responsabilités de chaque couche, une maintenance plus aisée.
Un ordinateur et son utilisation peut être séparé quatre couches :
- Matériel
- mémoire RAM
- devices
- Noyau
- drivers matériels
- gestion de la mémoire
- ordonnancement des processus
- process
- interface graphique
- terminal
- ...
- utilisateurs
- qui à le droit de faire quoi
Les utilisateurs lancent les process. Ceux-ci s'exécutent de façon parallèle grâce au noyau et utilisent les ressources matériels via des appels systèmes.
Système d'exploitation
Seul le noyau a accès au matériel et a un contrôle total de la machine. Il doit donc être le plus petit possible car le moindre bug fait planter la machine. C'est pourquoi on distingue deux états d'une machine :
- le kernel mode : le noyau travail
- le user mode : un process travaille
TBD le noyau et son utilité en 2 mots
Un système d'exploitation ne peut donc être uniquement composé d'un noyau, ce serait inefficace (rien ne pourrait être exécuté en parallèle) et dangereux (le moindre bug logiciel ou matériel ferait tout planter). On sépare habituellement un système d'exploitation en 3 parties :
- le noyau (kernel) dont le but est de gérer :
- les appels systèmes
- l'ordonnancement des process
- communications entre les 3 entités d'un ordinateur (process, matériel, noyau)
- des interfaces logicielles qui permettent d'accéder aux devices (comme accéder à une clé usb)
- des démons qui gèrent l'environnement (le fait de réagir à l'insertion d'une clé usb dans l'ordinateur par exemple)
Les démons et les interfaces sont des process comme les autres. Ils sont cependant exécutés par un utilisateur spécial, souvent nommé root
, qui est le [super-utilisateur] qui est le représentant utilisateur du système.
Démarrage de l'ordinateur
Les différentes étapes du chargement d'un système d'exploitation
- boot de l'ordinateur
- exécution d'un chargeur d'amorçage (bootloader)
- charge le noyau
- vérification du matériel
- vérification des sous-systèmes : réseau, ...
- passage en user mode puis charge les démons et les interfaces
- login
Process et programmes
TBD montrer les programmes et les process avec le finder.
Un process est l'unité de base d'un programme. Un process est un ensemble d'instructions exécutées par le système d'exploitation. Tout process est la propriété le l'utilisateur du système qui l'a exécuté.
Utilisateurs
On peut séparer les utilisateurs d'un système en trois grandes catégorie.
root
L'utilisateur root
est l'utilisateur lié au système d'exploitation. Il est le propriétaire des process (démons) et interfaces du système d'exploitation. Cet utilisateur a ainsi tous les droits (peut aller partout, réserver autant de mémoire qu'il veut, etc).
Comme Tout processus a un propriétaire, l'existence de cet utilisateur est garantie.
TBD sous windows ?
Administrateurs systèmes
Ces utilisateurs ont des droits particulier, ils peuvent modifier des paramètres systèmes et exécuter ou stopper des démons. Ces utilisateur ne sont pas forcément root, en effet, souvent l'utilisateur principal d'une machine est administrateur.
Cela permet, si nécessaire, d'installer ou de configurer son système sans être connecté en tant que root.
Simple utilisateur
Enfin, il existe la foule des autres utilisateurs (vous sur les ordinateurs de l'école ou la fac par exemple) qui ne peuvent pas administer la machine, ni lancer de démons. Vous avez en revanche le droit d'exécuter la plupart des process et d'installer vos propres programme dans l'espace disque qui vous est réservé.
TBD sous windows mono-utilisateur, aussi admin.