Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/3/84; site soph.UUCP Path: utzoo!watmath!clyde!burl!ulysses!gamma!epsilon!zeta!sabre!bellcore!decvax!genrad!panda!enmasse!enms2!soph!dave From: dave@soph.UUCP (Dave Brownell) Newsgroups: net.micro Subject: Re: What Unix needs is ... Message-ID: <154@soph.UUCP> Date: Tue, 30-Apr-85 21:51:53 EDT Article-I.D.: soph.154 Posted: Tue Apr 30 21:51:53 1985 Date-Received: Fri, 3-May-85 23:43:17 EDT References: <381@wdl1.UUCP> <> Reply-To: dave@soph.UUCP (Dave Brownell) Organization: Enmasse Computer Corp., Acton, Mass. Lines: 30 Summary: There IS a troublesome semantic for shared memory. I agree, it is hard to say UNIX lacks shared memory when I can use it on this very (UNIX) machine!! But the person who said that there are no machine-dependant semantics was not thinking of multiprocessor environments. Consider the case of two CPUs on a bus; each one has a cache of some size, and each cache has what I will call a "cache chunk size": the size of the minimum cacheable bit of memory. The problem is simple: suppose two processes, communicating with shared memory, need to access locations N and N+X? If they are running on the two different CPUs, there is no way to determine whether mutual exclusion has been achieved on the chunk of memory with location N unless you know the cache chunk size. To bring this to a concrete point, say you have two 68020 processors and the data space is cached on longword boundaries (4 bytes). If processor A reads location 1000, and processor B reads location 1002, even a lock on every byte would not detect the collision. (Both bytes are in the same longword.) The programs need to know that hardware exclusion operates in longword units. Naturally, this crops up only in multiprocessor cached environments. (Which we hope will become much more common...) -- Dave Brownell EnMasse Computer Corporation enmasse!dave@Harvard.ARPA {genrad,harvard}!enmasse!dave