0% ont trouvé ce document utile (0 vote)
23 vues6 pages

Lancement D

Le document décrit le processus de lancement d'un programme, incluant le chargement du descripteur et du programme dans la mémoire vive, ainsi que la gestion de la mémoire à travers des sections spécifiques. Il aborde également les mécanismes de vérification d'adressage et la gestion de la mémoire via l'unités de gestion de mémoire (MMU). Enfin, il fournit un aperçu historique de l'évolution de la gestion de la mémoire depuis les premiers ordinateurs jusqu'aux systèmes modernes comme Unix et Windows.

Transféré par

Chris Max
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues6 pages

Lancement D

Le document décrit le processus de lancement d'un programme, incluant le chargement du descripteur et du programme dans la mémoire vive, ainsi que la gestion de la mémoire à travers des sections spécifiques. Il aborde également les mécanismes de vérification d'adressage et la gestion de la mémoire via l'unités de gestion de mémoire (MMU). Enfin, il fournit un aperçu historique de l'évolution de la gestion de la mémoire depuis les premiers ordinateurs jusqu'aux systèmes modernes comme Unix et Windows.

Transféré par

Chris Max
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

1/6 -1-

LANCEMENT d’un PROGRAMME :

1 – Introduction :
On sait que le programme se trouve sur le disque dur et que le système est en
mémoire vive. Il faut donc charger le programme au même endroit. Le programme est
composé de deux tronçons :
- Un descripteur de programme
- Le programme lui-même

1 – 1 – Descripteur de programme :

Le descripteur de programme contient la description de celui-ci :


- La taille du fichier
- Son mode de stockage ;
- La structure de son contenu ;
- etc.…
1 – 2 – Le programme :
Le programme contient tout ce qui est nécessaire pour exécuter les tâches pour
lesquelles il a été conçu.

2 – Processus :

L’opérateur entre le nom du programme désiré, l’interpréteur de commande demande si le nom


du programme demandé existe, supposons que tout se passe bien, l’interpréteur de commandes
fait une copie du descripteur dans l’espace système avec un ordre de bas niveau « OPEN »
2/6 -2-

Dans le descripteur se trouve la taille du fichier, il faut donc réserver de la mémoire en RAM.
Ceci est effectué par le shell qui va essayer d’allouer de l’espace en mémoire vive, cette
allocation va être répartie en quatre sections :
- Le heap  endroit où l’on peut allouer de la mémoire dynamiquement
- Le stack  paramètres, espace où se trouve la « pile »
- Les datas  Les variables qui permettent au programme de fonctionner
- Le code  fonctions d’exécutions
Un tableau est crée en mémoire et celui-ci est référencé dans un tableau de tableaux de
segments ou processus.
Une fois ma mémoire allouée, on peut prendre le fichier et l’insérer dans « code » puis
le programme se lance en allant à la première instruction pour exécuter la première
instruction « exec ». A ce niveau, le système abandonne la main et laisse le programme
s’exécuter.

Étant donné que l’on tape du texte, celui-ci est stocké dans le heap. Au moment de la
sauvegarde (WRITE), un fichier avec un descriptif se créé (d2).

Après le travail, le système reprend


la main et libère la mémoire.
La taille du fichier est modifiée et, il
faut remettre le descripteur à jour.
C’est ce qui se fait lors de la clôture
du fichier

Il y a six commandes pour la gestion


du disque dur qui se départagent en
deux, trois pour le descripteur et
trois pour le fichier. La gestion de la
mémoire en utilise seulement deux.
(voir tableau ci-dessous)
Il y a très peu d’ordres entre
l’interface entre le descripteur et la
mémoire.
Gestion Disque Gestion mémoire
commande a c t i o n commande a c t i o n
fichiers descripteur

Open Ouvrir malloc allouer


close fermer free libérer
stat valeur -- --
Read Lire -- --
Write Écrire -- --
Seek Déplacer -- --

3 – Mémoire :
la table des processus a un numéro. Lorsque le programme tourne, une vérification
s’effectue pour savoir si l’écriture se fait correctement. Si, par exemple, lors d’une demande de
3/6 -3-

