Vous êtes sur la page 1sur 9

FACULTE DES SCIENCES UNIVERSITE DE DOUALA

DEPATEMENT DE MATHEMATIQUES-INFORMATIQUE

IN551 : SYSTEMES D’EXPLOITATION


TRAVAUX DIRIGES ET PRATIQUES – FICHE 3

EXERCICES

1. Donner 5 chemins d’accès différents pour le fichier /etc/passwd. Indication : pensez aux entrées
de répertoire «. » et «.. ».
2. Dans Windows, quand un utilisateur double-clique sur un fichier de l’Explorateur, un programme
est lancé et reçoit ce fichier comme paramètre. Donner deux moyens par lesquels le système
d’exploitation peut savoir quel programme lancer.
3. Dans les premières versions d’Unix, les fichiers exécutables (les fichiers a.out) commençaient par
un nombre particulier, appelé magique, qui n’était pas choisi au hasard. Ces fichiers débutaient
par un en-tête, suivi des segments de texte et de données. Selon vous, pour quelle raison
attribuait-on à ces fichiers un nombre magique spécifique alors que ce nombre magique était
plus ou moins aléatoire pour les autres fichiers ?
4. Parmi les attributs d’un fichier, on retrouve la longueur de l’enregistrement. Pourquoi le système
d’exploitation doit-il toujours y faire attention ?
5. L’appel système open est-il absolument essentiel sous Unix ? Quelles seraient les conséquences
s’il n’existait pas ?
6. Les systèmes qui supportent les fichiers séquentiels ont toujours une opération pour rembobiner
les fichiers. Les systèmes qui supportent des fichiers à accès direct en ont-ils aussi besoin ?
7. Certains systèmes d’exploitation proposent un appel système rename pour donner un nouveau
nom au fichier. Existe-t-il une différence entre cette opération et celle qui consiste à faire une
copie du fichier dans un nouveau fichier avec un nouveau nom et à ensuite effacer le premier
fichier ?
8. Comme nous l’avons étudié, l’allocation contiguë de fichiers conduit à une fragmentation du
disque, parce que l’espace du dernier bloc est gaspillé dans les fichiers dont la longueur n’est pas
un multiple de la taille d’un bloc. Cette fragmentation est-elle interne ou externe ?
9. Pour utiliser une allocation contiguë de fichiers sans pâtir des trous, il est possible de compacter
le disque chaque fois qu’un fichier est effacé. Comme tous les fichiers sont contigus, la copie d’un
fichier implique un déplacement et un délai de rotation pour lire le fichier, puis un transfert à
pleine vitesse. De même pour la réécriture du fichier. En supposant que le temps de
déplacement est de 5 ms, que le délai de rotation est de 4 ms, que le taux de transfert est de 8
Mo/s et que la taille moyenne d’un fichier est de 8 Ko, combien de temps faut-il pour lire un
fichier depuis le disque vers la mémoire et le réécrire dans un autre emplacement disque ? Avec
ces mêmes paramètres, combien de temps prendrait la défragmentation (compactage) de la
moitié d’un disque de 16 Go ?
10. En regard des résultats de l’exercice précédent, est-il raisonnable de défragmenter le disque ?
11. Certains périphériques numériques ont besoin de stocker des données. Indiquer un support
média qui nécessite l’enregistrement des fichiers et pour lequel une allocation contiguë serait
une bonne idée.
12. De quelle manière Ms-Dos implante-t-il l’accès aléatoires aux fichiers ?
13. Considérons la structure d’un i-node étudiée en cours. Si un i-node contient 10 adresses directes
de 4 octets chacune et si tous les blocs sont de 1024 Ko, quelle est la taille maximale d’un
fichier ?
14. Deux étudiantes en Informatique, Alix et Suzy, discutent des i-nodes. Alix soutient que puisque
les mémoires sont plus grandes et moins chères, lorsqu’un fichier est ouvert, il est plus simple et
plus rapide de charger une nouvelle copie de l’i-node dans la table des i-nodes que de faire une
recherche dans cette table pour savoir s’il existe déjà. Suzy n’est pas d’accord. Qui a raison ?
15. Donner un avantage des liens matériels par rapport aux liens symboliques et réciproquement.
16. Le début d’une table de blocs libres juste après le formatage d’une partition disque ressemble à :
1000 000 000 000 (le premier bloc est utilisé par le répertoire racine). Le système recherche
toujours les blocs libres à partir du bloc qui a le plus petit nombre ; ainsi après l’écriture du
fichier A, qui requiert 6 blocs, la table des blocs libres est de la forme : 1111 1110 0000 0000.
Donner la table après chacune des opérations suivantes :
a) Le fichier B est écrit en utilisant 5 blocs ;
b) Le fichier A est effacé ;
c) Le fichier C est écrit en utilisant 8 blocs ;
d) Le fichier B est effacé.
17. Olivier travaille de nuit au centre de calcul de son université pour changer les bandes de
sauvegarde. En attendant que chaque bande soit terminée, il rédige son mémoire de master. Son
traitement de texte fonctionne donc pendant la sauvegarde. Cela pose-t-il un problème ?
18. La performance d’un système de fichiers dépend du taux de succès du cache (des fractions de
blocs trouvées dans le cache). Si le système prend 1 ms pour satisfaire une requête à partir du
cache, mais 40 ms pour une requête à partir du disque, donner la formule correspondant au
temps moyen pour satisfaire une requête si son taux est h. Tracer cette fonction pour des valeurs
de h comprises entre 0 et 10.
19. Une disquette présente 40 cylindres. Une recherche prend 6 ms par cylindre. Si aucune tentative
n’est faite pour rapprocher les blocs d’un fichier, deux blocs consécutifs logiquement (c’est-à-dire

2
TD-TP : IN551
qui se suivent l’un l’autre dans le fichier) seront séparés de 13 cylindres en moyenne. Toutefois,
si le système d’exploitation essaie de regrouper les blocs liés de manière logique, la distance
inter-bloc moyenne peut être réduite à 2 cylindres (par exemple). Dans les deux cas, combien de
temps faudra-t-il pour lire un fichier de 100 blocs, si le temps de rotation est de 100 ms et le
temps de transfert est de 25 ms par bloc ?
20. Un système de fichiers utilise des blocs de 2 Ko. La taille médiane d’un fichier est de 1 Ko. Si tous
les fichiers sont exactement de 1 Ko, quel sera le pourcentage de l’espace disque qui sera
gaspillé ? Pour un système de fichiers réel, pensez-vous que le pourcentage de gaspillage sera
supérieur ou inférieur à cette valeur ? Expliquez votre réponse.
21. Un système de fichiers Unix a des blocs de 1 Ko et des adresses disque sur 4 octets. Quelle est la
taille maximale d’un fichier si les i-nodes contiennent 10 entrées directes et une redirection
simple, une redirection double et une redirection triple pour chaque cas ?
22. Ecrire un programme qui inverse les octets d’un fichier, de sorte que le dernier octet devienne le
premier et que le premier devienne le dernier octet. Ce programme doit pouvoir travailler sur
des fichiers de longueur quelconque, mais être efficace.

