Vous êtes sur la page 1sur 62

Master Math-Info - M1 - Programmation scientifique

Chapitre 2 : Environnement de
programmation scientifique (Partie 1)
Guillaume Prévost - UFRST Le Havre
25, rue Ph. Lebon - 76058 Le Havre Cedex
Guillaume.Prévost@univ-lehavre.fr
December 13, 2005

0-0
Master Math-Info : Programmation scientifique

Plan
1. Architecture des ordinateurs
2. Unix - la gestion des fichiers
3. Unix - le shell

1- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

1. Architecture des ordinateurs et des réseaux


Un ordinateur possède l’architecture suivante :

Une unité centrale ou CPU


Une mémoires centrale
Des périphériques

2- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

3- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

1.1 L’unité centrale / CPU


Elle est constituée de plusieurs composants :
des registres élémentaires
un bus de données

un bus d’adresses
un cycle d’horloge

4- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

1.2 Les réseaux


Un réseau est un ensemble de machines reliées entre elles
et pouvant communiquer.
Les fonctions sont les partages de fichiers, de ressources,
la messagerie mais aussi la répartition de traitement /
parallélisme.
On trouve plusieurs topologies :
– Bus linéaire : les stations sont raccordées à un cable,
véritable épine dorsale de communication
– Etoile : un serveur central connecte toutes les stations
– Arborescence (cf. figure)

5- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

6- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

1.3 Architectures monoprocesseurs


Il existe plusieurs types d’architecture
Architecture CISC
– jeux d’instructions élémentaire très riche
– faible nombre de registres
– une instruction complexe s’exécute sur plusieurs cycles
Architecture RISC
– jeux d’instructions réduit
– plus de registres internes
– une instruction de base par cycle
– plus rapide si bien utilisée

7- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

1.4 Architectures à traitement parallèle


Pipeline
Un seul CPU, chaque calcul décimal est sur plusieurs
instructions élémentaires. Les données sont envoyées les unes
derrière les autres sans attendre la fin des calculs.
C B A

8- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Architecture SIMD (Single Instruction, Multiple


Data)
Séquenceur

A B C

On peut ainsi traiter parallèlement et simultanément l’ensemble


des éléments d’un tableau (langage adapté).

9- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Architecture MIMD (Multiple Instruction,


Multiple Data)

A B C

Indépendance des traitements sur les processeurs. On utilise


des librairies de gestion de communications (PVM, MPI)

10- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Avantages / inconvénients du parallélisme


On divise le temps de calcul en fonction du nombre de
processeurs
On ajoute des temps de communication

On doit gérer une répartition des charges entre les


processeurs

11- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Topologie des réseaux des super-calculateurs


La MASPAR (DEC) est du type SIMD

12- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Le CRAY T3D interconnecte des processeurs DEC Alpha


dans une topologie de tore. Une machine frontale gère les
noeuds grâce à une bibliothèque d’échange de messages
(PVM). L’architecture est de type MIMD.

13- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

La CM-5 (Thinking Machine Corp.) propose une


architecture arborescente pouvant focntionner en SIMD ou
MIMD. Cette architecture permet la gestion de la tolérance
au fautes.

14- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Algorithmique du parallélisme

 









t=7
+
t=6
+
t=5 +
t=4 +
t=3 +
t=2 +
t=1 +
t=0 a0 a1 a2 a3 a4 a5 a6 a7

15- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

t=3 +

t=2 + +

t=1 + + + +
t=0 a0 a1 a2 a3 a4 a5 a6 a7

16- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

2. Système d’exploitation - Unix


Un utilisateur intéragit avec un ordinateur par
l’intermédiaire d’une couche logicielle

La couche logicielle se décompose en 2ou 3 parties :


– Généralement une interface graphique (fenêtrée, par
exemple)
– Le programme d’application utilisé
– Le système d’exploitation

17- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

2.1 Rôle du système d’exploitation


