Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!elroy.jpl.nasa.gov!ncar!zaphod.mps.ohio-state.edu!tut.cis.ohio-state.edu!sei!fs7.ece.cmu.edu!o.gp.cs.cmu.edu!andrew.cmu.edu!+ From: Richard.Draves@cs.cmu.edu Newsgroups: comp.os.mach Subject: Re: MACH questions.. Message-ID: Date: 22 Feb 91 02:52:05 GMT References: <19089@paperboy.OSF.ORG> Organization: Carnegie Mellon, Pittsburgh, PA Lines: 46 In-Reply-To: <19089@paperboy.OSF.ORG> > Excerpts from netnews.comp.os.mach: 19-Feb-91 MACH questions.. Vijay > Kumar@nixdorf2.osf (2876) Michael Bushnell already answered questions 1, 4, 5, and 6. > 2. In the article that I was reading, the authors also say > that the mechanism significantly reduces the number of > ports used by object-oriented servers, because they do > not need to create a notify port for every object port. > Clients holding send rights for the object port can not > forge no-senders notifications, because the server can > distinguish messages sent to send rights. > This totally confuses me. Can someone throw some light > on this topic? The server wants to get a no-senders notification for an object port. It needs to give the kernel a send-once right to a notify port. The kernel will send the no-senders notification to the send-once right. The server doesn't need to allocate a separate notify port; it can give the kernel a send-once right to the object port itself. Two things make this work. First, the existence of the send-once right doesn't inhibit the no-senders notification. No-senders notifications only apply to send rights. Second, clients (who hold send rights for the object port) can't forge a no-senders notification, because the receiver of a message can tell if it was sent to a send right or a send-once right. > 3. I have a very sketchy idea about netmsgservers > How would a client initiate communication with a remote > server and reliabaly transfer data? Various steps are > involved before a client start communicating with a > server, like a lookup operation with a nameserver or > the netmsgserver itself provides some sort of lookup operation. > Then what kind of lookup can a client perform (object name, > portname, server name, ......????) What are proxy ports? The netmsgserver exports a simple name service. When a client on machine A looks up a server on machine B, the netmsgserver on A creates a port that is the local representative on A of the server's port (which exists on B). This representative is called a proxy port. The name service returns to the client a send right for the proxy port, which the client will use to communicate with the server. The client doesn't realize (and can't realize) that it is actually using the proxy port to send messages to the netmsgserver on A, which forwards them to B, instead of sending messages directly to the server on B. Rich Brought to you by Super Global Mega Corp .com