Fiche de TD, Réseaux et SE
Exercice 1 :
1. Lister 4 interpréteurs de commande du système Linux ;
2. A quoi sert la ligne suivante dans un script : #!/bin/bash
3. A quoi servent les éléments suivants : "$#", "$*" "$0"et "$@"
4. Que fait la commande suivante : var3=`ls –l`
5. Que fait la ligne de code suivante : id=`echo $ligne |cut -f3 -d:`
Exercice 2 :
1. Que réalise les lignes de code suivantes : ${var:=texte} ; ${var[*]} ; test -d "$1"
-a ! -L "$1"
2. A quoi servent les variables suivantes : $PATH ; $LOGNAME ; $PWD ;
$SHELL ; $$ et $?
3. Proposer une instruction permettant de changer les valeurs des variables "$1",
"$2", …, "$9"
4. Que réalise la ligne de code suivante : cut -f1,4 -d: /etc/passwd |grep ":$gid$"
|cut -f1 -d: |sort
5. Ecrire un script qui vérifie si l'année courante est bissextile (divisible par 4
mais pas par 100 ; ou divisible par 400).
Exercice 3 : Quelques commandes linux
1. Quel est la différence entre les instructions `readonly` et `readonly pi`. (1 pt)
2. Que fait la commande suivante : Shift 15 (0,5pts)
3. Que fait la commande suivante ? sed -re 'y/éèê/eee/' test.txt (0,5pt)
4. Que réalise la ligne de code suivante :
cut -f1,4 -d: /etc/passwd|grep ":$gid$"|cut -f1 -d:|sort (1 pt)
5. Dire ce que fait chacune des commandes linux suivantes et donnez un exemple
d’utilisation : su, ls, top, passwd, who, cp (3 pts)
6. A quoi servent les variables suivantes : $PATH ; $LOGNAME ; $PWD ;
$SHELL ; $$ et $? (3 pts)
Exercice 4 : Connaissance du système Linux
1. Quel est le nom du programme qui permet de démarrer linux (0,5 pt)
2. Quel est le nom du premier processus qui démarre sur le système Linux, quel est
son PID (0,5 pt)
3. A quoi sert les fichiers : /etc/fstab , /etc/host , /etc/shadow , /etc/initab (2pts)
4. Donnez la commande qui permet de changer le mot de passe de l’utilisateur
« Bernice» (0,5 pt)
5. Que fait la commande suivante : find /home/bel –name \*.txt –size +10k (0,5 pt)
6. Que fait la commande suivante : grep –i –n linux *.txt (0,5 pt)
7. Quel est la différence entre un lien physique et un lien symbolique ? (0,5 pt)
8. Donnez les rôles des répertoires du système Linux suivants : /, /boot, /home,
/mnt, /root, /etc, /dev, /bin (4 pt)
Exercice 5 : Système de fichiers, gestion des droits
On donne le listing suivant:
# ls –lr
---xr--r-- 1 max etudiants 12 Jan 5 18 : 06 fig.sh
drwxr--r-x 3 max etudiants 512 Jan 5 18 : 06 rep
./rep:
-rw-r----- 1 max etudiants 306 Jan 5 18 : 06 fig.txt
drw-----w- 2 max etudiants 512 Jan 5 18 : 06 sous-rep
./rep/sous-rep
1. La ligne concernant le répertoire rep contient un certain nombre d’informations. En
particulier, le chiffre 3 désigne le nombre de liens physiques sur ce répertoire.
A quoi correspondent les autres informations ? (2 pts)
2. Quelle commande doit émettre le propriétaire pour pouvoir modifier le contenu du
fichier fic.sh ? (1 pt)
3. Quels utilisateurs peuvent entrer dans le répertoire rep ? (0,5 pt)
4. Quels utilisateurs peuvent supprimer le répertoire sous-rep ? (0,5 pt)
Exercice 6 : Configuration d’un serveur DHCP
1. Quels sont les fichiers de configuration d’un serveur DHCP ? (0,5 x 2 pts)
2. Quel est le nom du package Linux pour le serveur DHCP ? (0,5 pt)
3. Ecrire la partie du fichier de configuration d’un serveur DHCP nécessaire pour
que l’adresse IP de l’imprimante du laboratoire d’informatique (qui a pour
adresse MAC : 00-22-19-F9-DE-09) soit toujours 192.168.3.3 (1 pt)
4. Pour que le serveur DHCP d’une interface réseau soit dans un réseau différent
du sien, il faut configurer un agent relais. C’est quoi un agent relais ? quel est le
nom du fichier qu’il faut configurer pour le faire fonctionner ? Donnez un
exemple de configuration d’un agent relais ! (0,5 + 0,5 + 1 pts)
5. Quel est l’impact de cette ligne dans un fichier de configuration de serveur
DHCP :
deny unknown-clients (0,5 pt)
6. Que réalise la commande suivante : Ifconfig grep HWaddr (0,5 pt)
7. Pourquoi es ce qu’un serveur DHCP ne peut pas faire office de client DHCP ?
(0,5 pt)
Exercice 7 : Connaissances générales sur les serveurs
1. Donnez la définition et le rôle des protocoles : DHCP, SMB, FTP, SMTP, SSH,
DNS (3pts)
Give the definition and role of the protocols: DHCP, SMB, FTP, SMTP, SSH,
DNS
2. Comment vérifier qu’un client SSH est déjà installé dans une machine ? (0.5pt)
How to verify that an SSH client is already installed in a machine?
3. Quel est la différence entre FTPS et SFTP ? (1 pt)
What is the difference between FTPS and SFTP?
4. Quel est le port par défaut du protocole FTP ? (0.5 pt)
What is the default FTP port?
5. Quels sont les avantages et les inconvénients d’utiliser un serveur X ? (1 pt)
What are the advantages and disadvantages of using an X server?
Exercice 8 : Serveurs Linux
1. Donner la définition, le rôle et les paquets nécessaires pour utiliser les
protocoles suivants : smb, ssh, dhcp. (3 pts)
2. Donnez les entrées permettant à l’utilisateur pepito de partager son repertoire
Musique qui se trouve dans son repertoire personnel aux utilisateurs
appartenant aux groupes gdg, bazar, squeezie. Il n’y a que les utilisateurs du
groupe gdg qui peuvent modifier ou supprimer un fichier du repertoire
partagé. (2 pts)
Exercice 9 : Serveur SSH
1. Quel est le rôle du protocole SSH? (0.25 pt)
2. Quels sont les paquets nécessaires pour procéder à l’installation d’un client et
d’un serveur SSH? (2 x 0.25 pt)
3. Comment vérifier qu’un client SSH est déjà installé dans une machine? (0.25 pt)
4. Donnez le fonctionnement, les avantages et inconvénients du cryptage
symétrique et du cryptage asymétrique. (0.75 x 2 pts)
5. Comment le protocole SSH utilise ces deux méthodes de cryptage? (0.5 pt)
6. Qu’appelle-t-on fingerprint lors du processus d’authentification à un serveur
SSH? (0.5 pt)
7. Quel est le rôle de la passphrase? Quel est la commande qui permet de la
modifier? (2 x 0.25 pt)
Exercice 10 : Serveur Samba
1. Donnez la définition et le rôle du protocole SMB? (2 x 0.25 pt)
2. A quoi sert des composants de Samba suivants: smbd, nmbd, smbclient,
smbpasswd, winbind, smbfs. (6 x 0.25 pts)
3. Où se trouve le fichier de configuration d’un serveur Samba? (0.25 pt)
4. Donnez les entrées permettant à l’utilisateur pepito de partager son repertoire
Musique qui se trouve dans son repertoire personnel aux utilisateurs
appartenant aux groupes gdg, bazar, squeezie. Il n’y a que les utilisateurs du
groupe gdg qui peuvent modifier ou supprimer un fichier du repertoire
partagé. (1.5 pts)
5. Quel est la commande qui permet de vérifier la syntaxe du fichier de
configuration d’un serveur Samba? (0.25 pt)
Exercice 11 : Serveur DHCP
1. Donnez la définition et le rôle du protocole DHCP? (2 x 0.25 pt)
2. Quel est le paquet nécessaire pour l’installation d’un serveur DHCP? (0.25 pt)
3. Le protocole DHCP utilise un processus en quatre étapes pour louer des
informations d’adressage IP aux clients DHCP. Ces quatre étapes sont
nommées en fonction des types de paquets DHCP. Faites une description
détaillée de chacune de ces étapes. (4 x 0.75 pts)
4. A quoi sert dans le fichier /etc/default/isc-dhcp-server l’option INTERFACES ?
(0.25 pt)
Exercice 12 : Recompilation du noyau Linux
1. Citez deux rôles du noyau Linux? (2 x 0.25 pt)
2. Donnez le rôle des commandes suivantes: uname -r; uname -a, uname -s. (3 x
0.25 pts)
3. Quel est la différence entre un noyau Linux et une distribution Linux? (0.5 pt)
4. La version d’un noyau Linux est formée d’une suite de 4 nombres sous la forme
suivante: 2.6.x.y. Que signifie chacun de ces numéros? (4 x 0.25 pt)
5. Qu’est-ce qu’un patch? Quels sont les trois différents types de patch qu’on peut
appliquer à un noyau Linux? (4 x 0.25 pt)
6. L’utilisateur pepito souhaite appliquer le patch 2.6.21.10 sur sa version du noyau
2.6.21. Donnez la procédure permettant d’effectuer cette opération? (0.5 pt)
7. Quels sont les 3 composants d’un noyau Linux? (3 x 0.25 pts)
Exercice 13 : Programmation système en C
1- Quel est le rôle des primitives suivantes : fork, brk, getpid et pipe (0,5 x 4 pts)
2- Qu'affiche le programme suivant si le numéro d'identification du processus main
est 100 et que les processus suivants ont 101, 102,... comme numéros d'identification ?
(2pts)
#include <stdio.h>
#include <stdlib.h>
int main(){
remove ("resultat.txt");
FILE * f = fopen("resultat.txt", "a+");
int ancestor = getpid();
for (int i = 0; i < 2; i++){
int fpid = fork();
switch(fpid){
case 0 :
fprintf (f, "Succès fork(): exécution de %d, fils de %d\n", getpid(), getppid());
return 0;
default :
fprintf (f, "Parent %d très heureux de son fils %d\n", getpid(), fpid);
}
}
Wait (1000);
fclose(f);
if (ancestor == getpid())
system("cat resultat.txt");
}
3- Ce programme n'affiche pas toujours le même résultat. Expliquez de manière
concise ce comportement ? (1 pts)
Exercice 14 : Synchronisation des processus
Le problème étudié est celui de l'exclusion mutuelle entre deux classes de
processus, les processus d'une même classe ne s'excluant pas mutuellement. Pour cela,
on utilise l'analogie suivante : La ligne de chemin de fer Douala-Ngaoundéré est en
travaux. Elle comporte un tronçon à voie unique entre Yaoundé et Bélabo (i.e. il y a
deux voies entre Douala et Yaoundé, une seule voie entre Yaoundé et Bélabo et deux
voies entre Bélabo et Ngaoundéré). La gare de Eséka, entre Yaoundé et Ngaoundéré,
peut stocker deux trains (dans n'importe quel sens) en plus de la voie de circulation.
Les règles de circulation sur la voie unique sont les suivantes :
- Un tronçon à une voie ne doit jamais être emprunté par deux trains allant en sens
inverse entre Yaoundé et Eséka et Eséka et Bélabo. Ces deux tronçons sont
indépendants.
- Un tronçon à une voie peut-être emprunté par un ou plusieurs trains allant dans le
même sens.
- Il n'y a pas de sens de parcours prioritaire.
- La gare de Eséka ne peut pas stocker plus de deux trains.
Les voyages des trains des deux classes sont modélisés avec les fonctions
suivantes:
void Train_Douala_Ngaoundéré () { void Train_Ngaoundéré_Douala () {
parcours_Douala_Yaoundé() ; parcours_Ngaoundéré_Bélabo () ;
depart_Yaoundé() ; depart_Bélabo () ;
parcours_Yaoundé_Eséka() ; parcours_Bélabo_Eséka () ;
attente_YB_a_Eséka () ; attente_BY_a_Eséka () ;
parcours_Eséka_Bélabo() ; parcours_Eséka_Yaoundé() ;
arrive_Bélabo () ; arrive_Yaoundé() ;
parcours_Bélabo_Ngaoundéré () ; parcours_Yaoundé_Douala() ;
} }
Les fonctions de synchronisations pour l'usage des voies sont donc :
depart_Yaoundé(), depart_Bélabo(), arrive_Yaoundé(), arrive_Bélabo(),
attente_YB_a_Eséka(), attente_BY_a_Eséka().
1. Écrire le code avec des sémaphores sans tenir compte de la gare d’Eséka et de son
stockage possible des trains à Eséka. Votre solution pourra être FIFO sur l’ordre
d’accès à la voie unique. Vous pouvez aussi compter les trains dans chaque sens.
(2pts)
2. Écrire le code des fonctions de synchronisations avec des moniteurs. Plusieurs
approches sont possibles. Une des approches est la suivante. Vous pouvez compter
le nombre de trains dans chaque sens sur chaque tronçon avec les variables int
nbYE, nbEB, nbBE, nbEY. Vous pouvez choisir un sens courant identique pour les
deux tronçons. Vous pouvez compter le nombre de train total dans le bon sens. Si
le train au départ n’est pas dans le sens courant, il doit vérifier qu’il a de la place à
Eséka pour le stocker. Si un train est seul sur les voies, il modifie le sens courant.
Vous pouvez n’écrire que les 3 fonctions d’un même sens si votre solution est
symétrique. Mais il faudra définir toutes les variables. (3pts)
Exercice 15 : Ordonnancement des processus
Un SE utilise 3 niveaux de priorité (numérotés par ordre croissant). Un processus
se voit affecter un niveau de priorité fixe. Une file de processus est attachée à chaque
niveau. La file 3 est gérée par un tourniquet avec un quantum de 1 temps, la file 2 est
gérée par un tourniquet avec un quantum de 2 temps, et la file 1 par un SJF non
préemptif. Une file d’un niveau n n'est activé que si toutes les files de niveau supérieur
sont vides.
1. Quel peut être l’inconvénient d’une telle organisation ? (0,5)
2. Dessiner le diagramme Gantt d’exécution des tâches correspondant au tableau
ci-dessous, et calculer le temps moyen d’exécution du système correspondant :
(2pts)
T1 T2 T3 T4 T5 T6 T7
Durée 7 4 6 1 2 4 1
Date d’arrivée 0 0 1 1 1 2 2
Priorité 2 1 1 2 3 1 2
3. Maintenant, on suppose que la priorité n'est pas fixe. Toutes les 2 unités de temps,
tout processus n'ayant pas disposé de l'UC monte d'un niveau, alors que ceux en
ayant disposé 2 fois en descendent. Dessiner le nouveau diagramme Gantt
correspondant et calculer le nouveau temps moyen d'exécution. (2,5pts)
NB : On appelle temps de traitement moyen d'un système de tâches la moyenne des intervalles
de temps séparant la soumission d'une tâche de sa fin d'exécution.
Exercice 16 : Synchronisation des processus à l’aide des moniteurs
Soit le programme suivant proposé pour le modèle des lecteurs/rédacteurs:
Allocation: moniteur
Variables
occupé: booléen;
nb: entier;
Lect, Redac: condition;
Procédure Début-Lecture Procédure Début-Ecriture
{ nb++; { si (occupé ou nb>0) alors Redac.wait
si (occupé) alors Lect.wait; Lect.signal fsi
fsi occupé=vrai;
} }
Procédure Fin-Lecture Procédure Fin-Ecriture
{nb--; {occupé= faux;
si (nb==0) alors Redac.signal fsi si (nb > 0) alors Lect.signal sinon
} Redac.signal fsi
}
1. Discuter la solution proposée en expliquant le rôle de chaque procédure du
moniteur et de chaque variable utilisée, ainsi que la classe de processus prioritaire
(lecteur ou rédacteur). (1,5 pts)
2. Modifier la solution pour donner la priorité à l'autre classe de processus. (1,5 pts)
3. Modifier la solution pour permettre une politique FIFO. (2 pts)
Exercice 17 : Synchronisation des processus à l’aide des sémaphores
Plusieurs variantes des sémaphores simples ont été proposées, parmi ces
variantes nous avons les sémaphores de Patil où la primitive P( ) est définie comme
suit :
P(S1,...,Sk)
Début
Si (∃j tel que Sj.val≤0)
Alors Se bloquer jusqu’à ce que (∀j Sj.val>0)
finsi
Pour j = 1 à k Faire
Sj.val = Sj.val – 1 ;
FinPour
Fin
La primitive V( ) conserve sa définition habituelle.
Reprenons le problème du « dîner des philosophes » où nous avons 5
philosophes qui passent leur temps soit à réfléchir soit à manger autour d'une table
circulaire. Chaque philosophe a devant lui un plat de spaghetti. A gauche de chaque
plat se trouve une fourchette (il y a une fourchette entre 2 philosophes). Un philosophe
doit avoir deux fourchettes pour manger. Un philosophe peut seulement prendre la
fourchette située immédiatement à sa droite et celle située immédiatement à sa gauche.
2- Ecrire le code de la primitive V( ) (1 pt)
3- Quelle est l’avantage des sémaphores de Patil ? (1 pt)
4- Résoudre le problème des cinq philosophes en utilisant les sémaphores de Patil.
(3 pts)
Exercice 18 : Gestion de la mémoire
1. Considérons que notre ordinateur est équipé d’un processeur 64 bits, d’une
mémoire cache associative de 256 lignes, et d’un bus d’adresses de 16 bits.
Chaque ligne de ce cache peut contenir 8 mots (NB : le prefetch est utilisé pour
remplir une ligne entière du cache lorsqu’un mot de cette ligne est sollicité).
a) Quel est le format d’une adresse virtuelle (nombre de bits de chaque
partie) ? (0,5 pt)
b) Considérant la suite d’adresses virtuelles ci-dessous exprimés en
hexadécimale, indiquer (en vous justifiant) celles qui induisent un défaut
de cache (initialement le cache est vide) : (0,5 x 4 pts)
i) 8813 ii) 9031 iii) 881E iv)
8834
c) Quel est la taille de ce cache en nombre de bits ? (en considérant qu’une
ligne contient uniquement les informations d’identification d’une
adresse virtuelle et du mot mémoire correspondant) (0,5 pt)
2. Considérons maintenant que notre ordinateur est équipé d’un processeur 64
bits, d’une mémoire cache à accès mixte de 512 lignes pouvant chacune contenir
16 mots, et d’un bus d’adresses de 16 bits (le prefetch est aussi utilisé).
a) Quel est le format d’une adresse virtuelle (nombre de bits de chaque
partie) ? (0,5 pt)
b) Considérant la suite d’adresses virtuelles ci-dessous exprimés en
hexadécimale, indiquer (en vous justifiant) celles qui induisent un défaut
de cache (initialement le cache est vide) : (0,5 x 4 pts)
i) 8813 ii) 9031 iii) 881E iv)
8834
c) Quel est la taille de ce cache en nombre de bits ? (en considérant qu’une
ligne contient uniquement les informations d’identification d’une
adresse virtuelle et du mot mémoire correspondant) (0,5 pt)
Exercice 19 : Synchronisation des processus
1. Définir de manière claire et très brève le problème des lecteurs rédacteurs (0,5
pt)
2. Apporter une solution (algorithme) à ce problème en utilisant les sémaphores
(1,5 pt)
3. Apporter une solution (algorithme) à ce problème en utilisant les moniteurs (1,5
pt)
4. Apporter une solution (algorithme) à ce problème en utilisant les échanges de
messages (1,5 pt)
5. Citer trois modèles de processus légers et pour chacun d’eux proposer un
schéma illustratif (1 x 3 pts)
Exercice 20 : Ordonnancement de processus
Considérons un ordonnanceur utilisant deux files d’attentes de processus, dans la
première file, il implémente la politique d’ordonnancement Round Robin avec un
quantum de temps de 5 temps processeur. Dans la seconde, il implémente un SJF
préemptif.
▪ Un processus quitte la première file pour la seconde, soit lorsqu’il est bloqué,
soit s’il a déjà reçu deux fois le processeur et n’as pas fini de s’exécuter ;
▪ Un processus quitte la seconde file pour la première lorsqu’il a reçu une fois le
processeur et n’as toujours pas fini de s’exécuter ;
▪ Le temps de changement de contexte est de 2 temps processeur.
Processus Temps d’exécution Temps d’arrivé
P1 13 0
P2 3 5
P3 45 4
P4 9 4
P5 156 5
P6 22 20
Travail à faire :
1. A l’aide de cet ordonnanceur, simuler l’occupation du processeur par ces
processus. Présenter le résultat de séquencement des tâches dans un
diagramme. (1,5 pts)
2. Quel est le temps moyen d’attente des différents processus (1,5 pts)
Supposons qu’il y a une troisième file d’attente pour les processus batch. Un
processus y entre lorsqu’il est déjà passé deux fois dans chacune des files
supérieures. La politique FIFO y est implémenté.
3. Présenter le résultat de séquencement des tâches dans un diagramme (1,5 pts)
4. Quel est le temps moyen d’attente des différents processus (1,5 pts)
Exercice 21 : Inter-blocage
Considérons un ensemble de 3 processus P1, P2 et P3, et un ensemble de
ressources multiples A(A1,A2,A3), B(B1,B2,B3), C(C1,C2) et D(D1).
1. Proposer un graphe d’utilisation de ces ressources par ces trois processus qui
contient un circuit mais qui n’induit pas un inter-blocage (1 pt)
2. Modifier ce graphe pour qu’il induise un inter-blocage (1 pt)
3. A l’aide de l’algorithme du Banquier, montrer que dans le premier cas il n’y a
pas inter-blocage, mais que dans le second il y a inter-blocage (1+1 pts)
4. Ecrire un algorithme montrant comment utiliser un parcours en largeur de
graphe pour détecter un inter-blocage (1,5 pts)
5. En déduire comment utiliser cet algorithme pour prévenir l’inter-blocage (0,5
pt)