The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Rob Gingell via TUHS <tuhs@minnie.tuhs.org>
To: tuhs@minnie.tuhs.org
Subject: Re: [TUHS] Early shared library implementations
Date: Sun, 10 Oct 2021 23:43:45 -0700	[thread overview]
Message-ID: <c4537dd3-dd91-e48a-aa7b-70967e2943f5@computer.org> (raw)
In-Reply-To: <202109301039.18UAdT0F026748@freefriends.org>

On 9/30/2021 2:01 AM, Paul Ruizendaal via TUHS wrote:
> So far, I have not come across any shared library implementations or
> precursors in early Unix prior to SunOS 4.

On 9/30/2021 3:39 AM, arnold@skeeve.com wrote:
> In more or less the same time frame, the AT&T UnixPC / 3B1, which was
> OEM'ed from Convergent, had shared libraries.  This was ~ 1986.

On 9/30/2021 7:12 AM, Charles H Sauer wrote:
> ... A more > sophisticated shared library design was one of the additions in AIX 3.

There was also SVR3 (which I believe was the basis for the referenced 
AIX 3 shared library work). SVR3 shipped in 1987, SunOS 4 in May 1988.

There was a swarm of UNIX shared library projects during the 1980s. Some 
of those preceded or were occurring contemporaneously with SunOS 4. Many 
reached at least a running prototype stage, perhaps deployed as specials 
for customers, and some reached product status.

Some of the projects had papers published and there are a few old 
manuals available through bitsavers.org.

To fill out the history a bit, here are three (including SVR3) that had 
papers published. They also serve to illustrate the different approaches 
being taken. I can not find on-line copies of the papers, but others may 
have better luck or will have access to paper copies of the conference 
proceedings. SVR3 has extensive documentation on bitsavers.org, as does 
some older editions of UTek.

The three projects are:

1. a 68000-based 7th Edition port;
2. UTek: Tektronix's version of 4BSD for their workstations; and
3. System V Release 3.

The first project had a paper published as part of the USEnix track of a 
UniForum Conference in January 1984 and was titled "Transparent 
Implementation of Shared Libraries" and authored by C.B. Downing and F. 
Farance.

The other two had papers published in the 1986 Atlanta Summer USEnix 
proceedings and were: "A New Virtual-Memory Implementation for UNIX" by 
E. W. Sznyter, P. Clancy, and J. Crossland (UTek); and "Shared Libraries 
on UNIX System V" by J. Q. Arnold.

A very thorough description of the SVR3 shared library mechanism is 
available at:

http://bitsavers.org/pdf/att/unix/System_V_Release_3/308-139_UNIX_System_V_Release_3_Programmers_Guide_1987.pdf

Some UTek documentation, including their mmap specification but 
appearing to pre-date their shared libraries work, is available at:

http://bitsavers.org/pdf/tektronix/6130_4132/

For the "Transparent Implementation..." paper, the "transparent" 
referred to a goal that an application's source code not be modified to 
link with shared libraries. That, and sharing, were about the only goals 
common to all the projects of the era. Nearly every other design choice 
varied across the projects as determined by the approach taken or the 
constraints under which the project operated.

On the subject of mmap's origins: UTek used mmap, but specified mmap to 
take a pid instead of a file descriptor for the source of the mapping. 
It appears they contemplated an fmap to map from a file. So for sharing 
to occur, there was to be a daemon that scooped up and relocated in its 
address space all the libraries to be shared and then advertise what it 
had. Client processes would rendezvous with the daemon at runtime and 
map the portions of that process they required to accomplish the sharing.

A common characteristic of these 3 projects was that symbols were 
resolved at ld-time, necessitating some external coordination about how 
address spaces were to be laid out but minimizing run-time overheads. 
The referenced SVR3 documentation provides a good description of the 
considerations involved.

  parent reply	other threads:[~2021-10-11  6:44 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-30  9:01 [TUHS] mmap origin (was Systematic approach to command-line interfaces) Paul Ruizendaal via TUHS
2021-09-30 10:39 ` [TUHS] Early shared library implementations arnold
2021-09-30 14:12   ` Charles H Sauer
2021-10-11  6:43   ` Rob Gingell via TUHS [this message]
2021-10-11  7:08     ` George Michaelson
2021-10-11 14:22       ` Clem Cole
2021-10-17 22:19     ` Chris Hanson
2021-10-17 22:15   ` Chris Hanson
2021-09-30 12:56 ` [TUHS] mmap origin (was Systematic approach to command-line interfaces) Dan Halbert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c4537dd3-dd91-e48a-aa7b-70967e2943f5@computer.org \
    --to=tuhs@minnie.tuhs.org \
    --cc=gingell@computer.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).