données, et que l’on dépasse l’espace alloué, cela créé un problème. Le registre d’adressages
doit correspondre à la table des segments.

Offset pointeur doit correspondre à la table des


Registre adressage du μP segments

Cela est régit par la MMU (Management Memory Unit) qui vérifie que :

Registre d’adresses (pointeur) = Tableau des segments (pointeur)


Registre d’adresses (Offset) = Tableau des segments (size)

Si ceci est faux  Messages d’erreurs


- Segment violation,
- Memory violation,
- Memory fault.
Signifiant qu’il y a eu une erreur d’adressage.
On peut agrandir la taille du heap, contrairement aux trois autres. La table de segments
permet tous les calculs, sauf une :

La question de taille des segments libres et il faut gérer le disque qui a des clusters de
taille fixe.
4/6 -4-

Il faut donc user d’artifices pour créer des segments de taille fixe. La mémoire est donc divisée
en parties égales appelées « pages » qui possèdent exactement la même taille que les clusters
du disque dur.

C’est la raison pour laquelle on intercale des tables de pages entre le tableau des segments et
la mémoire. On nomme cela :

Adressage segmenté paginé

Dans le dessin sur la page précédente, nous avons considéré, pour simplifier quelque peu le
schéma, la création respectivement d’une page « heap » et « stack », deux pages « datas » et
de trois pages « code ». Il faut savoir que les pages ne sont pas obligatoirement contiguës, elles
peuvent être plus ou moins « dispersées » dans la mémoire. Il est bien entendu que le nombre
de pages peut être différend.

La promiscuité des pages pourrait être intéressante pour les


gros fichiers car on ne serait pas dans l’obligation de charger la
totalité, mais juste une « fenêtre », c’est à dire une partie du
programme. L’inconvénient de ce procédé, est qu’il faut
charger constamment une partie du programme, mais les
avantages est la taille réduite que peut prendre la table des
codes et les très gros programmes peuvent tourner en utilisant
un minimum de mémoire.
Ce qui prend le plus de place, c’est le code et ceci est une
méthode pour le diminuer.

4 – registre d’adresses :

Segments Pages Offset programme


2 bits 21 bits 9 bits

32 bits

Le registre d’adresses peut, à raison de 512 octets par page, adresser 2 millions de pages, soit
4Go de mémoire vive !! Comme ce genre de mémoire n’existe pas encore, le registre d’adresse
peut pointer des pages sur les clusters du disque dur. Pour effectuer cela, il suffit permuter les
pointeurs des numéros de pages. Ce travail est effectué par la MMU.
Cette gestion évoluée est utilisée sous Unix
5/6 -5-

Windows travaille avec une table de segments, si


programme disparaît, il reste de la mémoire mais les parties de mémoire libre ne sont pas
contiguës, il faut donc déplacer les programmes soit vers le haut, soit vers le bas de la mémoire
selon les constructeurs.
Ce travail est effectué par le « garbage collector ».

En 1968, les ressources mémoires étaient très faibles et très onéreuses, c’est ce qui explique le
mode de fonctionnement du système Unix par « fenêtrage » alors que lors de la création de
« Windows » dans les années 90, le prix de la mémoire a fortement chuté.
Il faut tout de fois signaler que si la vitesse des micro-processeurs a fortement progressé, celle
de la mémoire stagne.

Windows  Système concentré


Unix  Système multiple

Remarque :
Il existe un émulateur Windows sous Linux nommé « WINE »

5 – Petit historique :
Dans le passé, IBM utilisait le processeur 8086
1950  Main frame IBM, gros ordinateurs travaillants sur 32bits, la gestion mémoire a
pris racine à cette date avec :
o segmentations,
o paginations,
o etc. …
1980  Arrivée sur le marché des premiers micros-ordinateurs en 8 ou 16bits. On
s’est trouvé en but à des problèmes de limitations technologiques car le 8086
6/6 -6-

utilise des registres segmentés de 16bit et que le mode d’adressage était


effectué sur 20bits.

Pour imiter le « main frame », on a créé un artifice afin


d’obtenir le nombre de bits nécessaires. C’est la pire des
solutions car cette notion a débouché sur la limitation de
la mémoire.

Vous aimerez peut-être aussi