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