From 248ca2307ecec08fca5b6ce0a5399693a2558a84 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Sun, 7 Nov 2021 01:46:41 +0100 Subject: [PATCH] Add Operating System Introduction --- .../1-introduction/index.md | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 content/systemes_exploitation/1-introduction/index.md diff --git a/content/systemes_exploitation/1-introduction/index.md b/content/systemes_exploitation/1-introduction/index.md new file mode 100644 index 0000000..a8d3f0a --- /dev/null +++ b/content/systemes_exploitation/1-introduction/index.md @@ -0,0 +1,100 @@ +--- +title: "Systèmes d'exploitation : Introduction" +date: 2021-09-10 +tags: ["système", "appels système", "interruption"] +categories: ["Systèmes d'exploitation", "Cours"] +--- + +## Qu'est ce que c'est? + +D'après +[Wikipedia](https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation), "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](https://fr.wikipedia.org/wiki/Interruption_(informatique)), +"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 l'envoi d'une interruption, 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) + +La routine propre à l'interruption appellen 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. Ainsi le +noyau peut stopper, voire tuer un processus trop gourmand. + +## Les privilèges + +Nous avons besoin de contrôler ce que font les processus, seult le noyau doit +être tout-puissant. Le contrôle des instructions autorisée 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'instruction 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 ets 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**. + +### 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. + +Sour 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`.