Philippe Roose 2004-2010 IUT de Bayonne, LIUPPA



Documents pareils
La mémoire. Un ordinateur. L'octet. Le bit

Unix/Linux I. 1 ere année DUT. Université marne la vallée

SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Module : Informatique Générale 1. Les commandes MS-DOS

CH.3 SYSTÈMES D'EXPLOITATION

Module 0 : Présentation de Windows 2000

Virtualisation de Windows dans Ubuntu Linux

Partie 7 : Gestion de la mémoire

Symantec Backup Exec 12.5 for Windows Servers. Guide d'installation rapide

AUJOUR'HUI, NOUS ALLONS DÉCOUVRIR

TP1 - Prise en main de l environnement Unix.

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Utilisation d'un réseau avec IACA

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

A -Systèmes de fichiers 1 - FAT vs NTFS

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Installation de Windows 2003 Serveur

TP 1 : prise en main de Windows. TP 1 : prise en main de Windows

Cours Programmation Système

FreeNAS Shere. Par THOREZ Nicolas

Installation d un poste i. Partage et Portage & permissions NTFS

Installation et Réinstallation de Windows XP

Virtual PC Virtual PC 2007 Page I

Guide d'utilisation du Serveur USB

Installation de Windows 2000 Serveur

TAGREROUT Seyf Allah TMRIM

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

Mode Opératoire Windows XP

Affectation standard Affectation modifiée (exemple)

l'ordinateur les bases

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Manuel d utilisation NETexcom

GESTION DE LA MEMOIRE

Qu'est-ce que c'est Windows NT?

VRM Monitor. Aide en ligne

Retrospect 7.7 Addendum au Guide d'utilisation

REALISATION d'un. ORDONNANCEUR à ECHEANCES

L informatique en BCPST

Google Drive, le cloud de Google

Cours Informatique 1. Monsieur SADOUNI Salheddine

Serveur d application WebDev

Acer erecovery Management

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC!

La communication et la gestion de l'information

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Microsoft Windows NT Server

Structure et fonctionnement d'un ordinateur : hardware

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

Interface PC Vivago Ultra. Pro. Guide d'utilisation

STATISTICA Version 12 : Instructions d'installation

TRAVAILLER SUR LES ORDINATEURS DU LYCEE

LOGICIEL ALARM MONITORING

TP 1 Prise en main de l environnement Unix

Edutab. gestion centralisée de tablettes Android

Seagate Technology LLC S. De Anza Boulevard Cupertino, CA 95014, États-Unis

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Organiser le disque dur Dossiers Fichiers

Sauvegarde et restauration d'un système d'exploitation Clonezilla

Windows 2000: W2K: Architecture. Introduction. W2K: amélioration du noyau. Gamme windows W2K pro: configuration.

Manuel de l utilisateur de Samsung Auto Backup

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

La console MMC. La console MMC Chapitre 13 02/08/2009

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Démontage d'un ordinateur

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

Guide d'installation. Release Management pour Visual Studio 2013

Matériel & Logiciels (Hardware & Software)


GUIDE DE DÉMARRAGE RAPIDE

GEP À LA DÉCOUVERTE DU MONDE PROFESSIONNEL. Troisième Découverte Professionnelle Module 3 heures - Collège

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Guide de l'utilisateur de l'application mobile

Manuel de SQUIRRELMAIL à l'usage des étudiants.

Chapitre 1 : Introduction aux bases de données

But de cette présentation

OpenMediaVault installation

Fonctions De Base D un Système D Exploitation. I- introduction : II- Gestion des processus :

Leçon 1 : Les principaux composants d un ordinateur

Chapitre I Notions de base et outils de travail

UltraBackup NetStation 4. Guide de démarrage rapide

Projet : PcAnywhere et Le contrôle à distance.

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

Manuel du logiciel PrestaTest.

TP 4 & 5 : Administration Windows 2003 Server

B2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt.

Business Sharepoint Contenu

Permis de conduire info

I Pourquoi une messagerie?

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

Manuel de System Monitor

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

Transcription:

Philippe Roose 2004-2010 IUT de Bayonne, LIUPPA

Les Systèmes d exploitation Table des matières 1 Historique 4 2 Systèmes Informatique 4 2.1 Matériel 4 2.2 Logiciel 5 3 Qu est-ce qu un Système d Exploitation et pourquoi faire? 5 3.1 La gestion des processus 5 3.2 La gestion de la mémoire 6 3.3 Le système de fichiers 6 3.4 Les Entrées/Sorties (E/S) 6 3.5 En résumé 6 4 Les processus 7 4.1 Structure des processus 8 4.2 Les interruptions 9 4.3 États des processus 9 4.4 Ordonnancement des processus 9 4.4.1 L algorithme du tourniquet 9 4.4.2 Gestion des priorités 9 4.5 En résumé 9 5 La mémoire 10 5.1 Ecriture d'un programmes : les étapes 10 5.1.1 Du code source au code exécutable 10 5.1.2 Exécution d'un programme 11 5.1.3 Gestion de la mémoire 12 6 Le système de fichiers 13 6.1 Organisation des fichiers 13 6.2 Accès et stockages des fichiers 14 6.3 Découpage en blocs 14 6.4 Exemple de stockage de fichiers 15 7 Les fichiers 16 8 Les entrées/sorties 16 8.1 Dispositifs matériels d'entrées-sorties 17 8.1.1 Les disques 17 8.1.2 Les terminaux 17 8.1.3 Les mémoires 18 IUT de Bayonne/LIUPPA 2 15/09/10

9 Les réseaux informatiques 18 10 Caractéristiques de quelques SE qui ont marqué leur temps 18 10.1 Microsoft Windows 95/98 18 10.2 Microsoft Windows NT 19 10.3 Unix 19 11 Cas pratique : utilisation d UNIX 19 11.1 Environnement graphique 20 11.2 Commandes Unix 20 11.2.1 Syntaxe générale 20 11.2.2 Exemples de commandes 20 11.2.3 Droits d accès 21 11.2.4 ACL : Access Control List 22 11.3 3.2. Affectation des droits ACL 22 11.4 Le Shell 25 11.4.1 E/S standards et redirections 25 11.4.2 Tube/Pipe 25 11.4.3 Caractères Spéciaux/Jokers 25 11.4.4 Variables 26 11.4.5 Commandes liées aux processus 26 11.4.6 Autres commandes 26 12 Bibliographie 28 IUT de Bayonne/LIUPPA 3 15/09/10

