en.swpat.org is a wiki.   You can edit it.   May contain statements End Software Patents does not endorse.

November 2014: About Microsoft’s patent licence for .NET core

SitemapCountriesWhy abolish?Law proposalsStudiesCase lawPatent office case lawLawsuits


Editing Oracle v. Google (2010, USA)

From en.swpat.org
Jump to: navigation, search

Warning: You are not logged in.

Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 247: Line 247:
 
This isn't just fork(), but fork() with file descriptor passing thereafter to distribute requests.  Poll()/select() serve also on Unix variants to recognize not just read and write but also "accept" for new connections, which are then passed to clones of the master process via file descriptor passing.  This mechanism was present in Unix SVR3 and thereafter in the STREAMS subsystem, and in a different form in BSD.  Clone processes can be created all at once via fork() along with the master process which owns a "well-known" port, and it selects a clone to pass a connection to as they arrive.  All wait in poll/select loops on IPC connections (e.g., pipe/FIFO or socket) to the master.   
 
This isn't just fork(), but fork() with file descriptor passing thereafter to distribute requests.  Poll()/select() serve also on Unix variants to recognize not just read and write but also "accept" for new connections, which are then passed to clones of the master process via file descriptor passing.  This mechanism was present in Unix SVR3 and thereafter in the STREAMS subsystem, and in a different form in BSD.  Clone processes can be created all at once via fork() along with the master process which owns a "well-known" port, and it selects a clone to pass a connection to as they arrive.  All wait in poll/select loops on IPC connections (e.g., pipe/FIFO or socket) to the master.   
  
This was first done privately on Linux before Alan Cox replaced Fred van Kempen's original TCP/IP stack with a BSD-compatible stack, but the method has been available in Linux publicly since about a year after that, when Alan finally implemented file descriptor passing using the BSD API.  I don't recall the dates, but a prior STREAMS-style version of FD passing was used to get httpd-1.4 (predecessor to Apache) working in multi-process mode on Linux.  It was somewhere in the '92-96 time frame.  Cf. [http://email.gcom.com/home/linux/lis/ Lis' (Linux STREAMS)] later implementation of FD passing, by the same author.  Both were original code, working only from the SYSV reference manuals with no access to SYSV source code.
+
This was first done privately on Linux before Alan Cox replaced Fred van Kempen's original TCP/IP stack with a BSD-compatible stack, but the method has been available in Linux publicly since about a year after that, when Alan finally implemented file descriptor passing using the BSD API.  I don't recall the dates, but a prior STREAMS-style version was used to get httpd-1.4 (predecessor to Apache) working in multi-process mode on Linux.  It was somewhere in the '92-96 time frame.  Cf. LiS' (Linux STREAMS) later implementation of FD passing, by the same author.
  
 
Reads to me like a description of old-school UNIX fork with copy-on-write memory mapping. Reference: S. Leffler, M. McKusick, M. Karels, J. Quarterman: The Design and Implementation of the 4.3BSD UNIX Operating System, Addison-Wesley, January 1989, ISBN 0-201-06196-1
 
Reads to me like a description of old-school UNIX fork with copy-on-write memory mapping. Reference: S. Leffler, M. McKusick, M. Karels, J. Quarterman: The Design and Implementation of the 4.3BSD UNIX Operating System, Addison-Wesley, January 1989, ISBN 0-201-06196-1

Please note that all contributions to en.swpat.org are considered to be released under the GNU Free Documentation License 1.3 (see en.swpat.org:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)

Templates used on this page: