Path: utzoo!attcan!uunet!dino!ux1.cso.uiuc.edu!ux1.cso.uiuc.edu!m.cs.uiuc.edu!p.cs.uiuc.edu!gillies From: gillies@p.cs.uiuc.edu Newsgroups: comp.arch Subject: Re: Personal OS Message-ID: <76700219@p.cs.uiuc.edu> Date: 30 May 90 04:32:00 GMT References: <9437@pt.cs.cmu.edu> Lines: 45 Nf-ID: #R:pt.cs.cmu.edu:9437:p.cs.uiuc.edu:76700219:000:2308 Nf-From: p.cs.uiuc.edu!gillies May 29 23:32:00 1990 > If you look at the software on the Alto, the system from which much of the > one-space mythology is descended, you find that there is no notion of > non-interfering parallel processes at all -- all parallelism has to be > preplanned -- and the only interprocess-communication method that works > between independently-written programs is the file system. They solved this problem in the Xerox/Pilot OS, see "Experience with Processes and Monitors in MESA, CACM, 1978". Since every module in the machine is a reentrant program, and every module may enforce mutual exclusion via monitoring, sharing is well-supported. It seems from looking at the source code in UNIX, that correctness and robustness are halfway down the list of programmer priorities for that system. The programmer expects that the separate address spaces gives him artistic license to write flakey software. He expects to be saved (from a system crash) by a process crash. He has no clue that the system can run out of (swap, file) space. Sure you need separate address spaces under UNIX, because the system software is of such low quality. Do you presume that because there are 65 processes on your machine, that they must all be necessary? In fact, most of them are probably kluges to deal with the separate address space problem in UNIX. The UNIX philosophy is, "we care enough to have a process sniffing at it every half hour" (or N seconds). While this would work in the old days, when there was only a very slow Cron(8) demon, today workstations talk to networks and are unbuffered interactive devices. There is no sanctioned way (under UNIX) to write software that notifies all interested parties (unknown at compile-time) in the system. On the other hand, in a single address-space machine, it is easy for the I/O module to make a notification procedure call, which chains along, notifying all interested entities in the address space. On my old DLion, if the prettyprinter wrote a new version of a MESA source file, then all editors would notice and replot the file window immediately (if no changes had been made). Try THAT under UNIX. Don W. Gillies, Dept. of Computer Science, University of Illinois 1304 W. Springfield, Urbana, Ill 61801 ARPA: gillies@cs.uiuc.edu UUCP: {uunet,harvard}!uiucdcs!gillies