01 - Introduction - Web page of Morgan BARBIER

publicité
.
.
01 - Introduction
.
Morgan Barbier
[email protected]
L2 – S4 2012/2013
.
.
..
0. Administratif
Équipe
pédagogique
.
Membres :
I Morgan Barbier (responsable – S3-352);
I Mariya Georgieva;
Nous contacter :
[email protected]
Séances :
I 8 séances de Cours ;
I 9 séances de TD ;
I 10 séances de TP.
Administratif
1 / 41
Emploi
du temps
.
Cours :
Le mardi 16h00 – 18h00 (Morgan Barbier – S3 049) ;
Groupe 1 et 2 :
TD 1 jeudi 13h45 à 15h15 (Morgan Barbier – S1 113) ;
TP 1 jeudi 16h30 à 18h00 (Morgan Barbier – S1 128) ;
TP 2 vendredi 9h00 à 10h30 (Morgan Barbier – S1 127).
Groupe 3 :
(étudiants SPI et étudiants maths)
TD 2 vendredi 14h00 à 15h30 (Mariya Georgieva – S1 033) ;
TP 3 vendredi 16h00 à 17h30 (Mariya Georgieva – S1 127).
Administratif
2 / 41
Modalités
de contrôle de connaissances
.
Épreuves :
I Un Projet (CC) ;
I Un Examen (E).
Note :
I Note finale du module : F
= 13 CC + 23 E.
Support de cours :
I https://barbierm01.users.greyc.fr/teaching.php
Administratif
3 / 41
1. Système d’exploitation
Le
. programme unique
Principe : couche entre le matériel et les programmes utilisateurs.
. 1. Système d’exploitation
.
.Programmes
.
.Matériel
.Compilation, algorithmique
.Architecture
4 / 41
Le
. programme unique
Principe : couche entre le matériel et les programmes utilisateurs.
. 1. Système d’exploitation
.
.Programmes
.Compilation, algorithmique
.Système d’exploitation
.
.Matériel
.Architecture
4 / 41
Le
. programme unique
Principe : couche entre le matériel et les programmes utilisateurs.
Dans ce cours : aspects utilisation
. 1. Système d’exploitation
.
.Programmes
.Compilation, algorithmique
.API
.Système d’exploitation
.
.Matériel
.Architecture
4 / 41
Problématiques
.
Rôle d’un système d’exploitation :
I Gérer le matériel ;
. 1. Système d’exploitation
.
.
.Matériel
5 / 41
Problématiques
.
Rôle d’un système d’exploitation :
I Gérer le matériel ;
I Fournir une abstraction du matériel (bibliothèques) ;
. 1. Système d’exploitation
.
.Bibliothèques
.
.API
.Matériel
5 / 41
Problématiques
.
Rôle d’un système d’exploitation :
I Gérer le matériel ;
I Fournir une abstraction du matériel (bibliothèques) ;
I Gérer et protéger des processus en parallèles ;
. 1. Système d’exploitation
.
.Process .Process .Process
.Bibliothèques
.
.API
.Matériel
5 / 41
Problématiques
.
Rôle d’un système d’exploitation :
I Gérer le matériel ;
I Fournir une abstraction du matériel (bibliothèques) ;
I Gérer et protéger des processus en parallèles ;
I Permettre la gestion et administration de la machine.
. 1. Système d’exploitation
.
.Process .Process .Process
.Bibliothèques
.
.API
.Matériel
5 / 41
Les
services
.
Présentation :
I Persistance : système de fichier ;
I Temps : processus ;
I Espace : mémoire ;
I Interaction : signaux, synchronisation.
1. Système d’exploitation
6 / 41
Tentative
de définition
.
Système d’exploitation :
Ensemble d’éléments permettant la prise en charge de l’aspect matériel de
l’ordinateur par la présence d’interfaces abstraites et assurant le partage et
la protection de ce matériel.
Exemples :
UNIX, Mac OS X, GNU/Linux, Windows, *BSD, Android, iOS, …
1. Système d’exploitation
7 / 41
2. UNIX and co
Qu’est
ce que UNIX ?
.
Un peu d’historique :
I En 1965, un projet ambitieux de réaliser un système d’exploitation
multi-utilisateurs : Multics (Multiplexed Information and Computing
Service).
I En 1969, Bell Labs se retire du projet. K. Thompson, D.Ritchie initient
un projet de système d’exploitation pour PDP-7.
I En 1973, UNIX est réécrit en C, devient portable et est commercialisé.
I En 1977, un fork apparaît à Berkeley : BSD.
2. UNIX and co
8 / 41
L’explosion
I
.
1970
1980
1990
2000
Time
7.2
FreeBSD
5.0
NetBSD
BSD family
4.5
OpenBSD
BSD (Berkeley Software Distribution)
Bill Joy
SunOS (Stanford)
10 5/09
Solaris (SUN)
Darwin
NextStep
3.3
MacOS X
5.7
Xenix OS
Microsoft/SCO
GNU/Hurd K16
GNU Project
Richard Stallman
Minix
GNU/Linux
Linus Torvalds
2.6.30.1
3.1.3a
Andrew S. Tanenbaum
Unix Time-Sharing System (Bell Labs)
Ken Thompson
Dennis Ritchie (C language)
10
HP-UX
11i v3
AIX (IBM)
6.1
UnixWare (Univel/SCO)
IRIX (SGI)
7.1.4 MP4
6.5.30
System III & V family
2. UNIX and co
9 / 41
L’explosion
II
.
2. UNIX and co
10 / 41
Pourquoi
UNIX ?
.
UNIX
I est un système standardisé,
I est un système répandu,
I a un grand impact historique et pratique,
I dispose de concept fondamentaux simples,
I disposait d’une API concise.
I possède une tradition d’ouverture du code.
2. UNIX and co
11 / 41
Normalisation
.
Il n’existe pas une normalisation d’UNIX mais un ensemble de
normalisations qui disposent chacune de plusieurs versions. En particulier,
on citera :
I POSIX (Portable Operating System Interface) qui normalise les appels
système, les commandes et utilitaires.
I SUS (Single Unix Specication) qui est une famille de normes
recoupant partiellement les normes POSIX et servant de références
pour UNIX.
2. UNIX and co
12 / 41
Respect
des normes
.
Il existe un programme de certification des systèmes d’exploitations. Seuls
ceux conformes à la norme Single Unix Specication ont le droit de porter
officiellement le nom UNIX (actuellement : AIX, HP/UX, Mac OS X, Solaris et
z/OS).
Cependant, un très grand nombre d’autres systèmes offrent un niveau
suffisant de compatibilité. Parmi ceux-ci, il existe en certain nombre de
programmes libres: GNU/Linux, OpenSolaris, NetBSD, FreeBSD,
OpenBSD, …
2. UNIX and co
13 / 41
Modèle
.
Le modèle UNIX incarne un système d’exploitation :
I monolithique : le système se compose d’un seul bloc s’exécutant en
mode privilégié, les utilisateurs interagissent avec lui à l’aide d’appels
système (syscall).
I multi-programmé : les temps d’attentes des appels systèmes ne
bloquent pas tout le système.
I multitâche préemptif : le temps de calcul est partagé entre
processeurs et utilisateurs avec ou sans leur coopération.
2. UNIX and co
14 / 41
Principe
.
.
.Process
.Process
.Process
.…
.Synchrone
.Syscall
.Bibliothèques
.Asynchrone
. 2. UNIX and co
.CPU
.Mémoire
.Disque
.…
.
15 / 41
3. Du programme au processus
Définitions
.
I Programme : ensemble des fichiers textes décrivant un ensemble
d’opérations à effectuer.
I Exécutable : fichier binaire contenant les instructions machine
correspondant aux opérations du programme ainsi que des
instructions pour le charger en mémoire.
I Processus : Exécutable en cours d’exécution sur la machine.
3. Du programme au processus
16 / 41
Du
. code source à l’exécution
.
.fichier.c
Cas des langages compilés :
I le fichier source contient le code
.gcc
du programme ;
I on compile le fichier pour
.fichier.o
produire du code exécutable ;
I on fait le liens avec les fonctions
.ld, as
de bibliothèques (linkage) ;
I on lance le programme.
. 3. Du programme au processus
.fichier
./fichier
17 / 41
Du
. code source à l’exécution
.
.fichier.py
Cas des langages interprétés :
.python
I le fichier source contient le code
du programme ;
I on convertit le langage vers un
.fichier.pic
langage intermédiaire ;
I un interpréteur se charge alors
d’exécuter le source et de gérer
les fonctions de bibliothèques.
. 3. Du programme au processus
.python
18 / 41
4. Utilisation d’appel système
Qu’est-ce
que man ?
.
(u64)barbierm01@ange :~$ man man
MAN(1)
Utilitaires de l’afficheur des pages de manuel
MAN(1)
NOM
man - Interface de consultation des manuels de référence en ligne
...
DESCRIPTION
...
1 Programmes exécutables ou commandes de l’interpréteur de commandes (shell) ;
2 Appels système (Fonctions fournies par le noyau) ;
3 Appels de bibliothèque (fonctions fournies par les bibliothèques des programmes) ;
4 Fichiers spéciaux (situés généralement dans /dev) ;
5 Formats des fichiers et conventions. Par exemple /etc/passwd ;
...
4. Utilisation d’appel système (exemple)
19 / 41
Times
en C
.
TIMES(2) Manuel du programmeur Linux
TIMES(2)
NOM
times - Obtenir les statistiques temporelles du processus
...
DESCRIPTION
La fonction times() stocke les durées statistiques du processus
en cours dans la structure struct tms pointée par buf. La structure
struct tms est définie ainsi dans <sys/times.h> :
struct tms {
clock_t tms_utime ; /* durée utilisateur
*/
clock_t tms_stime ; /* durée système
*/
clock_t tms_cutime ; /* durée utilisateur des fils */
clock_t tms_cstime ; /* durée système des fils */
...
CONFORMITÉ
SVr4, BSD 4.3, POSIX.1-2001.
4. Utilisation d’appel système (exemple)
20 / 41
Python
os.times
.
Documentation
>>> import os
>>> help(os.times)
Help on built-in function times in module posix :
times(...)
times() -> (utime, stime, cutime, cstime, elapsed_time)
Return a tuple of floating point numbers indicating process times.
>>> os.times()
(0.040000000000000001, 0.02, 0.0, 0.0, 18191555.66)
4. Utilisation d’appel système (exemple)
21 / 41
En
. shell
Utilitaire times:
(u64)barbierm01@ange :~$ help times
times : times
Display process times.
Prints the accumulated user and system times for the shell and all of its
child processes.
Exit Status :
Always succeeds.
(u64)barbierm01@ange :~$ times
0m0.180s 0m0.050s
0m1.630s 0m0.470s
4. Utilisation d’appel système (exemple)
22 / 41
Des
erreurs
.
Dans certains cas, les appels système peuvent échouer (arguments
invalides, périphérique indisponible, …). L’appel retourne alors une valeur
particulière (langage C, shell, …) ou lève une exception (python, ...). Ces
comportements sont décrits dans les pages de manuel des appels
systèmes.
Exemple : Extrait de man 2 chdir
ERREURS
Suivant le type de système de fichiers, plusieurs erreurs peuvent être
renvoyées, les plus courantes pour chdir() sont les suivantes :
EACCES L’accès n’est pas autorisé sur un élément du chemin path. (Voir
aussi path_resolution(7).)
...
4. Utilisation d’appel système (gestion d’erreur)
23 / 41
Et
. des hommes
Méthodologie :
Lors de l’utilisation d’un appel système, il faut vérifier le bon déroulement de
l’appel et gérer les erreurs.
4. Utilisation d’appel système (gestion d’erreur)
24 / 41
Erreurs
en C
.
La norme POSIX utilise errno
Principe :
Lorsqu’un appel système rencontre une erreur, il positionne la valeur de la
variable errno et retourne avec une valeur définie (en général −1). Il est
alors possible d’afficher un message d’erreur avec le fonction perror.
#include <errno.h>
#include <stdio.h>
void perror(const char *s) ;
4. Utilisation d’appel système (gestion d’erreur)
25 / 41
Erreurs
en C
.
Exemple :
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
...
if (chdir(”toto”) != 0)
{ /* En cas d’erreur */
perror(”chdir a échoué”) ;
exit(-1) ;
}
/* suite du programme */
...
4. Utilisation d’appel système (gestion d’erreur)
26 / 41
Erreurs
en shell
.
Principe : En cas d’erreur, le programme affiche un message sur la sortie
d’erreur et renvoie une valeur particulière (en général une valeur différente
de 0).
Exemple :
(u64)barbierm01@ange :~$ ls toto
ls : impossible d’accéder à toto : Aucun fichier ou dossier de ce type
(u64)barbierm01@ange :~$ echo $ ?
2
4. Utilisation d’appel système (gestion d’erreur)
27 / 41
Erreurs
en python
.
Principe :
En cas d’erreur, un appel système retourne une exception. Ce système est
basé sur le principe de la variable errno.
Exemple :
from os import *
import errno
...
try :
os.chdir(”toto”)
except OSError as err :
print(”Erreur chdir :”,err)
# gestion de l’erreur
...
4. Utilisation d’appel système (gestion d’erreur)
28 / 41
5. multi-utilisateurs
Une
machine / plusieurs utilisateurs
.
Sur une machine, il peut y avoir plusieurs utilisateurs. Chacun dispose d’un
identifiant uid.
Il existe également des groupes. Chaque groupe possède également un
identifiant unique : le gid.
Chaque utilisateur peut appartenir à plusieurs groupes. En shell, il est
possible de connaître ces informations à l’aide de la commande id.
Exemple :
(u64)barbierm01@ange :~$ id
uid=55537(barbierm01) gid=2001(personnels)
groupes=24(cdrom),25(floppy),29(audio),44(video),...
5. multi-utilisateurs
29 / 41
Droits
.
I Les utilisateurs peuvent correspondre à des personnes physiques (ex :
vous) ou à des service (ex : www pour le serveur web).
I À chaque utilisateur et chaque groupe sont associées des permissions.
I Il existe un super-utilisateur qui possède tous les droits. Usuellement,
son nom est root et son uid est 0.
I Dans un système UNIX, ces permissions sont mises en place par
l’intermédiaire du système de fichier. Nous verrons cela plus tard.
5. multi-utilisateurs
30 / 41
Accès
à distance
.
Principe :
I Il peut y avoir plusieurs claviers / écrans reliés à un même ordinateur
permettant ainsi à plusieurs personnes de l’utiliser simultanément. On
parle alors de client léger.
I Il est également possible de se connecter à un ordinateur à distance
par exemple à l’aide de la commande ssh.
Remarque :
Il est important de ne pas éteindre les machines mais uniquement de se
déconnecter (logout) via exit.
5. multi-utilisateurs
31 / 41
6. shell
Interaction
avec l’ordinateur
.
Il est possible d’interagir avec l’ordinateur à l’aide de plusieurs
périphériques :
I clavier;
I souris;
I tablette;
I micro;
I …
6. shell
32 / 41
Présentation
des programmes
.
Il existe deux types principaux d’interfaces :
I interface en ligne de commande : l’utilisateur entre des commande
aux clavier, l’ordinateur affiche sous forme de texte le résultat et les
éventuelles questions
I GUI : (Graphical User Interface) l’interface graphique que vous
connaissez sans doute déjà.
6. shell
33 / 41
Le
. shell
Principe :
Le shell est un programme d’une interface en ligne de commande
permettant de lancer n’importe quel programme et de tout faire.
Et même le café :
La plupart des shell fournissent de nombreuses fonctionnalités
additionnelles :
I complétion ;
I facilité de rappel ;
I facilités de programmation ;
I raccourcis d’éditions ;
I …
6. shell
34 / 41
Un,
deux, trois, ...
.
Il existe de nombreux shell :
I sh : le shell historique et normalisé par les normes UNIX ;
I csh : un shell munie entre autre de facilités de programmation basées
sur le langage C ;
I ksh : est une “évolution” de csh ;
I bash : (Bourne again shell) un shell courant et assez évolué ;
I dash : (Debian Almquist shell) un shell plus minimaliste et qui tente
d’être proche de la norme POSIX.
6. shell
35 / 41
Commande
.
Dans un shell, on rentre des commandes.
Exemple :
(u64)barbierm01@ange :~$ls -l -h /bin /var
Les éléments de la commande sont appelés arguments et numérotés à
partir de 0. Usuellement, les arguments commençant par des signes - sont
des options de la commande et modifient son comportement.
6. shell
36 / 41
7. Contenu du cours
Cours
.
Dans ce cours, on parlera principalement des objets suivants :
I Shell : bash
I Système d’exploitation : GNU/Linux
CaLviX : association de défense et de promotion des logiciels libres du
Calvados.
http://www.calvix.org/
7. Contenu du cours
37 / 41
Cours
(suite)
.
Au niveau du système d’exploitation, les cours seront organisés autour des
concepts suivants :
I Système de fichier ;
I Processus :
I Mémoire ;
I Signaux ;
I Synchronisation.
7. Contenu du cours
38 / 41
Cours
(méthode)
.
La présentation des appels système se fera principalement en insistant sur
les concepts et à l’aide des langages suivants :
I En C
I En python
I Par l’intermédiaire des utilitaires.
7. Contenu du cours
39 / 41
TD
. / TP
TD :
I Utilisation des appels systèmes ;
I Manipulation des concepts.
TP :
I Programmation de scripts shell ;
I Un peu de python ;
I Un projet à réaliser.
Début des TDs/TPs à partie de la semaine 3 : semaine du 21 janvier.
7. Contenu du cours
40 / 41
Prochaine
Séance
.
PAS de Cours magistral la semaine prochaine !
À mardi 22 janvier !!
7. Contenu du cours
41 / 41
Téléchargement