Concepts of Kernal & Shell


The kernel is a program that constitutes the central core of a computer operating system. It has complete control over everything that occurs in the system. A kernel can be contrasted with a shell (such as bash, csh or ksh in Unix-like operating systems), which is the outermost part of an operating system and a program that interacts with user commands. The kernel itself does not interact directly with the user, but rather interacts with the shell and other programs as well as with the hardware devices on the system, including the processor (also called the central processing unit or CPU), memory and disk drives.

Interacts with the hardware
First program to get loaded when the system starts and runs till the session gets terminated
Different from BIOS which is hardware dependent.
Kernel is software dependent

Types of Kernals
All OS related code are stuffed in a single module
Available as a single file
Faster functioning

OS components are isolated and run in their own address space
Device drivers, programs and system services run outside kernel memory space
Supports modularity
Lesser in size

Shell is a UNIX term for the interactive user interface with an operating system. The shell is the layer of programming that understands and executes the commands a user enters. In some systems, the shell is called a command interpreter.

Program that interacts with kernel
Bridge between kernel and the user
Command interpreter
User can type command and the command is conveyed to the kernel and it will be executed

Types of Shells

simple shell

Bourne Again Shell

Korne Shell

C Shell

Secure Shell

Open Source


Open Source
The term “open source” refers to something that can be modified and shared because its design is publicly accessible.

While it originated in the context of computer software development, today the term “open source” designates a set of values—what we call the open source way. Open source projects, products, or initiatives are those that embrace and celebrate open exchange, collaborative participation, rapid prototyping, transparency, meritocracy, and community development.

What is open source software
Open source software is software whose source code is available for modification or enhancement by anyone.

The software being distributed must be redistributed to anyone else without any restriction.
The source code must be made available (so that the receiving party will be able to improve or modify it).
The license can require improved versions of the software to carry a different name or version from the original software.