Innovation... driven by intelligence and logic

Linux Kernel Architecture, Internals and System Programming

Abstract:

The Linux kernel is the operating system's kernel used by the Linux family of operating systems. It is one of the most prominent examples of free and open source software.

The Linux kernel is released under the GNU General Public License version 2 (GPLv2) (plus some firmware images with various non-free licenses), and is developed by contributors worldwide.

The Linux kernel was initially conceived and created by Finnish computer science student Linus Torvalds in 1991.Linux rapidly accumulated developers and users who adapted code from other free software projects for use with the new operating system.The Linux kernel has received contributions from thousands of programmers. Many Linux distributions have been released based upon the Linux kernel.

The separation between kernel and user space is one of the fundamentals in Linux. This enables for the kernel to run with higher priority and to manage how functionality, resources and permissions are used and distributed over the entire system.

In kernel space execute all the central parts of the system to manage an efficient overall system with excellent throughput, execution performance and responsiveness. All hardware accesses are managed from within kernel space by a lot of different hardware device drivers. Some drivers are very device specific but most drivers are designed and coded to be as generic as possible and isolates the hardware specific code into small isolated parts.

Most drivers automatically detects hardware existing in, or plugged into, the system and initializes is respectively. The separation of generic and hardware specific code makes it relatively easy to port code to new devices.

Introduction:

The functionality of the Linux kernel is often described to be:

  • Scheduler

    • The scheduler handles how the CPU execution resources are used for the entire system. It allocates time for different parts of the system depending on how to make the system efficient. Data throughput versus responsiveness is often a trade-off that the scheduler works with. This can also be changed ,when building the kernel, or to some extent be tuned during run-time.

  • Memory Manager

    • All memory resources such as RAM, flash or just plain I/O is managed by the memory manager. It keeps track of which programs that uses specific parts of the memories and restricts the usage to only the allowed users that has the correct permissions. A vital part of the memory management s the use of virtual memory spaces meaning that all process get their own virtual memory area into which physical memory is mapped. This enables for efficient memory handling. If the system runs out of physical RAM the memory manager can use secondary memory, such as a hard disk, if that exists to use as extra temporary memory.

  • Virtual File System – VFS

    • This is the functionality that implements the general file system interface to the user space processes. The interface is always the same independently of which the underlaying hardware is. VFS contains many different logical file-systems as well as hardware support for physical devices. Much of the file-systems are possible to tune for optimal performance.

  • Inter Process Communication - IPC

    • All communication between processes as well as between processes and the kernel are default made via the well defined IPC mechanisms in the kernel. Most used are:-

      • pipes/fifos which are data pipes to carry data between processes

      • message queues that are used to send events and data

      • signals for pure event handling

      • semaphores for synchronization. Often used combined with usage of some shared resources

  • Networking

    • Many Linux-based devices are network attached but not all, so the kernel code for networking is actually optional to use in your system. With a Linux system the network connectivity is very good since most of the known network protocols and devices, old and new, are supported in the Linux

  • kernel.

    • The source code for the kernel internals is generally of very good quality. Some documentation exists, such as text files with the source code and a few books. Most recent and detailed "documentation" is always the source code itself.

Prospects:


Training Objective:

This short course is designed to ensure that students of Engineering College with academic Capabilities will have the skill set needed to deal with the challenges involved in real-world System Programming using C, Advanced C or System C and Linux Operating System, to meet the needs of industries both today and in the future. 

The course is taught mainly using the gcc compiler, with Linux operating system

Prerequisite:

A prior knowledge of a basic Linux commands, general understanding about operating system concepts is assumed.

Agenda:

  • 120 Weeks Program
  • There would be 48 sessions, each of 2 hours duration.
  • There would be 48 lab sessions of 4 hours each.
  • After the course is over, you should be Able To:
    • Work Comfortably on Linux Systems.
    • Implement and use System Programs for Linux using C.
    • Proficient in System C for Linux Systems.
    • Know the Linux Kernel Architecture
    • Understanding internals of Linux Operating System.
    • Use Linux for System Software Development.
    • Use Linux for Embedded and Applications Development.
    • Use Linux for Network Programming
    • Do Linux System Administeration.

Training Topics in Brief:

  • Introduction and Overview of Linux Kernel
  • Linux Boot process for x86 Architecture
  • Linux Boot process for ARM Architecture
  • Linux Kernel Architecture
  • Process Management and Scheduling
  • Memory Management:
  • Virtual Process Memory
  • File I/O:
  • Buffered I/O:
  • Signals:
  • Debugging:
  • Locking and Inter-Process Communication:
  • POSIX Threads:
  • Networks and Network Programming
  • Device Drivers
  • Interrupts and Exceptions:
  • The Virtual File system:
  • Extended Filesystem Family
  • Filesystem without persistant Storage
  • Extended Attributes and Access Control Lint
  • System Calls
  • Timing Measurements
  • Page and Buffer Cache
  • Data Synchronization
  • Page Reclaim and Swapping
  • Auditing

Training and Project Resources: click here ...


EmbLogic is an ISO 9001:2008(QMS) (Quality Management System) Certified Company

 

Go to Top ^