There are two levels of software that run on any system. The hardware in a computer can do nothing without instructions. To get a system up and running, there has to be some boot process which prepares the computer to execute programs. Some of the earlier computers required the load instructions to be either toggled in (PDP 8), read from cards (IBM 14xx), or paper tape (Alwac IIIe). All three of these could run as elaborate of program as you would like, you just had to tell it everything the computer needed to do.
All modern computers come with an included set of instructions. Some, like those in cars, have the instructions stored in Read Only Memory (ROM) so that the instructions do not have to be reloaded during “boot up.” The new boot ROMs in most systems, do the initial set-up and then bring up an Operating System (O/S). The Operating System is the minimal software that must be running to make the hardware useful. It is the software through which all programs should talk with the hardware including the core processor(s), disk drives, memory, and any peripherals (like keyboard, mouse, display(s), printer(s), external storage devices, etc.). Each company used to have their proprietary Operating System and often this would change from computer line to computer line for each company. The main players in the 1960s and 1970s were IBM, Digital Equipment Corporation (also known as Digital or DEC, which was the most controversial name for the company), Burroughs, Sperry-Univac (I cannot find a really good link for them, but this is an interesting history page), Control Data Corporation (CDC), Xerox (I include Xerox as the developer of SmallTalk, the first Object Oriented Language and, according to some of my colleagues, the basis for the Macintosh), and Wang Laboratories. This is not a complete list, but these were the major players. They each had their own operating systems. In Universities, the DEC10 was the most popular computer, but instead of using the Top10 O/S that came with the system, the Universities usually used Bell Laboratory’s UNIX O/S. Some companies on the West Coast used the BSD 4.3 O/S, which was a modification of UNIX by the University of California (sometimes referred to as UCB).
To save having to reload the programs and data each time you needed to run a program, ways to save files on storage devices was created. At first, the storage was all on the first level, but that made finding files and data more difficult. The hierarchical file system answered those problems. All modern operating systems have a hierarchical file system. This consists of folders and files. A folder may contain either other folders or files. Folders and files may be visible or hidden. Folders and files have a permission that allows or denies access to users based on rolls. System Administrators have access to all files. Users have access to a selected group of files, usually under their own directory. The base folder is represented by a slash, “/” for UNIX/LINUX/iOS and “\” for Windows. All files are stored in the hierarchical file system. Universal programs and libraries are in their own folders. Users are put in their folders and files under their own user folder. Each major operating system has their own file hierarchy. I will describe the Filesystem Hierarchical Standard for UNIX/LINUX/iOS to give you an example of the basics for the structure of the file portion of an operating system. If you cannot access the EdX copy, the FSHS is also accessible through the LINUX Foundation site in either PDF or HTML format. The following is only a short list of what I consider the most important folders (or directories). Some directories are symbolic links to other directories on the same system, other ones are shared between multiple systems.
|/||Base folder, under which all other folders are located|
|/boot||Second stage booting, takes over from the BIOS or Boot ROMS. If needed, this is the code that allows the user to choose which operating system is booted. It initializes the kernel and files system.|
|/bin||Folder where primary binary (executable) files are stored. When disks were smaller, this would be on the primary system disk, which was much faster than the larger storage disk. These commands are available to the system and users.|
|/sbin||Folder where system binary (executable) files are stored. These commands are available to the system only.|
|/sbin/init||Contains initialization information for setting up devices. Starts getty to allow a user to login with a user name and password. It then brings up a command shell, like BASH, and/or a graphics user interface. It then turns control over to the user.|
|/mnt||Folder where disks can be mounted to allow access from the local system. Often symbolically linked to other folders, like /usr|
|/usr||Secondary folder with system files that do not need to be accessed as quickly. Read only folder, users can access this folder but not write to it. Often defined on one system and then mounted under /mnt and symbolically linked to /usr.|
|/usr/bin||Folder where all system binary (executable) files that do not need to be executed quickly are stored. These commands are available to the system and users.|
|/usr/man||Folder where manual pages are stored. There is a manual (man) page available for each command in /bin and /usr/bin. These manual pages are available to the system and users.|
|Folder where user files are stored. /home is the modern address, /users is the old user directory that has been deprecated in most systems.|
|/usr/local||Often the /usr folder is stored on one system and mounted onto other systems. /usr/local is a symbolic link to a disk or folder mounted on the local system. UNIX/LINUX has an environment variable ($PATH) that allows the user to specify in which order the directories are accessed to find an executable or file.|
|/etc||et cetera folder that contains system configuration files. These files are usually cryptic or encrypted and should not be changed by the user. For example /etc/passwd is an encrypted password file that should only be accessed by system commands. The commands that access these files are available to the system and usually the users.|
|Storage for temporary files, /tmp is like /bin in that it is locally mounted. Sometimes it is local RAM./tmp is cleaned often, while /usr/tmp is only cleaned when commanded to do so.|
There are currently four Operating Systems that are used on most hardware platforms. They are:
With a contract with IBM, Paul Allen and Bill Gates became the supplier of the O/S for IBM’s first personal computer in 1981. Bill Gates, in a letter to Bill Allen, came up with the Name Micro-soft, which was later incorporated in Washington state as Microsoft, Inc. The O/S had a command line interface and was name MS-DOS (Microsoft-Disk Operating System). It was based on 86-DOS created by Tim Paterson in a co-development of a computer board by Microsoft and the Operating System by Seattle Computer Products. They originally wanted to use the Digital Research’s CP/M (Control Program/Monitor) for the new Intel 8086. However, that O/S was not available, so Tim Paterson made a clone of it for the new Microsoft board based on the Intel 8086. The original CP/M was an 8-bit system, while the 8086 was a 16-bit system and thus needed a new O/S to fully take advantage of the wider bus. The final line on this article is “Don’t blame Tim Paterson for Windows.”
With the introduction of the Macintosh by Apple, Microsoft realized that they would not survive unless they created a O/S that would have multiple tools (or Windows) up on the screen at the same time. In typical Microsoft fashion, it took three versions (and three sub-versions of the third version to create their Windows 3.1.1 version of the new Operating System. It seems like this third version of any major change is when the new Operating System starts to become usable. The most popular of the Windows Operating Systems have been Windows 95, Windows XP, and Windows 7.
The latest trio of O/S’s is Windows 8, Windows 8.1, and Windows 10. Windows 8 was the first O/S that Microsoft put out that was similar both on Personal Computers and their newly acquire Nokia smart phones. Windows 8.1 reintroduced a bare-bones Start menu, but it was still more a tiles O/S that worked better on the Windows phone than it did on the PC. Finally, with Windows 10, Microsoft introduced a more unified offering that worked similarly across all their devices. Microsoft’s claim is that the O/S is scalable and is able to produce an interface that matches the input and output devices that are available. The big advertisement was that you could put your Windows phone into a special dock and you would have the full capabilities of a full size PC. The proof of concept that has worked the best for this is their Surface Tablet. I do have a Windows phone that I really like, but it only runs the Windows 8.a O/S, so I do not have the expanded capabilities the Windows 10 phone has. The main reason for the introduction of the Windows 10 O/S was to help people and companies port more applications to the Windows phone so that it would have a better chance to compete against Android and Apple smart phones. One way Microsoft did this was to allow a person to develop in C#/.net in Visual Studio and have an application created to run on the Windows phone, an iPhone, and an Android phone. With PCs declining in sales, it will be interesting to see what Microsoft does with Windows to keep themselves relevant in the O/S marketplace.
American Telephone & Telegraph (AT&T) along with their manufacturing arm, Western Electric, form their research arm, Bell Labs (not to be confused with Bell Laboratories). The original part of Nokia, not their cell phone division which they sold to Microsoft, now owns. Nokia Bell Labs. Most Operating Systems could allow one user at a time to use the system. Bell Labs wanted a system to which several users acquire access at the same time. The hardware was available, but a new Operating System was required. Bell Lab joined forces with the Massachusetts Institute of Technology (MIT) and General Electric to develop the Multiplexed Information and Computing Service (MULTICS) based on an initial paper published in 1964 at MIT. MULTICS was in development from 1965 to 1969 with nine specific goals. The hardware that was used was the General Electric 635 computer, later renamed the 645. There were several major changes that needed to be made to the current Operating System to allow multi-tasking and multiple users. The changes included modification to most input/output handlers and access to all peripherals (especially all types of memory). By 1968, MULTICS was stable and robust enough to be used for its own further development. In 1969, the partners completed the work together and went their own ways. To this day, MULTICS is the most commonly used O/S at MIT.
Bell Labs did not really know what to do with the ideas gained from the development of the MULTICS O/S. Ken Thompson and Dennis Ritchie, along with a few other engineers, found a PDP-7 that was not being used by any of the groups within Bell Labs. They created a more efficient version of a multi-tasking O/S using PDP Assembler. As the usefulness of the O/S was being demonstrated, a need for a more powerful platform were realized. The O/S was ported using PDP assembler to the PDP 11/20 and included an editor (ed), ways to fork() processes, well-defined file system and roff file format for creating manual (man) pages. The C language was developed for the further development of UNICS (UNIplex Information and Computer Services) for the 1973 Fourth Edition. Because of the history of this O/S, Bell Labs did not keep tight control over it. The sixth (1975) edition renamed the O/S as UNIX and was popular enough that several other companies and Universities started copying the basic parts of UNIX. This includes the University of California’s Berkeley Software Distribution (BSD 1.x) of their version of UNIX. Many companies on the West Coast used this version of UNIX, including Sun Microsystems and Tektronix. Sun based their Solaris O/S on the Berkeley (BSD) version. In the Seventh Edition, Stephen Bourne introduced the Bourne shell, the first shell language that provides most of the features of a structured language. there were several alternatives to this shell language. The first two I used were csh and Korn Shell (ksh) which was the basis of the accepted standard POSIX shell. With all the improvements in scripted languages, a new Bourne Shell was introduced as Bourne Again Shell (bash).
With the seventh release, UNIX was ported to a 32-bit address architecture on the DEC VAX 11/7×0. The VAX (Virtual Address eXtension) was a successor to the very popular DEC-10 (PDP-10) mainframe computer. It also introduced better communication between Unix systems with Unix-to-Unix copying (UUCP). The use of manual pages was also greatly enhanced. The UUCP link is an example of an enhanced LINUX man page.
In 1980, BSD4.1 was introduced. Based on this release, Microsoft ventured into the UNIX market with their own version named Xenix. In 1982, AT&T’s UNIX Systems Group started the Roman Numeral numbering with the release of System III. In order to keep their hardware sales strong, several companies introduced their own versions of UNIX, often based on BSD4.2. These included SunOS (Solaris) from SUN, HP-UX from Hewlett-Packard, and Ultrix from Digital Equipment Corporation. The last one was an interesting choice since UNIX was developed on DEC’s VAX systems.
In 1983, AT&T introduces System V through the UNIX Development Lab and announces 45,000 installations. In 1984, BSD4.2 was announced with the introduction of Transfer Control Protocol/Internet Protocol (TCP/IP) which is the basis now for all internet/intranet/extranet transmission. The main recent addition to this was iSCSI, which uses SCSI (Small Computer System Interface) commands for talking with storage devices through the TCP/IP layers.
With the proliferation of so many flavors of UNIX, there started to be a concern for the interoperability of programs running on the different systems. IN 1984 X/Open Company Ltd. by a consortium of European vendors and the Open Software Foundation (OSF) was founded by a group of United States companies, including AT&T, Hewlett-Packard, Sun Microsystems, IBM, and DEC. Both organizations were UNIX-centric and did merge in 1994 to form the Open Group. For a brief history of the groups and how they formed, see Indian University’s Knowledge Base article on the Open Group. Indiana University is my alma-mater and I did use OSF Motif interface at Hewlett-Packard while working on the Encapsulate libraries for the SoftBench Software Development Environment to create the windowed user interface to make the tools easier to use on HP-UX and other UNIXs. For a more complete history of UNIX, visit the Open Groups webpage on the History of UNIX.
The Open Group continues to work with keeping UNIX as standard as possible across platforms. The main competitor it has in this space is LINUX, developed by Linus Torvalds and now owned by the Linux Foundation.
There is a brief history. Now for the basics of Linux.
Xerox invited various companies to see their Dandelion system, using SmallTalk as its Operating System and programming environment. It was the start of Object Orienting programming. The base of the system is the Class “Object” from which everything else is defined through inheritance. Steve Jobs was so impressed with what SmallTalk could do, and Xerox did not fully realize what it had, Steve Jobs was able to procure the rights to use and modify SmallTalk at no cost to Apple. This was the original basis for the Operating System for the Macintosh. I am sure there have been improvements over the years, but this was a great start.
The engineers at Google were looking for a way to get Google’s search box onto a mobile device. They had a shippable product with Android 1.4 (code-named Doughnut). The single search box for finding both local, on a mobile device, as well as remote information was well-received. The development has continued until today with the release of the Android 6.0 mobile O/S (Marshmallow). Android now powers more cell phones and tablets than any other O/S.