Le système d’exploitation a donc plusieurs focntionnalités
Rendre les programmes autant que possible indépendants
des matériels utilisés
Permet l’accès des différents programmes d’applications
aux ressources et périphériques, suivant leur besoin.

Gère les conflits d’accès de plusieurs applications (en


multi-tâches)

18- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

2.2 Unix - un système ouvert


Deux catégories de systèmes d’exploitation

Systèmes propriétaires liés à des machines et proposés par


leur fabriquant

Systèmes ouverts qui proposent des versions adaptables à


diverses configurations matérielles
Unix est un système ouvert qui se déploie aussi bien sur des
mini-calculateur (assistants personnels) que sur des
supercalculateurs.

19- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

2.3 Unix - historique


Né en 1969 dans les laboratoires Bell (K.Thompson puis
D.Ritchie)
70-90 : de nombreuses implémentations dans
l’informatique professionnelle (gros ou mini calculateurs,
stations de travail), HP-UX, Xenix, Digital unix, ... Puis
standardisation.
Linux : version libre (licence GNU) développée de
manière collaborative au niveau mondial (initié par un
étaudiant finlandais, Linus Torsvald). Grande popularité
d’abord pour les ordinateurs personnels puis maintenant
porté sur de nombreuse plateformes

20- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

2.4 Le système Unix - architecture


Un système unix a une architecture en 3 niveaux
Le noyau système (accès aux ressources matérielles)
Des interfaces :
– interpréteur de commandes (shell),
– interface graphique
Un niveau utilisateur :
– librairies
– compilateurs
– programmes utilisateurs finaux

21- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

2.5 Caractéristiques d’Unix


standardisation (POSIX) ... multi-plateforme
multi-taches
multi-utilisateur

mémoire paginée (swap disque)


sécurité : droit limité des utilisateurs courants (virus ...)

22- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Unix - standardisation
La standardisation fait opartie de la philosophie d’unix
Norme POSIX
Protocoles réseaux TCP/IP

Rend le système adaptable à de nombreuses plate-formes et


naturellement intégrable dans des réseaux.

23- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

2.6 Unix- la gestion des fichiers


Sous unix, tout est fichier :
Disque : données et programmes des utilisateurs

Mémoire
Terminal
Périphériques, en général

Entrées/sorties des processus


Pour aller plus loin dans la description, on se référera
essentiellement à Linux.

24- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Organisation des fichiers


Le système de fichiers est arborescent (de type ext2 ou ext3
pour Linux)
/ racine

/bin /usr /etc /lib /tmp /home

/local /etc /bin /pierre /paul

25- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Parmi les différents répertoires, on notera


/bin et /usr/bin : commandes de base

/tmp : fichiers temporaires


/etc : fichiers de configuration du système
/sbin et /urs/sbin : commandes d’administration

/dev : description des périphériques


/home : répertoires utilisateurs

26- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Fichiers : identification
Afin d’assurer la gestion multi-utilisateurs, un fichier esta
attaché à

un utilisateur
un groupe auquel l’utilisateur appartient (permet de gérer
des droits par rapport au groupes d’utilisateurs)

des droits d’accès

27- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Fichiers : droit d’accès


Droits d’accès d’un fichier qui s’affichent par exemple à la
commande "ls -l" ou encore "ll" :
type, droits / liens /propriét. /groupe /taille /date modific./nom
drwxr-xr-x 2 root root 4096 sep 7 19:03 bin
-rw-rw-r– 1 bertelle staff 25887 sep 19 11:15 slides.tex

28- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

La première colonne donne le type du fichier et ses attributs


(lecture, écriture, exécution) pour le propriétaire, son groupe et
les autres :

1er caract. ’d’ ou ’-’ ou ’l’ correspond au type : répertoire


ou fichier simple ou lien symbolique

caractères 2 à 4 : droits du propriétaire


caractères 5 à 7 : droits de son groupe
caractères 8 à 10 : droits des autres

29- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Les 3 caractères de droits sont les suivants, ils sont présents ou


absents (-) :

r : autorisation en lecture
w : autorisation en écriture/modification
x : autorisation en exécution
Dans le cas d’un répertoire, le ’x’ donne le droit de s’y
déplacer.

30- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Pour modifier les droits d’accès au fichier (et à condition d’en


être le propriétaire), on, utilise la commande suivante :

chmod a,u,g,o +,- r,w,x nom du fichier



a (all), u (user), g (group), o (other) désigne les utilisateurs
ciblés

+ ou - désigne l’attribution ou la suppression du droit


r, w, x désigne le droit concerné la commande
nom du fichier désigne le fichier concerné

31- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Commandes de base - résumé


On présente les commandes les plus utiles. Les options
commencent par un ”-”; on peut en général en combiner
plusieurs. Pour plus d’information sur les commandes qui
suivent (notamment les options), utiliser la première décrite
sans réserve ...
man : affiche la page de manuel en ligne.
Exemple : man ls donne la description de la commande
ls
cd : change le répertoire de travail courant.
Exemple : cd .. permet de remonter dans le répertoire
père du répertoire courant

32- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

ls : affiche le contenu du réperoire courant.


Exemple : ls -l affiche le répertoire courant en format
”long” (taille, droit d’accès au fichier, ...).
cp : copie un fichier dans un autre ou dans un répertoire.
Exemple : cp slides.tex .. recopie le fichier
”slides.tex” dans le répertoire père du répertoire courant.

mv : renomme ou déplace un fichier.


Exemple : mv slides.tex .. déplace le fichier
slides.tex dans le répertoire père du répertoire courant.

33- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

rm : supprime des fichiers.


Exemple : rm -R * efface tous les fichiers et les
sous-répertoires de manière récursive (option -R) du
répertoire courant.
mkdir : créé un sous-répertoire.
Exemple : mkdir /tmp/ajeter créé le répertoire
ajeter dans le répertoire /tmp.
rmdir : supprime des répertoires vides.
Exemple : rm /tmp/ajeter supprime s’il est vide, le
répertoire ajeter dans lke répertoire /tmp.
more : affiche le contenu du fichier donné en argument,
un écran à la fois.

34- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

cat : affiche le contenu du fichier donné en argument.


grep : affiche les lignes contenant l’expression
correspondant au premier argument dans le(s) fichier(s)
correspondant à(aux) argument(s) suivant(s).
Exemple : grep local /etc/hosts affiche les
lignes du fichier /etc/hosts qui contiennent l’expression
”local”
find : permet de recherche un fichier.
Exemple :find /home/bertelle -name sl?d*
recherche à partir du répertoire /hoem/bertelle tous les
fichier dont le nom commence par ”sl” aet vec un ”d” en
quatrième caractère.

35- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

3. Unix - le shell
On va développer dans cette partie
3.1 La notion de shell et ses caractéristiques
3.2 La gestion des processus et les redirections des
entrées/sorties
3.3 Les scripts et la programmation du shell

36- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

3.1 La notion de shell et ses caractéristiques


Le shell est l’interface entre le système et l’utilisateur.
C’est l’interpréteur des commandes tapées en ligne.
Il est possible de le modifier avec la commande chsh ...
on consultera ”man chsh”.
Les shells acceptés par le système sont listés dans le fichier
”/etc/shells”
les shells les plus courants (aujourd’hui sous linux) sont le
Bourne shell (sh), le C shell (csh) et le bash shell (bash).
On s’intéresse plus spécifiquement dans la suite au bash
qui est très largement répendu sous linux.

37- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Variables locales et variables d’environnement

Un shell manipule deux types de données


les variables locales (utiles à l’intérieur d’un script)
les variables d’environnement

Manipulation des variables locales


