Programmation Système

Programming, Math, etc. · exam

Browse all programmation documents

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