voici la premiere partie de mon collegue (Michel Mutin, F5AAJ) :
1/3
L'organisation de la mémoire dans les PC.
La mémoire, sur les PC, est divisée en 3 zones. La première, qui
va de 0 à 640 Ko (00000H à 09FFFH), est appelée mémoire basse, ou
conventionnelle. C'est dans cette partie que vont s'exécuter les
programmes que vous lancez.
Puis vient la mémoire haute, de 640 Ko à 1024 Ko (0A000H à
0FFFFH). A l'origine, IBM et MICROSOFT, sur les premiers PC
(équipés de 64 Ko de RAM, HI HI HI), pensaient réserver cette
zone à toutes les interfaces et autres cartes d'extensions. Il y
a eu seulement la zone de communication avec la carte graphique,
les disques durs type MFM ou RLL et les cartes d'accès à certains
réseaux qui ont effectivement occupé cette zone, mais en partie
seulement.
Et, au-dessus de 1024 Ko vient la mémoire étendue. L'adresse de
fin dépendra de la quantité de mémoire installée sur la machine.
Comment gagner de la place en mémoire.
Avec MS/DOS 5 sont apparues les commandes LOADHIGH et DEVICEHIGH.
A quoi peuvent-elles bien servir? Avant, tous les programmes que
vous chargiez en résidant, se logeaient en mémoire
conventionnelle. Avec, comme corollaire, que plus il y a de
résident, moins il reste de mémoire (merci M. de la Palisse...).
Et maintenant, les logiciels réclament de plus en plus de place
pour tourner correctement. L'astuce est de se servir des zones
libres entre 640 Ko et 1024 Ko, pour y loger les résidants, donc
libérer la mémoire basse d'autant...
1) Zones possibles à récupérer
La zone 0A000 à 0AFFF est réservée aux cartes EGA et VGA pour les
modes graphiques. Donc vous ne pouvez pas la récupérer si vous
comptez utiliser un mode graphique (Windows, JVFAX, Graphic
Packet ...). Mais, au contraire, si vous ne voulez pas de mode
graphique, il existe des utilitaires (VIDRAM.COM de QEMM, par
exemple) qui repousse la limite de la mémoire basse de 64 Ko, et
vous permet de gagner cette place en mémoire conventionnelle.
Ensuite viennent 2 zones de 32 Ko. La première (de B000 à B7FF)
est pour le mode texte en monochrome, puis de B800 à BFFF, le
mode texte couleur. Suivant le type de moniteur que vous
utilisez, une de ces 2 zones pourra être récupérée (ATTENTION :
Les moniteurs VGA monochrome sont considérés comme couleurs, dû
aux 64 niveaux de gris...).
Puis vient la zone réservée au BIOS Vidéo, si vous avez choisi
l'option 'SHADOW RAM' dans le SETUP de votre ordinateur. Pourquoi
prendre cette option? Tout simplement parce que le temps d'accès
d'une EPROM est de 170 ns, alors que celui de la RAM dynamique
est de 70 ns... Sachant que le processeur passe son temps dans
les routines BIOS et VIDEO BIOS, plus il va vite...
Ensuite vient une grande zone (si vous n'avez ni disque dur MFM
ou RLL, ni cartes réseaux) qui va de C800 à EFFF.
Enfin le BIOS proprement dit, qui occupe de F000 à FFFF, mais
avec des lacunes, variables suivant les BIOS (AMI, PHOENIX,
ARWARD...).
Donc, sans vouloir affiner au maximum la récupération, on pourra
récupérer 32 Ko pour le mode texte et 160 Ko (entre C800 et
EFFF).
Certaines zones supplémentaires pourront être récupérées entre
C000 et C7FF, puis entre F000 et FFFF, mais il faudra un
programme d'analyse qui permettra cette récupération (Mannifest
de QEMM, par exemple...).
2) Les programmes nécessaires pour récupérer ces zones
Ces zones peuvent être récupérées par EMM386.EXE (à condition
d'avoir au moins un processeur 386). Pour les 286 et autres
antiquités, c'est impossible... Mais comme EMM386 ne sait pas
fonctionner sans HIMEM.SYS...
En paramètrant les logiciels de telle sorte qu'ils utilisent de
la mémoire XMS pour y loger les tampons, ..., (cas de Graphic
Packet), ce sera autant de mémoire conventionnelle de gagnée.
Pour les 8088, 8086, et si vous avez une carte d'extension
mémoire, il est nécessaire d'utiliser le programme fourni avec
cette carte pour récupérer cette mémoire en mémoire paginée (ou
EMS). De même que pour les 286, vous pourrez y loger tampons et
autres OVERLAYS.
Il existe aussi des programmes comme QEMM (de Quaterdeck) ou QRAM
(de Qualitas) qui permettent cette récupération.
Dans le prochain bulletin, nous verrons comment paramètrer les
fichiers de lancement pour récupérer ces zones.
A suivre...
Ludovic
Dans le précédent bulletin, nous avons vu les programmes nécessaires
pour cette récupération.
Le fichier CONFIG.SYS.
D'abord, il faudra lancer les programmes nécessaires (HIMEM.SYS
et EMM386.EXE). Il est évident que vous possédez au moins un 386
comme processeur. Voyons un CONFIG.SYS exemple. Nous prendrons
comme exemple un ordinateur ayant HIMEM.SYS et EMM386.EXE dans le
sous-répertoire DOS. Cet ordinateur est équipé d'un écran VGA et
vidéo BIOS + BIOS principal sont relogés en mémoire vive. Et nous
n'utilisons pas de mémoire EMS.
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE NOEMS RAM=B000-B7FF RAM=C800-EFFF
STACKS=0,0
FCBS=1,0
BUFFERS=5,0
FILES=25
SHELL=C:\COMMAND.COM C:\ /P
DEVICEHIGH=C:\DOS\MOUSE.SYS /LF /C1 /S35 /Y
DEVICEHIGH=C:\DOS\IFSHLP.SYS
DEVICEHIGH=C:\DOS\ANSI.SYS
Les explications :
Les deux premières lignes servent à lancer les programmes
obligatoires (HIMEM.SYS et EMM386.EXE). Voir le précédent
bulletin pour les explications concernant les paramètres suivant
EMM386.EXE.
Ensuite, nous positionnons STACKS à 0,0. Par défaut, Microsoft
prend 9 piles de 256 octets. Mais comme la majorité (pour ne pas
dire tous...) des programmes ont leurs piles intégrées, on peut
les supprimer sans crainte. Pour quelques ordinateurs portables,
et avec les fonctions d'économie d'énergie activées, il se peut
qu'il soit nécessaire de rajouter des piles. Mais pas neuf!
Puis FCBS : ce commutateur permet la gestion des fichiers à la
mode DOS 1 ou 2. Qui utilise encore ces versions de DOS? C'est
pourquoi on peut mettre ce paramètre au minimum. Manque de
chance, le DOS ne nous autorise que 1 comme minimum...
Puis BUFFERS : ce nombre de tampons dépendra de la présence de
SMARTDRV.EXE, donc de la quantité de mémoire haute dont vous
disposez. SMARTDRV installé, 5 BUFFERS suffisent, sinon, on met
autant de tampons que de FILES.
Ensuite FILES : ce paramètre autorise un nombre de fichiers
ouverts en même temps. Là aussi, la valeur dépendra de
l'utilisation de l'ordinateur. Si vous comptez faire de la
bureautique, une quantité de 25 fichiers n'est pas déraisonnable.
Puis vient la ligne disant où se trouve l'interpréteur de
commande, le paramètre /P disant que c'est l'origine (ou
Primaire) et ne doit donc pas être enlevé de la mémoire. Cette
ligne est obligatoire, si COMMAND.COM n'est pas dans le
répertoire racine.
Ensuite, nous chargeons en mémoire haute (par la commande
DEVICEHIGH) le pilote de la souris. Les paramètres : /LF pour
langue française, /C1 pour port COM1, /S35 pour une sensibilité
horizontale et verticale de 35 (à ajuster suivant besoin) et /Y
pour autoriser WINDOWS à remplacer ce pilote par le sien, s'il le
désire. L'avantage de charger ce pilote par rapport à un
MOUSE.COM depuis le fichier AUTOEXEC.BAT, est que si vous ouvrez
un programme en mode DOS sous Windows, vous conserverez l'emploi
de la souris...
IFSHLP.SYS est un fichier nécessaire à Windows. Il est, lui
aussi, chargé en mémoire haute.
Et, enfin, ANSI.SYS est chargé lui aussi en mémoire haute. Ce
pilote permet la gestion des couleurs sous DOS, ainsi que des
fonctions de gestion des touches claviers.
Le fichier AUTOEXEC.BAT
Ce fichier est chargé en dernier, dans la phase d'initialisation
du PC. Mais il a son importance. Toutes les commandes passées
dans ce fichier, ou n'importe quel fichier .BAT, sont exécutées
comme si vous les donniez directement au clavier. Voyons un
exemple :
@ECHO OFF
SET TZ=UTC0UTC
PATH=C:;C:\DOS;C:\RADIO;C:\RADIO\TPK;....
SET COMSPEC=C:\COMMAND.COM
PROMPT $P$G
LH C:\DOS\SMARTDRV.EXE /X A- C-
LH C:\DOS\KEYB.COM FR,,C:\DOS\KEYBOARD.SYS
LH C:\DOS\DOSKEY.COM
CD \RADIO\TPK
TB1.BAT
Les explications :
@ECHO OFF permet d'éviter l'affichage de chaque ligne du fichier.
Comme cette commande ne serait active qu'après exécution, le
signe '@' permet d'éviter l'affichage de cette ligne.
SET ... : permet de positionner certaines variables. TZ sert à
Instant Track, et d'autres programmes. COMSPEC permet de définir
le chemin du COMMAND.COM, s'il n'est pas standard.
PROMPT $P$G Permet l'affichage de l'invite bien connue
C:\[chemin]\>.
Maintenant, les trois lignes qui suivent, commençant par LH,
permettent de charger certains programmes en mémoire haute.
Puis on change de sous-répertoire, et on lance un programme. Dans
notre cas, nous avons choisi TPK, mais c'est pour l'exemple..
Si vous avez de la chance, il se peut que, d'entrée de jeu, les
programmes s'installent tout seul en mémoire haute. Mais c'est un
cas d'espèce. Le plus souvent, vous serez obligé de lancer la
commande MEMMAKER.
Cette commande va ré-initialiser le PC, puis charger tous les
programmes demandés. Dans cette première phase, ils seront
chargés en mémoire conventionnelle. MEMMAKER va regarder quelle
quantité de mémoire ces programmes ont besoin. Une fois tous les
programmes chargés, MEMMAKER va calculer, en fonction de la
taille requise par chaque programme, et des blocs UMB
disponibles, la meilleure façon de ranger ces programmes en
mémoire UMB, de telle sorte à en loger le maximum. Le calcul
fini, MEMMAKER va rajouter l'adresse de chargement derrière
chaque programme, puis, de nouveau, ré-initialiser le PC. Là, le
chargement des programmes va se faire en mémoire UMB. A la fin de
cette initialisation, MEMMAKER vous demandera si tous c'est bien
passé. Si oui (de toute façon, si vous avez cet écran, c'est que
tout c'est bien passé!), valider le 'OUI' pour ressortir de ce
programme. La commande MEM vous permettra de contrôler que le
maximum d'UMB est occupé, et que la mémoire conventionnelle libre
est d'environ 620 Ko.
A suivre...
Dans ce 3ième bulletin, nous allons voir MEMMAKER et MEM.
J'espère que l'assimilation des deux précédents bulletins s'est
passée sans problème...
MEMMAKER
Ce programme permet l'analyse des programmes lancés pour
récupérer leur occupation mémoire. Cela ce passe en deux phases.
La première va lancer programme par programme, et récupérer les
infos d'occupations. A la fin de cette phase, il va calculer, en
fonction des UMB disponibles, et de la taille réclamée par chaque
programme, l'ordre de chargement de ces programmes. Une simple
analyse sur la taille du fichier sur le disque dur ne suffit pas.
En effet, le fichier MOUSE.SYS (exemple) a une taille réelle d'un
peu plus de 57 Ko sur le disque. Une fois chargé en mémoire, il
ne fait plus qu'environ 14 Ko (merci, SLIM FAST!). Le but de ce
calcul, est de remplir au maximum les blocs de mémoire supérieure
disponibles, afin que le minimum de mémoire conventionnelle soit
utilisée. L'idéal étant tout les UMB occupés, et pas de mémoire
basse utilisée. Ces calculs finis, MEMMAKER va modifier
CONFIG.SYS et AUTOEXEC.BAT en rajoutant des paramètres sur les
lignes d'appels des programme. La deuxième phase consiste en un
nouveau "BOOT" de la machine, de telle sorte que les
modifications soient prises en compte. Si tout ce passe bien, et
il ne doit pas avoir de raison, vous devez obtenir plus de 600 Ko
en mémoire conventionnelle. Comment vous en assurez? Par la
commande MEM, bien sur!
MEM
---
Cette commande va vous donnez toutes les infos concernant votre
mémoire, et son occupation. Exemple sur un 486 DX4/100 équipé de
8 Mo de RAM:
Type de mémoire Totale = Utilisée + Libre
Conventionnelle 640 K 27 K 613 K
Supérieure 175 K 74 K 101 K
Réservé 384 K 384 K 0 K
Etendue 6 993 K 1 245 K 5 748 K
------- ------- -------
Mémoire totale 8 192 K 1 730 K 6 462 K
Total sous 1 Mo 815 K 101 K 714 K
Taille maximale du programme exécutable : 613 K (627 712 octets)
Bloc maximal de mémoire supérieure libre: 43 K ( 43 712 octets)
MS-DOS résident en m‚moire haute (HMA).
Là, je suis embêté. DOS appelle la mémoire UMB supérieure, et la
mémoire étendue haute. J'ai repris un article de l'Ordinateur
Individuel (06/92), et, eux, appelle la mémoire UMB, mémoire
système. Alors? Va savoir, Charles! L'important, est d'avoir nos
programmes n'encombrant plus la mémoire conventionnelle... Le
reste, ce n'est qu'une histoire de nom!
A ce stade, il vous reste à tester le fonctionnement de la
machine, pour vous assurez que les modifications n'interfèrent
pas avec vos programmes. Si tout est bon, sauvegarder les
modifications.
QEMM
Si vous avez la chance de pouvoir récupérer QEMM, l'installation,
et l'optimisation, sont encore plus simples : nous ne nous
occupons de rien!
De plus, fois OPTIMIZE (qui est à QEMM ce que MEMMAKER est au
DOS) exécuté, c'est un minimum de 630 K (j'arrive à 649 226
octets) de taille max de programme exécutable. Et il reste, en
plus, des blocs UMB disponibles.
Ce programme permet, avec MFT (MANNIFEST), une analyse encore
plus fine des zones mémoires UMB. Et on peut se permettre de
récupérer certaines zones des BIOS occupées seulement à la mise
sous tension (autotest de la mise sous tension et zone du SETUP
du BIOS). Ces zones peuvent être rajoutées aux UMB's, si vous
avez besoin encore de place.
ASTUCE
Pour terminer cette série de bulletins sur la mémoire, nous
allons voir comment récupérer les infos de MEMMAKER pour loger un
programme en UMB, mais de manière non permanente.
Comme exemple, nous allons prendre TPK sous Baycom. Donc avec
TFPCX. Pour récupérer les 48 K de TFPCX en mémoire
conventionnelle, il est intéressant de pouvoir le loger en UMB,
n'est-ce-pas?
D'abord, s'assurer qu'il reste au moins 48K d'UMB, même non
contigu, MEMMAKER devra s'arranger pour tout recalculer. Si vous
avez un fichier BATCH pour appeler TPK, masquez, par un REM, la
ligne de chargement de TFPCX.
Ensuite, rajoutez TFPCX, pour qu'il soit appel‚ par
l'AUTOEXEC.BAT. Pour le moment, il sera charg‚ de manière
permanente, si on ne modifie pas le fichier AUTOEXEC.BAT. Mais le
but de cette mannip, c'est de pouvoir faire faire le calcul à
MEMMAKER! Ces modifications de fichiers effectuées, et bien, on
relance MEMMAKER.
Lorsque le processus MEMMAKER est terminé, on s'assure du bon
fonctionnement de TPK.
Puis on récupère les infos de chargement de TFPCX en UMB (L:x
xxxxxx) que l'on rajoute devant la ligne d'appel de TFPCX de
votre fichier BATCH concernant TPK et on enlève la ligne TFPCX
dans l'AUTOEXEC.BAT.
CONCLUSION
En espèrant que nous aurons atteint notre objectif. Maintenant,
la configuration de n'importe quelle machine ne devrai plus vous
faire peur!
Allez-y, ne craignez rien! Le pire que vous risquez, c'est un
plantage machine. Si vous avez bien fait la disquette de BOOT, ce
n'est absolument pas dramatique.
Fin
Voila, j'ai fini de copier-coller les trois envois de michel...@free.frX .
Si tu es interessé par les reprendre dans ta FAQ, Will, je ne pense pas
que cela le derange.
A bientot,
Ludovic
Pour publier tout ça il faut l'accord de la société archéologique
lol lol lol lol lol lol lol lol lol lol :D :D :D :D :D :D :D :D :D :D
:D
:') :') :') :') :') :') :') :') :') :') :') :') :') :') :') :') :') :')
>
> Pour publier tout ça il faut l'accord de la société archéologique
> lol lol lol lol lol lol lol lol lol lol :D :D :D :D :D :D :D :D :D :D :D
> :') :') :') :') :') :') :') :') :') :') :') :') :') :') :') :') :') :')
>
Encore un peu de patience, on va bientôt avoir droit
à une compilation des commandes du noyau CP/M
miam miam ça me rappelle mes débuts.
Pour info: FAQ = "Frequently Asked Questions".
> voici la premiere partie de mon collegue (Michel Mutin, F5AAJ) :
A-t-il été découpé en rondelles, le pauvre ?
voici la premiere partie de mon collegue (Michel Mutin, F5AAJ) :
1/3
"F5PBG" < .> a écrit dans le message de
news:fsnig6lob37d8eb22...@4ax.com...