23. Créer un script shell nommé "change" qui affichera la date de dernière modification d'un fichier
puis la modifiera avec l'heure actuelle et enfin réaffichera la date de dernière modification du
fichier.
Cette procédure acceptera 1 paramètre qui sera le nom du fichier.
Lorsque vous exécuterez "change mon_fic", le 12 février à 18 heures 12 vous obtiendrez le
résultat:
avant : -r--r--r-- 1 user group 40 Jan 8 2012 mon_fic
après : -r--r--r-- 1 user group 40 Fev 12 18:12 mon_fic
24. Créer un script shell nommé ‘’nombreJours’’ qui affichera le nombre de jours du mois courant.
‘’nombreJours’’ affichera pour février 2013 le message ‘’28 jours en février 2013’’.
25. Créer un script shell réalisant la création d’un répertoire ‘’Exercice25’’ contenant 15 fichiers
nommés ‘’Un’’ à ‘’Quinze’’. Chaque fichier contient une seule ligne :
i) ‘’Un’’ contient ‘’Première ligne’’
ii) ‘’Deux’’ contient ‘’Deuxième ligne’’
iii) …
iv) ‘’Quinze’’ contient ‘’Quinzième ligne’’
N.B : Vérifier que le répertoire à créer n’existe pas déjà sinon il ne sera pas recréé mais
les fichiers oui.
26. Créer un script shell qui réalise les opérations suivantes :

