Programmation graphique (organisation de la mémoire d'un PC) ... [DOS] - Programmation
Marsh Posté le 07-06-2001 à 16:42:08
De toute manière, il s'agit de mémoire conventionnelle, cad située sous les 1 Mo
Tant que l'architecture X86 perdurera, cette mémoire sera mal utilisée par Windows. En effet le passage du mode standard au mode protégé est gourmand en temps et de ce fait les applis 32 bits utilisent essentiellement la mémoire au dessus des 1 Mo.
Pour revenir à l'historique, les cartes VGA anciennes n'avaient pas de mémoire vidéo et utilisaient la mémoire du PC. cet espace n'était pas perdu mais utilisé pour stocker les infos vidéo. il me semble que les cartes "modernes" utilisent encore la mémoire du PC lorsqu'elles font du VGA standard en mode DOS. Celà me semble logique pour des raisons de compatibilité : le BIOS et le DOS ne connaissant pas les drivers de la carte, ils ne peuvent pas écrire dans la mémoire de celle-ci. Ta mémoire sert donc toujours... au démarrage de la machine !
A+
Marsh Posté le 07-06-2001 à 16:42:57
Normalement, oui me semble-t-il (suis pas expert) pour ce qui est en dessous des 640k.
Certains BIOS sur des machines anciennes peremettaient d'utiliser la RAM (rapide) pour recopier les BIOS (en EPROM ou ROM lente).
A moins qu'il y ait du fenêtrage (comme pour la mémoire paginée de dans le temps : les pages utilisent une plage d'adresse réduite mais les pages sont toutes cachées les unes derrières les autres (comme un livre)).
Avec les cartes vidéo modernes, il doit n'y avoir que la zone VGA basique "perdue" pour raison de compatibilité (et démarrage du PC).
Il doit bien y avoir des spécialistes de la vidéo au sens accès bas niveau sur ce forum ?
Marsh Posté le 07-06-2001 à 18:35:21
"En effet le passage du mode standard au mode protégé est gourmand en temps et de ce fait les applis 32 bits utilisent essentiellement la mémoire au dessus des 1 Mo"
je comprend pas trop ce que tu veux dire ...
en mode protege on a access à la mémoire en dessous de 1Mo ... et je ne vois pas trop poukoi tu parles du temps de commutation reel<->protege
"Pour revenir à l'historique, les cartes VGA anciennes n'avaient pas de mémoire vidéo et utilisaient la mémoire du PC."
ben ... IBM a introduit les premières cartes VGA, et celles-ci avaient 256Ko de memoires (toutes les cartes VGA ont au moins ca)
toi tu parles des dinausores : EGA,CGA,Hercules ...
"Avec les cartes vidéo modernes, il doit n'y avoir que la zone VGA basique "perdue" pour raison de compatibilité (et démarrage du PC)."
ben je me demande ... aujourd'hui, avec les cartes SVGA y'a des techniques comme le linear frame buffer ... le VESA 3.0 renvoit un pointeur vers le linear frame buffer ... il me semble que ce pointeur se situe par la lui aussi ... mais je sais pas trop, je suis en pleine documentation actuellement ...
pour la carte VGA, les 256Ko sont découpés en 4 plans de 64 Ko.
Quand on écrit en A000:0000 A000:FFFF, on choisit dans quel plan on le fait.
les cartes SVGA utilisent aussi ce principe (est-ce la pagination dont tu parles CARBON_14 ?) mais le problème c'est que chaque constructeur a une méthode différente, pour chaque carte, pour sélectionner le plan ...
CARBON_14, tu parles de fenetrage ... c'est ce qui m'interresse ... quand le BIOS ou la carte VGA effectue un fenetrage, la mémoire qu'il y avait à l'origine (ma barette) est donc perdue ? je trouve ca assez surprenant, surtout qu'à l'époque on rigolait pas avec 150Ko de mémoire ... (y'a au moins ca qui saute ... et surement bien + !!!)
Marsh Posté le 07-06-2001 à 18:59:08
Pour les cartes, je parle effectivement des dinosaures (EGA etc.). De tête l'adresse mémoire de la carte était en A0000 (ou A000:0000 si tu préfères).
J'ai du dire une C....
Les cartes avaient de la mémoire vu que les premiers PC étaient livrés avec 256 ko de mémoire (les premiers que j'ai connus... mais je crois que le premier avec le DOS 1 était livré avec 64 ko !). Physiquement l'adresse de cette mémoire était en B0000 pour le mode texte (le mode graphique n'est arrivé qu'ensuite...)
De ce fait il doit y avoir de la mémoire gaspillée quand tu installes une barrette de 1Mo. ( )
Pour le mode protégé, j'ai fait une confusion : C'est le passage d'une appli 32 bits à un driver (par ex) écrit en 16 bits qui prend du temps.
A l'époque on ne rigolait pas avec 150 ko : c'est vrai, mais lors de la conception de l'architecture du PC, 640 ko était déjà énorme, et IBM n'avait pas pensé qu'il y aurait un gaspillage de mémoire. la possibilité d'utiliser pour le DOS la partie de mémoire située entre 640 ko et 1Mo n'est arrivée qu'avec le Dos 4 (je crois) dans le début des années 90.
A+
Marsh Posté le 07-06-2001 à 14:27:59
une question m'est venu récemment ...
Vous vous etes surement deja amusé à afficher de ci de là un pixel à l'écran sous DOS ...
pour cela il suffit d'écrire le bon truc au bon endroit dans la RAM video ...
cette RAM video, la carte VGA nous offre une fenêtre pour y acceder, fenêtre qui se trouve de A000:0000 à A000:FFFF ...
et donc, de A000:0000 à A000:FFFF on est dans la RAM de la carte video ...
mais aussi de B000:0000 à B000:FFFF (modes textes) ...
et aussi de C000:0000 à C000:7FFF (au moins => 32Ko) où se trouve la ROM du BIOS VGA de la carte ...
sans parler de la mémoire que pompe le BIOS du PC par ici par la ...
MAIS ALORS, la RAM de ma barrette de RAM qui *normalement* se trouve à ces endroits, celle qui théoriquement s'y trouve si je vire ma carte graphique et allume mon PC, cette mémoire là, elle est où ??? elle est perdu ?
---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite