Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[FAQ] Gestion de la mémoire sous DOS

470 views
Skip to first unread message

Will E. Coyote ©

unread,
Jul 25, 2002, 5:04:41 AM7/25/02
to
[fu2 fr.comp.os.ms-windows.win95]

"Il existe plusieurs façons d'allouer plus de mémoire à un ancien
programme DOS. Le choix dépend d'une part de la configuration de votre
ordinateur, d'autre part des besoins mémoire spécifiques à un programme.
Les programmes DOS n'ont pas besoin seulement d'une certaine quantité de
mémoire, mais celle-ci doit également être d'un certain type. Les
mesures à prendre pour qu'un programme fonctionne au mieux dépendent
donc de chaque utilisateur et de chaque situation. C'est pourquoi je ne
peux que vous donner des indications d'ordre générales permettant de
résoudre une éventuelle insuffisance de mémoire.


1) Type de mémoire.

Rappelez-vous comment la mémoire se divise, vous comprendrez mieux ainsi
les mesures à prendre...

Les 640 premiers Ko de la mémoire constituent la mémoire
conventionnelle. Les programmes DOS se servent de cette mémoire.

Les 384 Ko suivants se nomment la mémoire supérieure ("Upper Memory")
sont réservés à 6 UMB d'une taille de 64 Ko chacune (UMB: Upper Memory
Block).
Ces blocs sont nommés par la première lettre de leur adresse
hexadécimale (A,B,C,D,E ou F). Cet espace ne peut en aucun cas être
réservé pour les programmes 16 bits ou les programmes TSR résident en
mémoire (gestionnaire de souris, drivers des cartes sons, etc.) De plus,
une partie de cette mémoire sert également à la carte graphique, à la
ROM du PC et éventuellement à la carte réseau.

La zone située au-delà du premier Mo (1024 Ko) s'appelle la mémoire
étendue XMS (Extended Memory Specification).
Les 64 premiers Ko de la mémoire XMS s'appellent la mémoire haute ("High
Memory Area" ou HMA), ils ont une importance particulière pour la
résolution des problèmes de place des programmes DOS, car il est
possible d'y charger les programmes résidents qui ne prennent pas place
dans la mémoire conventionnelle.

De plus, si une application a besoin de mémoire paginée EMS (Expended
Memory Specification), le gestionnaire de mémoire Emm386.exe permet
d'attribuer une partie de la la mémoire étendue pour la créer.

Cette énumération permet d'imaginer les moyens de libérer d'avantage de
mémoire au profil des applications DOS, en particulier en exploitant les
mémoires UM et HMA.


2) Himem.sys:

Le gestionnaire de mémoire Himem.sys sert à configurer la gestion de la
mémoire étendue. En général, l'activation du gestionnaire se réalise
sans paramètres complémentaires. Vous ne devez utiliser des arguments
uniquement si le système ne démarre pas correctement.
Exemple: DEVICE =C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF permet de désactiver
le contrôle de la mémoire lors du démarrage de l'ordinateur, ce qui
permet de l'accélérer.


3) Emm386.exe

Himem.sys ne permettant pas aux programmes DOS d'accéder à la mémoire
paginée, ni d'utiliser la mémoire UM, il est nécessaire de charger un
second gestionnaire de mémoire dans le Config.sys (Emm386.exe),
immédiatement après Himem.sys, avant le chargement d'un pilote dans un
UMB.


3.1. Utilisation des UMB pour les pilotes.

Pour pouvoir charger les pilotes dans les UMB et l'HMA, les trois
premières lignes du fichier Config.sys doivent être, dans l'ordre:
DEVICE =C:\WINDOWS\HIMEM.SYS
DEVICE =C:\WINDOWS\EMM386.EXE NOEMS
DOS=HIGH,UMB

