From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,3cd3b8571c28b75f X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-08-29 14:15:40 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!arclight.uoregon.edu!wn13feed!worldnet.att.net!204.127.198.203!attbi_feed3!attbi.com!sccrnsc04.POSTED!not-for-mail Message-ID: <3F4FC27A.5040804@attbi.com> From: "Robert I. Eachus" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: A Customer's Request For Open Source Software References: <3F44BC65.4020203@noplace.com><20030822005323.2ff66948.david@realityrift.com> <20030822020403.625ffbf5.david@realityrift.com> <3F4657AD.1040908@attbi.com> <3F4828D9.8050700@attbi.com> <3F4EA616.30607@attbi.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit NNTP-Posting-Host: 24.34.139.183 X-Complaints-To: abuse@comcast.net X-Trace: sccrnsc04 1062191739 24.34.139.183 (Fri, 29 Aug 2003 21:15:39 GMT) NNTP-Posting-Date: Fri, 29 Aug 2003 21:15:39 GMT Organization: Comcast Online Date: Fri, 29 Aug 2003 21:15:39 GMT Xref: archiver1.google.com comp.lang.ada:41958 Date: 2003-08-29T21:15:39+00:00 List-Id: Larry Kilgallen wrote: > That sounds true for unrestricted access, but the number of occasions > for checks should have to be the same as any other operating system for > data protected as "single writer at a time". I wasn't particularly addressing that, but yeah, in Multics, its "in there." The first and most important feature for supporting multiple writers was known as the first reference trap. When a process accessed a segment for the first time, or wrote to a segment for the first time (for that segment) there was a piece of code associated with each action that would be run (if non-null). Sometimes, for example if a program had a predefined data segment, it would do copy-on-write so the first time the program wrote to its data segment, the process got its own copy. There were a number of "predefined" first reference trap-handlers that were used for common purposes. For example, there was a MRDS (Multics Relational Database System) manager. MRDS ran in ring 2, so if a segment had a write bracket of 2, any attempt to write would be passed inward to MRDS. If you wanted transaction protection, you would define a set of MRDS transactions and MRDS would guarantee the all or nothing character of each transaction. (The first reference trap initialized the database connection.) Even though MRDS supported the whole relational algebra, you could use it for concurrency protection with out using the rest of it. Similarly, the mail system ran in ring 3. Processes sometimes used the mail system just to create and manage (in-memory) queues. No reason not to. Since the mail system didn't have to work through a file system, it could be very fast--and low overhead. Inward ring calls are/were also very cheap in Multics, and returns from an inward call wasn't much of a problem. The tricky part of the ring system was the "crawl-out" in the login daemon. The code had to do a lot of checks that were normally done by the hardware, then "return" into the newly created outer ring environment. -- Robert I. Eachus "As far as I'm concerned, war always means failure." -- Jacques Chirac, President of France "As far as France is concerned, you're right." -- Rush Limbaugh