1 Historique C est au milieu des années 40 (impulsé par la 2 nd guerre mondiale) que les ordinateurs sont apparus. Dans un premiers temps, ils occupaient des pièces entières, puis des armoires pour avoir une puissance inférieure à la moindre calculatrice programmable actuelle! Particulièrement chers lors de leur apparition, seules les grandes entreprises ou services d états étaient capable à la fois d en acheter un, mais également de le maintenir. Il était d ailleurs fréquent qu une machine soit partagée par plusieurs entreprises/services. Ce sera le grand recensement américain puis les élections d Eisenhower aux USA en 1952 qui donneront les lettres de noblesse à l informatique, jusqu alors regardée avec défiance et méfiance! La machine était alors un UNIVAC. Ce n est réellement qu une fois l invention du transistor (en 1947) qui pu remplacer les tubes à vide que les ordinateurs sont arrivés à des dimensions plus raisonnables. Le transistor n a pas servi uniquement à la réduction de la taille des machines. Son arrivée permit d améliorer à la fois la puissance des ordinateurs (plus de fils reliant les tubes!), mais également leur fiabilité tout en diminuant la complexité de construction et donc par conséquent, de maintenance. A cette époque, chaque intervention sur un ordinateur pour lui faire faire la moindre tâche tenait presque de la magie noire. C est à ce moment que de nombreuses personnes ont commencé à travailler sur les systèmes d exploitation afin de rendre humaine les interactions avec les machines. 2 Systèmes Informatique 2.1 Matériel L'objectif d'un système informatique est d'automatiser le traitement de l'information. Il est constitué de deux entités : le matériel et le logiciel. Côté matériel, un ordinateur est composé de : L'Unité Centrale (UC) pour les traitements La Mémoire Centrale (MC) pour le stockage Les Périphériques : disque dur, clavier, souris, carte réseau... accessibles via des pilotes de périphériques IUT de Bayonne/LIUPPA 4 15/09/10

2.2 Logiciel Côté logiciel, un système informatique est composé de deux niveaux bien distincts : le système d'exploitation et les applications. L'objectif du logiciel est d'offrir aux utilisateurs des fonctionnalités adaptées à leurs besoins. Le principe est de masquer les caractéristiques physiques du matériel. La solution consiste à structurer en couches le logiciel, chacune offrant des services de plus en plus évolués au niveau supérieur. 3 Qu est-ce qu un Système d Exploitation et pourquoi faire? Les deux objectifs majeurs d'un système d'exploitation sont : Transformer le matériel en une machine utilisable, c.-à-d. fournir des outils adaptés aux besoins des utilisateurs indépendamment des caractéristiques physiques, Optimiser l'utilisation des ressources (matérielles et logicielles). Ces deux objectifs doivent être atteints en garantissant un bon niveau en : Sécurité : intégrité, contrôle des accès, confidentialité,... Fiabilité : satisfaction des utilisateurs même dans des conditions hostiles et imprévues, Performance du système informatique. Les Systèmes d'exploitation (ou SE) regroupent au moins 4 fonctionnalités essentielles : 3.1 La gestion des processus Ce qui est appelé communément processus au sein d'un SE correspond à une instance d un programme en cours d'exécution. Ce processus peut éventuellement être exécuté en parallèle avec d'autres processus si le système est multitâche. Dans le cas d'un système mono-tâche, seul un processus peut être exécuté simultanément. Lorsque le SE est multitâche et donc que des processus (resp. programmes) peuvent s'exécuter en même temps, le SE doit permettre de créer ces processus (= instances de programme, éventuellement multiples), de les gérer, de les synchroniser, mais également de leur permettre de communiquer ensemble. Le multitâche coopératif et préemptif : Dans les systèmes multitâches, deux politiques de gestion des processus s affrontent, ou plutôt se sont affrontées : le multitâche préemptif et le coopératif. Dans le premier nommé, plusieurs processus cohabitent simultanément au sein de la mémoire de la machine. Lorsqu un des processus fonctionne, les autres sont mis en attente. Ils ne reprendront la main (selon certaines priorités) que lorsque le processus en cours «donnera la main». Ce type de multitâche IUT de Bayonne/LIUPPA 5 15/09/10

utilisé dans Windows 3.1 (et jusqu à Windows 98) a l inconvénient majeur que lorsqu une application a la main et qu elle ne la rend jamais (elle est «plantée»), c est l ensemble des applications qui sont bloquées jusqu à ce que le système puisse «éventuellement» reprendre lui même cette main. Dans le cas du multitâche préemptif, c est le cœur du système qui donne successivement la main aux différents processus pour un certain quantum de temps. Une fois ce quantum épuisé, le processus est mis ou remis dans la file d attente et la main est donnée au processus suivant ayant la priorité la plus haute. Ce type de multitâche est appliqué dans les systèmes de type Unix/Windows NT/XP et permet d éviter, lorsqu une application ne répond plus, que celle-ci ne monopolise le temps processeur (appelé également temps CPU pour Central Processing Unit). 3.2 La gestion de la mémoire Lorsque le SE doit exécuter un programme, il crée un instance de ce programme (processus) qu'il va stocker pour exécution au sein de sa mémoire. La mémoire permet donc de stocker les processus, mais également les données nécessaires à leur exécution en les puisant éventuellement sur une unité de stockage (disquette, disque dur, clé USB,...). Le SE doit impérativement gérer l'accès à la mémoire afin d'éviter qu'une donnée ne soit écrasée par l écriture d une autre. De plus, lorsque le SE est multitâches, et donc que plusieurs programmes cohabitent au sein de la mémoire, il est nécessaire d'empêcher à tout prix pour des raisons de sécurité qu'un programme puisse écrire dans l'espace de données de l'autre. C'est pourquoi, lorsqu'un programme est exécuté, il le fait au sein d'un espace "protégé". Réciproquement, le SE gère également le transfert d'informations de la mémoire vers le ou les supports de stockages afin d'éviter que plusieurs programmes par exemple n'écrivent au même endroit et donc "n écrasent" les données précédentes. 3.3 Le système de fichiers Le système de fichiers permet de stocker les fichiers sur un support de stockage. Il propose également à l'utilisateur une vision hiérarchisée des fichiers sous forme arborescente la plupart du temps. Cette vision tournée vers l'utilisateur doit permettre à ce dernier de se repérer dans l'organisation interne et donc de lui permettre de retrouver des fichiers. Le SE permet ainsi de créer, détruire, et protéger les fichiers. Il réparti ensuite ces fichiers sur les différents supports physiques de stockage (disquettes, disques durs,...). C est une sorte de grand catalogue dans lequel les fichiers sont stockés et rangés. 3.4 Les Entrées/Sorties (E/S) Les E/S permettent aux processus en mémoire de communiquer avec autre chose qu'eux même. les E/S permettent par exemple l'enregistrement de données sur un disque dur, l'envoi d'informations sur une imprimante, sur une carte vidéo, la récupération des caractères tapés au clavier, etc ; bref, la lecture et l'écriture de tout information sur un périphérique les acceptant (c est à dire, un périphérique possédant des entrées et/ou sorties). Remarque : Ces 4 points essentiels pour qualifier un programme de système d'exploitation sont de nos jours épaulés par d'autres caractéristiques permettant - de relier des machines entre elles (réseaux), - de proposer une interface utilisateur graphique facilitant la communication homme/machine (multifenêtrage). 3.5 En résumé Un SE réalise une sorte d'interface entre le matériel (disques, claviers, carte vidéo, carte son, etc.) et les logiciels nécessitant un accès à ce matériel. Il ajoute une couche d'abstraction en proposant aux programmes de masquer les aspects techniques en les prenant lui même en charge. IUT de Bayonne/LIUPPA 6 15/09/10

