Re: Combined MEMORY FAQ now online

"Arkady V.Belousov" <[email protected]> Sun, 10 Nov 2002 00:26:45 +0300 (MSK)
Newsgroups gmane.os.freedos.devel
Message-ID <[email protected]>
X-Comment-To: Eric Auer

Hi!

9-Ноя-2002 19:10 [email protected] (Eric Auer) wrote to [email protected]:

EA> http://www.coli.uni-sb.de/~eric/stuff/soft/specials/ memfaq.txt

______________O\_/_________________________________\_/O______________
*** XMS ***


fdxms286: offers XMS and HMA on 286 PCs, at most 16 MB there.
fdxms / himem: offer XMS and HMA on 386 PCs, up to 64 MB.
fdxxms: offers XMS and HMA, up to 2 GB RAM can be used.
DR DOS himem: like himem.
MS DOS himem: like himem.
_____________________________________________________________________
              O/~\                                 /~\O

     "Himem like himem"? :) And, if for second "himem" you mean FD himem
(from second line above), then both MS/DR-DOS (name with dash!) himem works
on 286.

______________O\_/_________________________________\_/O______________
an UMB-only driver. Those drivers reprogram your motherboard to make the
RAM in the UMB area (640k ... 1 MB, excluding ROM and video RAM) accessible.
_____________________________________________________________________
              O/~\                                 /~\O

     "reprogram motherboard/mainboard chipset to map RAM into the UMB area
(area between 640K (A000 segment) and 1M (FFFF segment) limits; part of this
area already used for ROMs with system and video BIOSes and for video RAM)".

______________O\_/_________________________________\_/O______________
XMS -  extended memory specification
EMS -  expanded memory specification
DPMI - dos protected mode interface
VCPI - virtual control programm interface
UMB -  upper memory block (memory chunk in 640k ... 1 MB area)
HMA -  high memory area (1 MB ... 1 MB + 64k area)
CMOS - "Complementary Metal-Oxide Semiconductor" An energy-saving chip
       technology, some 20 years ago, the CMOS RAM for the setup used
       only small amounts of energy compared to the rest of the PC. The
       same chip usually contains the battery powered internal clock (RTC).
RTC  - Real Time Clock, what else?
BIOS - Basic Input Output system (kind of an elementary operating system, or
       better, a collection of drivers for keyboard, disks, and so on).
RAM -  random access memory
ROM -  read only memory
MB  -  megabyte (1024*1024 byte, or 1000*1000 byte, depends ;-)) Computer
       people normally prefer units of 1024.
GB  -  gigabyte (1000 or 1024 MB)
TB  -  terabyte (1000 or 1024 GB). Be warned, LBAcache maxes out at 2 TB disk
       size ;-).
_____________________________________________________________________
              O/~\                                 /~\O

"
EMS  - Expanded Memory Specification (known implementaions: LIM EMS 3.2,
       AQA EEMS, LIM EMS 4.0).
XMS  - eXtended Memory Specification.
EMM/XMM - Expanded/eXtended Memory Manager.
DPMI - DOS Protected Mode Interface.
VCPI - Virtual Control Program Interface.
UMB  - Upper Memory Block(s), also known as UMA (Upper Memory Area).
HMA  - High Memory Area; first 64K of extended memory above 1M.
CMOS - Complementary Metal-Oxide Semiconductor; an energy-saving chip
       technology; also name for the area of nonvolatile RAM (NVRAM), which
       stores BIOS settings and implements RTC while computer turned off
       with help of small accumulator.
RTC  - Real Time Clock.
BIOS - Basic Input/Output System (kind of an elementary operating system, or
       better, a collection of drivers for keyboard, disks, and so on).
RAM -  Random Access Memory.
ROM -  Read Only Memory.
k, K - kilo (1000 or 10^3 multiplier); in case of memory size (kilobyte, kb,
       Kb, kB, KB) should be used 1024 (2^10) multiplier, but for simplicity
       sometime 1000 also used.
M    - mega (1000000 or 10^6 multiplier); in case of memory size (megabyte,
       Mb, MB) should be used 1024*1024 (2^20) multiplier, but again for
       simplicity and marketing purposes (which gives bigger values)
       sometime 10^6 multiplier also used.
G    - giga (10^9 or 2^30).
T    - tera (10^12 or 2^40).
P    - peta (10^15 or 2^50).
"

