About Software
The existence of software on a particular system goes through three stages; installation, use, and removal; perhaps it will be upgraded while in use. For best results, it is important to manage the installation of software! Some axioms:
Software is usually designed to be as easy as possible to install. This unfortunately requires numerous assumptions about your computer and how you wish to use the application. As the only known location is the root of the C: drive (or perhaps "C:\Program Files") everything wants to install there, which quickly reduces your hard drive to a sprawling disorganized mess. Using the default installation path also makes it easy for malware to locate, destroy or control the software.
Software vendors also arrogantly assume that theirs are the only programs you will use, so they commonly interfere with other installed programs by stealing their file associations, placing shortcuts to themselves on the desktop or on top of the Start menu, or starting bits of themselves automatically.
However, software vendors are aware that more savvy users demand a more hands-on approach to installation, so there is usually a "custom" option that provides this. You should be able to choose where the program will install itself, what parts of the program you wish to use, and have a chance to veto any controversial or questionable 'features' that would be used by default in an "express" installation.
Types of software: The Generation Gap
One of the greatest strengths of Windows 9x is that it supports an incredible range of older software spanning several generations of Microsoft's operating systems. In fact, no other operating system supports such a large range of software!
This is usually misunderstood and undervalued by vociferous guru-wannabes who accuse Windows 9x of being "Windows running on top of DOS". Indeed, Windows 9x can do so if it has to (e.g. Safe Mode), but generally provides an emulated environment for older programs while retaining veto rights on what they do.
Only where DOS platform device drivers or programs are run before the Windows GUI starts, does Windows 9x retreat to running one or more subsystems "on top of DOS", typically with reduced performance as a result. For thorny DOS programs that cannot work within the Windows GUI, there exists the option to run these in DOS mode, which is effectively an upgraded version of MS-DOS with FAT32 support (this functionality has been lost in Windows ME, but can be reclaimed).
A full discussion of the
way Windows 9x emulates or falls back to DOS functionality
is Beyond The Scope Of This Article, or Left As An Exercise For
The Reader. A full discussion of the startup axis and file associations is also
avoided here. I assume you are comfortable with the concept of
directories and paths; if not, become so.
DOS programs and utilities generally have the following characteristics:
Reside purely within
their own directory subtree
Do not invade the startup axis other than Config.sys and AutoExec.bat
However, edits to these startup files are likely to be
inappropriate
Do not invade the rest of the Windows system or Windows directory
May run as Terminate and Stay Resident within system or DOS
sessions
Can usually be "installed" by scraping over their
subtree to new PC
Do not usually come with or require an uninstaller
Usually require sound card, modem and printer settings to be set
by hand
Programs will not "see" Long File Names when opening, saving or copying
files
Utilities may break Long File Names or not work on FAT32 volumes
Use .pif files as shortcuts, and to hold Properties for DOS
executables
Windows 16-bit programs (written for Windows 3.1x) generally:
Do not usually reside
solely within their own directory subtree
May invade the startup axis at Config.sys, AutoExec.bat, Win.ini or System.ini
Edits to these startup files may be inappropriate
Usually do invade the Windows directory by adding files there
May auto-run via Win.ini or Startup group
May grab file associations, always destroying existing actions
defined there
May overwrite system files such as DLLs used by other programs
Can usually not be "installed" by scraping over their
subtree to new PC
Seldom come with an uninstaller, but should do
Seldom require sound card and printer settings to be set by hand
Usually require modem settings to be set by hand
Programs will not "see" Long File Names when opening, saving or copying
files
Utilities may break Long File Names or not work on FAT32 volumes
Windows 3.1x device drivers should not be used in Windows
9x
Windows executables of all generations use .lnk files as
shortcuts
Windows 32-bit programs (written for Windows 9x
and/or NT) generally:
Do not usually reside solely within their own directory subtree
May invade the startup axis at any point
Edits to these startup files may or may not be inappropriate
Usually do invade the Windows directory by adding files there
May auto-run via Win.ini, registry Runxxx keys or Startup
group
May grab file associations, usually destroying existing actions
defined there
May overwrite system files such as DLLs used by other programs
Can usually not be "installed" by scraping over their
subtree to new PC
Usually come with an uninstaller, which should be used to
uninstall
Seldom require sound card, printer or modem settings to be set by
hand
DirectX programs (typically games) generally:
May not reside solely
within their own directory subtree
Are unlikely to invade the startup axis, but can do so at any point
Edits to these startup files may or may not be inappropriate
May invade the Windows directory by adding files there
May overwrite files such as DLLs (and DirectX itself) used by
other programs
Can often not be "installed" by scraping over their
subtree to new PC
Usually come with an uninstaller, which should be used to
uninstall
May require sound and 3D graphics settings to be tweaked by hand
Types of software: Licensing and functionality
Software may be licensed in various ways:
The evaluation and registered versions of shareware will differ in various ways:
It's best to avoid time-bombed demos, because they may prevent re-installation of themselves, die prematurely if system date is set wrong, and often deliberately and permanently embed stuff within the system files to enforce the time limit.
Another class of malicious behavior is that of privacy invasion beyond the usual pressure to "register". A new licensing method is adware, where instead of paying money, the user pays through being subjected to advertising. However, several programs that are not "free" also behave in similar manner, sending home information about user habits etc. These topics are well-covered on other sites, and there are anti-adware utilities that fill the blind spot that most anti-virus programs have where commercial malware is concerned. Zone Alarm will detect and can block attempts of programs to access the Internet in order to "call home", either to pull down ads or send up information.
Types of software: Distribution media
Software may be distributed in various ways:
In the above context, you can think of malware as "wild" software that distributes itself!
Generally, you should avoid allowing installation diskettes to self-modify as this may preclude the ability to re-install the program or embed your personal information within subsequent installations, as attempts to counter piracy.
Never allow an installer to operate while on line, or initiate a modem connection! Avoid "active setup" as there will be no re-installable form available should this be required; the site you downloaded it from may change or not exist, and connection failures during the installation may leave your PC in an "undefined state".
Even when working correctly, software can consume system resources (one reason for the axiom "software is the natural enemy of hardware") as follows:
Now I find users are either oblivious to these matters and work on the see-food diet principle ("ug, see software, must install, ook"), or they have come through the other side of this and don't want to install anything "because it will use up my hard drive".
But from reading the above, it should be clear that assuming non-pathetic hard drive capacity, software has little impact on the system unless it is running. That's why one of the core concepts of good software management is to detect those programs that try to run themselves all the time, and veto this as appropriate.
There is also far less storage impact when the hard drive is not partitioned as one big C: volume, which makes about as much sense as having a house with no dividing walls between garage, kitchen, toilet, bedroom and lounge - and all furnishings in a jumbled heap in one corner of this cavernous space.
Hard disk space is consumed by the program's own directory subtree, by files added to the Windows subtree, by data files created by/within the application, and by workspace requirements that may be in C: and whatever volume it is installed in.
Registry space is consumed by Win32 programs, and less so by Win16 programs as these only know about Win.ini and System.ini; though Windows 9x will migrate settings between these files and the registry, there is usually less space consumed as each .ini file has a 64k size limit. DOS programs hardly impact on the registry at all (they may appear in Most Recently Used lists), unless you manually integrate them into the system - and even there, the space consumed is trivial.
Registry space is significant in that a large bloated registry can cause performance and stability problems, plus there may be a 64k size limit per key in the registry that some really bloated Win32 applications can fall foul of. Also, anything added to the registry remains there until the registry is rebuilt; "deleting" keys merely marks these as not to be used, but they are required to remain to facilitate indexing of other keys.
Windows 98 and later do have the ability to automatically reclaim dead space by rebuilding the registry on startup, if it appears bloated with deletia. But in Windows 95, this process has to be done by hand - and there may be times in Windows 98 when this is advisable; but not in Windows ME! . To rebuild the registry, you can export the entire registry and use RegEdit with the appropriate command line options from true DOS mode to recreate it from the export file. This will leave out broken and deleted keys, which will have been excluded by the export process. This is a non-trivial procedure in that the export and rebuild processes can fail, and you may end up in very deep trouble indeed.
RAM (or more accurately, memory) is used by running processes only. Nothing is ever "stored" in RAM as all contents are lost when Windows exits or the system is reset. However, data and code can only be operated upon by the processor if it is in RAM. Mulling over the last two sentences should clarify the common confusion many users have over what is "RAM" and what is "hard drive space".
The reason why one speaks of "memory" rather than "RAM" in connection with Windows and software is that Windows can "fake" RAM by swapping stuff to and from the swap file on the hard disk. While this 'virtual memory' allows tasks to be performed even when these tasks require more RAM than is physically present, there's a performance hit as hard drive access is hugely slower than real RAM.
A full discussion of virtual memory management and its conceptual opposite, hard drive caching, requires another article in itself. But the take-home message is that Windows 95 manages this process well enough to require any manual intervention, and Windows 98 improves this in the few situations where Windows 95 might have benefited from "tweaking". It is also fine and dandy if Windows reports no unused RAM; RAM that is not in use in some way or another is RAM wasted.
The other take-home message is that unless you run a program, it will have no impact on memory usage whatsoever. So as long as the program doesn't run itself in the background, RAM is never a reason to uninstall or not install software.
Processor overhead occurs only when programs are running, and a major reason to reduce the number of background tasks running underfoot. Some of these tasks may be useful or even required, but others are trivial in value; such programs should be hunted down and rooted out of the startup axis. As long as a program does not run itself automatically on startup or and/or run in the background, processor overhead is never a reason to uninstall or not install software (although is a reason not to run the program and thus install it if the PC is under-powered).
Processor overhead also applies to device drivers. A common cost-cutting method beloved by price-heroes is to use "soft" devices such as "HSP", "PC-Tel", "RPI", "WinModem", "requires Windows", "requires Pentium" modems. Such devices rely on the processor to perform basic tasks that are usually done within the device hardware itself; the result is system that may use an eye-catching processor ("Pentium III for only!!!") but may run like a slug on sandpaper. As systems get faster, this overhead may be considered less onerous, but I'd still prefer hardware made out of hardware.
Hardware access to certain devices may be restricted to one process at a time; this is inevitable, given the nature of some devices; for example, a modem can only be connected to one number at a time. This applies only when the program is running, and is no reason to uninstall or not install software that does not run "underfoot".
Now the astute reader may at this point mention that multiple Internet programs can run at the same time, and thus appear to break this rule, or that Windows can make sounds while an audio CD is playing at the same time.
Internet applications work in this way because they are not using the modem; rather, they use Winsock services - and the Winsock is the only task using the modem at the time. But if you try to access the Internet while there is a fax or voice messaging receive program running, you may be unable to connect until this is closed. The same applies in reverse; applications that use the modem directly (such as faxing or voice messaging software) will be unable to 'see' the modem while you re connected to the Internet or using another application that accesses the modem directly.
Sound is another matter, as the sound card is effectively a number of different sound devices in one, with output from these devices balanced in the mixer utility. The devices are; digitized audio such as sound effects and .wav files, music synthesis such as game soundtracks, and pass-through inputs such as CD audio and microphone.
Resource heap space is perhaps the hardest of these concepts to understand, though Windows 3.1x users may have learned through resource crises. Windows 3.1x used three memory pools for certain data objects created by all running programs, and had a 64k size limit on each of these pools! The result is like a haulage van with staff who only store any object made of metal in the cubbyhole.
Read on - it gets worse although Windows 3.1x would give resource space to any program that requests it, it could not reclaim that space if the program did not release it, or if the program aborted without releasing any space at all. That's why it was good practice to exit and restart Windows after a Windows program crashed; doing so was the only way to recreate the resource heaps to free them up.
Windows 9x does what it can to fix this within compatibility constraints. It stores some structures in new, larger heaps, and it reclaims resources once the program that used them is no longer running (for any reason). But all Win16 applications run in the same Virtual Machine, so Windows 9x can only reclaim these after all Win16 code is no longer running. This is a major reason to avoid Win16 underfootware or drivers - because then the Win16 VM never closes!
Windows and programs don't expect the resource heaps to run low, so you seldom see error messages in this regard - or if you do, it's something misleading like "out of memory". Because the size of the heaps is fixed by Windows, adding RAM to fix a resource heap issue is as relevant as putting more petrol in a bicycle. The problem is that several programs (web browsers in particular) "leak" resources, i.e. they store data in the heaps but fail to release all of this space when the data is discarded.
Some common signs of low resource heap space are:
Windows Millenium is said to be more graceful in this regard; claimed to be able to run resources to zero without crashing. I'll pass that on, but haven't had enough hands-on to confirm or deny this.
Closing down running applications may help, starting with those that don't have open files from which data can be lost if they crash while trying to save. But you may have to exit and restart Windows for best results.
Windows and applications also don't expect memory to run low; it's assumed that there is a vast amount of free hard drive space available for use as virtual memory. That's why you should "never" set a maximum limit on the swap file (as advised by some guru-wannabes) and should have ideally 50M+ free on the C: volume.
So you may not get "out of memory" errors when disk space gets low; you may simply have system crashes instead. As Windows only clears the temp files directory on normal exits, the effect of such low-disk crashes in cumulative and exponential; each crash results in more disk space lost to residual temporary files, which in turn precipitates the next "out of memory" crash at a lower threshold.
Software conflicts can also cause crashes, either because of invalid programming assumptions, clashes between different programs, or the 'version soup' effect where software installers overwrite system files used by other programs with different (even older) versions. This is a huge risk when users are told to "just re-install Windows" as this process may revert the versions of several updated files!
Some software uninstallers can cause problems when they remove system files that other software requires for operation - but it is far more common for users to precipitate these crises through attempts to remove programs other than via the uninstaller (e.g. by deleting subtrees or files manually). There have also been problems using 3rd-party uninstallers and registry cleaners, especially when these predate the OS or Internet Explorer version in use.
My advice is still to use the uninstaller, or to first rename or backup what you delete so you can "undo" if you choose or are forced to do otherwise.
The other cause of crashes is bit-rot, for which the main factor is habitual bad exits from Windows that cause corrupted files. Always shut down properly, and chase the cause of crashes that make this impossible!
Another tip is to prevent ScanDisk from automatically "fixing" broken files without prompting you or logging what it is doing - such "fixed" files are usually still broken, but can no longer be detected as such by ScanDisk. So instead of knowing which files need to be extracted from Windows or which applications may need to be re-installed, you may end up having to "wipe and start over".
Errors in the file system can precipitate crashes, as can invalid data files. So it is a good idea to run ScanDisk; just watch what it does!
If there are underlying hardware problems then system stability will be poor. These may be due to misconfiguration; wrong device drivers, overclocked PCI, AGP, ISA or memory busses and processor and so on. Or the system may be overheating due to stuck, absent, or unpowered processor or power supply fans, or poor system ventilation. Remember that hard drives and SVGA chipsets also get hot!
Try to determine the error scope. Is it restricted to one particular program or even data file within that program? Does closing all other tasks prevent the error from occurring? Does the apparent hardware failure affect both Windows, Windows safe mode, and exclusive DOS mode equally?
Sometimes the pattern of error will help when debugging hardware. You can generally exclude hard disk errors through testing, but RAM errors are harder to pin down; in some cases only A/B/A swap testing can exclude this, but SIMM Tester or MemTest86 do pretty well. RAM errors give rise to BSoDs ("Blue Screens of Death") and crashes; heating problems may look similar, but usually start a while after the system is powered up and are also likely to cause system lockups with no messages at all. Bad power supplies or loose mains connections usually cause spontaneous resets or hard lockups, whereas hard drive errors cause huge slowdowns and freezes with the activity LED always lit.
System flakiness can also be caused by malware, which can also cause sudden and catastrophic data loss when the payload hatches. Always exclude malware before going on a hardware witch-hunt, as this is the only software that can affect Windows and pure DOS modes equally, and finally think before you click! Don't install anything without virus checking it first, and virus check thereafter.
Good installers usually go through these stages, which may be out of sequence:
After the installation, you should clean up:
Some installers are pigs, quite frankly, and require severe attention to keep them under control or to limit damage. Usually it's best to avoid such software - Just Say No.
(C) Chris Quirke, all rights reserved - December 2000