Compréhension /proc/iomem
Je cherchais à "/proc/iomem" entrées et avez un doute concernant le même sujet.
Mon PC Linux est en cours d'exécution d'un processeur Intel Xeon et dispose d'un système de mémoire vive de 4 GO.
/proc/iomem entrée de mon système ressemble à
00000000-0000ffff : réservé 00010000-0009f3ff : RAM Système 0009f400-0009ffff : réservé 000a0000-000bffff : Bus PCI 0000:00 000c0000-000c7fff : Vidéo de la ROM 000ca000-000cbfff : réservé 000ca000-000cafff : Carte ROM 000cb000-000cbfff : Carte ROM 000cc000-000cffff : Bus PCI 0000:00 000d 0000-000d3fff : Bus PCI 0000:00 000d4000-000d7fff : Bus PCI 0000:00 000d8000-000dbfff : Bus PCI 0000:00 000dc000-000fffff : réservé 000f0000-000fffff : Système de ROM 00100000-7fedffff : RAM Système 01000000-01520fa4 : code du Noyau 01520fa5-01c0e44f : Noyau de données 01d56000-0201d963 : Noyau bss 03000000-0b0fffff : Plantage du noyau 7fee0000-7fefefff : Tables ACPI 7feff000-7fefffff : ACPI Stockage Non-volatile 7ff00000-7fffffff : RAM Système c0000000-febfffff : Bus PCI 0000:00 fec00000-fec0ffff : réservé fec00000-fec003ff : IOAPIC 0 fed00000-fed003ff : HPET 0 fed00000-fed003ff : pnp 00:08 fee00000-fee00fff : Local APIC fee00000-fee00fff : réservé fffe0000-ffffffff : réservé
Maintenant, en supposant que mon processeur dispose de 32 lignes d'adresse ( j'ai l'impression qu'il a 40 lignes d'adresse - je voir ce à partir de /proc/cpuinfo), cela signifie que mon processeur sera en mesure d'adresse de 4 go de mémoire physique.
À la recherche de mes "/proc/iomem" les entrées, je vois que seulement 2 go de RAM système est directement adressée par mon CPU.
Maintenant, mon doute est
- Comment mon CPU adresses des autres, 2 GO de RAM ? Où puis-je voir le mappage de mémoire pour que ?
Pourquoi êtes-vous en utilisant un noyau 32 bits?
comment est-ce que la matière avec la sortie de /proc/iomem ?
La version 64 bits de sortie aurait un autre aspect ...
comment est-ce que la matière avec la sortie de /proc/iomem ?
La version 64 bits de sortie aurait un autre aspect ...
OriginalL'auteur user1227554 | 2013-12-09
Vous devez vous connecter pour publier un commentaire.
Vous êtes en cours d'exécution dans le 3 GO (que votre BIOS est déplacé vers le bas à 2 GO).
Seulement 2 GO sont utilisés comme système de mémoire vive; l'autre de 2 GO de l'adresse physique de l'espace sont utilisés pour les périphériques d'e/S.
L'autre mémoire est utilise comme la mémoire haute, qui ne peut pas être utilisé directement, mais doit être mappé, page par page, dans l'espace d'adressage virtuel chaque fois qu'il est accessible.
J'ai aussi quelques autres doutes fondés sur la réponse. 1. Comment voulez-vous dire qu'il est en cours d'exécution dans 3GB de la barrière? Elle est basée sur iomem plages d'adresses correspondant à la "RAM" ? 2. Dans les 2 go d'espace d'adressage qui mon CPU est censé utiliser pour les périphériques d'e/S, si je fais un "ioremap" dans mon code de pilote, je devrais être capable de voir l'entrée dans /proc/iomem rt ? Je vais vérifier (2) en écrivant un simple module de noyau, mais je voulais juste vos pensées en tant que bien. Merci à l'avance.
ioremap
vous permet d'accéder à cette mémoire, mais ce qui se voit dans/proc/iomem
estrequest_mem_region
, ce qui empêche les autres d'accéder à la même région.OriginalL'auteur CL.