Guys, I can understand your nostalgic feelings for Windows 95.
But realistically speaking, it was one big mess and unfinished.
The relationship between Windows 3.1x, Win32s and other legacy technologies is much bigger than you may think.
The whole VXD model originated from the *.386 drivers in 3.x. That's why it was "a pile of bad drivers" at some point, its skeleton is an interconnection of poorly written VXDs.
Windows 95 is (was) Windows 3.1x on sugar, with the old core components (GDI, USER, KERNEL) being massively hacked to match Windows NT 3.x in terms of features (NT4 was released after Win95).
Windows 95 was never meant to last, it was intended as a quick&dirty intermediate solution.
The whole 16<>32-Bit thunking going on behind the curtain says a lot.
That goes so far that some Windows 3.1x applications can run fine on Windows 95 RTM, but face compatibility issues with late Windows 95 (say 95C) or 98.
And that's why I said PCI was like an alien technology to Windows 95.
Unlike Windows 3.1x, which lets the third-party drivers fiddle with physical hardware freely, Windows 95 prefers to use drivers for this.
It actively sees things like USB host controllers and PCI bridges and tries to initialize them, which is hit and miss. In parts because of 95's immaturity.
(In best cases, no harm is done and a yellow mark is shown in device manager.)
That's why PS/2 emulation for USB mice and keyboards (via BIOS) go away once Windows 95 detects them. Or tries to do so.
To be fair, Windows 98SE faces the same phenomenon here, but it has at least the necessary drivers included (most of the time).
Edit: Unlike ISA and VLB, PCI is based on Plug&Play and uses active resource management.
Which is either done by PnP-BIOS or the OS ('PnP aware OS: Yes/No' in CMOS Setup).
Old systems like Windows 3.1x don't see PCI and don't fiddle with anything.
They rely on pre-configured settings handled by the hardware (physical jumpers or Setup Utility).
- ISA PnP exists, but is a special case (in between). It can be controlled by utilities or BIOS.
The many Windows 95 releases, RTM/A/B/C, were not simple updates to keep Windows 95 up-to-date.
In reality, Win 95 just wasn't finished at all on its release in the year 1995.
It essentially was an unfinished beta (!) version sold due to time constraints.
That's how bad it was. 😟
However, on existing PCs that were still running Windows 3.1x, the bugs didn't show up so often.
The underlying 3.1 foundation was still in there and drivers for Windows 3.1x could still be used.
Users which did the upgrade installation from 3.1x to 95 were thus being saved from the new, poorly written/immature Windows 95 drivers of the time.
Windows 98, by contrast, tries to break free from that legacy. The WDM drivers were being invented to find a healthy balance between Windows 95's messy, but flexible VXDs and NT's robust, yet static drivers.
The whole memory management in Windows 98SE is more elegant.
It's like a re-implemtation of VCACHE in some ways.
The virtual machine monitor, VMM, in Windows 98SE is more feature complete, too.
It's mainly the portly responding GUI (Explorer) introduced in Windows 95 with Active Desktop that makes Windows 98SE appear slower.
Tools like 98Lite can help here, though.
Edit: I guess we could also say that Windows 95 was like an infection or parasite,
from the point of view of the old Windows 3.x foundation.
It grew around the existing functions and took over certain processes..
Like a slime fungus who replaces its host from the inside.
It also did mimicry by using thunking in order to appear to 3.x components as if it was one of them. Like in the insect world. 😉
All in all, Windows 95 has/had a lot of zombie-esque attributes I must say. That's both cool and uncanny.
"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel
//My video channel//