On définit une variable locale par
NOM VARIABLE=valeur variable
ou de manière équivalente
NOM VARIABLE="valeur variable"

38- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

On peut aussi affecter une variable par le résultat d’une


commande, en utilisant le back-quote
NOM VARIABLE=‘commande‘
La commande ”echo $NOM VARIABLE" permet de voir
la valeur attribuée à la variable locale.
La commande set permet de visualiser la totalité des
variables locales
Une variable locale n’est pas reconnu par un script shell ou
un programme externe ... Pour cela on doit utiliser des
variables d’environnement.

39- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Manipulation des variables d’environnement


On la définit en précédent sa déclaration par export ou
en ajoutant ce qualificatif à une variable locale :
export VAR ENV=valeur variable
export MA VAR LOCALE
La commande env permet de visualiser la totalité des
variables d’environnement

40- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Historique et complément de commandes


Un historique des commandes est enregistré, vous pouvez
y accéder avec les flèches hautes et basses.
Un service de complément du nom de commande ou de
fichiers est activée avec l’utilisation de la touche de
tabulation.

41- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Paramétrage du shell
Lorsque vous vous connectez ou lancer un terminal, le
programme de lancement du bash shell va interpréter plusieurs
fichiers :

des fichiers partagés par tous les utilisateurs


/etc/profile et /etc/bashrc,
des fichiers personnels se trouvant sous la racine de votre
compte : .bash profile et .bashrc.
Ces fichiers permettent de fixer des variables ou de lancer
des commandes.

42- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

A la deconnexion, le fichier .bash logout de votre


compte est exécuté.

Vous pouvez éditer et compléter les fichiers de


configuration se trouvant sous votre compte (voire les
créer ...)

43- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

3.2 La gestion des processus et les redirections


des entrées/sorties
Un processus désigne une commande du shell ou un
programme. Il possède un propriétaire qui est l’utilisateur
qui l’a lancé.
Chaque processus est identifié sous unix par son PID
(Processus Identificator)
La gestion des processus est hiérarchisée sous Unix et à
chaque processus, on peut retrouver son processus père,
càd celui qui l’a lancé par le PPID.
La commande ps permet de connaı̂tre la liste des

44- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

processus (et leur PID) dont on est propriétaire et qui sont


actuellement lancés sur la machine.
La commande ps aux permet de connaı̂tre l’ensemble
des processus et ses propriétaires
Un processus peut être lancé en avant plan foreground,
c’est le processus relié à l’entrée et à la sortie standard, ou
en arrière plan background comme tâche de fond.
Pour lancer un processus en tâche de fond, on ajoute le
caractère ’&’ après le nom de la commande.
La commande jobs permet de d’obtenir la liste des
processus en tâche de fond.

45- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

La commande fg permet de passer un processus de


l’arrière plan en premier plan, puis éventuellement de le
stopper en tapant ”CTRL Z”.
La commande bg passe un processus du premier plan en
tâche de fond.
La commande kill mon PID tue le processus dont on a
indiqué le PID.

46- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Redirection des entrées/sorties


Chaque programme unix possède
une entrée standard stdin qui est en général le clavier
une sortie standard stdout qui est en général l’écran

une sortie d’erreur stderr qui est aussi en général l’écran


Exemple : cat slides.tex va afficher le contenu du
fichier slides.tex sur la sortie standard, à savoir l’écran.

47- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

On peut vouloir rediriger ces entrées ou sorties vers des fichiers


(”tout est fichier” sous unix) :

Redirection des sorties.


cat slides.tex > autre.tex va rediriger la
sortie de ”cat” vers le fichire autre.tex : on effectue ainsi
une simple copie du fichier slides.tex dans autre.tex.
Redirection des sorties, avec ajout.
cat slides2.tex >> autre.tex va rediriger la
sortie de ”cat” à la fin du fichier ”autre.tex”, supposé existé
déjà.

48- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Redirection d’un argument de commande vers l’entrée


