Andrew Tanenbaum.
The Linux kernel includes true multitasking, virtual memory, shared libraries, shared copy on write executables, memory management and TCP/IP networking.
When I first began studying UNIX the proud boast was that the kernel consisted of around 10,000 lines of C code and the hardware code represented around 1000 lines of assembler. It was this compact size and the use of a high level language that gave UNIX its flexibility. By making the necessary changes to the hardware code in assembler, UNIX could be relatively easily recompiled for very different hardware platforms.
Linux has, in common with many other operating systems and software applications, undergone substantial code bloat.
In 2011 the Linux Foundation kernel development study put the number of files used in building the kernel at 37,000, with 17 million lines of code.
Fortunately, although the kernel remains monolithic, unlike many other operating systems, you don’t need to keep it all. Many of the kernel virtual devices are in the form of loadable modules, which can either be loaded at boot time or later, on demand. In addition, it is a relatively simple task, to rebuild the kernel using only those static modules that are actually needed in your system. The kernel can be slimmed down substantially with significant performance gains.
The kernel runs in a highly privileged mode and supervises the privileges of all other processes.
Prior to kernel 2.2 there was a simple bifurcation between processes that ran with the effective user id 0 and which were then privileged and those processes which ran with a non zero id and were therefore unprivileged.
Starting with kernel 2.2 Linux divides privileges formerly associated with the superusers into units known as capabilities which can be enabled and disabled independently.
It is the flexibility of the kernel that allows it to be modified for such a large range of devices.

Figure 1 - UNIX/Linux Architecture

Figure 2 - System Kernel
Most users’ contact with what they think of as the OS, is confined to the the huge raft of software tools that come as standard with most distributions of UNIX and Linux.
These software tools (and other applications) communicate with the kernel through the system call interface. Many of them were written before Linus wrote the Linux kernel and were intended to be part of the GNU Hurd operating system.
Andrew Tanenbaum believes that Linus made fundamental errors in his design of Linux. Do some on-line research and discover the key arguments over the differences between Minix and Linux architecture.
Study the commands in the table of tools below. Experiment with using each of them on the command line and read the associated man pages.

Copyright
© 2003-2017
Clifford W Fulford.
Fulford Consulting Ltd.
Regd. Co. 4250037 in England & Wales.
Regd. office 162, Edward Rd. Nottingham NG2 5GF, England, UK.
Related web sites: City Linux | Flare Support | West Bridgford | Fulford Portal | Joan Mary Fulford (Nottingham Writer) | Fulford Gallery | Amharic Interpreter | Arabic Interpreter | Tigrinya Interpreter
The layout and associated style sheets for this page are taken from the World Wide Web Consortium and used here under the W3C software licence.