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".

 

Software Bloat

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!

 

Why Things Crash

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.

 

Installing Software

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

Back to index