Linux architecture


Published on

Published in: Technology

Linux architecture

  1. 1. Linux Architecture <ul><ul><li>By:- </li></ul></ul><ul><ul><li>Verule Amol R. </li></ul></ul><ul><ul><li>BOSS Team Member </li></ul></ul><ul><ul><li>CDAC-chennai </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
  2. 2. Linux Internal <ul><li>Introduction </li></ul><ul><li>Kernel </li></ul><ul><li>Process Management </li></ul><ul><li>Memory Management </li></ul><ul><li>File System </li></ul><ul><li>Device Driver </li></ul><ul><li>Network Stack </li></ul><ul><li>Architecture-dependent code </li></ul>
  3. 3. Introduction <ul><li>Operating System is a software designed to control the hardware of a system in order to allow users and application programs to make use of it. </li></ul><ul><li>Linux is a free operating system based on UNIX standards. </li></ul><ul><li>LINUX® is a registered trademark of Linus Torvalds. </li></ul><ul><li>Features of Linux. </li></ul><ul><li>Multiprogramming </li></ul><ul><li>Multi-user </li></ul><ul><li>Secure </li></ul><ul><li>Fast </li></ul>
  4. 4. Components of Linux System <ul><li>Architecture of the GNU/Linux operating system </li></ul>
  5. 5. 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. </li></ul><ul><li>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>
  6. 6. The Linux Kernel <ul><li>Kernel is a resource manager whether resource being managed is a process,memory,hardware device. </li></ul><ul><li>Short history of Linux kernel development. </li></ul>
  7. 7. Linux Kernel <ul><li>Types of Kernel </li></ul><ul><li>Monolithic Kernel. (e.g. Linux kernel)‏ </li></ul><ul><li>Micro kernel (e.g. Windows NT kernel,Mach kernel etc.)‏ </li></ul>
  8. 8. Structure of monolithic and micro-kernel-based operating systems <ul><li>Monolithic kernel Micro Kernel </li></ul>
  9. 9. 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 </li></ul><ul><li>Preemptive </li></ul><ul><li>Symmetric multiprocessor (SMP) support. </li></ul><ul><li>Linux does not differentiate between threads and normal processes. </li></ul><ul><li>Linux provides an object-oriented device model with device classes,hotpluggable events and user-space device file system(sysfs). </li></ul>
  10. 10. Linux Kernel <ul><li>Kernel version naming convention: Linux kernel currently consists of four numbers A.B.C[.D] </li></ul><ul><li>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. </li></ul><ul><li>The B number denotes the major revision of the kernel. If B is even then kernel is stable else it is unstable. </li></ul><ul><li>The C number indicates the minor revision of the kernel is only changed when new drivers or features are introduced. </li></ul><ul><li>minor fixes are handled by the D number. </li></ul>
  11. 11. Linux kernel <ul><li>Block diagram of Linux Kernel. </li></ul>
  12. 12. Linux Kernel- System Call Interface <ul><li>System call is the mechanism used by an application program to request service from the operating system. </li></ul><ul><li>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)‏ </li></ul><ul><li>Invoking a system call by user mode process. </li></ul>
  13. 13. Linux Kernel-Process Management <ul><li>Process is a program in execution. </li></ul><ul><li>Process is represented in OS by Process Control Block. </li></ul>
  14. 14. Linux Kernel-Process Management <ul><li>Linux kernel stores the list of process in a circular doubly linked list called task_list. </li></ul><ul><li>Each element in task list is a process descriptor of the type task_struct . </li></ul><ul><li>task_struct structure is allocated via slab/slub allocator. </li></ul>
  15. 15. Linux Kernel-Process Management <ul><li>Thread is a unit of execution or objects of activity within process. </li></ul><ul><li>Thread is simply a new process that happens to share the same address space as its parent </li></ul><ul><li>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. </li></ul><ul><li>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>
  16. 16. Linux Kernel-Process Management <ul><li>Process state is defined in part of current activity of that process </li></ul><ul><li>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>
  17. 17. Linux Kernel-Memory Management <ul><li>Computer memory layout: </li></ul>
  18. 18. 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>
  19. 19. Splitting of Memory in a Buddy Heap
  20. 20. 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. </li></ul></ul><ul><ul><li>Whenever two allocated partner regions are both freed up they are combined to form a larger region. </li></ul></ul><ul><ul><li>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>
  21. 21. 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. </li></ul><ul><li>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. </li></ul></ul><ul><ul><li>mkswap /dev/sdax </li></ul></ul><ul><ul><li>swapon /dev/sdax </li></ul></ul><ul><ul><li>swapoff /dev/sdax </li></ul></ul>
  22. 22. 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. </li></ul><ul><li>A file is an ordered string of bytes </li></ul><ul><li>Files are organized in directory. </li></ul><ul><li>File information like size,owner,access permission etc. are stored in a separate data structure called inode. </li></ul><ul><li>Superblock is a data structure containing information about file system </li></ul>
  23. 23. 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. </li></ul><ul><li>ex. copy a file from MS-dos filesystem to Linux </li></ul>
  24. 24. 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>
  25. 25. Filesystem maintenance <ul><li>Filesystems checked at boot up </li></ul><ul><li>Maintaining consistency with fsck , e2fsck </li></ul><ul><li>lost+found </li></ul><ul><li>command line utility for Filesystem maintenance </li></ul><ul><li>tune2fs </li></ul><ul><li>dump2fs </li></ul><ul><li>debugfs </li></ul>
  26. 26. 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. </li></ul><ul><li>Linux Device Driver are categorised in three types such as </li></ul><ul><li>Character Device Driver </li></ul><ul><li>Block Device Driver </li></ul><ul><li>Network Device Driver. </li></ul>
  27. 27. 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. </li></ul><ul><li>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>
  28. 28. 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>
  29. 29. <ul><ul><li> Thank You </li></ul></ul>