Le paramètre 'Noems' de la deuxième ligne indique que le gestionnaire
Emm386.exe ne doit pas installer de mémoire paginée, mais par contre le
gestionnaire Emm386.exe sert à l'exploitation des UMB.
La troisième ligne charge une partie du DOS dans la mémoire haute HMA
(DOS=HIGH) et permet d'exploiter les UMB (DOS=UMB).
Pour charger un programme dans HMA ou UM, utilisez la commande
'DEVICEHIGH' dans le Config.sys (ex: DEVICEHIGH
=C:\WINDOWS\COMMAND\SETVER.EXE).
Vous pouvez également inclure une commande adéquate dans le fichier
'Autoexec.bat'. La commande de chargement d'un programme en mémoire
devient:
LOADHIGH (ou LH) C:\WINDOWS\COMMAND\DISPLAY.SYS


3.2 Mémoire paginée.

Si le gestionnaire Emm386.exe doit également gérer la mémoire paginée,
parce qu'un programme DOS en a besoin, modifiez la ligne de chargement
du gestionnaire comme suit:
DEVICE=C:\WINDOWS\EMM386.EXE RAM


4) Mémoire libre pour les applications DOS.

L'espace mémoire disponible sur votre PC pour les applications DOS
dépend de la manière dont vous utilisez les programmes DOS: soit dans
une fenêtre DOS (menu "Démarrer" / "Programmes" / "Commande DOS"), soit
en mode 'DOS exclusif' (menu "Démarrer" / "Arrêter" / "Redémarrer en
mode DOS". La différence entre les deux peut se révéler importante
(jusqu'à 10 Ko...), ce qui peut être décisif pour certains programmes
DOS.


5) Comptabilité de la mémoire.

Si vous devez charger plusieurs pilotes afin de faire fonctionner une
application, les choses peuvent devenir critiques. Pour vérifier alors
la place qu'occupent les différents pilotes chargés en mémoire, et pour
connaître l'espace encore disponible pour un programme DOS, vous pouvez
utiliser directement la commande DOS suivante:
MEM /C /P
Le commutateur /C permet d'afficher la place qu'occupent les differents
programmes chargés en mémoire, le commutateur /P permettant de passer
d'écran en écran.

Si la mémoire libre n'est pas suffisante, contrôlez les fichiers
Config.sys et Autoexec.bat pour vérifier que vous ne chargez pas de
pilotes inutiles.

Si vous disposez d'une ancienne version DOS 6.xx, récupérer les fichiers
Memmaker.exe, Chkstate.sys et Sizer.exe, et copiez-les dans le
répertoire C:\Windows. Ils sont très utiles, mêmes sous le mode DOS de
Windows 98. Lancez ensuite le mode MS-DOS exclusif par le menu
"démarrer" ('Démarrer en mode MS-DOS') et tapez la commande "Memmaker".
Ce programme essayera alors de configurer la mémoire automatiquement de
manière optimale...


--
Will E. Coyote © - Prof 'Brizmenu' - will....@yucom.be
Partition Magic 7fr, Kaspersky AVP 4.0, Paint Shop Pro 7.02 ...
ftp://downloads:rokn...@coyote.idlegames.com/Utilitaires
mp3 à gogo! (Musiques de film, antologies, disco-dance '80-'90)
ftp://juke-box-mp3:rokn...@coyote.idlegames.com
"Qui vole une vache folle fâche" (Proverbe Indien)

---

Lud@vic

unread,
Aug 4, 2002, 6:28:44 AM8/4/02
to
Le Thu, 25 Jul 2002 11:04:41 +0200, Will E. Coyote © <will....@yucom.be> a ecrit:

>
>"Il existe plusieurs façons d'allouer plus de mémoire à un ancien
>programme DOS.

>.../...
>

Bonjour Will,

trouvant ces FAQ fortes utiles, je les rediffuse sur le
reseau radio des radioamateurs. A priori, soit il y a
des erreurs dans votre envoi, soit il a fait une erreur
d'interpretation. Voici sa reponse :

<<

R:020731/2327Z @:F6KDS.FRPA.FRA.EU #:54515 [Plessis] $:060286F5AAJ

From: F5...@F6KDS.FRPA.FRA.EU
To : DOS@FRANCA


Bonjour,

> Ces blocs sont nommés par la première lettre de leur adresse
> hexadécimale (A,B,C,D,E ou F). Cet espace ne peut en aucun cas être
> réservé pour les programmes 16 bits ou les programmes TSR résident en
> mémoire (gestionnaire de souris, drivers des cartes sons, etc.)

Ah, bon ? C'est nouveau, ça ? Depuis que cette possibilité de gérer les
UMBs existe (depuis le MS-DOS 5), Microsoft a toujours dit que c'était,
justement, pour y loger les résidents !

Voici un extrait de CONFIG.TXT, fournis avec les différentes versions de
Windows (celui-ci vient de Windows 98 SE) :

>> DEVICEHIGH
>> ==========
>> Cette commande charge le pilote de périphérique que vous
>> spécifiez dans la zone de mémoire supérieure. Ceci
>> libère des octets de la mémoire conventionnelle pour
>> les autres programmes. Si la zone de mémoire supérieure
>> n'est pas disponible, la commande DEVICEHIGH a la même
>> fonction que la commande DEVICE.


> De plus, une partie de cette mémoire sert également à la carte graphique,
> à la ROM du PC et éventuellement à la carte réseau.

Répartition de cette mémoire :

Adresse Taille Destination
A000-AFFF 64 Ko Mémoire pour les modes graphiques
B000-B7FF 32 Ko Mémoire modes texte (monochrome)
B800-BFFF 32 Ko Mémoire modes texte (couleur)
C000-C7FF 32 Ko ROM BIOS VGA (recopie EPROM en RAM)
C800-EFFF 160 Ko Disponible (si pas de réseau ni interfaces
"exotiques").
F000-FFFF 64 Ko ROM BIOS (recopie EPROM en RAM)

> Memory Area" ou HMA), ils ont une importance particulière pour la
> résolution des problèmes de place des programmes DOS, car il est
> possible d'y charger les programmes résidents qui ne prennent pas place
> dans la mémoire conventionnelle.

Sous Win98, IO.SYS a une taille > 200 Ko, le COMMAND.COM > 90 Ko. Donc les
64 Ko de la HMA seront insuffisants pour y loger tout ca. Il n'est pas
question d'y loger, en plus, les résidents.

La commande MEM /C nous donne, d'ailleurs, la répartition de ces
programmes. Je vous laiise découvrir les particularités de votre machine.

> Le gestionnaire de mémoire Himem.sys sert à configurer la gestion de la

> mémoire étendue. En général, ...

Non, HIMEM.SYS sert à récupérer toute la mémoire au dessus du Mo (la HMA
exclue) pour la transformer enmémoire XMS (c'est une norme).

> 'Autoexec.bat'. La commande de chargement d'un programme en mÚmoire


> devient:
> LOADHIGH (ou LH) C:\WINDOWS\COMMAND\DISPLAY.SYS

Non ! Un fichier système (.SYS) se charge depuis le CONFIG.SYS et pas
depuis l'AUTOEXEC.BAT !

J'avais écris, à une époque, 3 fichiers sur cette gestion mémoire. Si cela
intéresse quelqu'un, je peux les re-diffuser.

73 - Michel, F5AAJ @ F6KDS
michel...@free.frX

Heure/date msg : 22:26 le 2002-Jul-31

>>

Voili, voila, je retransmettrai vos reponses (courtoises) dans
l'autre sens afin de rectifier le tir.

:)

Merci,

Ludovic.

KiWin

unread,
Aug 4, 2002, 2:43:40 PM8/4/02
to
Bonjour,

Lud@vic <radi...@chezNOSPAM.com> nous a laché :

>> "Il existe plusieurs façons d'allouer plus de mémoire à un ancien
>> programme DOS.

> trouvant ces FAQ fortes utiles, je les rediffuse sur le


> reseau radio des radioamateurs. A priori, soit il y a
> des erreurs dans votre envoi, soit il a fait une erreur
> d'interpretation. Voici sa reponse :

La mémoire sous DOS n'est pas mon domaine, mais plutôt la base de
registre. Je lui ai déjà fait remarquer nombreuses erreurs ds son
torchon de FAQ dédié à la BDR : il n'en a visiblement que faire.

KiWin

--
Ach. DD 5 à 10 Go en IDE.
Propose 25 euros port compris.


Will E. Coyote ©

unread,
Aug 5, 2002, 7:34:19 AM8/5/02
to
A l'ouverture de la chasse au Beep-beep, Will E. Coyote proclame:

> Bonjour Will,
> trouvant ces FAQ fortes utiles, je les rediffuse sur le
> reseau radio des radioamateurs. A priori, soit il y a
> des erreurs dans votre envoi, soit il a fait une erreur
> d'interpretation. Voici sa reponse :
>

Ce que j'ai voulu dire, c'est que les programmes résidents sont stockés
en priorité dans la zone HMA (1024 à 1088 Ko). Celle-ci est chargé
(C:\Windows\Himem.sys) en tout premier lieu.
Les UMB servent essentiellement pour stocker la mémoire vidéo, le
système (Io.sys) et les commandes internes (ROM)

J'ignore si les UMB servent à stocker des résidents, mais avec les
programmes ci-dessus, il ne doit pas rester beaucoup de place...

> Ah, bon ? C'est nouveau, ça ? Depuis que cette possibilité de gérer
> les UMBs existe (depuis le MS-DOS 5), Microsoft a toujours dit que
> c'était, justement, pour y loger les résidents !
>
> Voici un extrait de CONFIG.TXT, fournis avec les différentes versions
> de Windows (celui-ci vient de Windows 98 SE) :
>

> Sous Win98, IO.SYS a une taille > 200 Ko, le COMMAND.COM > 90 Ko.
> Donc les 64 Ko de la HMA seront insuffisants pour y loger tout ca. Il
> n'est pas question d'y loger, en plus, les résidents.

Voir ma réponse ci-dessus.
Personnellement, je ne considère pas Io.sys et command.com comme des
programmes résidents.

> La commande MEM /C nous donne, d'ailleurs, la répartition de ces
> programmes. Je vous laiise découvrir les particularités de votre
> machine.
>
> > Le gestionnaire de mémoire Himem.sys sert à configurer la gestion
> > de la mémoire étendue. En général, ...
>
> Non, HIMEM.SYS sert à récupérer toute la mémoire au dessus du Mo (la
> HMA exclue) pour la transformer enmémoire XMS (c'est une norme).

Ah bon. HMA fait pourtant bien partie de la mémoire étendue XMS.
Quand on qualifie la mémoire haute HMA comme "les 64 premiers Ko de la
mémoire étendue", cela veut tout dire...
Là, on a des opinions divergeantes...

> Non ! Un fichier système (.SYS) se charge depuis le CONFIG.SYS et pas
> depuis l'AUTOEXEC.BAT !

Ah bon. En tout cas, mon fichier Country.sys est bien lancé à partir de
l'Autoexec.bat

> J'avais écris, à une époque, 3 fichiers sur cette gestion mémoire. Si
> cela intéresse quelqu'un, je peux les re-diffuser.

Cela m'interresserais de le voir, oui...


--
Will E. Coyote © - Prof 'Brizmenu' - will....@yucom.be
Partition Magic 7fr, Kaspersky AVP 4.0, Paint Shop Pro 7.02 ...

ftp://downloads:rokn...@coyote.27south.com/Utilitaires


mp3 à gogo! (Musiques de film, antologies, disco-dance '80-'90)

ftp://juke-box-mp3:rokn...@coyote.27south.com

Lud@vic

unread,
Aug 10, 2002, 7:07:59 AM8/10/02
to
Le Mon, 5 Aug 2002 13:34:19 +0200, Will E. Coyote © <will....@yucom.be> a ecrit:

>
>Cela m'interresserais de le voir, oui...
>

Salut,

ok, je transmets ta reponse a l'interessé et des que je vois revenir
les informations, je les transmettrai ici.

A+

Ludovic.

Lud@vic

unread,
Aug 14, 2002, 11:37:48 AM8/14/02
to
Salut Will,

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

Lud@vic

unread,
Aug 14, 2002, 11:37:50 AM8/14/02
to
2/3

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...

Lud@vic

unread,
Aug 14, 2002, 11:37:53 AM8/14/02
to
3/3

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

0 new messages