3
TD-TP : IN551
- Création sous votre répertoire ‘’TP2’’ d’un sous répertoire nommé ‘anneemoisjour’’ (Ex :
20130212 pour le 12 février 2013).
- Copie des fichiers de Exercice26 sous ce répertoire puis effacement de ces mêmes fichiers de
‘’Exercice26’’.
- Création de deux fichiers sous le répertoire d’accueil (Home) de la personne qui a lancé le
shell :
 Un fichier nommé ‘’Gros_fichier.numero_du_shell’’ dans lequel se trouvera le
contenu concaténé des fichiers traités
 Un fichier nommé ‘’Nom_du_script.numero_du_shell’’ dans lequel se trouvera le
nom des fichiers traités.

Vérifier que le répertoire à créer n’existe pas.

27. Créer un script shell ppermettant d’afficher la liste des fichiers du répertoire /etc accessibles en
lecture.
28. Créer un script shell permettant d’afficher la liste des fichiers du répertoire /etc accessibles en
écriture.

29. Créer un script nommé "table" permettant d'afficher des tables de multiplication.
"table 5 10" aura pour résultat l'affichage:
0x5=0
1x5=5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50
30. Utilitaire AWK
Les exercices portent sur le fichier mesure suivant:
nom de la lieu de la date de la valeur correction correction correction valeur
| | | | | | | |
mesure mesure mesure brute 1 2 3 corrigée
18/12/199
marcel | brest | | 12.5 | 1.34 | 1.23 | -1.5 | 13.47 |
8
21/05/199
polo | loctudy | | 11.5 | 1.24 | 1.12 | -1.2 | 12.66 |
7
04/09/199
otto | camaret | | 9.3 | 0.98 | 1.17 | -1.12 | 10.33 |
5
Le champ valeur corrigée est la somme algébrique de la valeur brute et des 3 corrections.

4
TD-TP : IN551
30.1 Vous vous êtes bourrés sur le signe de la correction 1, de même dans la correction 2, vous avez
découvert que vous avez commis une petite erreur et qu'il fallait lui ajouter 0.1. Modifier le
fichier en prenant en compte ces corrections, faites en sorte que la valeur corrigée soit
modifiée en conséquence.
Dans le même exercice vous afficherez la somme totale des valeurs corrigées et la valeur corrigée
moyenne. Ces valeurs doivent être sauvegardées dans un fichier résultat.

30.2 Afficher les mesures ayant une année paire. Redirigez le résultat de la recherche vers un fichier
paire.

