Introduction:
As you know that an operating system (a set of program that provide a virtual machine which is easy to use than that a bare machine) plays a vital role in a computer system. There are lots of operating system is available in market like MS – DOS, WINDOWS NT, 2000, XP and many more. UNIX and Linux are the two popular operating system (as par the security concern) which is widely used in workstations (PCs) and servers.
Unix is a type of OS which is developed in 1969 in AT & T’s employees at Bell’s laboratory. The first version of Unix OS was developed in 1960’s, which is a single user computer system for the PDP – 7 computers. And was written in Assembly language. Before starting the working on UNIX, the employees of AT & T’s working on another operating system known as MULTICS (Multiplex Information and Computing services). But because of some unavoidable reasons this project is dropped. Some features like file system, shells (a command interpreter) and lots of other features are directly coming from MULTICS, that is why it is called as UNICS (Uniplexed Information and Computing Services). Later its spelling is changed or modified as UNIX.
In the beginning the primary limitation with the Unix is its portability. As it is written in Assembly language, which is machine dependent.
To make the UNIX portable Ken Thompson designed a new language called ‘B’ Language which is the modified version of BCPL (Basic Combined Programming language), designed by Martin Richards at Cambridge university. But unfortunately the B language deals with some specific problems only.
To overcome this limitation, Dennis Richie designed a new language in 1972 called “C” Language. Then 90% Unix operating system is rewritten in C and 10% written in Assembly language. That means when you use the Unix in some other machine you have to write down 10% coding in order to control the hardware of that machine.
When ken Thompson rewrite the Unix OS in C language, he made some other enhancement also. He added the concept of multi-user, multiprogramming and time shearing on that operating system. Unix is not GUI, it is command interpreter. You have to write down the commands to execute any statements.
Some important components of Unix OS
The Unix operating system consist of three main components. These are given below.
The Unix Architecture
The Kernel
The kernel is the master program that provide file related activities, process scheduling, memory management, and various other operating system functions through system calls. In other words we can say that it control the resources of the computer system, allocate them to different users and to different tasks.
The major portion of the kernel is written in C language. Therefore, it is easy to understand, debug, and enhance it. As it is written in C language, therefore, it is portable in nature.
As you can see in the diagram that it is written or placed between hardware and utility program (Like shells, editors, vi or sed) so it work between the two. Moreover, the kernel maintains various data structure to manage the processes. Each process has its own priority. A higher priority process is execute first than the lower priority process.
Kernel is divided into two parts:
- Process management
- File management
The primary task of the process management is to manage the memory management activities and process related activities at different states of the execution – creation/deletion of processes, scheduling of the processes and provision of mechanism for synchronization, communication and deadlock handling of the processes.
Where as the task of the file management is to manage the file related activities. Since Unix is such kind of operating system which treats the I/O devices as a file. Therefore each I/O devices has its own file, known as device drivers, to derive it. The file management pat of the kernel handles these device drivers and store these files in the directory “/dev” under root directory. If we attach any new I/O device to the Unix than it is necessary to create a file for that device in “/dev” directory. Then we write down its characteristics; such as its type (character oriented or block oriented), address of the driver program, memory buffer reserved for the device and some other, in that specific file.
Shells
In Unix we cannot directly deals with kernels. It is the shell, one of the utility program, that starts up the kernel when the user logs in. the shell sends a prompt symbol. The shell prompt waits for input from users.
Now when you type a command and press Enter key, the shell obtained your command, execute it if possible and display the prompt symbol again in order to receive your next command. That is why the shell is also called as the Unix system command interpreter.
Moreover, when we want to access the hardware, we will request for the shell, the shell will request to kernel, and finally the kernel will request to hardware. Basically the shell handles the user interaction with the system. Some built in commands are part of shell and the remaining commands are separated programs stored else where.
There are three types of shells that are widely used and are exist in the Unix OS:
Bourne shell: This shell was designed by Stephan Bourne of Bell’s Lab. It is most powerful an most widely used shell. The prompt symbol of Bourne shell is $ (Doller) sign.
The C Shell: The C shell was developed at University of California. It is designed by Bill Joy. C shell gets its name from its programming language, which resembles the C programming language in syntax. The prompt symbol of C shell is Percent (%) sign.
Korn Shell: Like Bourne shell, the Korn shell was also developed at Bell’s Lab of AT & T. This shell gets its name from its inventor David Korn of Bell’s Lab.
Moreover, the shells provide the meta characters like *, [ ], ? and so on. For better searching of files.
Utility programs:
The Unix system contains large number of utility and application programs like editors (ed, ex, vi, sed) and so on. These utility programs and the application programs developed in Unix environment are also easily portable to another machine having same environment.