Originally, Unix was meant to be a programmer's workbench to be used for developing software to be run on multiple platforms more than to be used to run application software. The system grew larger as the operating system started spreading in the academic circle, as users added their own tools to the system and shared them with colleagues
Unix was designed to be portable, multi-tasking and multi-user in a time-sharing configuration. Unix systems are characterized by various concepts: the use of plain text for storing data; a hierarchical file system; treating devices and certain types of inter-process communication (IPC) as files; and the use of a large number of software tools, small programs that can be strung together through a command line interpreter using pipes, as opposed to using a single monolithic program that includes all of the same functionality. These concepts are collectively known as the Unix philosophy. Kernighan and Rob Pike summarize this in The Unix Programming Environment as the idea that the power of a system comes more from the relationships among programs than from the programs themselves."
Unix operating systems are widely used in servers, workstations, and mobile devices.The Unix environment and the client-server program model were essential elements in the development of the Internet and the reshaping of computing as centered in networks rather than in individual computers.
Unix was originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Douglas McIlroy, and Joe Ossanna.
There are various Unix variants available in the market. Solaris Unix, AIX, HP Unix and BSD are few examples. Linux is also a flavour of Unix which is freely available.
Several people can use a UNIX computer at the same time; hence UNIX is called a multiuser system.
A user can also run multiple programs at the same time; hence UNIX is called multitasking.
At the center of below figure is the hardware. This is surrounded by the operating system. The heart of the operating system is often called the kernel. The kernel normally contains essential features such as the scheduler, file management etc. Users and programs cannot communicate directly with the kernel normally. Early operating systems would allow this communication, but modern processors run in 'protected mode' which prevents direct communication. However there is a mechanism by which we can communicate - this is via system calls. These system calls generate interrupts which allow us to use the kernel facilities, without being able to damage them.
The main concept that unites all versions of UNIX is the following four basics:
Kernel: The kernel is the core of the UNIX operating system. Basically, the kernel is a large program that is loaded into memory when the machine is turned on, and it controls the allocation of hardware resources from that point forward. The kernel knows what hardware resources are available (like the processor(s), the on-board memory, the disk drives, network interfaces, etc.), and it has the necessary programs to talk to all the devices connected to it.
Three major tasks of kernel:
- Process Management
- Device Management
- File Management
Shell: This is called as Command Interpreter. Interface between Kernel and User. Unix having different type of the Shell, every shell having unique feature.
Commands and Utilities: There are number of command and utilities which you would use in your day to day activities. ls, vi, tail and grep etc. are few examples of commands and utilities. There are over 250 standard commands plus numerous others provided through 3rd party software. All the commands come along with various optional options.
Files and Directories: All data in UNIX is organized into files. All files are organized into directories. These directories are organized into a tree-like structure called the filesystem.
Main features of Unix are
- More than one user can use the machine at a time
- supported via terminals (serial or network connection)
- More than one program can be run at a time
- To support the organisation and maintenance of files
- Only the kernel ( <10%) written in assembler
- Tools for program development
- A wide range of support tools (debuggers, compilers)