standard.
cat > montest.txt va prendre l’entrée standard
(saisie au clavier) comme paramètre de ”cat” et rediriger la
sotrie vers le fichier montest.txt. Suite à cette commande,
l’utilisateur tapera du texte jusqu’à taper ”CTRL D”
(interruption de la commande courante), le système
reprendra la main et affichera alors un prompt. Le texte
tapé au clavier se trouve alors dans ”montest.txt”.

49- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Redirection de l’entré standard.


sort est une commande qui trie par ordre alphabétique
(ou par ordre alphabétique inverse avec l’option -r) des
entrées saisies au clavier jusqu’à ”CTRL D”. sort <<
fichier.txt va trier les lignes du fichier donné en
remplacement de l’entrée standard suivant l’ordre
alphabétique de leur premier caractère.
Pipe.
le caractère ” ” sert à connecter la sortie d’une prmeière

commande vers l’entrée d’une seconde.ls sort -r


affiche en ordre alphabétique inverse le contenu du
répertoire courant.

50- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

3.3 Les scripts et la programmation du shell


Scripts shell : Ensemble de commandes écrit dans un
fichier qui s’exécute comme un véritable programme.
Code de retour : est généré par la commande exit suivi de
la valeur de retour. On peut ensuite accéder à cette valeur
grâce à la variable $?.
Passage d’arguments sur la ligne de commande. Ils sont
accessibles par des variables locales :
– $0 correspond au script lui-même
– $1 correspond au premier argument
– $2 correspond au deuxième argument, ...

51- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

– $# correspond au nombre de paramètres


– $* correspond à l’ensemble des arguments
Les fonctions : on peut utiliser des fonctions internes dans
un script shell grâce à l’une des deux déclarations qui
suivent. Une fonction traite les arguments comme le fait
un script shell. Le code de retour est celui qui suit
l’instruction return.
– function nomf commandes;


– nomf() commandes;

52- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Programmation shell : expressions


conditionnelles

Le test : Choix multiple :


if commande case var in
then cas1) commande1
commande1 cas2) commande2
else esac
commande2
fi

53- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

La commande test ou [] sert à évaluer l’expression donnée en


argument :
if test $var = "essai"
if [ $var = "essai" ]
permet de tester la valeur de la variable var.

L’évaluation d’expressions concernant le type et le droit


d’accès des fichiers sont prévues avec l’utilisation
d’options (cf. tableaux en annexe)

54- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Programmation shell : boucles


Boucle ”for” : commandes
for var in liste done
do
Boucle ”until” :
commandes
until commande
od
do
Boucle ”while” : commandes
while commande done
do

55- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Calcul arithmétique
Le calcul d’expressions arithmétiques doivent se faire par
l’utilisation de let. En bash, on ne peut manipuler que des
entiers avec les opérateurs : +,-,*,/,%.

let var=$I\+100

56- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Saisie sur la ligne de commande


Afin de réaliser des scripts interactifs, on peut utiliser la
commande read qui interrompt le programme pour demander
une saisie.
read A
echo $A

57- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

Exemple
Le programme suivant prend deux extensions de fichiers en
arguments et il modifie les noms de tous les fichiers du
répertoire courant ayant la première extension en des fichiers
identiques ayant la seconde extension.

58- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

#!/bin/sh
if [ $# -ne 2 ]
then
echo "syntaxe rename ext1 ext2"
exit 1
fi
EXT1=$1
EXT2=$2
for I in *.$EXT1
do
mv $I ‘basename $I .$EXT1‘.$EXT2
done

59- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

4. Edition avec Emacs


Cf. ”Tutorial pour Emacs, pour le programmeur” de Yoann
Padioleau

60- G. Prévost @ Université du Havre


Master Math-Info : Programmation scientifique

5. Publier avec LaTeX


Cf. ”Une courte introduction à LaTeX” par Tobias Oetiker

61- G. Prévost @ Université du Havre