Figure 1 : Organisation en couches du système Unix Afin de réaliser ceci, tout système d'exploitation est livré avec un ensemble de fonctionnalités appelées API (Application Programming Interface). Ces API masqueront aux programmeurs les aspects trop techniques en lui offrant des primitives lui permettant de réaliser des E/S sur les périphériques. Ces API sont également mises à disposition dans une version "compréhensible" aux utilisateurs (différents des programmeurs) ce qui permet d'interagir directement avec le SE. Ceci ce fait via un "shell" ou interpréteur de commandes comme le DOS ou le Shell-Unix. Dans les systèmes graphiques, il se fait indirectement par les interactions faites graphiquement lorsque vous créez, renommez, supprimez des fichiers via des interfaces comme Windows, KDE/GNOME, MAC-OS X,... 4 Les processus Il existe deux types de processus. Les processus systèmes, entièrement gérés par le SE, et les processus utilisateurs qui sont lancés soit pas le biais d une commande dans un interpréteur de commande ou soit par une interface graphique par «double-click» généralement. Chaque processus a la possibilité de lancer d autres processus. Le processus d origine, est appelé le processus père, les processus créés sont appelés processus fils. A leur tour, les processus fils peuvent également lancer d autres processus fils, pour lesquels ce dernier sera le père et ainsi de suite. Au démarrage du SE, il n existe qu un seul processus père de tous les autres (le processeur créateur, on notera au passage la référence biblique!) Compliqué? Voyons un schéma : IUT de Bayonne/LIUPPA 7 15/09/10

Processus 1 P1 père de P2, P2 fils de P1 P1 père de P3, P3 fils de P1 Processus 2 Processus 3 P2 père de P4, P4 fils de P2 Processus 4 Figure 2 : Structure arborescente des processus 4.1 Structure des processus Chaque processus n est pas uniquement un programme, il est composé d un espace de travail en mémoire comprenant 4 zones distinctes : pile : elle contient les appels de fonctions avec les paramètres et les variables locales. Cette zone n a pas de taille fixe. données : elle contient l ensemble des données du programme (variables globales/statiques et les allocations dynamiques). Cette zone n a pas de taille fixe. code : elle correspond aux instructions en langage d assemblage (assembleur) du programme à exécuter. Cette zone est fixe. contexte, contrairement aux 3 précédentes, elle n est pas directement liée au programme, mais contient l ensemble des informations nécessaires à la gestion du processus. Ce contexte contient (entre autres) : le compteur ordinal pour savoir où on en est dans l exécution et pour savoir où reprendre dans le cas d une utilisation multitâche, la date de création, les adresses où trouver les données et la pile, son PID (identifiant unique du processus dans le système), le PID de son père (permet de savoir de qui le processus est le fils), Cette liste est loin d être exhaustive. Dans un système multitâche préemptif, lorsqu il est nécessaire de changer de processus en cours, le contexte est sauvegardé de manière à pouvoir être récupéré lorsque cette tâche sera de nouveau en cours d exécution et ainsi continuer à l endroit où elle a été interrompue. Lorsqu il est nécessaire de changer de processus, un processus système appelé l ordonnanceur produit une information appelée «Interruption». IUT de Bayonne/LIUPPA 8 15/09/10

4.2 Les interruptions La production d une interruption met en route une suite de traitements permettant de stocker le contexte du processus en cours, la consultation de l ordonnanceur (pour savoir qu elle est le prochain processus à être exécuté), la récupération de son contexte, et enfin son élection (ou sa remise en route). 4.3 États des processus Les processus peuvent donc avoir plusieurs états : actif en mémoire (élu), suspendu en attente d exécution (prêt), bloqué en attente d une ressource (bloqué), par exemple en attendant la frappe d un caractère au clavier. 4.4 Ordonnancement des processus L ordonnancement des processus permet la réalisation de manière optimum du SE en : Maximisant l utilisation du processus, Tentant d être équitable avec les processus, En étant rapide, Assurant la gestion (éventuellement évolutive) des priorités. 4.4.1 L algorithme du tourniquet Le plus utilisé, l un des plus fiables. Lorsqu un processus est élu, il s exécute durant un quantum de temps ou jusqu à ce qu il se mette en attente d une ressource (une E/S par exemple). Lorsque le temps est épuise ou s il est bloqué, le suivant dans la liste des processus prêts est à son tour élu, le processus qui vient de passer la main est mis en dernière position dans la liste des processus. Lors de la mise en œuvre du l algorithme du tourniquet, la seule chose qui est paramétrable est le quantum de temps situé en général entre 100 à 200ms. 4.4.2 Gestion des priorités Il est parfois nécessaire de gérer des priorités dans les processus, certains devant être élus plus souvent. Aussi, à chaque tout du tourniquet, le processus élu n est pas forcément le suivant, mais le processus prêt suivant de plus haute priorité. Dans cette optique, on imagine aisément que certains processus de priorité basse ne seront jamais élus! Tout est prévu. Un processus venant d être exécuté retourne dans la file avec une priorité abaissée. Un processus n ayant pas été élu depuis un certain temps verra sa priorité monter jusqu à son exécution. A titre d exemple, Windows NT/2000 gère jusqu à 32 niveaux de priorité. 4.5 En résumé Un processus est un programme en cours d'exécution. Un processus a besoin de ressources matérielles : l'unité centrale, la mémoire centrale et l'accès à des périphériques d'entrées/sorties. Ses caractéristiques statiques, c'est-à-dire ne variant pas au cours de sa vie, sont : Un numéro unique : PID (Process IDentifier), Un propriétaire (le système ou un utilisateur par exemple) déterminant les droits d'accès du processus aux ressources comme les fichiers, etc. Un processus parent dont il hérite la plupart des caractéristiques, Un terminal d'attache pour les entrées/sorties. Ses caractéristiques dynamiques sont : Priorité, environnement d'exécution... Quantité de ressources consommées (temps CPU utilisé...). Allons plus loin IUT de Bayonne/LIUPPA 9 15/09/10