______________O\_/_________________________________\_/O______________
if you have an AT (286) with a fair amount of memory (at least more
than 640k) then you can use for CONFIG.SYS a)
DOS=HIGH
DEVICE=FDXMS286.SYS
and use the XMS-swapping command.com. That way you have ~620000 bytes
free, but all drivers you load (ctmouse, nansi, ...) are going to be
in conventional RAM, thus eating from those 620000 bytes.
_____________________________________________________________________
              O/~\                                 /~\O

     "If chipset supports, then UMB also may be present with help of some
UMB driver. In this case DOS=HIGH,UMB statement should be used."

______________O\_/_________________________________\_/O______________
The technique with UMBPCI is a variation between b) and c) and
looks like this d)
DOS=HIGH,UMB
DEVICE=FDXMS.SYS (<64M)
or DEVICE=FDXXMS.SYS (>64M memory)
or DEVICE=HIMEM.EXE (if you feel like it)
DEVICE=UMBPCI.SYS
_____________________________________________________________________
              O/~\                                 /~\O

     Isn't better to run UMBPCI before other drivers (including XMS)?

______________O\_/_________________________________\_/O______________
Matthias explains some technical details on the workings of XMSUMB
memory (through the XMS interface, not to be confused with UMB memory
which DOS can use more or less directly.
_____________________________________________________________________
              O/~\                                 /~\O

     DOS don't uses "UMB memory more or less directly", it eats/locks all
(or required part - depends from DOS) UMB memory [at first devicehigh
statement in config.sys?] from UMB provider (through XMS API) and includes
this memory into its own chain of memory blocks.

______________O\_/_________________________________\_/O______________
"Self-LOADHIGHing" programs like SHARE or CTMOUSE sometimes use XMSUMB.
_____________________________________________________________________
              O/~\                                 /~\O

     "Sometime" is incorrect word here (it assumes nondeterministic
algorithms). Should be "try to get UMB directly from XMS API if DOS not
gives access to UMB or have not enough UMB memory".

______________O\_/_________________________________\_/O______________
MS DOS and PC DOS usually eat all XMSUMB memory and re-sell it as normal UMS
memory.
_____________________________________________________________________
              O/~\                                 /~\O

     Not "usually". Always. And should be so: "MS- and PC-DOS locks all UMB
memory from UMB provider (through XMS API) when pointed by DOS=UMB statement
in config.sys and include this memory into own chain of memory blocks;
DR-DOS locks UMB in parts, only as required". And there are no "UMS memory"
nor "normal UMB memory".

______________O\_/_________________________________\_/O______________
> Arkady adds that this is not too important for you unless you
> are developing a TSR yourself.
_____________________________________________________________________
              O/~\                                 /~\O

     "that this _info_ is unimportant for DOS users, it useful exclusively
for a TSR developers".

______________O\_/_________________________________\_/O______________
Further, Matthias tells us then DR-DOS HIMEM offers XMS 2.0, while
DR-DOS EMM386 has builtion (!) XMS 3.0, as well as partial EMS 4.0
_____________________________________________________________________
              O/~\                                 /~\O

     "builtin"?

______________O\_/_________________________________\_/O______________
memory, you have a problem. The idea is that parts of your ROM are
only needed at bootup time, and parts of your graphics RAM are not
needed in text mode.
_____________________________________________________________________
              O/~\                                 /~\O

     Not "graphics RAM", but "memory area for graphics output and part of
video RAM".

______________O\_/_________________________________\_/O______________
> Arkady adds that MS-DOS EMM386 uses a shared "memory pool" that
> the user can allocate either as XMS or as EMS, depending on which
_____________________________________________________________________
              O/~\                                 /~\O

     No. MS-DOS EMM386 _eats_ memory from XMS for EMS. "Shared pool" is part
of QEMM, 386max, probably DR-EMM386.

______________O\_/_________________________________\_/O______________
> is currently needed (I mean, (amount XMS + amount EMS ) < size pool
> is fine, no matter how you distribute your needs between XMS and EMS.
_____________________________________________________________________
              O/~\                                 /~\O

     Should be: "Shared pool mean that _all memory_ will be allocated
through XMS and EMS equally and allocating memory through EMS decreases
memory, available trough XMS. Without sharing unused EMS memory can't be
used through XMS and vice versa."