Visicomp Codder
As PCs became more powerful and as memory and hard disks became cheaper, the original, minimalist Linux kernels grew to implement more UNIX functionality.
Speed and efficiency are still important design goals, but much recent and current work on Linux has concentrated on a third major design goal: standardization. One of the prices paid for the diversity of UNIX implementations currently available is that source code written for one may not necessarily compile or run correctly on another.
Even when the same system calls are present on two different UNIX systems, they do not necessarily behave in exactly the same way.
Linux is designed to be compliant with the relevant POSIX documents; at least two Linux distributions have achieved official POSIX certification.
1) Components of a Linux System
The Linux system has three main bodies of code, in sequence with, most conventional UNIX implementations.
1- THE KERNEL: “The kernel” is in charge for maintaining all the vital abstractions of the operating system, together with such things as virtual memory and processes. The Linux kernel forms the central part of Linux operating system. It provides all the functionality compulsory to run processes, and it also provides “system services” to give arbitrated and sheltered or protected access to hardware resources. The kernel implements every feature that is required to be eligible as an operating system.
1- THE SYSTEM LIBRARIES: “the system libraries” describe a typical set of functions through which applications can interrelate through the kernel. And which apply much of the operating system functionality that does not require the full rights or privileges of kernel code.
2- THE SYSTEM UTILITIES: “the system utilities” are the programs that execute individual, particular and specialized managing tasks.
some of the system utilities may be invoked just once to initialize and configure some features of the system; others (known as daemons in UNIX language ) may run enduringly, conducting such tasks as responding to inward or incoming network connections, accepting logon requests terminals or updating log records and files.
The whole kernel code executes in the privileged mode of processor along with the full access to all the physical resources of the computer. This privileged mode in Linux is referred as “kernel mode”, equal to the monitor mode.
In Linux user-mode code is not built into the kernel. Any operating-system-support code that does not require to execute in kernel mode is located into the system libraries as an alternative.
Because all kernel code and data structures are kept in a single address space, no context switches are necessary when a process calls an operating-system function or when a hardware interrupt is delivered.
Fig: Components of the Linux system.
This single address space contains not only the core scheduling and virtual memory code but all kernel code, including all device drivers, file systems, and networking code.
Even though all the kernel components share this same melting pot, there is still room for modularity.
The Linux kernel forms the core of the Linux operating system.
The system libraries provide many types of functionality. At the simplest level, they allow applications to make kernel-system service requests. Making a system call involves transferring control from unprivileged user mode to privileged kernel mode; the details of this transfer vary from architecture to architecture. The libraries take care of collecting the system-call arguments and, if necessary, arranging those arguments in the special form necessary to make the system call.
The libraries may also provide more complex versions of the basic system calls. For example, the C language’s buffered file-handling functions are all implemented in the system libraries, providing more advanced control of file I/ 0 than the basic kernel system calls.
The LINUX system includes a wide variety of user-mode programs-both system utilities and user utilities.
The system utilities include all the programs necessary to initialize the system, such as those to configure network devices and to load kernel modules. Continually running server programs also count as system utilities; such programs handle user login requests, incoming network connections, and the printer queues.
Posted By-: Vissicomp Technology Pvt. Ltd.
Operating System — Linux
Linux is one of popular version of UNIX operating System. It is open source as its source code is freely available. It is free to use. Linux was designed considering UNIX compatibility. Its functionality list is quite similar to that of UNIX.
Components of Linux System
Linux Operating System has primarily three components
- Kernel − Kernel is the core part of Linux. It is responsible for all major activities of this operating system. It consists of various modules and it interacts directly with the underlying hardware. Kernel provides the required abstraction to hide low level hardware details to system or application programs.
- System Library − System libraries are special functions or programs using which application programs or system utilities accesses Kernel’s features. These libraries implement most of the functionalities of the operating system and do not requires kernel module’s code access rights.
- System Utility − System Utility programs are responsible to do specialized, individual level tasks.
Kernel Mode vs User Mode
Kernel component code executes in a special privileged mode called kernel mode with full access to all resources of the computer. This code represents a single process, executes in single address space and do not require any context switch and hence is very efficient and fast. Kernel runs each processes and provides system services to processes, provides protected access to hardware to processes.
Support code which is not required to run in kernel mode is in System Library. User programs and other system programs works in User Mode which has no access to system hardware and kernel code. User programs/ utilities use System libraries to access Kernel functions to get system’s low level tasks.
Basic Features
Following are some of the important features of Linux Operating System.
- Portable − Portability means software can works on different types of hardware in same way. Linux kernel and application programs supports their installation on any kind of hardware platform.
- Open Source − Linux source code is freely available and it is community based development project. Multiple teams work in collaboration to enhance the capability of Linux operating system and it is continuously evolving.
- Multi-User − Linux is a multiuser system means multiple users can access system resources like memory/ ram/ application programs at same time.
- Multiprogramming − Linux is a multiprogramming system means multiple applications can run at same time.
- Hierarchical File System − Linux provides a standard file structure in which system files/ user files are arranged.
- Shell − Linux provides a special interpreter program which can be used to execute commands of the operating system. It can be used to do various types of operations, call application programs. etc.
- Security − Linux provides user security using authentication features like password protection/ controlled access to specific files/ encryption of data.
Architecture
The following illustration shows the architecture of a Linux system −
The architecture of a Linux System consists of the following layers −
- Hardware layer − Hardware consists of all peripheral devices (RAM/ HDD/ CPU etc).
- Kernel − It is the core component of Operating System, interacts directly with hardware, provides low level services to upper layer components.
- Shell − An interface to kernel, hiding complexity of kernel’s functions from users. The shell takes commands from the user and executes kernel’s functions.
- Utilities − Utility programs that provide the user most of the functionalities of an operating systems.
The Linux System Design Principles Design Principles Linux
Design Principles � Linux is a multiuser, multitasking system with a full set of UNIX-compatible tools � Its file system adheres to traditional UNIX semantics, and it fully implements the standard UNIX networking model � Main design goals are speed, efficiency, and standardization � Linux is designed to be compliant with the relevant POSIX documents; at least two Linux distributions have achieved official POSIX certification � � Supports Pthreads and a subset of POSIX real-time process control The Linux programming interface adheres to the SVR 4 UNIX semantics, rather than to BSD behavior
Components of a Linux System
Components of a Linux System n Like most UNIX implementations, Linux is composed of three main bodies of code; the most important distinction between the kernel and all other components. n The kernel is responsible for maintaining the important abstractions of the operating system l Kernel code executes in kernel mode with full access to all the physical resources of the computer l All kernel code and data structures are kept in the same single address space
Components of a Linux System (Cont. ) � The system libraries define a standard set of functions through which applications interact with the kernel, and which implement much of the operating-system functionality that does not need the full privileges of kernel code � The system utilities perform individual specialized management tasks � User-mode programs rich and varied, including multiple shells like the bourne-again (bash)
References � “Operating System Concepts, » by Abraham Silberschatz, et al, 9 th Edition, 2012, John Wiley & Sons Inc. � Operating Systems: A Spiral Approach 1 st Edition by Ramez Elmasri , A Carrick , David Levine
Linux Operating System
Linux is a version of UNIX OS which has gained popularity early days. In this chapter, you will look at the history and growth of Linux and cover up the user based model and concept which Linux offers — interfaces which owe a great deal to the UNIX tradition.
Linux History
Linux looks and feels are similar to that of any other UNIX system; certainly, UNIX compatibility has been a chief design goal for the Linux project. However, Linux is much younger compared to most UNIX systems. Its development began in the year 1991, when a Finnish student named Linus Torvalds, wrote and launched Linux, a small but self-contained kernel for 80386 processor. Early at the time of its development, the Linux source code was made free on the Internet so that everyone can compose their distro/version. From an initial kernel which partially employs a small subset of the UNIX system services, the Linux system gradually developed to include much of the ifFNIX functionality.
The Linux Kernel
The 1 st Linux kernel was released to the public with Version 0.01, on May 14 in 1991. It had no networking feature and was able to run only on 80386-compatible Intel processors and hardware and had a tremendously limited device driver support. The virtual memory subsystem was also quite basic and incorporated no support for memory-mapped files.
The next milestone for Linux was Linux 1.0 which was released on March 14 in 1994. With this release terminated three years of fast development of Linux kernel. Possibly the single significant new feature was networking version 1.0 which incorporated support for UNIX’s standard TCP/IP protocol suite, as well as a BSD compatible socket interface for providing network programming. A wide range of extra hardware support was also included in this release.
System V UNIX-style inter-process communication (IPC), includes collective memory, semaphores as well as message queues was also implemented. Simple support for dynamically loadable and unloadable kernel modules was supplied as well.
Design Principles of Linux OS
In it’s in general design, Linux looks like any other conventional, non-microkernel UNIX implementation. It is a multiuser, multitasking operating system having a full set of UNIX-compatible tools. Linux’s file system stick on to traditional UNIX format and the typical UNIX networking model is used to it’s fullest.
More on Linux OS
The interior details of Linux’s design were influenced a lot by the history of this operating system’s development. Even though Linux runs on a wide range of platforms, it was developed entirely for PC architecture. An immense deal of that early development was performed by individuals, rather than by well-funded research facilities, so from the very beginning, Linux shot to squeeze as much functionality as possible from partial resources.
which Linux has also achieved at the same time.