Xref: utzoo comp.unix.wizards:24522 comp.sys.3b1:874 Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!uwm.edu!linac!att!cbnewse!cbnewsd!varney From: varney@cbnewsd.att.com (Al Varney) Newsgroups: comp.unix.wizards,comp.sys.3b1 Subject: Re: Shared Libraries: Unique to Suns?? Message-ID: <1991Mar25.063654.23229@cbnewsd.att.com> Date: 25 Mar 91 06:36:54 GMT References: <1991Mar24.024830.8763@swbatl.sbc.com> <1991Mar24.152800.20651@cbnewsm.att.com> <1991Mar24.172224.4514@yenta.alb.nm.us> Sender: Al Varney Distribution: na Organization: AT&T Network Systems Lines: 62 In article <1991Mar24.172224.4514@yenta.alb.nm.us> dt@yenta.alb.nm.us (David B. Thomas) writes: >myamin@cbnewsm.att.com (m.yamin) writes: > >>In fact, the UnixPC may have had the first released UNIX implementation >>of shared libraries. > >Which brings up a historical question I've wondered about: was the unix pc >the first unix machine to feature dynamically loadable device drivers? Answer to the "device driver" question: Nope. These references are from memory, if you really want facts give me a holler (and some time). There's UNIX(tm) and there's stuff that's close. For real UNIX, there was a version called UNIX-RT (real time) that briefly lived under the name MERT (multi-execution real time??). It died for many reasons.... In life, it was a 3-level OS (user, supervisor and kernel) that implemented process-to-process communication via message passing. The kernel implemented a very simple process manager, with swapping. The visible part of UNIX was really a File Manager process and a Task Manager process running as "supervisor"-level processes. Device drivers were loaded dynamically, when the File Manager (or someone) opened them. If there were no active open()s, the device driver could be replaced without a reboot. If the devices were never opened, the drivers just took up space on the system disk. The system also supported real asynchronous I/O direct to user memory, allowing (for example) a double-buffered tape-to-tape copy with huge block sizes to really fly -- but the CPU slowed to a crawl because of memory bandwidth problems. An offshoot of MERT lives on in the 5ESS(tm) Switch. At one time, a UNIX lived on top of the core of IBM's TSS (Time Sharing System) on System 370s, etc. TSS lived a long but totally ignored life as the "real" OS for System 360/67 multiprocessors. It featured many of the time-sharing benefits of UNIX before UNIX existed. Unfortunately, while the features of file-sharing, page swapping, automatic file allocation, shared read-only text, etc. were all there, the implementation was the usual IBM monolith that combined task control, file management and command line interpretation into one unbreakable whole. BUT it did, I'm told, allow for on-the-fly replacement of some portions of the OS, including device access control (or whatever it was called). On the dynamic library topic: TSS implements (it still lives!) a very dynamic form of library loading/sharing. If you incompletely link-edit a module, the unresolved references show up as address FFFFFFFF. When you execute the module, it gets paged in as needed and, if you reference any of the unresolved addresses, the Paging Supv. looks at the symbol table for you module to find the desired name, then looks at all the entry points of all modules on the JOBLIB chain, looking for that name. If the name resolved to a module that could live as shared text, it would attempt to load/use a shared reference. Obviously slow for production stuff, but great for development!!! It has limitations I don't recall, due in part to the "segment table" limits of the paging architecture. So, if you allow a UNIX implemented on "top of" TSS to count, then a System 370 might well have been the first to implement both UNIX shared libraries and UNIX loadable "device drivers".... And for the programmers that got dedicated system time, a sort of BIG UNIX PC... Additional info. on the MERT/UNIX-RT system was in (I believe) the second all-UNIX issue of the Bell System Technical Journal, around 1982?? Al Varney, AT&T, Lisle, IL