In the original and still most common usage, a virtual address is a number that a machine language program computes and uses to refer to memory. Unless the program is trusted or has been examined it must be assumed that the program might use any such number. Programs and kernels are protected from other programs by arranging that protectees do not appear in the address space of untrusted programs. Each protection entity gets its own address space. The kernel is in charge of this arrangement and employs special memory map hardware that began to appear in computers first in about 1967.

Another concept uses “virtual address” in a slightly different sense. In these contexts the program can generate arbitrary addresses but the use of certain such addresses is denied to some programs and not others. The IBM 360, without virtual storage and the 370 with, used storage protection keys which attached a 4 bit number to each memory page. A 4 bit number was also attached to the process which limited which pages a process could see. Some modern processors mark some pages as supervisory and limit access thereto, to programs running in supervisor state.

Yet another usage of “virtual address” refers to the concatenation of some high order bits, called an ASID (Address Space ID) to the number computed by the user mode machine language program. The ASID is taken from a privileged register. This manner of speaking confuses some discussions but suggests profitable hardware and software ideas. Among these is hardware TLB tags that include the ASID. With this extra TLB cost it is usually unnecessary to purge the TLB on context switches. The idea of the TLB spanning the space of more than one program arose in the “STO STACK” of early 370’s but the new terminology suggested new tricks, I think. This terminology is only a manner of speaking—a particular use of the term virtual address.

Yet other systems allow user programs to generate arbitrary ASIDs, but include mechanisms to allow use of of such addresses depending on the user and the generated ASID. This is then similar to the 360s with their protection keys, but more general in that access permissions can be many (subjects) to many (objects).

The main terminological distinction in the use of “virtual address space” is whether

These two ways of speaking may both be used to describe any of the modern commercial systems, except perhaps the AS-400.
Here is how most machines have defined virtual addresses.