Real mode is a memory-addressing scheme and operating state for computer microprocessors. In real mode, the memory that can be accessed by a program — usually random access memory (RAM) — is not managed or buffered in any way by the hardware, software or basic input and output services (BIOS). This means a program is able to access all reachable memory addresses, regardless of what the memory is being used for, and must manage all aspects of reading and writing to memory locations by itself. Several restrictions come with using real mode, including the fact that the amount of accessible memory is limited to 1 megabyte, because the processor in this mode allows addresses to be only 20 bits in length. From a practical perspective, computer software no longer uses real-mode, because it was replaced by a safer, expandable, more flexible addressing mode known as protected mode.
The central processing unit (CPU) of a computer is where real mode can be activated, and most of the aspects of the mode actually deal with issues usually seen in applications written in assembly language, because they are fairly atomic in nature. Processor chips that are based on the original 8086 architecture begin in real mode when powered on to be able to run programs that were written for earlier hardware, although this often would require emulation software to be successful. Protected mode has almost completely replaced real addressing, as of 2011, to the point where there are very few compilers available that can even compile a program that can use real addressing and even fewer mainstream operating systems that could run it.
Memory in real mode basically is a single, linear sequence of bytes that can be accessed freely with an address made up of a 16 bit segment address and a 4 bit offset within the segment, making a complete 20 bit address when combined. A program can access any point in memory and read or write anything, regardless of what is at the location. This means that, without proper management and knowledge, a program using real addressing mode could easily overwrite the operating system and the system BIOS, trigger a physical hardware interrupt, or accidentally send a signal to a peripheral device. Not only could this cause a system to freeze or crash, but it also could cause data loss or physical damage to hardware.
As processor architecture advanced, protected mode eventually replaced real mode in almost all software. Over time, the use of real addressing mode became unnecessary, because it was incapable of accessing more than 1 megabyte of RAM and unable to use more than 20 bits of the system bus, meaning it could only use a fraction of the resources available on most computers. Real addressing also poses a significant security risk. One of the few ways to write a program that uses real addressing mode is to use assembly language and execute the program under a special disk operating system (DOS) that does not automatically switch to protected mode on startup.