Sujet : Re: base and bounds, Why I've Dropped In
De : johnl (at) *nospam* taugh.com (John Levine)
Groupes : comp.archDate : 16. Jun 2025, 03:33:37
Autres entêtes
Organisation : Taughannock Networks
Message-ID : <102nvq1$2ig9$1@gal.iecc.com>
References : 1 2 3 4
User-Agent : trn 4.0-test77 (Sep 1, 2010)
According to Stephen Fuld <
sfuld@alumni.cmu.edu.invalid>:
Multics had segments of variable size, with each segment paged.
That worked, give or take the inevitable problem of running out of
address bits.
>
I didn't know that about Multics. Thanks John. ISTM that their
approach is the opposite of Unisys's approach. They put the pages
within the base and bounds, whereas Unisys puts the base and bounds
"over" the pages. I think the Mill's approach is to put them "side by
side".
The Intel 386 has a fairly pessimal approach with a bunch of segments of
arbitrary size up all mapped into a single 32 bit linear address space, and they
page the linear address space. Each segment has a base address and size, so
you'd think you could use them like Unisys did. But the segment sizes are 32
bits so each segment can in principle be up to 4GB except that all of the
currently addressable segments (up to six since there are six segment registers)
have to fit into the 4GB linear address space, which means some pretty fancy
allocation strategies if you don't want to get into situations where the active
segments don't fit and they're thrashing in and out.
I believe that all Unix-ish operating systems create full size segments for
code, data, and stack, map them all at location 0 in the linear address space,
and in practice make the segments go away.
-- Regards,John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",Please consider the environment before reading this e-mail. https://jl.ly