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.
next prev 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).