Telechargé par bolto

Partiel 2018

publicité
Initiation aux systèmes d’exploitation - 2I010
Partiel du 16 mars 2018
Numéro d’anonymat :
L’annexe shell est le seul document autorisé pendant l’épreuve
Téléphones portables, baladeurs et autres appareils électroniques doivent être éteints.
Le barème n’est donné qu’à titre indicatif, pour vous permettre de juger de la difficulté des questions.
Attention : l’énoncé est imprimé recto-verso sur 7 pages.
Hypothèse pour l’ensemble de l’examen : Pour simplifier, si les questions n’indiquent pas le
contraire, on supposera que tous les exécutables sont bien présents dans les répertoires de travail et que
les droits nécessaires à leurs exécutions sont attribués à l’ensemble des utilisateurs.
Exercice 1 : Questions de cours (6,5 points)
Question 1 – 2 points
Dessinez, tel que présenté au début de chaque cours, l’ensemble de la mémoire d’un processus en indiquant
ses différentes zones, les registres spéciaux, ainsi que l’ensemble des données de l’OS permettant de gérer le
fonctionnement de ce processus.
1
L2/S3 - 2016/2017
Initiation aux systèmes d’exploitation - 2I010– Examen – page 2/7
Question 2 – 0,5 point
Du point de vue d’un système d’exploitation à quoi correspond l’état bloqué ?
Question 3 – 1 point
Donnez 4 raisons différentes pour qu’un processus passe à l’état bloqué.
Question 4 – 1 point
Faites 3 chronogrammes illustrant la différence entre les trois utilisations d’un script shell suivantes. Vous
supposerez ici que ces trois commandes sont faites sur un ordinateur n’ayant qu’un seul cœur de calculs :
1. ./monScript.sh
2. ./monScript.sh &
3. source ./monScript.sh
By Julien SOPENA [email protected]
24 juin 2018
L2/S3 - 2016/2017
Initiation aux systèmes d’exploitation - 2I010– Examen – page 3/7
Question 5 – 0,5 point
Outre la volatilité des données, quelle différence y a-t-il entre un disque ssd et de la mémoire vive
(RAM) ?
Question 6 – 0,5 point
Pour quel(s) signal(aux) ne peut-on pas redéfinir le handler à l’aide la commande trap ?
Question 7 – 0,5 point
Quelle différence y a-t-il entre un système fonctionnant en mode batch et un système fonctionnant en
mode temps partagé ?
Question 8 – 0,5 point
Quel est l’affichage produit sur le terminal par le lancement du script ./shell_1.sh ? Justifiez votre
réponse.
shell_2.sh
shell_1.sh
shell_3.sh
#! /bin/bash
#! /bin/bash
./shell_2.sh > /tmp/un_fichier &
echo "Hello 1"
./shell_3.sh &
echo "Hello 2"
By Julien SOPENA [email protected]
#! /bin/bash
echo "Hello 3"
24 juin 2018
L2/S3 - 2016/2017
Initiation aux systèmes d’exploitation - 2I010– Examen – page 4/7
Exercice 2 : Mise à jour des droits (7 points)
Dans cet exercice, on veut implémenter un service de mise à jour des droits des fichiers d’une liste de
répertoires.
Question 1 – 2,5 points
Pour commencer, implémentez un script maj_droits.sh qui modifie les droits des fichiers (et seulement
des fichiers) du répertoire courant (sans entrer dans les sous-répertoires) en donnant tous les droits au
propriétaire, les droits en lecture seule au groupe et aucun droit pour les autres utilisateurs. Ce script devra
retourner en fin d’exécution le nombre de fichiers trouvés.
Question 2 – 2,5 points
Implémentez maintenant un script lanceur_seq.sh qui prend en paramètre un ensemble de répertoires
et lance de façon séquentielle le script maj_droits.sh sur chacun d’eux. Une fois l’ensemble de ces tâches
terminées, il affichera la somme totale des fichiers trouvés par les différents processus.
Votre script devra ignorer tout paramètre qui n’est pas un repertoire.
By Julien SOPENA [email protected]
24 juin 2018
L2/S3 - 2016/2017
Initiation aux systèmes d’exploitation - 2I010– Examen – page 5/7
Question 3 – 2 points
Implémentez maintenant un script lanceur_concurrent.sh qui va lancer de façon concurrente la mise à
jour des droits sur l’ensemble des répertoires passés en paramètre. Puis afficher le message "Tout est fini"
lorsque tous les processus ont terminé leur traitement.
Attention, vous n’avez pas ici à afficher la somme des fichiers traités par les différents processus.
By Julien SOPENA [email protected]
24 juin 2018
L2/S3 - 2016/2017
Initiation aux systèmes d’exploitation - 2I010– Examen – page 6/7
Exercice 3 : Le compte est bon ... ou pas (7 points)
Question 1 – 5 points
Implémentez deux scripts lecteur.sh (dont le rôle sera de lire des entrées sur le clavier) et compteur.sh
(dont le rôle sera de compter les lectures). Le fonctionnement précis de ces deux scripts doit être le suivant.
Le script lecteur.sh va commencer par créer un fichier /tmp/receptions.txt vide, puis par lancer le
script compteur.sh. Il va ensuite lire en boucle sur son entrée standard des chaînes de caractères. Chaque
fois que la chaîne lue sera différente de "FIN", il enverra un signal au processus exécutant compteur.sh. Ce
n’est que lorsqu’il lira "FIN" qu’il sortira de la boucle en avertissant compteur.sh de la fin du traitement.
Il attend alors la fin du processus compteur.sh et se termine en retournant le nombre de lignes du fichier
/tmp/receptions.txt. Pour ce faire, vous pouvez utiliser la commande mywc -l xxx qui affiche sur la
sortie standard le nombre de lignes du fichier xxx.
Le script compteur.sh se contente d’attendre les signaux envoyés par lecteur.sh. À chaque réception, il
ajoute une ligne dans le fichier /tmp/receptions.txt contenant : "un signal de plus". Il se termine qu’après
en avoir reçu la demande de lecteur.sh (après lecture de la chaîne "FIN").
By Julien SOPENA [email protected]
24 juin 2018
L2/S3 - 2016/2017
Initiation aux systèmes d’exploitation - 2I010– Examen – page 7/7
Question 2 – 1 point
Avec le fonctionnement précédemment décrit, peut-on vraiment être certain que la valeur affichée correspondra exactement au nombre de lectures (différentes de "FIN") faites par le lecteur ? Justifiez votre
réponse.
Question 3 – 1 point
On considère un fichier mon_texte.txt qui contient une et une seule fois la ligne "FIN".
Sans les modifier, comment peut-on utiliser les deux scripts implémentés précédemment pour afficher
sur la console le nombre de lignes qui se trouvent après la chaîne FIN dans le fichier mon mon_texte.txt ?
On ne tiendra pas compte ici des possibles problèmes de précision de la mesure (valeur retournée par
lecteur.sh considérée comme exacte).
By Julien SOPENA [email protected]
24 juin 2018
Téléchargement