Computing.Net > Forums > Disk Operating System > DOS Memory Management, 2006

DOS Memory Management, 2006

Reply to Message Icon

Original Message
Name: mcamax
Date: January 6, 2006 at 21:04:52 Pacific
Subject: DOS Memory Management, 2006
OS: DOS6.22/Win3.11/Win32S
CPU/Ram: 450MHz PIII/256MB
Comment:

Two questions:

a) What is the best memory manager available today (QEMM, Memmaker, versions, why?). Some have suggested that if you know what you are doing, manual tweaking is the best. But for many of us mere mortals, we need a program to do this.

b) I want to learn about memory management (manual tweaking) but the recommended IBM link I saw in this forum is now inactive.

Some may say 'asked and answered'. But perusing this forum shows we have experts leaving and new ones joining all the time. Please jump in with your comments. Links to information you agree with would be fine.


Report Offensive Message For Removal


Response Number 1
Name: jboy
Date: January 7, 2006 at 00:00:10 Pacific
Subject: DOS Memory Management, 2006
Reply: (edit)

IMO, yes (as previously noted), QEMM is excellent, but the tools provided by M$ are already installed

For most folks (mortal or not), on most systems, the "broad strokes" are sufficient - it's only if you want or need to squeeze out a few more K that you'd have to roll up your sleeves.

Ok - the basics (as I see them) in M$-DOS 6xx

For a start, setup memory management in config.sys - the first two lines should be (and in order):

DEVICE=C:\DOS\HIMEM.SYS

DEVICE=C:\DOS\EMM386.EXE NOEMS

* NOEMS means "No Expanded Memory" emulation - you won't require this unless you intend to run some oddball program from the '80s or so. Using EMS memory generally means setting up a 'PAGE FRAME' which consumes 64K(!) Then:

DOS=HIGH,UMB

Technically, this can go anywhere but it makes more sense following the first two.

Ok - now DOS should be loaded 'high', freeing up conventional memory, and you should have the capability of loading drivers and devices into Upper Memory (UMBs) with 'DEVICEHIGH' and 'LOADHIGH' (LH) statements in config.sys or autoexec.bat (even the command line, if need be)

A typical system starts out with maybe 100 - 150 K of available UMBs. You may be able to free up more of those by turning off 'ROM shadowing' in the BIOS - check the options there - if present, you will also see the range of HEX addresses used by each choice.
Some devices such as network cards or SCSI controllers may require some of those addresses - short of removing the device (or reconfiguring, if possible), those must be left alone. In some cases you may have to employ the 'EXCLUDE' parameter with EMM386 (X= )

That's about it, and is well covered by the DOS6 HELP (Qbasic) application. For the majority, likely this is enough.
You can determine UMB status using mem/f command, and overall useage with mem/c/p


Now, there are a few methods that may allow you more UMBs (more upper memory):

Make 'intelligent' software or configuration choices. For example, not all drivers are created equal - the CD driver "oakcdrom.sys" (supplied with Win98) uses 25K, but you can just as easily use "vide-cdd.sys" instead (5K)
Don't bog DOS itself down with unecessarily high parameters. Setting FILES or BUFFERS too high can bloat DOS to the point where it won't fit into high memory, rendering the DOS=HIGH statement useless. Every setting uses *some* memory, so you may not need to set your 'LASTDRIVE' as Z: or have FCBs or STACKS, or run SETVER. Lower Smartdrv settings can use less memory as well.

Check for unused UMBs. UMASCAN (as I may have mentioned previously) will squirrel these out for you, if present - although more common on older machines, never hurts to look. If found, you would use EMM386's 'INCLUDE' parameter (I= )

If you're really adventuresome, you can steal some addresses from the video controller by employing (likewise) the 'INCLUDE' switch:

I=B000-B7FF

... this is the 'mono' range - not usually needed, but some graphical applications may surprise you (and crash)

If you can create more than one 'region' of UMBs (and 'mem/f' will confirm that) then you could specify which one a particular application or driver loads into, using the region parameter with DEVICEHIGH or LOADHIGH


Order of loading: drivers and applications may require more memory to initialize, then release some once loaded. Rule of thumb is to load the largest ones (memory consumption-wise) first, in reducing order.

In the same vein, in AUTOEXEC.BAT, if you load executables first, SET statements afterwards (including PATH ) you may use less as well.


Recommended Reading:

