Programmation Système
5 juin 2002
Documents autorisés
Durée : 2 heures
A - Problème de mémoire virtuelle
3 lignes maximum d'explications sont demandées pour chaque réponse.
Un prototype de machine permet d'utiliser des adresses 32 bits et des pages
mémoire de 4K mots. Le gestionnaire de mémoire virtuelle paginée n‟utilise qu‟une
seule table des pages par processus. Le noyau est paginable.
Question A-1:
Quel est le nombre de pages, sous forme de puissance de 2, définissant l'espace
adressable total d'un processus 32 bits si la taille d'un mot dans cette machine
est de 32 bits ?
Question A-2:
Dessinez la traduction d'une adresse virtuelle 32 bits en adresse physique (ou
réelle) 32 bits.
Question A-3:
La mémoire physique est limitée à 256Mo. Une entrée de la table des pages sera
alors codée sur 1, 2, 4, 8, 16, 32, 64, 128 ou 256 bits ?
On supposera que seuls les bits V (valide) et M (modifiée) sont nécessaires.
Donnez la taille minimum d'une entrée de la table des pages.
Question A-4:
Lorsqu'un processus est créé, la table des pages de ce processus est elle aussi
créée en mémoire. Quel est le nombre minimum de pages physiques nécessaire au
système pour représenter cette nouvelle table des pages si l‟espace virtuel d‟un
processus se décompose de la façon suivante :
0x00000000 - 0x01FFFFFF adresses réservées pour le noyau,
0x02000000 - 0x03FFFFFF adresses réservées pour le code,
0x04000000 - 0x05FFFFFF adresses réservées pour la pile,
0x06000000 - 0xFFFFFFFF adresses réservées pour les allocations mémoire.
Question A-5:
Lorsqu'un processus est actif, la table des pages de ce processus est gérée par
le système. Quel est le nombre maximum de pages nécessaire au système pour
représenter en mémoire cette table des pages ?
Advertisement
Question A-6:
Dans quel cas ce maximum sera t'il atteint ? Que se passe t'il ensuite ?
Question A-7:
Un processus P1 utilise 4000 pages virtuelles. Décrivez le cas favorable qui
donnera la taille minimum de la table des pages pour ce processus.
Question A-8:
Décrivez le cas défavorable qui donnera la taille maximum de la table des pages
de P1. Donnez cette taille maximum.
Question A-9:
Le système peut-il mettre dans le swap les pages utilisées pour représenter les
tables des pages des processus ?
B – Problème de création de processus
Soit le programme dont le code source est le suivant :
main() {
int fd, pid, rc ;
char buffer[6] ;
1
fd = open(„‟/home/data‟‟, O_RDWR) ;
sleep(2) ;
pid = fork() ;
if (pid == 0) {
sleep(1) ;
rc = read(fd, buffer, 5) ;
affiche(pid, buffer) ;
} else {
rc = read(fd, buffer, 5) ;
affiche(pid, buffer) ;
sleep(2) ;
rc = read(fd, buffer, 5) ;
affiche(pid, buffer) ;
}
}
La fonction sleep(x) provoque un passage du processus qui l‟appelle à l‟état
« endormi » pendant un nombre de secondes x passées en paramètre.
Advertisement
A l‟issue de ce délai, le processus reprend son exécution en séquence.
La fonction affiche(x,y) provoque l‟affichage sur l‟écran du contenu des
variables x et y.
Le fichier /home/data contient « aaaaabbbbbcccccdddddeeeee »
Question B-1 :
Positionner sur un axe de temps gradué en seconde les appels de fonctions
effectués par les processus crées au lancement de ce programme (1 ligne par
processus)
Question B-2 :
Décrire les structures de données (U, file et inode) (et les pointeurs qui les
relient) mises en place par le noyau au temps t=1s et au temps t=3s pour gérer
les processus.
Question B-3 :
Sachant que le PID du processus initial est 10 et celui du processus créé par
l‟appel à fork() est 12, donner, dans l‟ordre, les messages affichés sur l‟écran
par ce programme.
Question B-4 :
Même question que B-3 avec le programme modifié suivant :
main() {
int fd, pid, rc ;
char buffer[6] ;
sleep(2) ;
pid = fork() ;
if (pid == 0) {
fd = open(« /home/data », O_RDWR) ;
sleep(1) ;
rc = read(fd, buffer, 5) ;
affiche(pid, buffer) ;
} else {
fd = open(« /home/data », O_RDWR) ;
rc = read(fd, buffer, 5) ;
affiche(pid, buffer) ;
sleep(2) ;
rc = read(fd, buffer, 5) ;
Advertisement
affiche(pid, buffer) ;
}
C – Problème de systèmes de fichiers
Sur un disque, on trouve les données suivantes :
F data 5
Ernestine
Paulette
Cunégonde
Paris
Lyon
Marseille
Grenoble
Lille
Brest
R alpha 2
F beta 4
F delta 6
Bloc 0
Albert
Barnabé
Bloc 1
Beta est la
seconde lettre
Bloc 2
de l‟alphabet
grec
Bloc 3
1515:Marignan
1
0
0
0
0
0
Advertisement
0
0
Bloc 4
Bloc 5
Bloc 6
Bloc 7
On a trouvé dans la documentation qu‟une entrée dans un bloc de données d‟un
répertoire est structurée en :
- 1 lettre désignant le type de l‟objet : F=fichier ou R=répertoire
- Le nom de l‟objet,
- Le numéro du premier bloc de données de l‟objet
Question C-1:
S‟agit il d‟un système de fichiers de type “FAT” ou de type “inode” ?
Question C-2:
Donner le nom du fichier dont les données sont dans le bloc 5.
Question C-3 :
Donner le contenu du fichier nommé « delta »
Question C-4:
Donner la structure globale des fichiers et répertoires présents sur ce disque,
sous forme graphique.
Question C-5:
Quel serait l‟effet pour un utilisateur si, à la suite d‟une panne sur le disque,
le contenu du bloc 0 devenait :
3
1
0
0
0
0
0
7
0