30.3 Vérifiez que le format de la date jj/mm/aaaa est correct ainsi que le format du lieu (formé que
de lettres de l'alphabet en minuscules ou majuscules).

30.4 Afficher les noms de mesure et leur valeur corrigée associée en vous servant d'un tableau
associatif.
31. Cherchez dans toute l'arborescence les fichiers dont le nom se termine par .c, redirigez les erreurs
vers le fichier poubelle /dev/null
Commençant par X ou x.
Dont les noms ne contiennent pas de chiffre.
32. Chercher dans /usr les fichiers dont la taille dépasse 1Mo (2000 blocs de 500Ko) et dont les droits
sont fixés à 755 (-rwxr-xr-x).
33. Combien il y a de fichiers dans toute l'arborescence vous appartenant et ayant les droits fixés à
666 (-rw-rw-rw-).
34. Trouver tous les fichiers core dans l'arborescence et supprimez-les après confirmation.
35. Copiez le fichier /etc/passwd dans votre home directory. Editez uniquement les champs
contenant le login et la home directory.
36. Triez passwd sur le nom
37. Extraire les noms de login et UID puis triez suivant les UID, le tout en une seule commande, vous
redirigerez le tout vers un fichier.
38. Dans le fichier de résultat précédent remplacer les ":" par des " " (espace).
39. Editez les cinq dernières lignes du fichier.
40. Editez les cinq premiers caractères du fichier.
41. Créer un répertoire essai-grep dans votre home directory. Dans ce répertoire créer les fichiers
suivants:
tomate poire pomme cerise Fraise fraise courgette POMME3 afraise
Editez les fichiers (sortie de la commande ls redirigée vers grep) avec les critères sur leur nom
suivant:
Critère 1 Le nom doit être Fraise ou fraise
Critère 2 se est en fin de nom
Critère 3 ai est présent dans le nom
Critère 4 Nom contenant un chiffre numérique
Critère 5 Nom contenant la chaîne mm ou MM
42. Copiez le fichier /etc/passwd dans votre home directory. Editez la ligne commençant par votre

5
TD-TP : IN551
nom de login.
43. Dans le fichier passwd qui est dans votre home directory, éditez les lignes commençant par des
noms de login ne contenant pas de chiffre.
44. Editez les lignes du fichier passwd commençant par des noms de login de 3 ou 4 caractères.
45. Dans votre répertoire courant, créez un répertoire courant essai_droit, par défaut ce répertoire
est à 755 (rwxr-xr-x), quelles sont les commandes (en notation symbolique et en base 8) pour lui
donner les droits suivant (on suppose qu'après chaque commande on remet le répertoire à 755:
propriétaire groupe les autres
droit en droit en droit droit en droit en droit droit en droit en droit
lecture écriture d'accès lecture écriture d'accès lecture écriture d'accès
commande
oui oui oui oui non oui non non oui
1
commande
oui non oui non oui non non non oui
2
commande
non oui non non non oui oui non non
3
commande
non non oui oui non oui non non non
4
46. Créez un fichier droit dans le répertoire essai_droit, par défaut ce fichier est à 644 (rw-r--r--).En
partant du répertoire courant, pour chaque commande de l'exercice précédent, essayez
d'accèder au répertoire essai_droit (commande cd), de faire un ls dans essai_droit et de modifier
le fichier avec un éditeur quelconque (vi par exemple).
47. Tapez la commande umask, de manière à ce que les fichiers lors de leur création aient par défaut
les droits 640 (rw-r-----), et les répertoires 750 (rwxr-x---).
48. Dans votre répertoire courant, créez en une commande les fichiers suivants:
annee1 Annee2 annee4 annee45 annee41 annee510 annee_saucisse banane
49. Créer le répertoire Year dans votre répertoire courant, en une commande déplacez les fichiers
précédemment créés dans le répertoire Year.
50. Lister tous les fichiers
se terminant par 5
commençant par annee4
commençant par annee4 et de 7 lettres maximum
commençant par annee avec aucun chiffre numérique
contenant la chaîne ana
commençant par a ou A

51. Copier les fichiers dont l'avant dernier caractère est un 4 ou 1 dans le répertoire /tmp en une
seule commande.
52. Afficher le nombre de sessions ouvertes (c-à-d connexions) sur la machine tout en générant le
détail de ses connexions dans le fichier connectes.
53. Afficher les L lignes qui entourent la ligne numéro N d'un fichier F. Utiliser cette méthode pour
afficher une partie du texte qui entoure la ligne où se trouve une chaîne S qu'on cherche dans un
fichier F (utiliser la commande grep).

6
TD-TP : IN551
54. Copier sur une clé USB tous les fichiers .sql modifiés ce jour.
55. Envoyer par mail à un utilisateur les noms des fichiers .sql et les fichiers .c modifiés ce jour et
dont la taille est supérieur à un kilo-octet.
56. Exécuter le script traitement se trouvant sous bin de votre répertoire de connexion :

- Le Vendredi à 17h00
- La semaine prochaine au même moment
- Deux jours plus tard
57. Demander, de différentes manières, d'exécuter le script traitement à 16h15 le 24 février 2013,
sachant que nous somme en octobre 2012.
58. Alimenter, toutes les heures, les fichiers charge.jour.log, charge.soir.log et charge.week-end.log
du répertoire charge de votre répertoire de connexion par les informations qui donnent
respectivement la charge du système du jour, du soir des jours de la semaine et tout le week-end.
59. Envoyer tous les premiers janvier de chaque année, le courrier bonne_annee à vos
correspondants user1, user2, ...
60. Afficher les trois informations suivantes (provenant de /etc/passwd) : nom de connexion de
l'utilisateur, nom complet (champ libre) et shell attribué à l'utilisateur. Si /etc/passwd avait ce
contenu :

root:Uhu)j9Pg[vz0J":0:0:Le manie tout:/:/bin/tcsh


daemon:*:1:1::/etc:
bin:*:2:2::/usr/bin:
sys:*:3:3::/usr/src:
adm:*:4:4: Administrateur du système:/usr/adm:/bin/sh
adam:QfTyu(lfmL$:100:100:Adam Poupon:/home/staff/adam:/bin/ksh
durand:gVFGjui01kj:102:100:Michel Durand:/home/staff/duarnd:/bin/ksh

Le résultat devrait être :


USER WHO IS SHELL
root Le manie tout /bin/tcsh
daemon
bin BIN
sys SYS
adm Administrateur du système /bin/sh
adam Adam Poupon /bin/ksh
durand Michel Durand /bin/ksh

61. Soit compte le fichier des comptes des clients. On suppose qu'il a la structure suivante : 5 chiffres
pour le code banque, 5 chiffres pour le code guichet, 10 chiffres pour le numéro de compte, 1
lettre pour compléter le numéro de compte, 2 chiffres pour la clé RIB, 30 caractères pour la
désignation du client. Produire en sortie les informations suivantes (séparées par la barre
verticale) : Désignation du client, son numéro à 10 chiffres et la lettre complétant ce numéro. Soit
gestion le fichier des gestionnaires des comptes. Il se compose de lignes ayants les champs
(séparés par la barre verticale) suivants : Désignation du gestionnaire, lettre du numéro de
compte des clients dont il est responsable. Produire en sortie un listing avec les informations
suivantes : Désignation du gestionnaire, le client dont il est responsable, le numéro de son
compte.

7
TD-TP : IN551
62. Etant donné le fichier resultats :
Nom Résultats
-------------------------
Yann 104:33:48
Tudor 8:19:0
Patrick 15:98:48
Carole 104:33:20
Gérard 32:0:10
René 5:13:10
Lucienne 15:98:48

Utilisez la calculatrice en ligne (commande bc pour basic calculator) pour produire un fichier
ayant le contenu de resultats plus une 3ème colonne qui est la somme des trois points de la
colonne résultats.
63. Soient tele un fichier qui contient le répertoire téléphonique suivant :

Boileau 024867-6235
Derrick 024867-1842
Ernest 024867-1234
Grand 024867-2240
Herbrant 024867-0256
Jonathan 024867-7358
Louis 024867-3237
Tardif 024867-5341
Wagner 024867-1234

Et noms la liste suivante des noms et départements correspondants :


Ernest Dept. 389
Frolo Dept. 217
Grand Dept. 311
Tardif Dept. 454
Wagner Dept. 520

Construire un fichier NTD (nom, téléphone, département) où chaque ligne est un nom suivi du
numéro de téléphone puis du numéro de département. Comment faire pour avoir tous les noms
dans le fichier NTD ? Comment obtenir un fichier DNT où chaque ligne est composée (dans cet
ordre) du numéro de département, du nom et du numéro de téléphone ? Soit numeros le fichier
des numéros de téléphones :
024867-0256
024867-1234
024867-5555
024867-7358

Sélectionner du fichier tele les lignes où figurent les numéros du fichier ci-dessus.
64.

8
TD-TP : IN551
9
TD-TP : IN551

Vous aimerez peut-être aussi