Path: utzoo!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 Article-I.D.: geac.2716 Posted: Sun May 8 17:53:26 1988 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 | 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.