On 2/22/2006 at 8:06 AM Brian Wheeler wrote:
> But I confess I'm not 100% clear on the
difference. Does anyone know
> of a good online reference to explain it?
The wikipedia on memory management isn't too bad; contrast "segmentation"
with "paging":
http://en.wikipedia.org/wiki/Virtual_memory
However, like a lot of computer-related stuff, these terms are
evolutionary. The wiki would have you believe that special hardware is
necessary for either paging or segmentation. Not true at all--JRT Pascal
used segmentation and ran on a Z80 and I've worked on one BASIC
implementation that paged from disk on an 8085.
Similarly, my earlier comment was that a paging system could be implemented
on a 286 if the page size was defined as the segment size limit--64K.
Since the 286 doesn't offer offsets greater than 64K, one would still have
to go through the nonsense of segment/offset calculation (why the 8086
never implemented a single instruction to compute a segment/offset from an
existing segment-offset+displacement is beyond me), every distinct selector
value represents a different page.
To its credit, Windows 3.x did allocate large structures as a series of
consecutively numbered selectors, so that a program could simply compute a
new selector+offset value.
Cheers,
Chuck