>>24
The 68000 had a bus error trap, which had to be used with a second 68k because it was unable to restart the instruction (this was fixed in the 68010, which had full virtual memory). The 8086 didn't have virtual memory at all (its segments were just segment*16+offset). The 286 had virtual memory based on multiple 64K segments and a segment not present exception (for swapping). Segmentation would cut down on buffer overflows, stack smashing, and other vulnerabilities, but isn't compatible with the Unix memory model.