In: Computer Science
Pertaining to the Linux operating system, which is a variant of Unix, DISCUSS Topics that will include things such as history, Linux kernel, and design principles.
History
One of the most popular and used operating system worldwide is Unix. It is because of it’s large support base and distribution. In the mid-1970s, it was originally created as a multitasking system for mainframes and minicomputers. It has since grown to be the most widely used operating system despite having a confusing interface and lack of central standardization.
Linux is a freely distributable version of Unix and was originally developed by Linus Torvalds who began working for Linux in 1991. He was a student of the University of Helsinki in Finland. Currently, he is working for a start-up in Santa Clara, California named Transmeta Corporation and he continues maintaining the Linux kernel, the lowest level core component of the operating system.
Linus launched the first version of Linux on the Internet for free which has become the largest software-development phenomena of all time. Currently, Linux is being authored and maintained by a group of thousands of developers who are collaborated across the internet. Companies have sprung up to provide Linux support, to package it into easy-to-install distributions, and to sell workstations pre-installed with the Linux software. The first Linux World Expo trade show was conducted in March 1999 in San Jose, California with an attendance of 12000 people. Most estimates place the number of Linux users worldwide somewhere around the 10 million mark.
Linux Kernel
The lowest level of easily replaceable software that interfaces with the hardware in your computer is a Kernel. It is responsible for interfacing all of your applications that are running in “user mode” down to the physical hardware, and allowing processes, known as servers, to get information from each other using inter-process communication (IPC).
There are a number of different ways to build a kernel and architectural ruminations when building a kernel from the start. Usually, these three types cover most of the kernels: monolithic, microkernel, and hybrid. Linux is a monolithic kernel and OS X (XNU) and Windows 7 use hybrid kernels.
Microkernel
A microkernel works by only managing what it has to: CPU, memory,
and IPC. Almost all the other things in a computer can be
classified as an accessory and can be handled in user mode.
Microkernels have an edge of portability because they don’t have to
worry if you change your video card or even your OS so long as the
OS still tries to access the hardware in the same way.
Monolithic Kernel
Monolithic kernels are completely opposite of microkernels as they
encompass not only the CPU, memory, and IPC, but they also include
things like device drivers, file system management, and system
server calls which were seen as accessories in the microkernel.
Monolithic kernels are better at multitasking and accessing
hardware as if a program needs to get information another process
running or from memory, it has a more direct l access to it and
doesn’t have to wait in a queue to get the task completed.
Hybrid Kernel
Hybrid kernels have the ability to choose what they want to run in
supervisor mode and what they want to run in user mode. Many times,
things like device drivers and filesystem input/output will be run
in user mode while Interprocess communication and server calls will
be kept in the supervisor mode.
In Ubuntu, the kernel file is stored in /boot folder and is called vmlinuz-version. The name vmlinuz comes from the Unix world where they used to call their kernels simply “Unix” back in the 60’s so Linux started calling their kernel “Linux” when it was first developed in the ’90s.
It has the largest footprint and the most complexity over the other types of kernels because the Linux kernel is monolithic. This was a design feature which was debated a lot in the initial days of Linux and still has some of the same design flaws that monolithic kernels are supposed to have. One important thing that the Linux kernel developers and creators did to get around these flaws was to make kernel modules that could be loaded and unloaded at runtime, meaning you can add or remove features of your kernel on the fly.
Design Principles