The 286 used segmentation where you could carve out contiguous regions in ram and select them using the 16bit segment registers. Going outside the segment would cause an interrupt but individual pages and page faults weren't possible until the 386.
We used the segment mode for our real time OS in university as it was simpler than virtual addressing and provided granular enough protection faults for what we were doing.
One neat thing we did with it was use separate segments for different video buffers before they were blitted to the VESA frame buffer region. This gave us a 1980's version of video sandboxing along with vsync'ed double buffering and overlapping windows.
It only really worked because the Pentium 3 we were using could memcpy something like ten thousand times faster than a 286 but it was still cool.
We used the segment mode for our real time OS in university as it was simpler than virtual addressing and provided granular enough protection faults for what we were doing.
One neat thing we did with it was use separate segments for different video buffers before they were blitted to the VESA frame buffer region. This gave us a 1980's version of video sandboxing along with vsync'ed double buffering and overlapping windows.
It only really worked because the Pentium 3 we were using could memcpy something like ten thousand times faster than a 286 but it was still cool.