Un processus est toujours créé par un autre processus appelé processus parent. Ainsi tout processus a un processus parent sauf le tout premier. Ce tout premier processus est appelé init et son identifiant est égal à 1 (PID = 1). Deux types de processus existent : Les processus utilisateurs, tous issus du Shell de connexion ; Les processus «démons» : «démon» est une traduction abusive de daemon signifiant deferred auxiliary executive monitor. Ces processus daemon assurent un service et sont souvent lancés au démarrage de la machine. Les principaux services assurés par des processus daemon sont l'impression, les tâches périodiques, les communications, le suivi de tâche. 5 La mémoire Lorsqu'un programme est exécuté, il (avec ses données) nécessite d'être transféré de son lieu de stockage (disque dur, disquette, etc.) vers la moire centrale de l'ordinateur. Le fait d'être en mémoire permet au processeur de l exécuter (condition sine qua non à son exécution). Pilotes - BIOS (ROM) Programmes utilisateurs (RAM) Système (RAM) Dans un SE de type «multi-tâches», plusieurs programmes utilisateurs peuvent cohabiter en même temps dans la mémoire vive (RAM Random Access Memory) de l'ordinateur. Nous avons vu précédemment, que les zones de données de programmes sont des zones extensibles (contrairement à la zone de code qui est fixe). Ceci implique qu'il est nécessaire par un moyen ou un autre d éviter que deux programmes cohabitant dans la mémoire ne puisse «déborder» l'un sur l'autre. 5.1 Ecriture d'un programmes : les étapes 5.1.1 Du code source au code exécutable Lorsque nous utilisons des programmes (traitement de texte, système d'exploitation, jeux, etc.), ces derniers sont le résultat d'un ensemble d'étapes bien définies : 1. Le programmeur crée un fichier, appelé fichier source et écrit son programme dans un langage de programmation tel que le l ADA, le C, le C++, le Java, etc. 2. Le code du programme écrit dans un langage appelé langage de haut niveau (C, C++, Java, etc.) est transformé/traduit en module objet contenant la traduction du langage en langage machine, seul langage compréhensible par le processeur et donc par extension, par l'ordinateur (chaque processeur possède son propre langage). 3. Le code objet est ensuite passé à la moulinette de l'éditeur de liens qui permet d'ajouter les appels à des librairies (programmes ou bouts de programmes annexes). Ces appels de librairies permettent d'utiliser et d'intégrer dans un programme des fonctionnalités déjà écrites. IUT de Bayonne/LIUPPA 10 15/09/10

Les programmes compilés ne contiennent pas d'adresses absolues en RAM. En effet, un tel fonctionnement impliquerait que ce dernier soit toujours situé dans le même emplacement mémoire ce qui dans le cas d'un SE multitâche est une hypothèse quasi-irréalisable. Chaque programme possède donc des adresses relatives (le décalage) à l'adresse 0. Les adresses sont ensuite translatés par rapport à l'adresse 0. Un entête est également ajouté permettant de connaître le SE cible (magic number), mais surtout la taille des zones de données, pile,...) et enfin le point d'entrée du programme, c'est à dire à qu'elle instruction il doit démarrer. 5.1.2 Exécution d'un programme Lorsqu'une demande d'exécution de programme est réalisée, le système scrute la RAM afin d'y trouver un espace libre. Lorsqu'un espace d'un seul bloc n'est pas disponible, il peut en trouver plusieurs dont la taille globale est égale à la taille nécessaire (pagination cf. plus bas). Lorsqu'il a trouvé un ou plusieurs emplacements libres, il les alloue et place (en le morcelant éventuellement) le processus dedans. Le problème est que la mémoire RAM est en général toujours insuffisante, et donc au bout d'un certain temps, il n'y a plus de mémoire disponible. Afin de ne pas «bloquer» le système, des mécanismes de gestion de la mémoire sont mis en œuvre. IUT de Bayonne/LIUPPA 11 15/09/10

5.1.3 Gestion de la mémoire Le SE garde une image représentant l'occupation de la mémoire. Pour ce faire, il la découpe en unités de tailles fixes. Plus l'unité est petite, meilleure la gestion de la mémoire est faite, mais plus l'image de la mémoire est grande (donc occupe plus de place et demande plus de temps), réciproquement, plus la taille de l'unité est grande, moins on fractionne la mémoire et donc sa gestion demande une image moins grande. L'inconvénient est la perte de mémoire lorsque ce dernier n'est pas de taille multiple de l'unité. Lorsqu'un programme n'a plus de raison d'être stocké en mémoire, on libére son espace en mémoire qui redevient disponible. Au fur et à mesure de l'exécution du SE et de programmes, de nombreuses allocations/libérations de mémoires sont réalisées ce qui a pour conséquence de fragmenter exagérément la mémoire et par extension, les programmes à charger impliquant plus de manipulations. L'exemple le plus flagrant sont les programmes gérant le multifenêtrage dans les SE. Aussi, la mémoire est régulièrement «compactée», ce qui consiste à regrouper en début ou en fin de mémoire les processus en cours de manière à libérer de grandes zones de mémoire continues. 5.1.3.1 Le va-et-vient Lorsque l'ensemble des processus ne peut tenir en mémoire, on doit en déplacer certains temporairement (jusqu'à leur prochaine utilisation) sur une mémoire secondaire (swap) du disque. L'avantage de cette solution (implémentée dans Windows et Unix) est sa simplicité. L'inconvénient est la lenteur engendrée lorsque le swap devient trop important. En effet, les temps d'accès calculés en ns pour une mémoire centrale (RAM) se calculent en ms pour une mémoire secondaire de type disque dur, c'est à dire 1000 fois moins vite. 5.1.3.2 La pagination La pagination permet de découper un processus en plusieurs emplacements contigu (de 1 à 4 Ko généralement) permettant de remplir au mieux les zones libres. IUT de Bayonne/LIUPPA 12 15/09/10

3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Figure 3 : exemple de pagination Ce type de découpage permet également l'utilisation de processus dépassant la taille physique de la mémoire. Une extension de la pagination est la segmentation. Cette dernière découpe non seulement le processus en différentes pages, mais les segments produits sont différenciés (procédures, piles, données, table des symboles, etc.). Cette technique est utilisée dans les processus basés sur des architectures de type Intel 8086. 6 Le système de fichiers Dans un premier temps, nous allons utiliser une métaphore pour représenter les fichiers. Nous allons les voir comme un ensemble de données sur le disque. Au sein d'un SE, deux types de fichiers cohabitent : les fichiers de type programme, et les fichiers contenant les objets manipulés par les programmes. De manière générale, on parle de fichiers programme et fichiers données. Exemple : le fichier word.exe est un fichier programme, alors que cv.doc est un fichier de données. 6.1 Organisation des fichiers Les fichiers sont organisés dans un système de fichiers. Ce système de fichiers permet l'organisation le plus souvent hiérarchique (sous forme d'arbres) de ces dernier. Il permet au SE de les organiser sur le disque, de pouvoir y accéder, les retrouver,... Du coté utilisateur, le système de fichiers permet de proposer une interface permettant à ces utilisateurs «de s'y retrouver». Tout fichier appartient à un groupe de fichiers, tout groupe de fichiers appartient à un autre groupe de niveau supérieur jusqu'à remonter au groupe d'origine appelé racine. IUT de Bayonne/LIUPPA 13 15/09/10

