Path: utzoo!lsuc!spectrix!yunexus!geac!daveb
From: daveb@geac.UUCP (David Collier-Brown)
Newsgroups: comp.arch
Subject: Re: Is the Intel memory model safe from NO-ONE ?!?
Summary: Correction of misunderstanding: segment.
Keywords: Segment
Message-ID: <2716@geac.UUCP>
Date: 8 May 88 21:53:26 GMT
References: <1806@obiwan.mips.COM> <2904@omepd> <353@cf-cm.UUCP> <22830abd:a11@snark.UUCP>
Reply-To: daveb@geac.UUCP (David Collier-Brown)
Organization: The Geac History & Definitions Department
Lines: 62
Posted: Sun May  8 17:53:26 1988


| In article <2411@louie.udel.EDU>, rminnich@udel.EDU (Ron Minnich) writes:
|     But having used segmented machines (done right, at Burroughs) and
|  non-segmented machines, i can say that i trust programs running
|  on segmented machines a whole lot more. And I trust C programs
|  running on non-segmented machines not-a-whit- just ask anybody
|  who knows about NULL pointers.

In article <22830abd:a11@snark.UUCP> eric@snark.UUCP (Eric S. Raymond) writes:
| Waaaait a second, here. It sounds to me like two very different issues are
| being confused.

  Woah!  The comment about NULL pointers probably has to do with
either separate I&D, or is just a snide comment...

| Let's have some definitions:
|      Segmented architecture -- one in which the register width is not
|          sufficient to address all of memory, so that full addresses must
|          be base/offset or segment-descriptor/address pairs.

  Nope.  That's the Intel form that was being complained about.  A
better one is from Organick[1]:

1.2.3  Segments
A segment of a process is a collection of information important
enough to be given a name.  A segment is a unit of sharing and has
associated with it a collection of attributes including a unique
identification.
    Segments are, generally speaking, blocks of code (procedures) or
blocks of data ranging in side from zero to 2**16 words[2].  Each
segment can be allowed to grow or shrink during execution of the
program.  A record of its size is kept in the "descriptor word"
associated with the segment.


  If we use this (still flawed) definition, we get something of
plausible size, with a single name, addressable without explicit
programmer action in an HLL, and pageable/protectable at will.

  Unfortunately, there are only three good sizes in computer science:
zero, one and "as big as you'd like".  Providing the latter is still
a research problem, but we're getting better (As comments in this
forum tend to point out).

 --dave (I hope that helps) c-b

[1] Organick. Elliot I, "The Multics System, An Examination of Its
Structure", MIT Press, 1972.
[2] The segment in question was that of the GE/Honeywell 645, and
had a 4-byte word, giving 2**18 bytes/segment.  This was perfectly
reasonable for code, but was a **pain** for data.  One could have
lots of segments per process, and rarely wanted blocks of code
larger than the limit.  Data, on the other hand, was hard, since
databases could easily exceed the size of a single segment.  And for
some reason, people insisted on calling the database by a single
name, not "fred part one" and "fred part 2".
not too many people wrote librarys big enough to exceed a single segment
-- 
 David Collier-Brown.                 {mnetor yunexus utgpu}!geac!daveb
 Geac Computers International Inc.,   |  Computer Science loses its
 350 Steelcase Road,Markham, Ontario, |  memory (if not its mind) 
 CANADA, L3R 1B3 (416) 475-0525 x3279 |  every 6 months.