The core of modern Unix shared libraries September 3, 2011 The
fundamental Unix development that enabled modern shared
libraries is shared copy-on-write There are two problems with
shared libraries, with the second stemming from the first. The
first problem is how to get them loaded into the process's
address space at all, and it has many possible solutions. The
easiest solution is actually to have the kernel do it, since
after all the kernel is already mapping code and data from the
executable; all it needs to do is map some additional things
from another file (or several other files). (Kernel loading was
actually how some early shared library implementations worked,
but that's another entry.) The second problem comes from the
first problem, and it is how to deal with shared libraries being
mapped into different places in memory in different processes
while still sharing as much physical memory between processes as
possible. Here there are many fewer solutions and most of them
are not very good (position ind