Programmation des systèmes
Table of Contents
1. Introduction
1.1. Processus
Un processus est un programme en exécution, et un processus peut être composé de plusieurs threads. Deux processus ont des espaces mémoires différents (ils sont isolés, c'est une garantie du système d'exploitation), alors que les threads ont une mémoire partagée.
1.2. Système d'exploitation
1.2.1. Définition
Un système d'exploitation est un programme qui réalise:
- La gestion des fichiers
- La gestions de la mémoire
- La gestion des périphériques d'entrés/sorties
- La gestion du matériel
Le système d'exploitation se situe entre les processus et le matériel, et il fournit une API pour intéragir avec le matériel. L'OS est une abstraction
1.2.2. Multiprogrammation
Les OS permettent également d'exécuter plusieurs processus en même temps. On peut lancer un nombre indéfini de processus sur la machine, grâce à l'algorithme d'ordonnancement, comme par exemple le "chacun son tour".
Le niveau de parallélisme est le nombre de processeurs disponibles sur la machine, et le niveau de concurrence est le nombre de processus qui sont actifs.
1.2.3. Modes
L'OS permet au processeur de changer de mode : le mode superviseur (tous les droits) et le mode utilisateur (droits limités sur la mémoire). L'OS expose des appels systèmes pour changer de mode (c'est la fameuse API fournie par l'OS).
1.2.4. Opération atomique
Une opération atomique est une opération indivisible, qui ne peut pas être interrompue avant la fin de son exécution. Cela est très utile pour les processus concurrents : si deux processus veulent écrire dans un fichier, il faut que l'un termine l'écriture avant que l'autre puisse commencer (sinon corruption de mémoire, réécriture des données de `p1` par `p2`). Chaque appel système est atomique.
Tous les syscalls retournent un entier : `0` si aucun soucis, un nombre négatif s'il y a un problème.
2. Les fichiers
Le système de fichier est organisé en arborescence. Un descripteur de fichier est un entier non négatif qui identifie un fichier ouvert par un processus.