Hi,

On Fri, Mar 9, 2018 at 8:23 AM, Eric Auer <e.a...@jpberlin.de> wrote:
>
> I compiled my program with DJGPP and let it collect
> large amounts of data in RAM (2 GB would be easy)
> and only used file I/O in periods which had relaxed
> timing constraints. Because as said above, when you
> (or your C library) ask the DOS kernel to do stuff,
> you will have 0% CPU time until DOS stuff is done.
>
> By the way, DJGPP only supports 4 GB address space
> and you have to subtract graphics and other MMIO
> areas, so do not expect to have 3.5 or 64 GB heap!

DJGPP since v2 has been DPMI only. Typically, that means CWSDPMI, but
there are also others, of course (e.g. PMODE/DJ or HDPMI32). While
CWSDPMI does support virtual memory, I'm honestly not sure how
bug-free that is on higher-memory systems. Some things don't work as
well due to 4 MB pages (although that is a big improvement in various
ways). You can use CWSPARAM to disable 4 MB pages, but it will be
slower, and using too many 4 kb pages might overflow in low memory on
512+ MB systems (which are common nowadays).

Similarly, I think CWS told me that DJGPP assumes a 2 GB address
space, so you'll have to call sbrk() twice (manually) if you want to
allocate more than 2 GB at a time. IIRC, he promised to help others
use PAE (64 GB), if needed, but nobody ever cared.

Some other DOS extenders support large amounts of RAM, but some
obscure ones have bugs. Causeway (CWSTUB) from OpenWatcom seems to
work well and has (albeit less efficient) virtual memory support, too.
There's also others like DOS/32A (ring 3?) and WDOSX (ring 0), but
they don't support virtual memory, AFAIK.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

Reply via email to