Les systèmes d'exploitation
V 1.5 le 02/06/2021
Généralités
Système d'exploitation : logiciel servant d'interface entre le matériel et les logiciels applicatifs
Appelé Operating System (OS) en anglais
- permet d'assurer l'exploitation des périphériques
- disques durs
- écrans, clavier, …
- et ressources diverses
- processeur
- mémoire
- …
Schéma de principe
Typologie - 1
- SE :
- mono-utilisateur : une seule session utilisateur simultanée (MS/DOS)
- multi-utilisateur : permet plusieurs sessions utilisateur simultanées (Linux)
- mono-tâche : ne permet pas l'exécution simultanée de plusieurs programmes (ex. : MS/DOS)
- multi-tâche : permet l'exécution simultanée de plusieurs programmes (Windows 10,8, 7, … Linux)
- mono-processeur : MS-DOS
- multi-processeur : (Sun Solaris, Linux, …)
Typologie - 2
- un SE peut être adapté à :
- un gros système (mainframe): Sun Solaris, IBM AIX, HP-UX, Linux, …
- un poste de travail : Windows 10, 7, XP, …, Linux, Mac/OS, …
- un serveur : Windows Server 2012/16, Linux, Mac/OS Server, …
- une tablette : Android, Apple IOS, …
- un téléphone portable : Android, IOS, Blackberry OS
- un routeur ou un switch : Cisco IOS, …
- des appliances (box internet, NAS, …) : base Linux
Les composants
- un chargeur d'OS qui permet le démarrage
- un noyau ou kernel
- un interpréteur de commande (bash sous Linux, cmd sous Windows) qui sert d'interface entre le noyau et l'utilisateur
- des outils divers permettant paramétrage et maintenance du système, gestion du stockage et des fichiers, …
Les appels système
- un SE propose une bibliothèque de fonctions et procédures standardisées utilisables par les programmes
- on parle d'API : Application Programming Interface
- API POSIX : systèmes Unix
- API Windows pour les systèmes Microsoft
- exemple :
- fork permet de créer un nouveau processus (env. Posix)
- fopen ouvre un fichier (env. Posix)
Le processeur
- il est chargé de l'exécutution des programmes
- dans un environnement multi-tâches, il doit être considéré comme une ressource à partager entre les différentes tâches ou processus
Les processus
- un processus est un programme en exécution : il comporte
- un espace mémoire qu'il est le seul à utiliser :
- les instructions
- les données en mémoire
- un processus est lancé par un utilisateur avec des droits spécifiques
- un processus est identifié par un PID (Process Identifier)
- le système gère une table des processus du système
- on peut les examiner avec les commandes
- ps, top, pstree (Linux)
- Gestionnaire de tâches (Windows)
- ou les interrompre (kill) si l'on dispose des droits ad-hoc.
Les processus - Linux
Ordonanceur
- scheduler : c'est le programme du système d'exploitation qui contrôle le déroulement des autres programmes dans un SE multi-tâche
- il répartit le temps processeur entre les différents processus en exécution : il alloue des tranches (slices) de temps CPU (de l'ordre de 100 ms) à chacun des processus puis passe au processus suivant
Mode noyau/Mode user
- le noyau (kernel) partie fondamentale du SE qui gère les ressources (processeur, mémoire, systèmes de fichier, réseau, périphérique divers, …)
- partie critique du SE
- le noyau fonctionne en mode noyau :
- il dispose de l'accès intégral aux ressources et de priorités élevées
- les autres programmes non fondamentaux (Firefox, LibreOffice, …) comme ceux lancés par l'utilisateur fonctionnent en mode user
- ils disposent de droits et de priorités limités pour ne pas mettre en péril l'intégrité du système
La mémoire
- le système doit :
- allouer un espace mémoire pour la mettre à disposition d'un programme
- libérer l'espace mémoire à la fin du programme
- assurer la protection et limiter l'accès à une zone mémoire
La mémoire virtuelle
- ce mécanisme permet au SE d'exécuter des programmes dont la taille peut dépasser celle de la mémoire physique
- il libère de l'espace en stockant sur disque des blocs mémoire occupés (mécanisme de swap) : ce mécanisme est très lent
- ce stockage peut se faire dans un fichier d'échange (Windows : pagefile.sys) ou dans une partition spécifique (Linux).
- ce dispositif permet de fonctionner avec très peu de mémoire mais au prix de performances très faibles :
- un système en production devrait disposer de suffisamment de mémoire pour ne pas swapper
Les pilotes
- le SE pour fonctionner doit utiliser des logiciels permettant de gérer chacun des périphériques
- ces logiciels sont appelés des pilotes ou drivers
- ils sont spécifiques :
- au matériel lui même ( Carte réseau Ethernet Intel Pro 1000 )
- au système d'exploitation et à sa version (Windows Seven 64 bits)
- ils sont
- soit livrés avec le SE,
- soit avec le matériel lui-même
- ou encore intégrés au SE (Linux)
Les disques
- les dispositifs de stockage à long terme
Les disques logiques
- un disque physique est fréquemment scindé en plusieurs disques logiques pour
- organiser plus efficacement l'espace disque
- améliorer la séparation entre différents espaces de stockage (système, applicatifs, espace utilisateur, …)
- améliorer la sécurité
- permettre éventuellement l'installation de plusieurs SE (Windows, Linux, …)
- simplifier les sauvegardes et les réinstallations
- on effectue un partitionnement du disque dur en plusieurs disques logiques
Les types de partition
- partition primaire
- peut démarrer
- 4 maxi sur un disque
- partition étendue
- nécessaire si on veut plus de 4 partitions
- une seule partition étendue par disque
- une partition étendue peut comporter 4 lecteurs logiques maxi
LVM et disques dynamiques
- les partitions décrites plus haut sont compatibles avec la totalité des environnements
- mais
- leur nombre est limité pour Windows (7 maxi)
- on ne peut pas changer leur taille sauf à utiliser un outil spécifique (PartitionMagic, ou un LiveCD avec Gparted) ⇒ intervention à froid
- on dispose maintenant de solutions permettant de
- créer, retailler (agrandir, rétrécir) les partitions à chaud
- ces outils s'appelent
- LVM : Logical Volume Manager pour Unix/Linux
- disques dynamiques pour Wndows
- ils mettent en oeuvre les concepts de volumes logiques, volumes physiques, volume group
Les disques logiques - Linux
pb:/home/lee# fdisk -l Disk /dev/sda: 40.0 GB, 40007761920 bytes 255 heads, 63 sectors/track, 4864 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xe02ae02a Device Boot Start End Blocks Id System /dev/sda1 * 1 1930 15502693+ 7 HPFS/NTFS /dev/sda2 1932 4864 23559322+ f W95 Ext'd (LBA) /dev/sda5 1932 2660 5855629+ 83 Linux /dev/sda6 2661 2757 779121 82 Linux swap / Solaris /dev/sda7 2758 4864 16924446 83 Linux
Les disques logiques - Linux - gparted
Les unités logiques
- sous Windows, les unités ou disques logiques sont repérés par des lettres : A:, B:, C:, D:, E: … Z:
- sous Linux, les unités logiques (sda2, sd3, …) sont raccordées à la racine (root) au moyen d'une opération de montage
Les systèmes de fichiers
- file system : il permet de stocker les fichiers dans des structures en forme d'arbre
- le SE comporte un certain nombre d'utilitaires permettant d'effectuer les opérations de base :
- lister : ls (Linux), dir (DOS)
- copier : cp (Linux), copy (DOS)
- renommer : mv (Linux), ren (DOS)
- supprimer : rm (Linux), del (DOS)
- créer/supprimer un répertoire : mkdir, rmdir
- formatter : mkfs (Linux), format (DOS)
- …
Les systèmes de fichiers - suite
- chaque SE propose ses propres systèmes de fichiers
- Windows
- FAT16, FAT32, EXFAT
- NTFS
- Linux
- ext4
- xfs
- btrfs
- MacOS
- HFS
Les systèmes de fichiers - FAT
- FAT : File Allocation Table
- FAT16 : taille maxi 2 Gio
- FAT32 :
- pas de sécurité locale (pas de permissions)
- taille maxi fichier : 4 Gio - partition : 8 TiO
- très utilisé sur les clés USB et cartes mémoire
- résistance moyenne aux pannes ⇒ scandisk au démarrage
Les systèmes de fichiers - NTFS
- NT File System
- système de journalisation permettant une “réparation automatique” au démarrage : raisonnablement robuste
- sécurité locale
- compression éventelle
- support des quotas
- le standard pour les systèmes de fichiers windows
- taille maxi fichier : 16 Tio - partition : 256 Tio
- chiffrement possible
Les systèmes de fichiers - ext4 - xfs
- ext4
- système de journalisation
- sécurité locale
- support des quotas
- robuste
- le standard actuel pour les systèmes de fichiers Linux
- taille maxi 16 TiO
- xfs
- développé par Silicon Graphics
- très robuste
- bonnes perormances
- choisi par Redhat comme SF de base
Les utilisateurs et l'authentification
- l'accès au système doit être réglementé pour ne pas mettre en péril son intégrité et sa sécurité
- ⇒ nécessité d'utiliser un mécanisme d'authentification et des comptes utilisateurs
- un utilisateur est caractérisé par divers attributs (selon le SE - ici Linux) :
- login : adupont
- nom complet : Albert Dupont
- son home directory : /home/adupont
- son mot de passe (stocké sous forme chiffrée) : $1$ni0H4A2x$hQxRycgLCYE13QjAid11K0
- son shell (Linux) : /bin/bash
- son appartenance à différents groupes : users, …
- …
fichier /etc/passwd :
adupont:x:1000:1000:Albert Dupont,,,:/home/adupont:/bin/bash
Les groupes
- la gestion d'un système requiert un minimum de structuration
- on répartit les utilisateurs en groupes
- on affecte les droits et permissions à chacun des groupes plutôt qu'aux utilisateurs
- sous Windows, le groupe Administrateurs dispose de l'ensemble des droits d'administration
- on dispose de groupes équivalents sous Linux (root, admin, …)
Administrateurs et super-utilisateurs
- chaque SE dispose d'utilisateurs bénéficiant de droits d'administration étendus
- sous Linux : l'utilisateur root encore appelé superutilisateur (cf. commande su)
- sous Windows : l'utilisateur administrateur ou les membres du groupe administrateurs
- l'administrateur a le droit de tout faire (surtout sous Linux: Linux vous donne la longueur de corde qu'il vous faut pour vous pendre. Et pour être sûr, on rajoute un mètre !
L'authentification
- l'authentification consiste à vérifier l'identité d'une personne ou d'un ordinateur au moyen de divers procédés : mot de passe, paire de clés, …
- elle peut être locale : quand elle est effectuée avec une base de comptes locale (SAM locale pour Windows, fichier /etc/password pour Linux, …)
- ou centralisée et distante au moyen d'un serveur d'annuaire (Active Directory pour Windows, LDAP pour Linux, …)
- les comptes utilisateur décrits plus haut peuvent être des comptes
- locaux : situés sur la machine à laquelle on se connecte
- globaux : situé sur un machine distante (Contrôleur de domaine Microsoft, serveur d'annuaire ,…)
Interface utilisateur
- ligne de commande : CLI (command Line Interface)
- interface graphique avec la souris
Interface utilisateur : CLI
- * historiquement mode texte (25 lignes x 80 colonnes) en “ligne de commande”
- efficace mais austère et peu conviviale : peu adaptée au grand public et domaine d'utilisation un peu restreint
- utilise un interpréteur de commande
- sh, bash, … en Linux
- command, cmd pour Windows
Interface utilisateur : graphique avec souris
- depuis les année 80, interface graphique avec la souris
- Mac d'Apple
- X-Window pour les machines Unix (Gnome, Kde, xfce, Lxde, …)
- Windows (depuis) Windows 1.0
Les familles des SE
- à l'origine, les SE sont des SE pour les gros systèmes
- dans les années 80, apparaissent la micro-informatique et des SE simples :(MS/DOS, CPM, …) dans un environnement en mode texte
- au milieu des années 80, apparaissent les interfaces graphiques sur Mac et sur PC avec Windows
- c'est aussi l'apparition de la famille Unix, orientée multi-utilisateur et gestion puis un mode graphique apparaît avec X-Window,
- enfin cette famille donnera naissance à Linux et à Mac/OS
Les SE et le terminaux portables
- la forte montée en puissance des terminaux mobile conduit à développer des SE spécifiques comme :
- Android
- IOS (Apple).
- Ils sont souvent basés sur Linux (Android) et disposent de bibliothèques spécifiques pour gérer les écrans tactiles, les circuits liés à la téléphonie.
Systèmes d'exploitation propriétaires / libres
- Logiciel libres / Logiciel Open Source : logiciel dont les sources sont publiques
- Richard Stallman, fondateur de la Free Software Fundation (FSF) est à l'origine de la GPL pour protéger ses développements (compilateur C gcc et editeur Emacs)
La GPL
General Public Licence (Licence Publique Générale). Elle garantit :
- la liberté d'exécuter le logiciel, pour n'importe quel usage
- la liberté d'étudier le fonctionnement d'un programme et de l'adapter à ses besoins, ce qui passe par l'accès aux codes sources ; la liberté de redistribuer des copies ;
- la liberté d'améliorer le programme et de rendre publiques les modifications afin que l'ensemble de la communauté en bénéficie.
La GPL a un caractère viral : un logiciel développé à partir de logiciel en GPL est également en GPL
Les logiciels libres
- écosystème très riche
- quelques fleurons : noyau Linux, Apache, mysql/mariadb, php, de très nombreuses briques d'infrastructure de l'internet
La famille Microsoft
- famille poste de travail
- MS-DOS : année 80 - système 16 bits - mode texte
- Windows 1 2, 3.1 : 16 bits - interface graphique
- Windows 95 : système 32 bit -“vrai multitâche”
- Windows 2000, XP
- Windows Vista, Seven, 8, 8.1, 10
La famille Microsoft - suite
- famille serveur
- Windows NT server 3.5, 4.0 (1996)
- Windows 2000 Server
- Windows 2003, 2008 Server, 2012, 2016
La famille Unix/Linux
- Linux depuis 1991 (distributions Debian, Ubuntu, Redhat, Centos, Suse, …)
- famille BSD -
- NetBSD
- OpenBSD
- FreeBSD,
- Mac/OS
- AIX (IBM)
- Solaris (Sun)
- HP/UX (HP)
Linux
- depuis 1991 Linus Torvalds
- derniere version : 5.13 - ~ 25 M de lignes de code
- env. un millier de développeurs
- licence GPL
- 64 bits ou 32 bits
- sur les box internet, les GPS, le téléphones portables, les PC jusqu'au mainframe
Les distributions Linux
- Une distribution est un ensemble logiciel (à l'origine sur CD/DVD) permettant d'installer Linux.
- Elle est élaborée par un éditeur ou une association/projet
- peut être gratuite ou payante
- Les distributions sont très nombreuses mais celles couramment utilisées sont en petit nombre.
- 2 grandes familles :
- Redhat/Fedora/Centos
- Debian/Ubuntu
Redhat
- Le leader historique en matière de distribution Linux : c'est la référence
- emploie de nombreux développeurs du noyau
- à l'origine de nombreuses avancées technologiques (paquetages RPM, …)
- bonne santé financière
- l'offre :
- RedHat Entreprise Linux(commercial)
- Fedora Core : distrib. communautaire
- Centos : base RHEL recompilée : gratuite sans support …
Debian
- distribution communautaire
- communauté active
- stable, sûre et efficace
- plus de 20 000 paquet .deb
- dernière version : 10 (Stretch)
- 11 Bullseye (sortie courant juin 2021)
Ubuntu
- distribution commerciale basée sur la version testing (n+1) de Debian
- plus grand public
- support commercial
- des choix techniques parfois incertains
- 2 versions/an + LTS (Long Term Support tous les 2 ans) 20.04 Focal Fossa
- dernière version : 21.04 (Hirsute Hippo)
Installation
- s'assurer de disposer des ressources nécessaires
- espace disque
- mémoire (~ 1Go en mode texte, minimum 2 Go en mode graphique)
- processeur
- carte réseau
- carte graphique
- et du support d'installation : CD/DVD, clé USB, …
Installation - 2
- machine
- physique
- virtuelle
- péripérique d'installation
- CD/DVD (ou image ISO si machine virtuelle)
- clé USB
- réseau (PXE)
- schéma de partitionnement
- monopartition (le plus simple)
- multipartition : plus élaboré - adapté à un serveur mais nécessite de faire un plan de partitionnement
Démarrage
- MBR : Master Boot Record
- ou zone amorce : premier secteur d'un disque dur - 512 octets
- cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique)
- contient la table des partitions (4 primaires)
- comporte aussi un code d'amorçage permettant de charger le SE (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.
Chargeur d'amorçage
- bootloader: chargeur d'amorçage : il permet de choisir le SE à lancer
- le BIOS lit le MBR puis le VBR de la partition active
- à partir de ces informations, il peut déterminer l'emplacement du chargeur d'amorçage et le lancer
- exemples de chargeurs d'amorçage :
- GRUB, GRUB2
- LILO
- ntldr (Windows NT et XP)
- winload.exe (Vista et suivants)
- Remarque : les bootloaders Windows ne tiennent pas compte des partitions Linux existantes
- à la fin d'une installation Linux, si on n'installe pas GRUB, on n'est pas capable de redémarrer …