Bonjour à tous,
Comment fait-on pour trouver la taille de la mémoire vive ? Y a-t-il une interruption pour ? Comment l'utiliser ? Est-elle compatible avec tous les processeurs x86 ?
Merci d'avance.
Bonjour à tous,
Comment fait-on pour trouver la taille de la mémoire vive ? Y a-t-il une interruption pour ? Comment l'utiliser ? Est-elle compatible avec tous les processeurs x86 ?
Merci d'avance.
1) Une seul « ? » au bout de chaque phrase, please.Comment fait-on pour trouvé la taille de la mémoire vive????
2) On demande au système d'exploitation.
Sous Linux, ça se passe principalement à travers /proc/meminfo ou directement par la libproc.
Oui, l'interruption 12h, mais c'est valable uniquement sur PC, c'est obsolète et autant que je me souvienne, ça ne prend pas en compte la mémoire étendue.Y a-t-il une interruption pour???
Non. Cela n'a rien à voir. Un processeur ne fait que dire à son environnement où il a envie de lire ou d'écrire. Il n'a pas de moyen direct de connaître la mémoire physique qui lui est associée, d'autant que bien souvent, celle-ci est gérée par une MMU intermédiaire. Et d'ailleurs, les x86 ne servent pas qu'à fabriquer des PCs.Est-elle compatible avec tous les processeurs x86????
Hello,
J'avais fait un petit prog sous DOS pour connaitre la taille de la RAM
- Passage en mode FLAT
- Boucle :
- Lire un octet en RAM
- le modifier
- verifier si la modif a marchee (RAM OK)
- replacer sa valeur d'origine
- aller voir 64Ko plus loin
- si c'est bon, boucler, sinon plus de RAM
Ca marchait du temps ou les PC se contentaient de 4 ou 8Mo de RAM
Aujourd'hui, il faut compter aussi avec les cartes graphiques.
Par exemple, sur mon PC, la plage de cette RAM va de E8000000h a
EFFFFFFFh et de FEB80000h a FEBFFFFFh
(merci a windows pour ces infos )
a+ Francois
La derniere fois que j'ai regarde (ouille, il y 10 ans? ) il y avait d'autres methodes -- je ne sais plus si c'est avec une interruption ou une autre maniere -- qui permettent de relever ces informations, jusqu'a avoir une map de la memoire avec les zones de memoire, les zones reservees (les BIOS ont un temps reserve 1k ou 2 en fin de la zone des 64K pour stocker des infos), les zones mappees sur des devices PCI,...
Je regarderais dans le code de Linux pour voir comment il fait ca,... les commentaires devraient fournir des mots cles utiles pour retrouver les references si l'objectif n'est pas de la pure curiosite et qu'un retour a celles-ci est necessaire.
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
effectivement il existe des tables écrites par le bios dans la RAM afin de données des info sur ça configuration (c'est d'ailleurs sur ces tables que s'appuient WMI et MIBs SNMP). Ce sont des standards connu (ACPI et SMBIOS)
supportés par la quasi-totalité des PC
Tu devrais y trouver ton bonheur :
ACPI : http://www.acpi.info/spec.htm
SMBIOS : http://www.dmtf.org/standards/smbios/
concernant la ram SMBIOS te fournira les informations attendu (même bien plus)
Citons également DMI pour être exhaustifs, si l'on peut l'être.
http://en.wikipedia.org/wiki/Desktop...ment_Interface
à noter que DMI est un sous ensemble de SMBIOS, décrit donc dans le doc de SMBIOS
Sinon, je sais que GRUB peut éventuellement communiquer la taille de la RAM aux kernels qu'il boote.
Il existe plusieurs façon de faire cela :
D'abord par les interruptions du BIOS notamment la 15 sous fonctions 88h-8Ah-E802h-E820h et E881.
Ensuite par PNP en attaquant les ports d'entrées sorties qui vont bien.
Dans la NVRAM a l'adresse 0x30 et 0x31 par les ports 0x70 et 0x71
Il est possible aussi de faire un petit programme qui ecrit dans la mémoire jusqu'aux limites au risque de déclencher un handler sur faute d'écriture. C'est risqué mais ça marche.
....A suivre y a vraiment bcp de solutions
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager