Is there a limit to create sockets on UNIX??

Guy Harris guy at auspex.auspex.com
Sun Aug 5 11:07:37 AEST 1990


>The per-process open file table is one that must be static, given the
>necessary constraint of maintaining a fixed size u area (the area of 
>user memory the kernel keeps to manage per-process data, such as open
>files and sockets).

And given the assumption that the open file table resides entirely in the
U area.  This assumption is not true in SunOS 4.1, for example; the
first 64 entries live there, the rest, if there are any, are, well,
"controlled by tables that live in memory that can be much more flexibly
controlled."

That memory isn't paged or swapped, but I don't know that u areas are
paged or swapped, either in all UNIX systems, and even if they are, if
few enough processes use more than the number of descriptors that can
fit in the U area, the memory cost of wired-down open file tables for
those processes may not be too bad.

>Btw, I believe, but do not know, that Apollo's DomainOS has scalability
>in the number of per-process open files.  DomainOS is built on an
>internally-developed, production-oriented operating system base.  It
>avoids many scalability problems common in traditional UNIX designs.

Domain/OS may implement the open file table in userland; that means it
may "live in memory that can be much more flexibly controlled."

The problem with traditional UNIX systems here is that they haven't been
as hospitable to sharing data structures between processes as other
systems, perhaps due, in part, to less-ambitious original design goals,
and perhaps due, in part, to the PDP-11s small number of large memory
managment chunks; in general, shared stuff has lived in the kernel. 

UNIX systems these days live on hardware a bit more hospitable to
sharing multiple independent pieces of a process's address space, and
mechanisms to allow that sort of sharing are appearing in more UNIX
systems.  Mach's user-mode implementation of the UNIX programmer's
interface may already use Mach's mechanisms of that sort to manage file
descriptors (the USENIX paper leads me to infer that, but it doesn't
come out and say it, at least not from my quick 2-minute scan).

Aegis/DomainOS also lives on hardware of that sort, and happenes to be
designed to use it in that fashion.  Whether this makes it more
"production-oriented" is another matter, and one I'd leave up to people
who can indicate how reliable, etc.  Domain/OS systems they used were as
compared to whatever "conventional UNIX" systems they were using; you'll
probably find people in both camps.... 



More information about the Comp.unix.questions mailing list