Racine (root) JDK Documents.................. liste.txt Bin Exemples......... fic1.java Les nœuds de l'arbre sont appelés répertoires (directory) ou dossiers (folder) alors que les feuilles sont appelées fichiers. Les répertoires sont eux même des fichiers contenant l'ensemble des noms des fichiers et des sousrépertoires qu'ils contiennent. Pour désigner un fichier, il suffit de donner le chemin complet (l'enchaînement) de la racine (notée «\» - monde Windows ou «/» - monde Unix) jusqu'à ce fichier. Tout répertoire contient deux fichiers un peu particuliers notés «.» et «..». Le «.» représente le répertoire courant alors que «..» représente le répertoire de niveau supérieur. Ces deux fichiers permettent d'accéder à l'ensemble des fichiers de manière relative (depuis le répertoire courant) au lieu de donner le chemin absolu (depuis la racine chemin démarrant par le caractère «/»). Chemin absolu windows/dos : C:\JDK\fic1.java unix : /JDK/fic1.java Chemin relatif depuis Exemples../fic1.java../../Documents/liste.txt 6.2 Accès et stockages des fichiers Les fichiers stockés sur une unité de stockage ne sont pas enregistrés d'un seul tenant mais sont découpés en blocs de taille fixe (nombre entier et fixe d'octets), selon un principe analogue à la pagination des programmes en mémoire. L'accès à un fichier se résumé à accéder au premier bloc puis à les lire successivement jusqu'au dernier. Ceci implique deux choses : soit on connaît à l'avance le nombre de blocs du fichiers, soit un des blocs sera discriminant et signifiera qu'il est le dernier. Il existe pour cela une table (appelée table d'allocation des fichiers) permettant au système de retrouver tous ces blocs. De la même manière qu'il est possible pour un processus d'être «éclaté» en différents pages à des adresses contiguës, un fichier peut également être éclaté sur le support de stockage, dans ce cas on parle de fragmentation. Plus un support est fragmenté, plus long sera l'accès à l'ensemble du contenu des fichiers puisque ceci impliquera de nombreux déplacement de la tête de lecture/écriture du support de stockage. 6.3 Découpage en blocs Avant d écrire sur une unité de stockage, il faut la formater, c est à dire lui donner une certaine organisation. Entre autres choses, cette organisation consiste à donner une unité de taille pour les blocs qui devront être écrits. Deux politiques peuvent être utilisés : des blocs très petits, ça minimise les pertes d espace dans le cas de fichiers petits, mais ça augmente le temps d accès (il faudra accéder à plus de blocs, donc plus de déplacements de la tête de lecture), de plus, la table de référencement des blocs permettant de reconstituer les fichiers écrits sur plusieurs blocs sera également plus grande. L autre politique est de prendre des blocs IUT de Bayonne/LIUPPA 14 15/09/10

plus grands, du coup, la table est moins grande, le nombre d accès est inférieur et donc plus rapide. L inconvénient est la plus grade perte de blocs. Une taille pour un bloc se situerait autour de 1Ko (taille moyenne d un fichier), mais il n est pas rare de trouver des blocs de 512 octets ou 2 voire, 4 Ko. 6.4 Exemple de stockage de fichiers A chaque fichier est associé un ou plusieurs blocs permettant de stocker le fichier lui même. Prenons un exemple avec un fichier appelé fichier1.txt de 7440 octets, soit 7Ko et 272 octets restant, avec des blocs de 1 Ko (soit 1024 octets). Plusieurs cas de figures se présentent. Il existe un ensemble de blocs continus pour le stocker. Fichier en un bloc Fichier1.txt 47 54 Fichier découpé Fichier1.txt 47 48 Fichier1.txt 12 15 Fichier1.txt 120 120 Fichier1.txt 78 79 8 blocs occupés 2 blocs 3 blocs 1 bloc 2 blocs On le voit sur l'exemple précédent, plus un fichier est "tronçonné", plus il nécessitera d'entrées dans la table, et plus volumineuse elle sera. Plus important encore peut être, c'est le nombre d'accès nécessaires pour obtenir l'ensemble des informations du fichier (ici, 4 accès). Le temps d'accès d'un disque dur se calcul en ms. Enfin, on voit également qu'ici, nous perdons 752 octets (1024-272) puisqu'il est impossible de scinder un bloc et d'y faire contenir d'autres "bouts" de fichiers. 79 Données Données 78 79 80 81 Figure 4 : Découpage & organisation des fichiers en blocs Une autre possibilité est de ne pas découper à priori, mais de réserver un espace dans le bloc qui dira si la lecture est terminée, ou s'il faut aller voir un autre bloc. Exemple Fichier1.txt 47 bloc 47 : 1020 octets de données + 4 octets pour dire que le prochain est le 48ème, bloc 48 : 1020 octets de données + 4 octets pour dire que le prochain est le 12ème,... bloc 79 : 300 octets de données ( 7440 - (7 x 1020) ) + un marqueur de fin. L'avantage est la simplification de la table d'entrée, l'inconvénient est que pour connaître la taille d'un fichier, il faut parcourir l'ensemble des blocs. Il existe de nombreuses autres variantes optimisées de ce type d'organisation, toutes se rapprochant plus ou prou à un mixage de ces deux méthodes. IUT de Bayonne/LIUPPA 15 15/09/10

Si on a 4 octets pour donner le nom du bloc suivant, ceci signifie que l on pourra adresser des fichiers de plus de 2 (8*4) = 2 32 octets. 7 Les fichiers Dans chaque système d'exploitation (Unix, Windows ou autre), les fichiers ne sont pas uniquement représentés par leur nom. Lors de chaque création/modification, un certain nombre d'informations (appelées attributs) sont mises à jour. Dans la plupart des systèmes, ces informations sont : Le type (exécutable ou non), la date et l'heure de la dernière modification (ou de création), la taille, le numéro du premier bloc, l'extension (uniquement sous windows) et éventuellement les droits (Windows NT/2000/XP et Unix). 8 Les entrées/sorties Ce terme générique d'entrées/sorties est utilisé lorsqu'on parle d'échange d'informations entre un ordinateur et ses organes externes (périphériques) : - clavier, - disque dur, disquettes, - imprimantes, - mémoire Un ordinateur via son système d'exploitation ne communique pas directement avec les périphériques (organes externes). A ceci une raison principale : il existe une multitude de périphériques (sans compter les modèles et marques différents pour un type de périphérique) et il est impossible que le SE les connaisse tous, ne serait-ce que parce qu'il en sort tous les jours de nouveaux. IUT de Bayonne/LIUPPA 16 15/09/10

Aussi, le SE dispose de primitives "standards" afin de communiquer avec des périphériques (imprimantes, disques durs, etc.) et entre les deux se placent un élément essentiel : le pilote (driver en anglais). Lorsqu'un ordinateur nécessite de réaliser des E/S avec un périphérique il discute via des primitives génériques avec le pilote correspondant, ce dernier réalisant l'interface entre l'ordinateur et le périphérique, c'est à dire qu'il a un rôle de traducteur ordinateur-périphérique. 8.1 Dispositifs matériels d'entrées-sorties 8.1.1 Les disques Les disques sont constitués d'un ou plus généralement de plusieurs cylindres superposés (éventuellement double face). Chacun de ces cylindre est divisé en un certain nombre de pistes elles même divisées en secteurs permettant de stocker un ou plusieurs blocs (c'est pourquoi un disque est formaté selon le SE qui va l'utiliser). Lorsqu'on regarde les caractéristiques d'un disque dur, on regarde sa capacité, mais également le temps de positionnement moyen et le temps de rotation (exprimé en tours par minutes, ex. 7200 ou 10000 trs/mn). Un bras piloté par le pilote du disque permet d'accéder aux différents cylindres/pistes et blocs contenant au final les données de fichiers. Pour ce dernier, plusieurs algorithmes sont proposés, FCFS (First Come-First Served), ou d'autres comme l'ascenseur classant les demandes en fonction de la position du bras (les secteurs les plus proches sont les plus vites servis). 8.1.2 Les terminaux Un terminal représente en général un écran connecté à un serveur. Il peut être alphanumérique (seuls des caractères sont affichés), ou graphiques. Un terminal permet d'accéder à un ordinateur, localement ou à distance. IUT de Bayonne/LIUPPA 17 15/09/10

