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