Post on 03-Apr-2015
Système d’exploitation : Assembleur
Semaine 03Gestion de la mémoire
Gestion de la mémoire : Espace adressable
• bus 20 bits (8088) :– 220 emplacements adressables– 1.048.576 emplacements d’un octet adressables– 1 Mo
• bus 32 bits (80386) :– 232 emplacements adressables– 4.294.967.296 emplacements d’un octet adressables– 4 Go
Gestion de la mémoire : Espace adressableCarte de la mémoire adressable sous 1Mo
Gestion de la mémoire (1/7)
• Problème du 8088 :– La taille des registres est de 16 bits– Or l’adressage se fait sur 20 bits…
• La solution :– SEGMENTATION : passage d’une adresse de 16 bits
à une adresse de 20 bits
Gestion de la mémoire (2/7)
• Notion d’adresse effective– C’est l’offset (décalage par rapport au début du segment)– C’est donc la distance qui sépare l’information à atteindre
du début du segment• Notion d’adresse logique
– L’adresse sous le format xxxx:yyyy• Où xxxx est le numéro de segment• Et yyyy est l’offset dans ce segment
• Notion d’adresse physique– C’est le résultat du calcul RegSeg0000b + offset– C’est une adresse sur 20 bits
Gestion de la mémoire (3/7)
Gestion de la mémoire (4/7)Exemples:
• Que signifie : CS:IPavec CS= 0ABC et IP=1234 ?
• IP=362A CS=6ED1. Adresse physique ?ES=1234 DI=5678. Adresse physique ? SS=4321 BP=BCDE. Adresse physique ?
• CS=89B2 adresse physique=8AE43 IP=?
• Adresse physique=A2B4C IP=? CS=?
• Adresse physique=ABCDE DS=? SI=?
Gestion de la mémoire (5/7)Exemples:
• Soit une donnée A se trouvant dans le segment de données (12C4) à l’adresse effective 7AF2 Où se situe la donnée en mémoire ?
• Si CS=17A8 DS=4F8C SS=205E ES=3B60,– A quelles adresses physiques correspondent
ES:3B60DS:3B60SS:64F2CS:0000
– A quelle adresse physique se trouve l’instruction dont l’adresse effective est 5AF8?
Gestion de la mémoire (6/7)• 4 zones de 64 Ko : CS, DS, ES, SS
• Dans la zone CS:0000 à CS:FFFF se trouve le code source du programme
• Dans la zone DS:0000 à DS:FFFF se trouvent les données du programme
• Dans la zone ES:0000 à ES:FFFF se trouvent les données supplémentaires
• Dans la zone SS:0000 à SS:FFFF se trouve la pile de sauvegarde
• En mettant bout à bout ces 4 segments, on ne pourrait adresser que 256Ko.
• Dans ce cours d’introduction, nous ne dépasserons jamais 64Ko de mémoire pour le code, les données, les données supplémentaires et la pile (c.à.d. plus de 10000 lignes!!!)
• Les 4 registres de segment contiendront donc toujours la même adresse
FFFFFh
00000h
Zone disponible à l’utilisateur
Largeur : 1 octet
Gestion de la mémoire (7/7)
• Rangement des données en mémoire
• Attention : Octet de poids le plus fort à la plus forte adresse.
• Si on va lire à 012A6 : FF03 et pas 03FF
F0012A9
21012A8
FF012A7
03012A6
A2012A5
00012A4
…….
…….