• Aucun résultat trouvé

Les fonctionnalités d’un système d’exploitation

Dans le document en fr (Page 59-62)

capteurs sans fil

2.1 Une introduction aux systèmes d’exploitation

2.1.2 Les fonctionnalités d’un système d’exploitation

Au regard des éléments de la section précédente, les fonctionnalités d’un système d’exploitation sont réparties de la manière suivante :

• La gestion de la mémoire ;

• La gestion des processus ;

• La gestion des périphériques ;

• La gestion des fichiers.

CemOA : archive ouverte d'Irstea / Cemagref

2.1.2.1 La gestion de la mémoire

La gestion de la mémoire ne se résume pas aux fonctionnalités d’écriture et de lecture des données. Elle comprend des mécanismes complexes tels que :

• l’allocation dynamique de mémoire avec la gestion de zones spécifiques telles que les tas (« heap ») et les piles (« stack ») ;

• l’implantation de la mémoire virtuelle ;

• la protection des zones de mémoires ;

• le ramasse-miettes ou récupérateur de mémoire.

Ces éléments, comme par exemple la mémoire virtuelle, ne sont pas présents dans tous les systèmes d’exploitation [de Vaulx 2003]. Quoi qu’il en soit, la gestion de la mémoire est d’autant plus importante que la mémoire physique est disponible en faible quantité comme c’est le cas dans les RCSF.

2.1.2.2 La gestion des processus

Une application comprend différents programmes qui sont eux-mêmes composés d’un ensemble d’instructions. L’exécution d’un programme par un processeur crée un processus ou une tâche dont la gestion est à la charge du système d’exploitation [Bonnet 1999].

Au processus est associé son contexte qui correspond à l’ensemble des programmes et des ressources nécessaires à son exécution. Plus précisément, ce contexte contient l’état des différents registres du processeur, le pointeur courant de la pile de stockage des données temporaires et l’adresse de la prochaine instruction à exécuter plus connue sous le terme de compteur ordinal (voir Figure 2.2).

Figure 2.2 – Passage d’un programme à un processus

CemOA : archive ouverte d'Irstea / Cemagref

Généralement, on distingue les notions de processus lourd (« process ») et de processus légers (« thread »). Un processus lourd regroupe l’ensemble des ressources nécessaires pour l’exécution du programme comme l’espace d’adressage comprenant, entre autres, le code et les données qui s’y rapportent. Mais l’exécution proprement dite est à la charge d’un ou, suivant les cas, de plusieurs processus légers [Bonnet 1999] [Tanenbaum 2006]. Un processus lourd dispose donc d’au moins un processus léger. Et, un processus léger est obligatoirement associé à un processus lourd.

Les processus légers partagent un certain nombre de ressources du processus lourd auquel ils appartiennent. Ainsi, de la même manière que les processus lourds sont en concurrence entre eux pour accéder au processeur, les processus légers d’un même processus lourd le sont également en ce qui concerne les ressources qu’ils partagent. Ainsi, les processus légers comme les processus lourds peuvent prendre différents états.

Selon les systèmes, différents types de processus sont disponibles. Le micronoyau DREAM (Distributed REAl-time Micro-kernel) [de Vaulx 2003] dispose, par exemple, de :

• processus périodiques ;

• processus apériodiques.

Les processus périodiques sont exécutés à intervalles réguliers prédéfinis par l’utilisateur. Ce fonctionnement est adapté aux applications d’acquisition de données à une fréquence d’échantillonnage fixée. La collecte de la température d’un endroit toutes les heures illustre la nécessité de tels processus.

Les processus apériodiques sont plus classiques et s’appliquent à l’observation de phénomènes aléatoires et donc aux applications de détection d’intrusion ou de suivi à la trace.

Le système d’exploitation n’est jamais inactif même en dehors des phases d’acquisition et de traitements de données. Un processus apériodique particulier, le processus ou tâche de fond est en charge de maintenir le système en alerte au cas où un événement surviendrait.

La gestion des processus comprend à la fois l’ordonnancement et la communication et synchronisation des processus. Une répartition par ordre d’importance des traitements à effectuer est nécessaire pour accéder aux ressources mises à disposition par l’ordinateur. Cette opération est appelée ordonnancement et est à la charge d’une partie du système d’exploitation qui est appelée ordonnanceur (« scheduler »). Différentes politiques d’ordonnancement existent et seront présentées tout au long de ce chapitre.

La communication et la synchronisation des processus est une autre fonction majeure du système d’exploitation. Dans les premiers systèmes, les processus étaient bien séparés les uns des autres avec, la plupart du temps, une exécution séquentielle sans transmission de résultat. L’opérateur lançait l’exécution d’un premier traitement, recueillait le résultat et le donnait en paramètre au traitement suivant. Or, dans un souci d’efficacité et, en réponse à certaines applications, la communication voire la synchronisation entre processus se sont avérées indispensables. Là aussi, différentes techniques existent comme l’utilisation de sémaphores.

2.1.2.3 La gestion des périphériques

Le système d’exploitation gère les périphériques à l’aide de l’ensemble des pilotes associés à ceux-ci. Ce principe oblige à modifier certains éléments du système d’exploitation à chaque changement de périphériques. Dans l’optique de faciliter le passage d’un périphérique à un autre de même catégorie (une imprimante par exemple), la disponibilité et l’utilisation de pilotes (« drivers ») standards seraient une avancée importante.

CemOA : archive ouverte d'Irstea / Cemagref

2.1.2.4 La gestion des fichiers

Les quantités de données produites par les processus d’une application sont de plus en plus importantes et ne permettent pas toujours un stockage uniquement dans les mémoires du processeur et centrale. De plus, les données stockées dans ce type de mémoire seraient perdues soit à la fin de l’exécution du processus, soit au redémarrage de l’ordinateur. Ainsi, l’archivage de ces données doit avoir lieu dans des mémoires auxiliaires non volatiles et pas de manière brute mais sous forme d’un fichier. Un fichier est constitué d’un ensemble de blocs de caractères encodant l’information. Leurs principales particularités résident dans leurs métadonnées associées (type et taille de fichiers,…) et la possibilité de les organiser en arborescence. Toutes les opérations de gestion des fichiers font partie des attributions du système d’exploitation.

Tous les fichiers ont un propriétaire choisi parmi les utilisateurs du système d’exploitation. Dans un ordinateur personnel, la présence de plusieurs utilisateurs n’est pas rare. Dans une famille, chaque membre peut demander un accès privilégié à l’ordinateur c’est-à-dire disposer d’un compte où sont présentes ses données et les applications dont il a besoin.

En fait, les privilèges d’un utilisateur sont mesurables par rapport aux fichiers qu’il a le droit de manipuler et aux processus qu’il peut exécuter. La notion de « super-utilisateur » ou d’« administrateur » existant dans beaucoup de systèmes d’exploitation est un cas particulier d’utilisateur pouvant accéder à tous les fichiers et exécuter tous types de processus et instructions au niveau du processeur. Par conséquent, la gestion des utilisateurs peut être issue de celle des fichiers et des processus (voir Figure 2.3).

Figure 2.3 – Fonctionnalités d’un système d’exploitation

Dans le document en fr (Page 59-62)