~~SLIDESHOW~~ ====== Les systèmes d'exploitation ====== V 1.0 le 17/01/2012 ===== 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 * et ressources diverses * processeur * mémoire * ... ===== Schéma de principe ===== {{:250px-operating_system_placement-fr.svg.png|}} ===== Typologie - 1 ===== * SE : * **mono-utilisateur** : une seule sessions utilisateurs simultanée (MS/DOS) * **multi-utilisateur** : permet plusieurs sessions utilisateurs 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 XP, 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 Seven, Vista, XP, ..., Linux, Mac/OS, ... * un serveur : Windows Server 2k3/8, Linux, Mac/OS server, ... * une tablette : Android, Apple IOS, Windows * un téléphone portable : Android, Windows Phone, Blackberry OS * un routeur ou un switch : Cisco IOS * des appliances (box internet, NAS, ...) : base Linux ===== 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 ===== 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 ===== {{:top.png|}} ===== 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, OpenOffice, ...) 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 stytè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 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 ===== 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 ===== {{:gparted.png|}} ===== 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 : * 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** * **NTFS** * **Linux** * ext2, ext3 * xfs * ext4 * **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 - ext3 ===== * **ext3** * système de journalisation * sécurité locale * support des **quotas** * le **standard** actuel pour les systèmes de fichiers Linux ===== 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, ... * ... ===== 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 * le groupe **Administrateurs** dispose de l'ensemble des droits d'administration sous Windows * 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 ===== * historiquement mode texte (25 lignes x 80 colonnes) en "**ligne de commande**" * efficace mais austère et peu convivial : peu adapté au grand public * utilise un **interpréteur de commande** * **sh**, **bash**, ... en Linux * **command**, **cmd** pour Windows * depuis les année 80, **interface graphique** avec la souris * Mac d'Apple * X-Window pour les machines Unix * Windows ===== 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 ===== 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 ===== La famille Microsoft - suite ===== * famille **serveur** * Windows NT server 3.5, 4.0 (1996) * Windows 2000 Server * Windows 2003, 2008 server ===== 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) ===== Installation ===== * s'assurer de disposer des ressources nécessaires * **espace disque** * **mémoire** * **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**, **GRUB** * **LILO** * **ntldr** (Windows NT et XP) * **winload.exe** (Vista et Seven) * 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 ...