Un bref historique d’Unix (et quelques anecdotes !) Evolution : 70 : Ken Thompson, Davi Ritchie (Bell tel ; ATT) 75 : Unix V6 (multiprogrammation, C) ; V7 (commercialisation) situation en 84 : système V (Bell), BSDC (Berkeley) université Années 90 : _ efforts de normalisation _ système ouvert Il est facile de rajouter des choses et de savoir où sont les sousprogrammes. _ unix, TCP/IP, X-windows système de fenétrage _ Linux (91) (V6 = 1E système multitaches : plusieurs ordinateurs qui ont accès à tour de rôle) Efforts de normalisation : 93 : Novel (important distributeur de services réseaux) vend Unix à X/Open : X/Open donne le label « unix » mais impose des tests 93 : « un nouveau pas vers un Unix unifié » (01 informatique) : 3 organismes (X/Open, OSF, Unix International) soutenus par 60 fournisseurs s’accordent sur un ensemble d’API communes normes POSIX (pas de normalisation au niveau du noyau) 95 : HP et Sun s’accordent sur un Windows manager (gestionnaire de fenêtres : graphique + souris) commun. Effort de normalisation : situation Pas de standard Pas de normalisation du noyau Mais : _ efforts de convergence, de compatibilité _ norme POSIX _ amélioration de l’interface utilisateur OSF (organisme dont le seul but est de faire des normes) _ Open Software Foundation _ Créé en 88 par 7 constructeurs _ Rôle : « interface » des application, évolution du système, standards publics _ Domaine : réseau, OS, langage de programmation, UI (User Interface), graphique, BD _ Intérêts : OSI, TCP/IP, ftp, telnet, POSIX, X/Open, C, Cobol, Basic, Fortran, Ada, Pascal, Common-Lisp, X_Windows, GKS, PHIGS, ANSISQL. Différents UNIX : Sun (Solaris) un des meilleurs unix proffessionnel payant Hewlett Packard 1 Silicon Graphics MINIX (le 1E logiciel Unix gratuit) Linux (http://www.linux.org/) _ Linux is Unix ; tendance : sur ensemble d’Unix _ Créé par Linux Torvalds en 91, amélioré par messages dans les news _ Initialement : pour PC (Intel 386), actuellement (2.2) : X 86, SPARC, Alpha, Ultra, m68k, Pwer PC, Palm Pilot, bientôt : « pour presque tout » _ De nombreux logiciels de développement gratuit (freeware) emacs, latex, gcc GNU(stallmann : http //www.gnu.org) _ Distributeurs : Redhat (Mandrake), slackware, Debian.. operating system = système d’exploitation multitasking = multitaches Pourquoi apprendre Unix (Linux) ? Au pire apprentissage d’un système « pro » : boîte de verre Au « mieux » : Linux OS de demain Abandon de Windows par MS : mythe ou réalité ? Quelques faits « techniques » _ Unix intrinsèquement adapté au réseau ( remote sous windows) _ Retard de convivialité pratiquement comblé : Star Office, KDE, Borland, environnements de programmation _ Linux embarqué (auto-radio à l’ESSI) _ sources permettent la recompilation d’un petit noyau spécialisé _ même SE pour développement et embarquement Quelques faits « financiers » et industriels : Ventes de Linux : 50% des serveurs Internet sous Appache HP maintient Linux Redhat : investissement, accords, valeur boursières Investissement de Intel dans RedHat Gros clients : chaîne d’hotels américaines, gestion Ikea Nouveaux amis : Netscape, Orade, IBM, Novell.. Voire la tirelire 1998 sous http://Iwn.net 2 Les systèmes d’exploitation en général 1) 2) 3) 4) 5) 6) Introduction Les communication inter-processus Le système de fichiers Gestion de la mémoire Les entrées / sorties Langages de commande (le shell, bash étudié en TP) Introduction : 1) qu’est-ce qu’un SE ? Un système d’exploitation pour quoi faire ? pour contrôler les ressources (ex : mémoire, périphérique) pour fourbir le base des programmes d’application une machine virtuelle pour : cacher la complexité du bas niveau faciliter la programmation une répartition des ressources pour : l’allocation des mémoires le partage et l’échange d’information la protection des individus l’élaboration de statistique, de mesures, .. Réservation jeux Compilateur éditeur interpréteur de commande Système d’exploitation Langage machine Micro programme Dispositif physiques Composition d’un ordinateur 2) différents types de SE : les systèmes mono-utilisateurs une machine virtuelle pour un ordinateur le process Control contrôle d’un processus industriel les systèmes d’interrogation de fichiers interrogation de grands ensembles de données les systèmes transactionnels mise à jour très fréquente de données les systèmes généralistes 3 grands nombre d’utilisateurs 3) Concepts : communication entre SE et programmes effectuée par des appels systèmes appels système modifient les processus les fichiers _ Un processus est un programme en exécution qui peut : être interrompu par le SE créer un ou plusieurs processus fils communiquer avec d’autres processus _ Les fichiers peuvent être : classés dans des répertoires créés , modifiés, déplacés, effacés , en accès protégé _ les appels systèmes permettant de : créer des processus gérer la mémoire lire, écrire des fichiers réaliser des entrées/sorties _ l’interrupteur de commandes assure : la communication entre utilisateur et SE la réalisation des appels systèmes Expressions régulières : _ grep trombe /etc/passwd motif fichier trombe : X : 167 : 100 _ man regexp Expression atomiques : (un seul caractère) caractère non spécial remplacé par lui-m^me ‘.’ n’importe quel caractère sauf fin de la ligne [x12(] n’importe quel caractère dans l’ensemble entre [ ] [^x12] ... de [ ] \<caractère_spécial> <caractère_spécial> [ :digit :] [ :upper :] (une lettre majuscule) 4 Expression régulières II Soit : _ une expression atomique _ une expression atomique suivre de * : [12]* remplacement de A de 0 à + fois Language de commande sous Unix : _ mode interactif ou langage de programmation _ 2 grandes catégories : bourne-shell système V (sh, ksh, zsh, bash) C-shells de Berkeley (csh, tcsh) _ différences sur l’utilisation des commandes (options) plus que sur les commandes spécifiques aux langages (structures de contrôle : while) _ Liste dans /etc/shells Expressions régulières : caractères spéciaux _ certains caractères ont un sens particulier au sein d’un motif . Ce sont les caractères spéciaux ou méta-caractères : [ .* _ D’autres ont une interprétation spéciale selon le contexte : Car ] ^ $ \ Rôle ] ou fin d’ensemble - ou intervalle ^ ou début de ligne ou complément ensembliste $ ou fin de ligne \ ou annulation Contexte spécial Derrière un [ Entre[ ].. Début de motif ou après Fin de motif Partout sauf entre [ ] Expression régulières atomiques : _ Expression qui remplace un seul caractère un caractère non spécial un caractère spécial précédé de \ le caractère spécial . : remplace tout motif d’un caractère une expression de la forme [ :<class> :] par ex : [ :digit : ] (chiffres) [ :uppers :] (majuscules) ; [ :alnum :] (chiffres + lettres) Expression régulières (ER) _ expression régulière atomique _ ER atomique suivie de * : 0 ou n occurrences de l’ER atomique en question _ concaténation (mettre bout à bout, à la suite) de 2 expressions régulières _ \(<sous-expr>\) : moyen de repérage de la sous-expression sous-expr dans l’ER d’appartenance _ \<entier> : : désignation de la <entier> -ième sous-expression entre \(\) avec <entier> [1..9] _ <expr-atomique>\{<i>,<j>\} : k occurrences de <expr-atomique> avec k [<i>,<j>] 5 exemple : [a - ZA – Z0 – 9 ] : un caractère alphanumérique ([i alnum :]) [ - ^[ ] : un des 3 caractères parmi -, +, ^,[ ^[ a-z]\{3\}[^a-z]\{3\}$] ^\(.*\)\1\1$ notions sur commande sed _ commande Unix _ syntaxe en bref : sed –e <commande-sed> <fichier> _ principe : pour toute la ligne l de <fichier> faire : ligne résultat <commande –sed> (1) afficher ligne résultat fin pour commande sed : exemple : 1,$s/^.*[ss]exe$/^amours$/ sed –e signifie : _ sur n’importe quelle ligne 1 de la première à la dernière _ substitution _ si 1 se termine par « sexe » ou « sex » alors retourner la ligne « amours » notion de processus : _ les processeurs : permettent aux ordinateurs d’effectuer plusieurs tâches à la fois peuvent passer rapidement d’un processus à un autre à la suite d’interruption. processus D C B A Temps les processus : les programmes qui s’exécutent vitesse d’exécution non uniforme hiérarchie entre processus 6