1 Questions de cours (6 points) 2 Shell UNIX (2 points)

Transcription

1 Questions de cours (6 points) 2 Shell UNIX (2 points)
Université Pierre Mendès France
U.F.R. Sciences de l’Homme et de la Société
Master ICA – Spécialités IHS – AST
19.12.2006
UE Systèmes et Réseaux
Examen de Systèmes
Durée : 1h30
Documents autorisés
Si vous avez un doute sur la syntaxe d'une commande où sur le caractère qui remplit un certain
rôle dans le langage de commande, utilisez votre propre syntaxe, ou un autre caractère, mais
ajoutez un commentaire explicatif.
1 Questions de cours (6 points)
1.1 – Base de Registres
a) Expliquez brièvement le rôle et le contenu de la base de registres dans les systèmes
Windows.
b) Quand est modifiée la base de registres ? Donnez deux exemples de situations où la base
de registres est modifiée.
c) Donnez un exemple de situation dans laquelle vous modifiez la base de registre sans passer
par la commande regedit.
1.2 – Processus
a) Qu’est-ce qu’un processus ? Quelle différence y a-t-il entre un programme et un processus ?
b) Donner le graphe des états d’une tâche s’exécutant sur une machine mono-processeur et
décrire en quelques mots chaque état et chaque transition.
c) Qu'est-ce qu'un changement de contexte ? Par quoi est-il déclenché et quelles sont les
opérations effectuées à cette occasion ?
2 Shell UNIX (2 points)
Analyser la session suivante :
[toto@prevert essai]$ cat rep/f1
bonjour,
au revoir
[toto@prevert essai]$ cat rep/f2
hello
goodbye
[toto@prevert essai]$ ls rep
ls: rep: Permission non accordée
On suppose que pendant cette séquence aucune action extérieure ne perturbe le système ;
répondre aux questions suivantes :
a) Quels sont les droits d'accès du répertoire rep ?
b) Quel pourrait être le résultat de la commande ls -l rep/f1 ?
c) Quel pourrait être le résultat de la commande ls -l . ?
Examen Système Master ICA – IHS et AST
Page 1 sur 3
3 Fichiers de commande Windows (5 points)
On souhaite écrire un fichier de commande Windows pour d’installation d’un logiciel simple,
avec enregistrement des paramètres du logiciel dans la base de registre. Les fichiers
nécessaires à l’installation du logiciel sur un cd-rom, dans le répertoire \Install.
La commande d’installation à réaliser, est à placer sur le répertoire racine de ce même cd-rom.
L’installation se fait en deux étapes :
1) copie des fichiers du répertoire \Install du cd-rom vers le répertoire par défaut :
%programfiles%\nom_editeur\nom_du_logiciel ;
la
variable
d’environnement
programfiles contient le répertoire d’installation par défaut des logiciels (en général
C:\Program Files )
2) modification de la base de registre à partir d’un fichier de suffixe .reg à créer, portant le nom
du logiciel à installer, et contenant deux paramètres du logiciel : son répertoire d’installation et
le nom complet du programme principal. La clé d’enregistrement des ces paramètres dans la
base de registre est calculée à partir du nom du logiciel et du nom de l’éditeur de ce logiciel.
Par exemple, pour l’installation du logiciel PowerDVD de la société Cyberlink, le fichier
PowerDVD.reg serait le suivant :
[HKEY_LOCAL_MACHINE\SOFTWARE\CyberLink\PowerDVD]
"InstallPath"="C:\Program Files\CyberLink\PowerDVD"
"Main"="C:\Program Files\CyberLink\PowerDVD\PowerDVD.exe"
L’enregistrement des informations de ce fichier dans la base de registre se fait par la
commande : regedit /s PowerDVD.reg
a) Écrire le fichier de commande inst.bat qui copie les fichiers du cd-rom vers le répertoire
d’installation %programfiles%\nom_editeur\nom_du_logiciel. Si ce répertoire n’existe
pas, la commande crée ce répertoire. Si celui-ci existe, la commande détruit les fichiers qui s’y
trouveraient. Cette commande a 2 paramètres : le nom du logiciel et le nom de l’éditeur.
Exemple : inst CyberLink PowerDVD
Cette commande crée le répertoire C:\Program Files\CyberLink\PowerDVD (ou vide son
contenu s’il existait déjà) puis copie y les fichiers du logiciel PowerDVD depuis le cd-rom.
b) Écrire le fichier de commande creerreg.bat qui crée le fichier nom_du_logiciel.reg
dans le répertoire temporaire de Windows (variable d’environnement TEMP) à partir des 3
paramètres suivants : nom du logiciel, nom de l’éditeur, nom du programme principal.
Exemple : creerreg PowerDVD CyberLink PowerDVD.exe
Cette commande crée le fichier PowerDVD.reg dont le contenu est donné ci-dessus.
c) Écrire la commande install.bat qui, en faisant appel aux commandes précédentes,
installe le logiciel, crée le fichier de registre, enregistre ses paramètres dans la base de registre,
puis détruit le fichier registre créé et affiche un message indiquant que l’installation est
terminée.
4 Fichiers de commande Unix (4 points)
- la commande ps –fU username affiche en format long tous les processus de l’utilisateur
username
- La commande kill –KILL pid1 pid2 … pidN permet d’arrêter les processus dont le
numéro est pid1, pid2 … pidN
- la commande test –z chaine renvoie vrai si chaine est vide et faux sinon.
Examen Système Master ICA – IHS et AST
Page 2 sur 3
- la commande echo affiche simplement ses paramètres sur la sortie standard.
- la commande fgrep permet d’effectuer la recherche d’une chaîne de caractère dans un ou
plusieurs fichiers, sa syntaxe est : fgrep "chaine_a_chercher" fic1 fic2 … ficN
Si aucun fichier n’est donné en paramètre, fgrep effectue la recherche sur son entrée
standard. fgrep affiche toutes les lignes des fichiers concernés contenant
chaine_a_chercher.
- la commande cut permet d’effectuer une projection (au sens des bases de données) sur des
lignes de texte, la syntaxe utile pour ce qui suit est :
cut –c pos1-pos2 fic1 fic2 … ficN
pos1 et pos2 sont respectivement les positions des premiers et derniers caractères à garder
dans la ligne. Si aucun fichier n’est donné en paramètre, cut effectue la projection sur les
lignes de son entrée standard.
a) Donner une commande Unix permettant de garder dans un fichier commandes une trace de
tous les processus actifs d’un utilisateur donné.
b) Faire un script shell permettant d’afficher la liste des numéros de processus (PID) d’un
utilisateur donné. Dans la liste des processus affichés par la commande ps, les PID sont dans
la tranche 10-14.
c) Faire un script shell, baptisé deconnecter, qui a en paramètre le nom d’un utilisateur et qui
arrête tous les processus actifs de cet utilisateur s’il y en a, ou qui affiche un message d’erreur
sinon. Dans la liste des processus affichés par ps, les PID sont dans la tranche 10-14. On
commencera par ranger dans une variable proc la liste des processus de l’utilisateur, ppuis on
détruira les processus contenus dans cette variable.
5 Processus Unix (3 points)
Soit le programme C++ / Unix suivant :
void main()
{ pid_t id;
id=fork();
if (id == 0) fils1();
else
{ id=fork();
if (id == 0) fils2();
else pere();
}
}
void pere(void)
{ wait(NULL); printf("Il s’est passé un truc ?\n");
wait(NULL); printf("Tiens, encore un truc !\n");
}
void fils1(void)
{ sleep(1); printf("Fils1, bonjour\n");
}
void fils2(void)
{ sleep(5); printf("Fils2, bonjour\n");
}
Faire la trace d'exécution de ce programme : écrire ce qu'il va afficher sur l'écran, dans le bon ordre, en
justifiant votre réponse.
Examen Système Master ICA – IHS et AST
Page 3 sur 3