8.1.3 Les mémoires Leur taille s exprime en Méga-Octets (1024 K-octets). Lorsqu'on demande l'exécution d'un programme, le SE va chercher celui-ci sur l'unité de stockage et lire l'ensemble des blocs nécessaires. Ces blocs sont ensuite transféré (en une fois ou petit à petit, on parle alors de transfert bufférisé) dans la mémoire centrale de l'ordinateur. Comparativement aux mémoires de masse type disques durs, les mémoires centrales type RAM coûtent beaucoup plus cher, ce qui explique que généralement pour un ordinateur personnel on parle de Méga-Octets (pour la RAM) et de Giga-Octets pour les disques durs (1000 fois plus). Ceci à pour conséquence qu'il est parfois nécessaire d'avoir plus de programmes occupant plus d'espace en mémoire centrale qu'il y a a de disponible. Pour résoudre ce problème, lorsque ce cas se présente, le SE va transférer sur le disque un processus non en cours d'utilisation afin de charger le prochain. Lorsque le processus mis sur le disque nécessitera d'être mis en mémoire, le même mécanisme sera utilisé. A ceci un défaut : le temps! Le temps d'accès à une mémoire centrale se mesure en ns, pour un disque dur, en dizaines de ms! 9 Les réseaux informatiques Il parait inconcevable actuellement de parler de système d'exploitation sans parler de réseau. Au début les réseaux sont complètement indépendants des SE pour devenir au fur et à mesure de leur développement de plus en plus intégré, et l'être complètement de nos jours. Nous n'allons pas ici faire un cours sur les réseaux, mais? Il autorise un échange d'informations entre ordinateurs et/ou périphériques (imprimantes, etc.) éventuellement distants physiquement. Auparavant, on utilisait les réseaux via des applications dédiées (logiciels de courrier, de navigation sur Internet,...). De nos jours, les aspects réseaux sont de plus en plus masqués aux utilisateurs de manière à ce que ceux-ci n'aient plus à se soucier de ces derniers et accèdent à leurs fichiers ou périphériques réseaux de la même manière que s'ils étaient sur leur propre machine. 10 Caractéristiques de quelques SE qui ont marqué leur temps 10.1 Microsoft Windows 95/98 multitâche, système 32 bits interface graphique conviviale permet d'exécuter des applications DOS/Windows 3.x ne fonctionne que sur machines à processeurs Intel (et compatibles) mono-utilisateur système de fichiers : FAT16 (File Allocation Table, DOS - 2Go), FAT32 (>2Go) IUT de Bayonne/LIUPPA 18 15/09/10

10.2 Microsoft Windows NT NT Workstation utilisé par les postes de travail clients (applications bureautiques...), NT Server utilisé comme serveur de fichiers, d'applications, d'impression... interface graphique conviviale multitâche système 32 bits existe sur plusieurs plates-formes (Intel et anciennement Alpha et Mips) compatible DOS et Windows 3.x/95/98 système de fichiers : NTFS (New Technology File System), FAT16, FAT32 mono-utilisateur nécessité d'une machine assez puissante livré avec peu d'outils en standard 10.3 Unix multitâche multi-utilisateur plusieurs interfaces graphiques (pas de standard) système 32/64 bits système portable (écrit en langage C) existant sur pratiquement toutes les plates-formes matérielles (PC, stations, minis, super-calculateurs...) utilisé sur station client et serveur outils en standard permettant de gérer un réseau de machines système de fichiers : au moins une dizaine différents nombreux outils et services fournis en standard ne nécessite pas une machine très performante langage de scripts très riche (shell = interpréteur de commandes + langage de programmation) GNU/Linux et beaucoup de logiciels du domaine public administration pas toujours aisée 11 Cas pratique : utilisation d UNIX Sur tout système Unix (et plus généralement, tout système récent), chaque utilisateur doit avoir été déclaré par l administrateur du système (le chef!). Ainsi, chaque utilisateur possède un identifiant de connexion (login) et un mot de passe (password). La session de travail (appelé par la suite session) début une fois l identification réalisée et se termine sur demande de l utilisateur. Sous Unix, la fenêtre permettant la saisie des commandes est appelée le terminal et exécute un interpréteur de commande appelé de manière générique le shell. Il en existe plusieurs (sh, ksh, bash, etc.). Pour taper une commande dans le shell, il faut «activer la fenêtre» en cliquant dessus/dedans puis taper la commande avec éventuellement ses paramètres/arguments. Pour exécuter la commande, il faut taper la touche «entrée». Attention, contrairement d autres SE, le système Unix réalise une distinction entre les majuscules et les minuscules (la casse des lettres). Ceci est également valable pour la saisie de l identifiant/mot de passe de connexion. Un shell possède un double rôle : C'est d'abord un interpréteur de commandes exécutant la boucle infinie suivante : 1. Affichage de l'invite de commande ou prompt («$») d'attente de lecture au clavier. 2. Lecture d'une commande (validée par RETURN ou ENTRÉE). 3. Analyse syntaxique (découpage en mot). 4. Interprétation des caractères spéciaux (*,?) 5. Exécution de la commande et retour au début. Le shell est aussi un langage de programmation gérant des variables. IUT de Bayonne/LIUPPA 19 15/09/10

11.1 Environnement graphique Un environnement multifenêtres consiste en : Un programme appelé le serveur qui gère l'affichage et contrôle le clavier et la souris ; Des programmes appelés les clients qui offrent diverses fonctionnalités (terminal, édition de texte, messagerie...) ; Un client particulier, le gestionnaire de fenêtres, qui gère les fenêtres (déplacement, «icônification»...) et permet de lancer d'autres clients grâce à des menus. L'environnement multifenêtre XWindow est un des standards du domaine public à la base de beaucoup d'environnements propriétaires (OpenWindows, Motif...), c est également un système multifenêtre, graphique, multi écran et orienté réseau. Les gestionnaires de fenêtres (window manager) : Gère les fenêtres ; Offre tout ou partie des fonctionnalités suivantes : Habillage (barre de titre...), déplacement, dimensionnement, plein écran / réduction, mise en premier- / arrière-plan, «icônification» / «désicônification», fermeture / destruction, réaffichage. 11.2 Commandes Unix 11.2.1 Syntaxe générale La syntaxe générale d'une commande Unix est la suivante : nom [-options] [argument 1... 2 ] nom est le nom de la commande ; options représente une ou plusieurs options ; argument1 est le premier argument. Les options sont composées d'un seul caractère suivant un tiret. Il est possible d'accoler plusieurs options (donc, plusieurs caractères). Par exemple, -asli pour les options -a -s -l -i. Si l'option demande un paramètre, ils sont séparés par un espace comme -o fichier. Les crochets désignent un élément facultatif, ils ne doivent donc pas être tapés. Les points de suspension indiquent la possibilité de répéter un élément. Par exemple, ls /etc /usr pour plusieurs arguments. Dans une commande, chaque mot est séparé des autres par un espace ou une tabulation. 11.2.2 Exemples de commandes Attention, comme TOUTE commande unix, ces dernières s écrivent en minuscule. id : affiche le nom de connexion et le numéro d'identifiant de l'utilisateur et du groupe auquel il appartient hostname : affiche le nom de la machine uname : affiche le nom du système d'exploitation clear : efface l'écran who : liste les utilisateurs connectés sur le même site exit : termine le shell (idem CTRL-D si configuré) su - nom_connexion : change temporairement l'identité de l'utilisateur en super-user (administrateur) 11.2.2.1 Commandes de positionnement dans l arborescence pwd : affiche le nom absolu du répertoire de travail cd : change le répertoire de travail Avec argument : nom du répertoire destination (en absolu ou en relatif) IUT de Bayonne/LIUPPA 20 15/09/10

