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
