Unix: Difference between revisions
imported>Eric M Gearhart (Wording, added reference. A "group of four people" participated in Unix's original development) |
imported>Eric M Gearhart (Big edit, trying to clean up ugly wording.) |
||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
'''Unix''' (officially trademarked as UNIX®) is a [[computer]] [[operating system]] originally conceived and developed by a group of researchers as an unofficial side project while they were working at [[Bell Laboratories]]. | '''Unix''' (officially trademarked as UNIX®) is a [[computer]] [[operating system]] originally conceived and developed by a group of researchers as an unofficial side project while they were working at [[Bell Laboratories]].<ref name="Genesis">{{cite web|url=http://www.faqs.org/docs/artu/ch02s01.html|title="Origins and History of Unix; Genesis: 1969–1971"| retrievedate=09-April-2007}}</ref> Unix was not originally "officially a project," and was not taken seriously in the beginning by AT&T. At the time AT&T and Bell Labs' focus had been on getting the MULTICS project out the door. Ironically, MULTICS has become a footnote in the history of operating systems in general, while Unix and Unix-like operating systems have thrived. | ||
Unix and its [[source code]] was copied and studied freely, and at the time its development was quite open compared to other commerical operating systems of the time. In the 1970s typically proprietary software developed by companies was closely guarded, and nothing like the [[open source software|open source movement]] had taken root. Due to Unix's openness and the fact it was studied at universities, and the open nature of development fostered at Bell Labs at the time, Unix's implementation has influenced the subsequent design of both the many operating systems that followed it and many University students that have studied it. The desire for more portability in operating systems inspired by Unix also led to the co-development by Dennis Ritchie of the ubiquitous [[C (programming language)|C programming language]]. | |||
The "open nature" of Unix development had a profound impact on Unix and its descendants, especially in later years when AT&T decided finally attempted to take ownership of it. Many developers were scared away by the legal proceedings that AT&T initiated, and jumped ship to other operating systems that were unencumbered, most notably [Linux]]. | |||
==Unix History== | ==Unix History== | ||
===Project Origins=== | ===Project Origins=== | ||
It all started at Bell Laboratories, one of the more unusual workplaces that encouraged research "for the sake of research," and consequently (and quite unknowingly) would come to define the future of Computers, much like Xerox's Palo Alto Research Center would in the 1970s. The group of researchers that would participate in the development of Unix were at the time working on a project that was reluctantly turning into a "dead end": MULTICS (Multiplexed Information and Computing Service). MULTICS was an ambitious project at AT&T Labs in the 1960s. But the project had stalled, failing under its own ambition and unable to follow through on its revolutionary design. Thompson and Ritchie began working on a new system unofficially, and the name they gave it was an ironic play on MULTICS' failure: Unics (UNIplexed Information and Computing Service). The point of this naming was chiefly to underscore that its design would be a rejection of the complexity of Multics, favoring a more practical and more easily developed model. | It all started at Bell Laboratories, one of the more unusual workplaces that encouraged research "for the sake of research," and consequently (and quite unknowingly) would come to define the future of Computers, much like Xerox's Palo Alto Research Center would in the 1970s. The group of researchers that would participate in the development of Unix were at the time working on a project that was reluctantly turning into a "dead end": MULTICS (Multiplexed Information and Computing Service). MULTICS was an ambitious project at AT&T Labs in the 1960s. But the project had stalled, failing under its own ambition and unable to follow through on its revolutionary design. Thompson and Ritchie began working on a new system unofficially, and the name they gave it was an ironic play on MULTICS' failure: Unics (UNIplexed Information and Computing Service). The point of this naming was chiefly to underscore that its design would be a rejection of the complexity of Multics, favoring a more practical and more easily developed model. | ||
The original group of four who were most involved in the beginnings of Unix were Ken Thompson, Dennis Ritchie, M. D. McIlroy, and J. F. Ossanna <ref name="The Evolution of the Unix Time-sharing System">{{cite web|url=http://cm.bell-labs.com/cm/cs/who/dmr/hist.html|title="The Evolution of the Unix Time-sharing System"|author=Dennis M. Ritchie|retrievedate=2007-04-20}}</ref> | |||
''see also the "Evolution of the Unix Time-sharing System" article in the [[Unix#External_Links|External Links]] section'' | ''see also the "Evolution of the Unix Time-sharing System" article in the [[Unix#External_Links|External Links]] section'' |
Revision as of 14:25, 20 April 2007
Unix (officially trademarked as UNIX®) is a computer operating system originally conceived and developed by a group of researchers as an unofficial side project while they were working at Bell Laboratories.[1] Unix was not originally "officially a project," and was not taken seriously in the beginning by AT&T. At the time AT&T and Bell Labs' focus had been on getting the MULTICS project out the door. Ironically, MULTICS has become a footnote in the history of operating systems in general, while Unix and Unix-like operating systems have thrived.
Unix and its source code was copied and studied freely, and at the time its development was quite open compared to other commerical operating systems of the time. In the 1970s typically proprietary software developed by companies was closely guarded, and nothing like the open source movement had taken root. Due to Unix's openness and the fact it was studied at universities, and the open nature of development fostered at Bell Labs at the time, Unix's implementation has influenced the subsequent design of both the many operating systems that followed it and many University students that have studied it. The desire for more portability in operating systems inspired by Unix also led to the co-development by Dennis Ritchie of the ubiquitous C programming language.
The "open nature" of Unix development had a profound impact on Unix and its descendants, especially in later years when AT&T decided finally attempted to take ownership of it. Many developers were scared away by the legal proceedings that AT&T initiated, and jumped ship to other operating systems that were unencumbered, most notably [Linux]].
Unix History
Project Origins
It all started at Bell Laboratories, one of the more unusual workplaces that encouraged research "for the sake of research," and consequently (and quite unknowingly) would come to define the future of Computers, much like Xerox's Palo Alto Research Center would in the 1970s. The group of researchers that would participate in the development of Unix were at the time working on a project that was reluctantly turning into a "dead end": MULTICS (Multiplexed Information and Computing Service). MULTICS was an ambitious project at AT&T Labs in the 1960s. But the project had stalled, failing under its own ambition and unable to follow through on its revolutionary design. Thompson and Ritchie began working on a new system unofficially, and the name they gave it was an ironic play on MULTICS' failure: Unics (UNIplexed Information and Computing Service). The point of this naming was chiefly to underscore that its design would be a rejection of the complexity of Multics, favoring a more practical and more easily developed model.
The original group of four who were most involved in the beginnings of Unix were Ken Thompson, Dennis Ritchie, M. D. McIlroy, and J. F. Ossanna [2]
see also the "Evolution of the Unix Time-sharing System" article in the External Links section
The Unix Renaissance
Because Unix at first was not an "official project" at Bell Labs, it enjoyed a level of openness not normally enjoyed by commercial software projects. This was felt most at colleges and universities at the time, whose students were studying the innards of the operating system to gain further understanding of the internals and nuances of operating system design and development. This also fostered interest in the project: because students were already familiar with Unix from school, they were more likely to use it later in their professional lives after college. The openness of Unix when it was first developed only served to increase its popularity where it mattered most.
for more information, see the Berkeley Software Distribution article
The Unix Wars
During the late 1970s and early 1980s, after the academic 'golden age' of Unix the influence it had in the classroom on young academics that were "learning by doing" led to large-scale adoption (particularly of the BSD variant) of Unix by commercial startups, most notably Sun Microsystems. Also AT&T finally decided to sit up and take notice, and this led directly to battle lines in courts being drawn. AT&T was suddenly fighting in court to prove that it "owned Unix."
Today
Today, in addition to certified Unix systems (see POSIX, Unix-like operating systems such as Linux, Mac OS X and BSD derivatives have matured and flourished, and many derivative works owe their ancestry to Unix roots.
Common Unix Similarities
Among the diverse array of different variations of Unix, there are general similarities that one can expect to see consistently among the different versions. Listed here are several of the "common traits" of Unix in general.
The philosophy of Unix
Although there is quite a variety among Unix systems, one common theme is the so-called "small tools that do their job very well." That is, a Unix system has many programs, each of which specializes in a small task. The user can combine these tools (via scripting or piping) to accomplish higher level goals. Although this may make some tasks more difficult than common graphical user interfaces, it allows the user to perform complicated tasks that were not explicitly allowed for by the interface's designer.
For instance, suppose the user wanted to create an archive of all files which reference his vacation created between two and three month ago. Under Unix, this could be accomplished as a combination of tar (the archiving application), find (a file search application) and grep (a file pattern matching application). In a single command:
tar czf vacation.tar.gz `find . -ctime +60 -ctime -90 -exec grep -il vacation {} \;`
In contrast, a user in a typical graphical user interface would need to use the search application to find such files, wait for the search to complete, and then use an archiving application to create the archive.
Everything is a file
In Unix everything system related is represented as a file. Special "character device files" are used to represent everything from memory, to attached devices such as mice and keyboards, to the "bit bucket". Even random data needed for encryption can be pulled from /dev/random or /dev/urandom (files whose purpose is simply to output random data). Also statistics on the system are represented in a special virtual file system called /proc.
For example, showing the contents (using the 'cat' command) of /dev/mouse would generate input on the screen as you moved the mouse, and specifics of the processor in use can be found in the file /proc/cpuinfo.
This design philosophy was taken to another level by another operating system implemented by Unix's designers, Plan 9. In Plan 9, every machine on the network is represented by files, and are remotely accessible.
File Structure
One of the more influential aspects of UNIX and UNIX-like systems is their hierarchical file structure. Files are organized into directories, each of which contains further directories and files in a branching structure, with the slash character "/" used to mark directory nodes. Each directory and file in UNIX also possesses a permissions string, with nine switches which can be set to allow (r)ead, (w)rite, and e(x)ecute permissions for (u)ser, (g)roup, and (others). A directory might, for example, return the string
drwxr-xr-x 6 jsmith jsmith 204 Nov 4 11:12 directoryname
which indicates that the node is a dierctory, flagged for read, write and execute permission for its user, and read and execute only for its user's group, and others.
This combination of hierarchical structure and permissions settings enables a flexible permissions structure, that has also been included in the POSIX family of Unix standards.
User groups can be set to allow different access levels across one branch, or the entire tree, with minimal difficulty. The superuser known as "root" in UNIX automatically has access to all files and directories.
The integration of Access Control Lists, which represent an evolution in file system permissions and allows more granular permissions control, was first implemented in Sun's Solaris operating system. [3] Projects are also currently underway on several Unix variations, such as Linux[4][5] and FreeBSD.[6]
POSIX
POSIX is a standard Application Programming Interface (or API) defined by the IEEE. POSIX is usually thought of as a "Unix benchmark" today. Products that aim for Unix compliance can gain POSIX certification if they meet the requirements of the POSIX standard.[7]
Unix Today
Today Unix has a diverse and varied background, and various systems are split into branches of development, modified over time by AT&T as well as various commercial vendors and non-profit organizations (some of them drawing enough influence and inspiration from Unix that they are referred to as being Unix-like).
Copyright Owner
The present owner of the trademark UNIX® is The Open Group, an industry standards consortium. Only systems fully compliant with and certified to the Single UNIX Specification qualify as "UNIX®" (others are called "Unix system-like" or "Unix-like"). Similarly, POSIX defines a standard set of system calls, utilities and standard library functions for Unix-like systems.
External Links
The Evolution of the Unix Time-sharing System, written by one of the founding Unix developers, Dennis Ritchie
Related Topics
References
- ↑ "Origins and History of Unix; Genesis: 1969–1971".
- ↑ Dennis M. Ritchie. "The Evolution of the Unix Time-sharing System".
- ↑ "Using Solaris ACLs".
- ↑ "Linux Extended Attributes and ACLs".
- ↑ "POSIX Access Control Lists on Linux".
- ↑ "The FreeBSD Handbook: File System Access Control Lists".
- ↑ "IEEE POSIX® Certification Authority".