Sans argument : retour au répertoire de connexion ls : liste les entrées d'un répertoire Sans argument : les entrées du répertoire de travail Avec arguments : les entrées repérées par les arguments Par exemple, ls, ls /, ls /usr, ls.bashrc Dans la commande précédente (ls.bashrc), le fichier dont le nom commence par un point («.») est appelé un fichier caché. La commande ls possède de nombreuses options : par exemple, -a pour visualiser les fichiers cachés, -l pour tous les attributs (type, droits, liens, propriétaire, groupe, taille, date, nom) 11.2.2.2 Commandes de consultation/informations de fichiers textes cat fich, more fich : affichage simple et page par page ; head fich, head -n fich : affichage des 10/n premières lignes ; tail fich, tail -n fich : affichage des 10/n dernières lignes ; wc fich : affichage du nombre de lignes, de mots, de caractères options -l, -w et -c pour les nombres de lignes, de mots et de caractères. 11.2.2.3 Commandes de manipulations de fichiers cp chemin_source, chemin_destination : copie le fichier source à la destination (avec changement de nom éventuel) option r : copie récursive d un ensemble de fichiers et de leur sous arborescence. mv chemin source, chemin destination : idem précédemment, mais c est un déplacement au lieu d une copie. rm [-r] fichier1, fichier2, : suppressions des fichiers option r : supprime récursivement un ensemble de fichiers et leur sous arborescence. 11.2.3 Droits d accès Toute opération sur une entrée est contrôlée à partir des droits r, w et x. La création, le renommage, le déplacement et la suppression, d'une entrée dans un répertoire sont contrôlés par le droit w des répertoires. Pour la création, il faut avoir le droit de modifier le contenu du répertoire pour ajouter une entrée. Pour le renommage et le déplacement, il faut avoir le droit de modifier le contenu du répertoire pour modifier le nom d'une entrée ou/et ajouter une entrée. Pour un répertoire, le droit x autorise la traversée et le positionnement dans celui-ci. Pour garder confidentiel le contenu d'un répertoire, un utilisateur enlève le droit r pour les autres ou le groupe ou luimême. Pour empêcher de se déplacer dans une partie de son arborescence, un utilisateur enlève le droit x au répertoire à la racine de cette arborescence. À tout élément de l'arborescence sont associés trois droits d'accès : En lecture : r pour read En écriture : w pour write En exécution : x pour execute Pour trois catégories d'utilisateurs Le propriétaire : u pour user Le groupe10 : g pour group Les autres : o pour others Par exemple : rwx r-x r-- s'interprète comme ceci : Lecture, écriture et exécution autorisées pour le propriétaire Lecture et exécution autorisées pour le groupe Lecture seule autorisée pour les autres IUT de Bayonne/LIUPPA 21 15/09/10

Les droits sont modifiables avec la commande chmod (change mode) selon 2 méthodes : Valeur numérique calculée sur le poids de r, w et x pour chaque catégorie : r = 4, w = 2 et x = 1 Par exemple : chmod 741 fichier ===> rwx r-- --x chmod 600 fichier ===> rw- --- --- Valeur littérale : Catégories : u, g, o ou tous (a = all = ugo) Opérations : ajout (+), retrait (-) ou affectation (=) Droits : r, w, x et d'autres (t, s...) Par exemple : (fichier avec les droits rw- --- ---) chmod g+r fichier ===> rw- r-- --- chmod ug+x fichier ===> rwx r-x --- chmod a=r fichier ===> r-- r-- r-- chmod u+wx fichier ===> rwx r-- r-- chmod go-r fichier ===> rwx --- --- 11.2.4 ACL : Access Control List (Sources : http://linux.developpez.com/acls/#l1 ; http://fr.wikipedia.org/wiki/access_control_list) Une ACL est une liste d Access Control Entry (ACE) ou entrée de contrôle d'accès donnant ou supprimant des droits d'accès à une personne ou un groupe. Une ACL représente deux choses : un système permettant de faire une gestion plus fine des droits d'accès aux fichiers (cf. paragraphe précédent) que ne le permet la méthode employée par les systèmes UNIX. en réseau, une liste des adresses et ports autorisés ou interdits par un pare-feu (non traité dans ce cours) ACL sur les fichiers : Unix : sous UNIX, les ACL ne remplacent pas la méthode habituelle des droits (chmod lecture/écriture/exécution user/group/other). Pour garder une compatibilité, elles s ajoutent. Les réseaux d'entreprises nécessitent l'attribut de droits pour certains membres de plusieurs groupes distincts, ce qui est compliqué à mettre en œuvre avec la gestion des droits traditionnels sous Unix. C'est là l'une des raisons de la préférence de Windows en entreprise. Les ACL permettent de combler ce manque. On peut permettre à n'importe quel utilisateur, ou groupe, un des trois droits (lecture, écriture et exécution) et cela sans être limité par le nombre d'utilisateurs que l'on veut ajouter. Les deux commandes permettant de visualiser les droits ACL et de les modifier sont, sous UNIX : getfacl, pour visualiser et setfacl, pour modifier Utilisation : Visualisation des ACL : option D de la commande ls (ls D) 11.3 3.2. Affectation des droits ACL Prenons l exemple suivant : IUT de Bayonne/LIUPPA 22 15/09/10

Le + qui suit les droits signifie qu il y a une ACL sur ce fichier. Le propriétaire du fichier est mgrinfo1 du groupe info. Dans un premier temps, il faut initialiser un "mask" afin de pouvoir rajouter des règles ACL. Seules les opérations autorisées dans ce masque seront actives. Ainsi, si vous mettez un masque de rw-, aucune personne ne pourra effectuer l'opération d'exécution. À l'inverse, si le masque est "rwx" et que vous désirez empêcher l'ensemble des personnes concernées par le droit Write d'effectuer une opération d'écriture, il vous suffit de modifier ce masque en r-x. Partons de cette commande pour examiner la syntaxe de setfacl. L'argument -m permet de rajouter un ACL, à l'inverse -x l'enlève. Ajout d'un masque total setfacl -m m::rwx monfichier Syntaxe générale : 'type de la personne':'nom_de_la_personne':'droit en rwx' Il existe 2 types de personnes (en dehors du masque "m") : "u" pour un utilisateur et "g" pour un groupe. Ainsi pour rajouter à l'utilisateur roose, les droits de lecture et écriture d'un fichier : Masque partiel setfacl -m u:roose:rw- monfichier L affectation récursive du contenu du répertoire se fait en utilisant de façon classique l option -R Pour visionner les droits ACL, on utilise la commande getfacl. Les lignes user, group, et other correspondent aux habituels droits Unix. Vous retrouvez aussi votre masque : mask::rwx et l'autre user:roose:rw- Voyons maintenant l'intérêt du masque. Mon désir : Supprimer pour tous les utilisateurs (en dehors de moi, le propriétaire ici identifié en tant qu mgrinfo1), le droit en écriture. Je supprime le droit en écriture dans le masque. IUT de Bayonne/LIUPPA 23 15/09/10

