Components of Linux System <ul><li>Architecture of the GNU/Linux operating system </li></ul>
Components of a Linux System (Cont.) <ul><li>When Linux is running in main memory,the it is divided in to two parts 1) User space. 2) Kernel space. </li></ul><ul><li>User's applications are running in user space.
Kernel is running in kernel space. </li></ul><ul><li>The system libraries (e.g. glibc) 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. </li></ul>
The Linux Kernel <ul><li>Kernel is a resource manager whether resource being managed is a process,memory,hardware device.
Short history of Linux kernel development. </li></ul>
Linux Kernel <ul><li>Types of Kernel </li></ul><ul><li>Monolithic Kernel. (e.g. Linux kernel)
Micro kernel (e.g. Windows NT kernel,Mach kernel etc.) </li></ul>
Structure of monolithic and micro-kernel-based operating systems <ul><li>Monolithic kernel Micro Kernel </li></ul>
Linux Kernel 2.6.x <ul><li>Characteristics that differ between the Linux kernel and other Unix variants: </li></ul><ul><li>Dynamic loading of kernel module
Linux does not differentiate between threads and normal processes.
Linux provides an object-oriented device model with device classes,hotpluggable events and user-space device file system(sysfs). </li></ul>
Linux Kernel <ul><li>Kernel version naming convention: Linux kernel currently consists of four numbers A.B.C[.D]
The A number denotes the kernel version. It is changed least frequently, and only when major changes in the code and the concept of the kernel occur.
The B number denotes the major revision of the kernel. If B is even then kernel is stable else it is unstable.
The C number indicates the minor revision of the kernel is only changed when new drivers or features are introduced.
minor fixes are handled by the D number. </li></ul>
Linux kernel <ul><li>Block diagram of Linux Kernel. </li></ul>
Linux Kernel- System Call Interface <ul><li>System call is the mechanism used by an application program to request service from the operating system.
API is a function definition that specifies how to obtain a given service(ex.calloc,malloc ,free etc.), while System call is an explicit request to the kernel made via a software interrupt (ex.brk)
Invoking a system call by user mode process. </li></ul>
Linux Kernel-Process Management <ul><li>Process is a program in execution.
Process is represented in OS by Process Control Block. </li></ul>
Linux Kernel-Process Management <ul><li>Linux kernel stores the list of process in a circular doubly linked list called task_list.
Each element in task list is a process descriptor of the type task_struct .
task_struct structure is allocated via slab/slub allocator. </li></ul>
Linux Kernel-Process Management <ul><li>Thread is a unit of execution or objects of activity within process.
Thread is simply a new process that happens to share the same address space as its parent
Process creation: fork () creates a child process that is a copy of current process. it differs in PID,PPID. exec() loads new executable in to address space. clone() creates a new process(LWP) with its own identity, but that is allowed to share the data structures of its parent.
Process Termination: when process calls system call exit(). Process can also terminate involuntarily by signals or exceptions it can not handle or ignore. </li></ul>
Linux Kernel-Process Management <ul><li>Process state is defined in part of current activity of that process
The kernel implements a O(1) scheduler algorithm that operates in constant time, regardless of the number of threads vying for the CPU. It supports SMP. </li></ul>
Linux Kernel-Memory Management <ul><li>Computer memory layout: </li></ul>
Linux Kernel-Memory Management <ul><li>Linux’s physical memory-management system deals with allocating and freeing pages, groups of pages, and small blocks of memory. </li></ul><ul><li>It has additional mechanisms for handling virtual memory, memory mapped into the address space of running processes. </li></ul>
Managing Physical Memory <ul><li>The page allocator allocates and frees all physical pages; it can allocate ranges of physically-contiguous pages on request. </li></ul><ul><li>The allocator uses a buddy-heap algorithm to keep track of available physical pages. </li></ul><ul><ul><li>Each allocatable memory region is paired with an adjacent partner.
Whenever two allocated partner regions are both freed up they are combined to form a larger region.
If a small memory request cannot be satisfied by allocating an existing small free region, then a larger free region will be subdivided into two partners to satisfy the request. </li></ul></ul><ul><li>Memory allocations in the Linux kernel occur either statically (drivers reserve a contiguous area of memory during system boot time) or dynamically (via the page allocator). </li></ul>
Virtual Memory <ul><li>The VM system maintains the address space visible to each process: It creates pages of virtual memory on demand, and manages the loading of those pages from disk or their swapping back out to disk as required.
The VM manager maintains two separate views of a process’s address space: </li></ul><ul><ul><li>A logical view describing instructions concerning the layout of the address space. The address space consists of a set of non overlapping regions, each representing a continuous, page-aligned subset of the address space. </li></ul></ul><ul><ul><li>A physical view of each address space which is stored in the hardware page tables for the process.
File System <ul><li>A file system is the methods and data structures that an operating system uses to keep track of files on a disk or partition; that is, the way the files are organized on the disk.
File information like size,owner,access permission etc. are stored in a separate data structure called inode.
Superblock is a data structure containing information about file system </li></ul>
Filesystem <ul><li>The Virtual Filesystem (also known as Virtual Filesystem Switch or VFS) is a kernel software layer that handles all system calls related to a standard Unix filesystem. Its main strength is providing a common interface to several kinds of filesystems.
ex. copy a file from MS-dos filesystem to Linux </li></ul>
Filesystem <ul><li>file object stores information about the interaction between an open file and a process. This information exists only in kernel memory during the period when a process has the file open. </li></ul>
Filesystem maintenance <ul><li>Filesystems checked at boot up
Device Driver <ul><li>Device drivers take on a special role in the Linux kernel. They are distinct “black boxes” that make a particular piece of hardware respond to a well-defined internal programming interface; they hide completely the details of how the device works.
Linux Device Driver are categorised in three types such as
Network stack <ul><li>The network stack, by design, follows a layered architecture modeled after the protocols themselves. Recall that the Internet Protocol is the core network layer protocol that sits below the transport protocol . Above TCP is the sockets layer, which is invoked through the SCI.
The sockets layer is the standard API to the networking subsystem and provides a user interface to a variety of networking protocols. From raw frame access to IP protocol data units and up to TCP and the User Datagram Protocol (UDP), the sockets layer provides a standardized way to manage connections and move data between endpoints. </li></ul>
Architecture-dependent code <ul><li>While much of Linux is independent of the architecture on which it runs, there are elements that must consider the architecture for normal operation and for efficiency. The ./linux/arch subdirectory defines the architecture-dependent portion of the kernel source contained in a number of subdirectories that are specific to the architecture . For a typical desktop, the i386 directory is used. Each architecture subdirectory contains a number of other subdirectories that focus on a particular aspect of the kernel, such as boot, kernel, memory management, and others. </li></ul>