Hello Ron -

At 08:33 AM 10/25/02 +0000, you wrote:

>  If W3.1 has a limit at 16 MB, nobody told my computer.
>
>Ben A L Jemmett wrote:
>> BTW, I'm 99% certain Windows 3.1 could see all 40MB of installed RAM on my
>> old P133 machine (now doing router/server duty here so I can't boot into
DOS
>> and check); admittedly it's been a long time since I did any development
>> under Win16 so there might be a per-allocation or per-application
limitation
>> I'm forgetting.
>
>   Well, Win3.1 sees all of the 64 MB RAM I have, with a swap file of
>over twice that.
>
>Regards,
>         Ron

Yes, I was confusing W3.0 with W3.1 apparently.  Note that Microsoft
_does_ hint that windows does not report memory accurately (also true
in W9x versions).

http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q84778&;

========= start

Microsoft Knowledge Base Article - Q84778
Memory Use Limitations in Microsoft Windows
The information in this article applies to:
Microsoft Windows Software Development Kit (SDK) versions 3.0, 3.1
SUMMARY
Windows 3.0 can access up to 16 megabytes (MB) of physical memory. With the
release of version 3.1, Windows can access more than 16 MB of physical
memory. This article discusses the factors that influence the amount of
memory available to applications in the Windows environment.
MORE INFORMATION
In enhanced mode, Windows versions 3.0 and 3.1 can use features of the
Intel 386 (and compatible) microprocessors to supplement the installed
physical RAM memory with virtual memory in a disk-based swap file. As
physical memory fills, Windows sends the least-recently used pages of
memory to disk. When this data is later accessed, Windows pages it back in
from disk. This activity is transparent to applications in the system.
Windows 3.0 cannot address any memory with an address higher than 100000h
(16 MB). Windows 3.1 can address at most 256 MB of physical RAM memory, and
the largest swap file Windows 3.1 will ever create is 256 MB. To be used by
Windows 3.1, all physical RAM memory must have an address lower than
7FC00000h (2,044 MB).
While the combination of 256 MB of physical RAM memory coupled with a 256
MB swap file provides a theoretical limit of 512 MB, the actual maximum is
somewhat less than 512 MB.
The architecture of the Intel 386 processor defines a Local Descriptor
Table (LDT), which is used in the memory protection scheme. Windows 3.1
uses one LDT that provides 8192 descriptors. Each descriptor can describe a
block of memory containing at most 64 KB. While multiplying the number of
descriptors by the maximum amount of memory yields the 512 MB theoretical
limit again, Windows will not access this much memory for the following two
reasons:
Windows reserves some descriptors for its own use.
Most memory allocations that use a descriptor do not allocate the 64K
maximum allowed.
Both of these factors reduce the number of available descriptors and the
amount of memory that Windows can use.
While the About dialog box in the Program Manager reports an estimate of
the amount of memory available, Windows does not maintain sufficient
information to accurately report the amount of free memory at any given
time. Maintaining more accurate information regarding the amount of free
memory would seriously degrade system performance because memory is
allocated and freed very frequently.
The values reported by the GetFreeSpace and GlobalCompact functions are
less than or equal to the amount of free memory available in the system.
Because of their imprecise nature, an application should use the value
reported by one of these functions only for an informational display. The
application must not assume that it is possible to allocate that much memory.
The largest block of memory that an application can allocate is affected by
the degree of memory fragmentation. Memory available in fixed portions of
memory may be available for allocation only as a fixed block. For example,
consider the case where the GetFreeSpace function returns 100K available,
and 64K of the available space is located in the fixed portion of the heap
with the remainder in the movable and discardable portion of the heap. An
attempt to allocate a 100K block of movable and discardable memory will
most likely fail.
First Published:
May 19 1992 12:00AM Keywords:
kb16bitonly no32bit 3.00 3.10

=========== end

This may be academic if networking is being used with W3.x?

=========== start
http://support.microsoft.com/default.aspx?scid=KB;EN-US;q83436&;
MaxPhysPage=<hexidecimal-page-number>
Default:  Determined by Windows based on the highest
          physical page number detected by the Memory
          Manager during initialization.
Purpose:  Specifies the maximum physical page number that
          the Memory Manager can manage as a useable page.
          This setting allows pages to be added at a
          physical address beyond what the Memory Manager
          recognized during initialization. If the value
          specified is less than what the Memory Manager
          determines, the Memory Manager will ignore several
          physical pages that it would normally use,
          preventing the use of memory. This is useful if
          you are using a hardware device that cannot
          recognize all of the physical memory in your
          computer (for example, ISA DMA Network cards
          cannot access physical memory above 16 megabytes.)
=====end

Another M$ KB article tells you that MSDOS max is 64meg in 64meg
'chunks' which makes no sense at all - I suspect it should have
been 64meg in 16meg chunks but I've spent more time on researching
this than I have time to waste.



Charles Angelich

The Ghost in the Machine!

DOS and W31 Tech website:
http://www.undercoverdesign.com/dosghost

Stories, poems, music, and photos website:
http://www.undercoverdesign.com/dosghost/faf

To unsubscribe from SURVPC send a message to [EMAIL PROTECTED] with 
unsubscribe SURVPC in the body of the message.
Also, trim this footer from any quoted replies.
More info can be found at;
http://www.softcon.com/archives/SURVPC.html

Reply via email to