BSD vs UNIX vs Linux, part 1 |
||
![]() Ker Asmodai The Linux vs System V vs BSD thing is really a long long story of politics. Firstly, lets wipe Linux from the equation. It doesn't matter for the first 10 or so years, so we'll ignore it for now. In the beginning, there was the UNIX Time-Sharing System from AT&T Bell Labs. And it was good. AT&T could not sell UNIX commercially because of its monopoly status etc, so they decided to give it to universities who wanted it (it was licensed, but thats a totally different story). One of the universities that got the UNIX tape was the University of California, Berkeley. The first tape would have been 5th Edition UNIX (the rest were at various stages of C implementation, so they were "internal" if you wish to call it that). A certain young hacker known as Bill Joy was at UCB (in the CSRG) at this time, and was working with UNIX. He is responsible for that which is known as Curses, termcap and vi. This was the BSD tape (Berkeley Software Distribution). It was curses, termcap, vi, trek and several other (including a Pascal compiler iirc - not got the tape image close by). The 1BSD tape was an extension of 6th Edition UNIX. The original 2BSD tape was most likely 1BSD + bug fixes + enhancements to 6th Edition UNIX - again, I dont have the tape image handy. There was a project to port UNIX to the DEC VAX architecture - this being known as the 32V project. UNIX 32V was spawned from 7th Edition UNIX. And, UCB incorporated this into 3BSD, porting BSD to the VAX. So, 1 & 2BSD = PDP, 3BSD = VAX. By this time (again, no tapes), the Berkeley guys had probably made several enhancements to the UNIX kernel, as well as various hardware drivers et al. 3BSD then became 4BSD, and this is where the real differences start showing through. As most of you probably know, 4.2BSD was the "networked" release (well, 4.3BSD being the actual proper "networked" release). 4BSD introduced more than the DARPA stuff though. It included such wonders as Sun's NFS, RPC, the virtual inode layer, ports to multiple architecture (you *can* build the 4.4BSD kernel on x86), better process scheduling, better memory management (including virtual memory) and more(1). Now, recall 2BSD. BSD doesn't have linear versions (i.e. 4 follows on from 3, but not 2). 2BSD still exists (2.11BSD being the current release), and is aimed for VAX and PDP-8/PDP-11 Now, its important to remember here that BSD included AT&T source code. When UNIX was brought by Novell (when USG became USL), they also owned that source code. Novell attempted to protect their proprietry source. They sued UCB. UCB did an out-of-court settlement with Novell, and promised that they'd remove all Novell proprietry source. This lead to 4.4BSD/Lite and 4.4BSD/Lite-2 - the current BSD "standard" that FreeBSD, NetBSD, OpenBSD, BSD/OS all conform to. Its interesting to note, that FreeBSD 1 was also using Novell proprietry source code. FreeBSD 2 quickly changed to 4.4BSD/Lite to remedy that. Several vendor UNIX releases also drew deep from BSD, including Sun's SunOS release. While all this was happening, AT&T "consolidated" their UNIX code into what became known as "UNIX System III" (which drew code from 7th Edution UNIX, CB UNIX, UNIX 32V, TS UNIX and possibly more). This was the USG's (later USL's) main "standard". Now, I cant exactly be sure when this happend (possibly sometime before or after UNIX System V was spawned), BSD stuff started appearing in commercial vendors UNIX releases. Sun's Solaris had BSD support, AIX has BSD support, as does DG/UX, HP-UX, SCO UNIX. And we're not talking about just userland binary compatibility (/usr/ucb). Those of you who are saying "yes yes, the ARPA tools... networking" are partially right. Those of you who are yelling "sendmail" are again partially right. Far more than that was included - virtual inodes, curses, terminfo, utmp, and more! Figure 1.1 - Berkeley in modern UNIX [admin@reliant.unixware.org.uk]$ uname -a ; grep -i berkeley * UnixWare reliant 5 7.1.0 i386 x86at SCO UNIX_SVR5 curses.h: * California, Berkeley, and its contributors. dirent.h: * California, Berkeley, and its contributors. lastlog.h: * California, Berkeley, and its contributors. lastlog.h:In addition, portions of such source code were derived from Berkeley ndbm.h: * California, Berkeley, and its contributors. ndbm.h:In addition, portions of such source code were derived from Berkeley netdb.h: * California, Berkeley, and its contributors. netdb.h: * In addition, portions of such source code were derived from Berkeley ocurses.h: * California, Berkeley, and its contributors. ocurses.h: * systems, but not in V7 or Berkeley UNIX. oterm.h: * California, Berkeley, and its contributors. paths.h: * California, Berkeley and its contributors. pcap-namedb.h: * Engineering Group at Lawrence Berkeley Laboratory. pcap.h: * Engineering Group at Lawrence Berkeley Laboratory. resolv.h: * California, Berkeley, and its contributors. resolv.h: * In addition, portions of such source code were derived from Berkeley term.h: * California, Berkeley, and its contributors. unctrl.h: * California, Berkeley, and its contributors. utmpx.h: * California, Berkeley, and its contributors. utmpx.h:In addition, portions of such source code were derived from Berkeley [admin@reliant.unixware.org.uk]$ grep -i berkeley sys/* sys/bitypes.h: * California, Berkeley and its contributors. sys/buf.h: * California, Berkeley, and its contributors. sys/byteorder.h: * California, Berkeley and its contributors. sys/byteorder_f.h: * California, Berkeley and its contributors. sys/cdefs.h: * California, Berkeley and its contributors. sys/cdefs.h: * @(#)cdefs.h 7.6 (Berkeley) 5/4/91 sys/cred.h: * In addition, portions of such source code were derived from Berkeley sys/dnlc.h: * California, Berkeley, and its contributors. sys/errno.h: * California, Berkeley, and its contributors. sys/fcntl.h: * California, Berkeley, and its contributors. sys/filio.h: * California, Berkeley, and its contributors. sys/filio.h: * In addition, portions of such source code were derived from Berkeley sys/insrem.h: * California, Berkeley and its contributors. sys/ioccom.h: * California, Berkeley, and its contributors. sys/ioccom.h: * In addition, portions of such source code were derived from Berkeley sys/mman.h: * California, Berkeley, and its contributors. sys/mman.h: * In addition, portions of such source code were derived from Berkeley sys/osocket.h: * California, Berkeley, and its contributors. sys/param.h: * California, Berkeley, and its contributors. sys/protosw.h: * California, Berkeley and its contributors. sys/protosw.h: * by the University of California, Berkeley. The name of the sys/resource.h: * California, Berkeley, and its contributors. sys/select.h: * California, Berkeley, and its contributors. sys/signal.h: * California, Berkeley, and its contributors. sys/socket.h: * California, Berkeley, and its contributors. sys/socket.h: * In addition, portions of such source code were derived from Berkeley sys/socketvar.h: * California, Berkeley, and its contributors. sys/socketvar.h: * In addition, portions of such source code were derived from Berkeley sys/sockio.h: * California, Berkeley, and its contributors. sys/sockio.h: * In addition, portions of such source code were derived from Berkeley sys/sockmod.h: * California, Berkeley, and its contributors. sys/sockmod.h: * In addition, portions of such source code were derived from Berkeley sys/swap.h: * California, Berkeley, and its contributors. sys/syslog.h: * California, Berkeley, and its contributors. sys/syslog.h: * In addition, portions of such source code were derived from Berkeley sys/t_kuser.h: * California, Berkeley, and its contributors. sys/time.h: * California, Berkeley, and its contributors. sys/ttold.h: * California, Berkeley, and its contributors. sys/ttychars.h: * California, Berkeley, and its contributors. sys/tuneable.h: * In addition, portions of such source code were derived from Berkeley sys/uio.h: * California, Berkeley, and its contributors. sys/un.h: * California, Berkeley, and its contributors. sys/un.h: * In addition, portions of such source code were derived from Berkeley sys/vmmeter.h: * California, Berkeley, and its contributors. sys/vmparam.h: * California, Berkeley, and its contributors. sys/vmparam.h: * In addition, portions of such source code were derived from Berkeley sys/vnode.h: * California, Berkeley, and its contributors.So, now we know that BSD, as a kernel, is an enhanced form of AT&T UNIX, and that AT&T UNIX evolved to incorporate technologies from BSD. Note: This is pretty inaccurate, but I think I shall perhaps save the indepth stuff (with correct timeline) for a series of CAU lectures ;) (1) See "Design and Implementation of the 4.4BSD Operating System by McKusick et al, Addison-Wesley, 1996" for more details (2) See "The Design of the UNIX Operating System by Maurice J. Bach, Prentice-Hall, 1986" for more details on System V internals. (3) See http://www.unix-systems.org/ for more. List of Acronyms: AIX AIX seems to have no meaning - most AT&T licensee's used "UX" or "IX" postfixes, as using "UNIX" as a product name wasn't allowed - UNIX is a standard and a trademark(3). It's IBM's UNIX. ARPA Advanced Research Projects Agency - see DARPA BSD Berkeley Software Distribution - the name on the 1BSD tape. CB Name of a V6. Whatever "CB" stands for eludes me. Possibly some university. Offshots from USG UNIX, which offshoots from PWB UNIX, which offshoots from UNIX. CSRG Computer Systems Research Group - the group within UCB that researched BSD. DARPA Defence Advanced Research Projects Agency. Also known as ARPA. They "created" the internet (well, kind of), see the addendum for fun with the name. DG/UX Data General's UNIX. Pretty straight forward. HP-UX HP's UNIX. Pretty straight forward. NFS Network File System - uses a lot of RPC to mount remote filesystems as simulated local filesystems. RPC Remote Procedure Call - alls stuff to be executed on remote machines - pretty ingenious really. SCO Santa Cruz Operation - a UNIX VAR, later turned UNIX vendor, later turned owners of the UNIX source code. Solaris Sun's latest UNIX release. Is based on the System V Release 4 kernel. SunOS One of Sun's operating systems - an offshoot (originally) from 4BSD. TS Another UNIX release, with a name that escapes me. TS UNIX offshoots from V6 UNIX. UCB University of California, Berkeley - a pretty famous university UnixWare One of SCO's UNIX releases. The name "UnixWare" was previously owned by Novell. UnixWare has always been the "show point" for all the latest UNIX kernels. UnixWare 1 was System V Release 4.2, UnixWare 2 was System V Release 4.2MP etc. These days, UnixWare has a System V Release 5 kernel. USL UNIX Support Labs - This is the same as the USG, but was "formed" when AT&T took UNIX to the commercial world. These guys, as well as supporting UNIX, were also responsible for its coding and upkeep. USG UNIX Support Group - a group within Bell Labs that was formed to support UNIX users. vnode Virtual inode layer - an abstracted interface for many filesystems. It sits on top of the physical filesystem (FFS, UFS et al) and has a single interface for filesystem access. Example of vnode layer filesystems would be NFS, isofs et al - The idea being that you just need to know one set of API to be able to use file sysctls on any filesystem you can dream of. Addendum: Fun with DARPA ARPA - DoD directive 5105.15 establishing the Advanced Research Projects Agency (ARPA) was signed on February 7, 1958. The directive gave ARPA the responsibility "for the direction or performance of such advanced projects in the field of research and development as the Secretary of Defense shall, from time to time, designate by individual project or by category." DARPA - On March 23, 1972, by DoD Directive, the name was changed to the Defense Advanced Research Projects Agency (DARPA). DARPA was established as a separate defense agency under the Office of the Secretary of Defense. ARPA - On February 22, 1993, DARPA was redesignated the Advanced Research Projects Agency (ARPA) -- as the agency was known before 1972. The change was outlined in President Bill Clinton's strategy paper, "Technology for America's Economic Growth, A New Direction to Build Economic Strength." DARPA - On February 10, 1996, Public Law 104-106, under Title IX of the Fiscal Year 1996 Defense Authorization Act, directed an organizational name change to the Defense Advanced Research Projects Agency (DARPA). Authors note: If I have made any FUBAR's or SNAFU's here, please let me know. Though, be advised - like I said earlier - I did not intend for this to be 100% accurate. This is "brief", and with no real timeline implied.
[ Kernel Asmodai ] [ CASR - Commanding Officer ] [ CAIRC - Server Co-admin | Services Operator ] [ OSI - Project Wyvern Lead Kernel Developer ] [ Other - Lead OS Developer - Kaladix ] "... it is easy to be blinded to the essential uselessness of them by the sense of achievement you get from getting them to work at all. In other words ... their fundamental design flaws are completely hidden by their superficial design flaws." -- The Hitchhiker's Guide to the Galaxy, on the products of the Sirius Cybernetics Corporation. Replies:
|
||
| CyberArmy::Forum v0.6 Generated In 0.01088 seconds |