Système d’exploitation : Assembleur Semaine 03 Gestion 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 adressable Carte 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:IP avec 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=? 1. CS:IP 0ABC:1234 0ABC0 +1234 -------- 0BDF4 adresse physique 2. IP=362A CS=6ED1 adresse physique ? 6ED10h+362Ah = 7233Ah ES=1234 DI=5678 adresse physique ? 12340h+5678h = 179B8h SS=4321 BP=BCDE adresse physique ? 43210h+BCDEh = 4EEEEh 3. CS=89B2 adresse physique=8AE43 IP=? 8AE43-89B20=1323 4. Adresse physique =A2B4C IP=? CS=? Une réponse : CS=A2B4, IP=000C Autre réponse : CS=A2B0 et IP=004C 5. ABCDE DS =? SI =? Une réponse: DS=ABC0,SI=00DE Autre réponse : DS=AB00,SI=0CDE
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:3B60 DS:3B60 SS:64F2 CS:0000 A quelle adresse physique se trouve l’instruction dont l’adresse effective est 5AF8? 6. 12C40 adresse physique du segment x 16 +7AF2 adresse effective (16 bits) 1A732 adresse physique (20 bits de la donnée A) ON ECRIRA : Segment:Offset DS:7AF2 7. ES:3B60 3F160 DS:3B60 53420 SS:64F2 26AD2 CS:0000 17A80 8. CS:IP 17A80+5AF8 = 1D578
Gestion de la mémoire (6/7) FFFFFh 00000h Zone disponible à l’utilisateur Largeur : 1 octet 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 Expl de la mémoire ……. 012A9 F0 012A8 21 012A7 FF 012A6 03 012A5 A2 012A4 00 Attention : octet de poids le plus fort à la plus forte adresse. Si on va lire à 012A6 : FF03 et pas 03FF
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 F0 012A9 21 012A8 FF 012A7 03 012A6 A2 012A5 00 012A4 …….