A few weeks ago, I mentioned that the kernel folks decided not to expose bonus bytes to applications. Some people were confused by this statement, not for what it said, but for what it implied. "Wait, you're telling me that the heap is implemented in kernel mode?"

Let's turn the clock back to 1983.

The core components of Windows fell into three categories:

  • The window manager, known as user, because it handled the user interface.
  • The graphics engine, known as GDI, short for Graphics Device Interface.
  • File I/O, the scheduler, memory management, and other low-level bits, known as kernel.

Windows 1.0 ran on the 8086, which had no concept of CPU modes or memory protection or any stuff we take for granted nowadays. Everything ran in a single mode, and since there was only one mode, it didn't have a name.

Although future versions of Windows distinguished between kernel mode and user mode (in the CPU mode sense), the old terminology stuck around. The "kernel" was anything related to file I/O, the scheduler, memory management, and other low-level operations, even if they were implemented in user mode.

For a time, there was an effort to use the term "base" to refer to all of these low-level operations and thereby avoid the confusing term "kernel." As you can tell, the attempt was largely unsuccessful. People continued to call low-level stuff "kernel" out of habit.