DOS6 Help (yes, again) - Micro$oft Application

DOS6 Memory Management - Jeff Prosise - PC Magazine

Memory Management For All Of Us - John M. Goodman - SAMS

The One Minute Memory Manager - Phillip Robinson - M&T BOOKS


As it turns out, this is somewhat less than book length itself - hopefully not too many exclusions or errors.

I hope it's of some use, and may provide something of a starting point.

Experiment

If you get people asking the wrong questions, you don't have to worry about the answers


Report Offensive Follow Up For Removal

Response Number 2
Name: mcamax
Date: January 7, 2006 at 08:47:49 Pacific
Subject: DOS Memory Management, 2006
Reply: (edit)

Great stuff! I will copy this to my 3.11 box FAQ file. Others, please jump in with your comments. This topic is very useful to people rediscovering DOS.


Report Offensive Follow Up For Removal

Response Number 3
Name: T-R-A
Date: January 7, 2006 at 09:54:46 Pacific
Subject: DOS Memory Management, 2006
Reply: (edit)

If I had to choose between versions of (pure) DOS, I'd go with IBM PC DOS 2000. It did more with existing memory than MS-DOS (at least on 386 and above machines). I've got it on a couple of systems here at home (as well as a couple with MS-DOS 6.22). It also came with several tools which MS-DOS didn't have (especially a backup program that supported more than just floppies)...


Report Offensive Follow Up For Removal

Response Number 4
Name: mcamax
Date: January 7, 2006 at 17:35:20 Pacific
Subject: DOS Memory Management, 2006
Reply: (edit)

T-R-A, please clarify. Are you saying that IBM PC DOS 2000 has a better memory manager than MS-DOS6.22 or was the whole OS more compact? Also are these special tools, especially the memory manager, portable to MS-DOS 6.22? Will all DOS games and Windows 3.1 work with PC DOS 2000? PS: Saw your impressive collection of computers! (color me green with envy!!).


Report Offensive Follow Up For Removal

Response Number 5
Name: T-R-A
Date: January 7, 2006 at 19:45:45 Pacific
Subject: DOS Memory Management, 2006
Reply: (edit)

PC DOS's RAMBOOST left more conventional memory available than MS-DOS's MEMMAKER (seem to remember it was able to load more stuff into high memory and monitor memory usage). Most of the critical files were smaller (but an overall install of the OS was larger than MS-DOS). The most useful tools were a "real" version of Stacker and Central Point's Backup (which supported most floppy-based and SCSI tape drives, as well as backing up to another directory or partition). Undelete was a little more intuitive than in MS-DOS as well. The "E" editor was more user friendly than DOS's "Edit" (and it's God-forsaken predecessor "edlin") It also had the REXX programming language (instead of Qbasic--neither of much use now). I'm sure you could probably hack-up Stacker and CPBackup to work on a MS-DOS machine (though I've never tried). The only thing I missed from MS-DOS was "Scandisk" but PC-DOS came with a newer version of "Defrag". Never had any problems with any DOS or Win3.x program using it either...

You could actually get the same thing with PCDOS7 and the "Y2K" upgrade for it (still sitting out there on the web somewhere, I'm sure)...


Report Offensive Follow Up For Removal


Response Number 6
Name: neelakantan
Date: January 14, 2006 at 01:46:07 Pacific
Subject: DOS Memory Management, 2006
Reply: (edit)

hi!
i think i can add something here;

as jboy mentioned,dos6 help gives clearly the syntax,notes and sample for usage of emm386 in creating and managing the umbs.

but, when used the himem.sys and emm386.exe with noems options i got only a 42kb UMB (really!) and with all tweaking options of excluding andincluding various mem addresses i couldnot improve on that ( i learnt which addresses when included will crash the computer !)

using alternate cdrom drivers is definitely a good suggestion.

regards
neelakantan

http://computing.net/dos/wwwboard/forum/15994.html


Report Offensive Follow Up For Removal






Use following form to reply to current message:

   Name: From My Computing.Net Settings
 E-Mail: From My Computing.Net Settings

Subject: DOS Memory Management, 2006

Comments:

 


  Homepage URL (*): 
Homepage Title (*): 
         Image URL: 
 
Data Recovery Software




How often do you use Computing.Net?

Every Day
Once a Week
Once a Month
This Is My First Time!


View Results

Poll Finishes In 3 Days.
Discuss in The Lounge