cours/content/systemes_exploitation/1-introduction/index.md

4.3 KiB

title date tags categories
Systèmes d'exploitation : Introduction 2021-09-10
système
appels système
interruption
Systèmes d'exploitation
Cours

Qu'est ce que c'est?

D'après Wikipedia "

un système d'exploitation est est un ensemble de programmes qui dirige l'utilisation des ressources d'un ordinateur par des logiciels applicatifs.

Il permet l'abstraction matérielle (via les pilotes de périphériques), la gestion des processus (et leur séparation, permettant à un processus défectueux de ne pas impacter les autres), la gestion fine des ressources...

Le systèmes d'exploitation prend en charge la gestion du processeur, de la mémoire, des accès disques, de la pile réseau, les services et souvent aussi l'interface graphique. Il peut-être (rarement) mono-utilisateur ou multi-utilisateur.

Il est donc important de ne pas confondre Noyau et système d'exploitation, le premier étant une partie du second.

Les interruptions

D'après Wikipedia :

une interruption est une suspension temporaire de l'exécution d'un programme informatique par le microprocesseur afin d'exécuter un programme prioritaire (appelé service d'interruption)."

Les interruptions peuvent être envoyées par les périphériques ou le CPU lui-même. Lors de son envoi, aucun message n'est envoyé, seulement son numéro, le CPU fait alors un saut vers une routine définie par la table d'interruption. Cette table est mise en place par le noyau en RAM. Cette table contient une entrée par interruption.

Il existe deux grand type d'interruption:

  • Celle basées sur le matériel
  • Celle basée sur le temps (horloge)

Fonctionnement des interruptions

La routine propre à l'interruption appelle ensuite une iret afin de reprendre l'exécution précédente.

sous certaines conditions, certaines interruptions sont "masquable" (mais elle ne peuvent pas être ignorées).

Le cas du timer

C'est une interruption déclenchée à intervalle régulier, en général toutes les 10ms. Ainsi un processus ne peut pas monopoliser indéfiniment le CPU. Le noyau peut stopper, voire tuer un processus trop gourmand lors de son passage sur le CPU.

Les privilèges

Nous avons besoin de contrôler ce que font les processus, seul le noyau doit être tout-puissant. Le contrôle des instructions autorisées (ou non) ne peut se faire qu'au niveau du matériel et donc du CPU.

Ainsi ce dernier disponse de deux modes de fonctionnement:

  • protégé: seul un nombre restreint d'instructions sont disponibles
  • réel (ou noyau) toutes les instructions sont disponibles.

Si une instruction privilégiée est exécutées par un processus, une exception (sorte d'interruption) est lancée.

Pour des questions de sécurité, un processus ne doit pas pouvoir exécuter des instructions privilegiées. En effet le rôle du noyau est aussi de faire abstraction du matériel, lui seul y a accès. Cependant certains processus ont besoin d'y accéder un affichage avec printf ou la saisie d'un texte au clavier ou encore créer un processus, et utiliser des instructions du mode réel.

Les appels systèmes

Pour celà le noyau dispose d'un mécanisme : les appels systèmes. ainsi le noyau contient des routines pouvant être utiles aux processus. Ces routines sont appelés par des interruptions logicielles. Le processus positionne le numéro de l'appel un registre (%eax sur les processeurs Intel) et lance l'interruption.

Côté noyau, une table contenant la liste des appels systèmes est positionnée en RAM.

L'utilisation des appels systèmes est sécurisée : les processus ne joue pas avec des adresse mémoires contenant des routines, mais ne connaissent seulement son numéro. Les paramètres necessaires aux appels sont eux stockés sur la pile.

Dans les systèmes modernes.

Ils sont nombreux : on en compte environ 330 dans Linux et plus de 500 dans MacOSX.

Pour Linux, certaines routines sont inclues dans la libc et ne sont donc pas des appels système. Par exemple printf qui affiche des éléments à l'écran et inclu dans la libc utilise l'appel système write.