Protected Mode

Dennis Faas's picture

Protected mode (sometimes abbreviated pmode) is an operational mode of x86-compatible CPUs of the 80286 series or later. Protected mode has a number of new features designed to enhance multitasking and system stability, such as memory protection, a paging system, and hardware support for virtual memory. Most modern x86 operating systems run in protected mode, including Linux, FreeBSD, and versions of Microsoft Windows 2.0 and later.

The other operational mode of 386 and later CPUs is real mode, a backwards compatibility mode that disables these features, designed to allow old software to run on newer chips. As a design specification, all x86 CPUs start in real mode at boot time to ensure backwards compatibility with legacy operating systems. They must be manually switched into protected mode by a program before any protected mode features are available. In modern computers, this switch is usually one of the very first tasks performed by the operating system at boot time. It is also possible to run code designed for real mode while the CPU is operating in protected mode using virtual 8086 emulation.

While software-mediated multitasking is certainly possible on systems running in real mode, the memory protection features of protected mode prevent an erroneous program from damaging the memory "owned" by another task or by the operating system kernel. Protected mode also has hardware support for interrupting a running program and shifting execution context to another, enabling pre-emptive multitasking.

Most CPUs capable of protected mode also feature 32 bit registers (e.g. any chip of the 80386 series or later), leading to the confusion of protected mode as such with the idea of 32 bit processing. The 80286 chips do support protected mode, but still had only 16 bit registers. Contributing to the confusion, the protected mode enhancements in Windows 2.0 and later were called 386 enhanced mode because they required 32 bit registers in addition to protected mode, and would not run on a 286 (even though 286es support protected mode).

Even when protected mode is enabled on a 32 bit chip, memory above 1MB is not accessible due to memory wrap-around, a feature designed to mimic (now obsolete) IBM XT systems. This limitation can be circumvented by enabling the A20 line.

In protected mode, the first 32 interrupts are reserved for CPU exceptions. For instance, interrupt 0D (13 in decimal) is a general protection fault and interrupt 00 is division by zero.

This article is adapted from:

Rate this article: 
No votes yet