On remarque la ligne #effective, qui nous signale qu'après application du masque, les droits réels de mgrinfo1 sont : lecture/écriture. Vous pouvez aussi supprimer l'ensemble des droits ACL d'un fichier. Vous verrez également que le + a disparu. Windows : Les ACL sont implémentées par le système de fichiers NTFS, et prises en charge depuis Windows NT 4.0. Sous NTFS, les ACL peuvent être définis sur des fichiers ou des répertoires et acceptent les types de droits suivants : parcours d'un dossier, liste d'un dossier, lecture des méta-données, ajout de fichier, ajout de répertoire, ajout de données à un fichier existant, modification des droits, suppexitression, lecture, appropriation, exécution. Ces droits s'appliquent soit à des utilisateurs (réels, virtuels - tel le propriétaire du fichier - ou systèmes), soit à des groupes d'utilisateurs (réels, virtuels ou systèmes). L'application d'un droit à un utilisateur ou à un groupe est nommée ACE. Il est possible d'autoriser ou de rompre l'héritage hiérarchique des ACL entre les différents répertoires, ainsi que de paramétrer le type d'héritage (sur les dossiers, les fichiers, à tous niveaux de profondeur, uniquement le premier, etc.). Le nouveau système de fichiers, exfat, proposé depuis le Service Pack 1 de Windows Vista pour remplacer la FAT prend aussi en charge les ACL. IUT de Bayonne/LIUPPA 24 15/09/10

11.4 Le Shell 11.4.1 E/S standards et redirections À la connexion, le shell dispose de trois flots de communication : Entrée standard : stdin (numéro 0) Sortie standard : stdout (numéro 1) erreur standard : stderr (numéros 2) L'association par défaut de ces flots est l'écran pour stdout et stderr, et le clavier pour stdin. Une redirection est une modification de l'une ou de l'autre de ces associations. Elle est valable uniquement le temps de la commande sur laquelle elle porte. Ainsi, la redirection de la sortie standard permet de récupérer le résultat dans un fichier11 : commande > nom_fich. Attention, avec «>», si le fichier de redirection existe, son contenu initial est perdu. La redirection double (commande >> nom_fich) permet de ne pas détruire le fichier existant, mais ajoute le nouveau contenu en fin de fichier. Moins utilisée que la redirection de la sortie standard, la redirection de l'entrée standard (commande < nom_fich) permet à une commande d'utiliser comme données le contenu d'un fichier à la place d'une lecture clavier. wc -l.bash_profile 27.bash_profile ===> nombre de lignes suivi du nom du fichier wc -l <.bash_profile 27 ===> nombre de lignes seul 11.4.2 Tube/Pipe Un tube (pipe) est une zone mémoire permettant à deux processus d'une même machine de communiquer tout en étant synchronisés. L'écrivain attend une place disponible pour écrire. Le lecteur attend une information disponible à la lecture. L'objectif d'utiliser un tube est de faire agir une commande sur le résultat d'une autre sans fichiers intermédiaires. Le symbole placé entre deux commandes redirige la sortie standard de la première sur l'entrée standard de la seconde. 11.4.3 Caractères Spéciaux/Jokers Les caractères dits «Jokers» servent à référencer des noms de fichiers : «*» ===> une chaîne de caractères quelconque (même vide) ; «?» ===> UN caractère quelconque ; [...] UN caractère quelconque dans l'ensemble défini entre «[» et «]» ; [!...] UN caractère quelconque hors de l'ensemble. Un ensemble est défini par une liste de caractères ([adefgw]) ou un intervalle ([0-9]) ou toute combinaison des deux ([ab0-9a\;]). Par exemple, *.c===> noms suffixés.c IUT de Bayonne/LIUPPA 25 15/09/10

*.[csp]===> noms suffixés.c,.s ou.p [!0-9]*===> noms ne commençant pas par un chiffre Le caractère tilde («~») permet de repérer un nom de connexion : «~» seul pour le répertoire de connexion de l'utilisateur ; ~nom pour le répertoire de connexion de l'utilisateur nom ; Par exemple, ls ~roose/www liste le sous-répertoire WWW de roose. 11.4.4 Variables Il existe sous Shell quelques variables pré-définies : HOME : répertoire de connexion (cd et cd ~ sont égales à cd $HOME) PATH : liste des répertoires de recherche des commandes séparés par «:» L'ordre des répertoires est significatif, ce qui permet le choix de la version d'une commande. 11.4.5 Commandes liées aux processus La commande ps affiche les caractéristiques des processus à un instant donné. Par défaut, ps affiche les processus de l'utilisateur en cours dans le terminal en cours. L option u nom utilisateur permet de connaître l ensemble des processus d un utilisateur La commande pstree permet de visualiser l'arborescence des processus. La commande top permet de visualiser dynamiquement les caractéristiques des processus (l'affichage est actualisé périodiquement). En plus des informations sur les processus, top donne des indicateurs sur l'état du système : occupation de la mémoire, de l'unité centrale... top montre l'évolution de ces indicateurs en «temps réel». Par défaut, une commande s'exécute en avant-plan (en anglais foreground). Par exemple, l'utilisateur saisit date. Le shell crée un processus enfant et attend qu'il se termine. Le processus enfant exécute la commande date. Les processus parent et enfant s'exécutent séquentiellement (l'un après l'autre). Une seule commande est donc exécutée à la fois. Une commande peut aussi s'exécuter en arrière-plan (en anglais background). Par exemple, l'utilisateur saisit date &. Le shell crée un processus enfant et n'attend pas qu'il se termine. Le processus enfant exécute la commande date. Les deux processus, parent et enfant, s'exécutent alors «simultanément». Si l on désire supprimer un processus en cours d exécution (par exemple s il ne répond plus), il est nécessaire de connaître sonr PID (avec la commande PS par exemple). Ensuite, la commande kill forcera sa terminaison en envoyant le signal 9 de destruction (SIGKILL). kill 9 numéro(s) de PID du ou des processus 11.4.6 Autres commandes La commande grep affiche les lignes d'un fichier de texte contenant une expression. Cette commande est très utilisée pour rechercher un mot donné dans un fichier. Pour afficher les lignes contenant le mot elaphe du fichier /etc/hosts : Pour afficher les lignes ne contenant pas elaphe, il faut utiliser l'option -v : La commande sort trie les lignes d'un ou plusieurs fichiers de texte. Par défaut, le tri se fait suivant l'ordre lexicographique. Par exemple, la commande suivante trie le fichier /etc/passwd : IUT de Bayonne/LIUPPA 26 15/09/10