SlideShare a Scribd company logo
INTRODUCTION TO LINUX WORLD PART 1 Mukul Bhardwaj
TOPICS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TOPICS (cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
INTRODUCTION TO LINUX ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LINUX VERSION NUMBERING ,[object Object],[object Object],[object Object]
LINUX VERSION NUMBERING(CONT) ,[object Object],[object Object],[object Object],[object Object]
LINUX VERSION NUMBERING(CONT) ,[object Object],[object Object],[object Object],[object Object]
LINUX DIRECTORY STRUCTURE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LINUX DIRECTORY STRUCTURE(CONT) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LINUX DIRECTORY STRUCTURE(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LINUX SOURCE CODE ,[object Object],[object Object],[object Object]
SOURCE CODE LAYOUT ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
SOURCE CODE LAYOUT(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Domains ,[object Object],[object Object],[object Object],[object Object],[object Object]
 
Kernel Components ,[object Object],[object Object],[object Object],[object Object],[object Object]
Open source community
COMMUNITIES ,[object Object],[object Object],[object Object],[object Object],[object Object]
Cross-Development ,[object Object],[object Object],[object Object],[object Object]
Cross-Development(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],Host Target Network kernel rootfs NFS tftp 192.168.100.2 BOOTP/DHCP 192.168.100.1
Booting up Target ,[object Object],[object Object],[object Object],[object Object],[object Object]
Booting up Target (Services) ,[object Object],[object Object],[object Object],[object Object]
Booting up Target(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Booting up Target(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
BUSYBOX ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LINUX CONFIGURATION
LINUX CONFIGURATION ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Config Methods ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
CONFIG Initial steps ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Configuration(cont) ,[object Object]
Configuration(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Configuration(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Introduction to Device Driver framework
DEVICE DRIVER ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Device Driver Interface System Call interface User Program Open Read close write Virtual File System Switch DevX_Open DevX_Read DevX_write DevX_close Hardware
Memory/IO mapped ,[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel/User Space ,[object Object],[object Object],[object Object],[object Object]
Kernel/User Space(cont) ,[object Object],[object Object],[object Object],[object Object]
Kernel Space Activities ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
User Space Activities ,[object Object],[object Object],[object Object],[object Object]
Kernel modules ,[object Object],[object Object],[object Object],[object Object],[object Object]
Module Example ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Module Example (cont) ,[object Object],[object Object],[object Object],[object Object]
Compilation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
To know more ,[object Object],[object Object]
Dynamic loading/Unloading ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Inserting the Module ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Insertion problem ,[object Object],[object Object],[object Object]
Insertion problem(cont) ,[object Object],[object Object],[object Object],[object Object]
Insertion problem(cont) ,[object Object],[object Object],[object Object],[object Object]
Insertion problem (cont) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Module Dependency ,[object Object],[object Object],[object Object]
Module Info ,[object Object],[object Object],[object Object],[object Object]
Dynamic Module dependency loading:MODPROBE ,[object Object],[object Object],[object Object]
Removing the module:Rmmod ,[object Object],[object Object]
Insmod Call ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MODULE MACROS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Important Points ,[object Object],[object Object],[object Object],[object Object],[object Object]
Module Paramters ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TYPES OF DEVICE DRIVER ,[object Object],[object Object],[object Object]
CHAR DRIVER ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
BLOCK DRIVER ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Module working ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
NETWORK DRIVER ,[object Object],[object Object],[object Object],[object Object]
Network Driver (cont) ,[object Object],[object Object],[object Object]
Driver-Hardware Communication ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Character Driver
Registering   Drivers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Registering   Drivers (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Registering   Drivers (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Character Device Registration ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Private Data ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Major and Minor Number ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Major and Minor Number ,[object Object],[object Object],[object Object],[object Object]
File Operations ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
User Space Access ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver with ioctl  ,[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver with ioctl (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver with ioctl (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver with ioctl (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
User Program for ioctl (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
User Program for ioctl (Cont..) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Skeleton of Character Driver with ioctl (Cont..) ,[object Object],[object Object],[object Object],[object Object]
[object Object]
Kernel features used for driver development ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LSP ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Choosing the kernel ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Development Enviornment ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Where to start ,[object Object],[object Object],[object Object],[object Object]
First Step-Machine type ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
include/asm-arm/mach-types.h ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Firmware Requirements ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ATAG Parameter List ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ATAG Parameter List Command line to pass to kernel  2(length_of_cmdline + 3) / 4) 0x54410009 ATAG_CMDLINE Initial values for vesafb-type framebuffers 8 0x54410008 ATAG_VIDEOLFB 32 bit board revision number 3 0x54410007 ATAG_REVISION 64 bit board serial number 4 0x54410006 ATAG_SERIAL Describes where the compressed ramdisk image is placed in memory 4 0x54420005 ATAG_INITRD2 Describes how the ramdisk will be used in kernel  5 0x54410004 ATAG_RAMDISK Describes a VGA text display 5 0x54410003 ATAG_VIDEOTEXT Describes a physical area of memory 4 0x54410002 ATAG_MEM First tag used to start list 5 (2 if empty) 0x54410001 ATAG_CORE Empty tag used to end list 2 0x00000000 ATAG_NONE Description Size Value Tag name
Directory/File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Early init ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
CPU Detection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Low Level CPU APIs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Architecture Specific Macros ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Machine Detection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MACHINE_START ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
machine_desc ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Machine Descriptor Macros ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
“ .arch.info” ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Static I/O Mapping ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel Memory Layout on ARM Linux ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Decompressor Symbols ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel Symbols ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel Symbols(Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel Memory Layout on ARM Linux-1
Kernel Memory Layout on ARM Linux-2 FFFFFFFF FFFF7FFF FFFF0FFF FFFE FFFF FFBF FFFF FEFF FFFF VMALLOC_END-1 VMALLOC_START high_memory-1 PAGE_OFFSET-1 TASK_SIZE-1 0000 0FFF 0000 0000 Free for platform use, recommended.  vmalloc() / ioremap() space. Memory returned by vmalloc/ioremap will be dynamically placed in this region. VMALLOC_START may be based upon the value of the high_memory variable. CPU vector page / null pointer trap CPUs which do not support vector remapping place their vector page here.  NULL pointer dereferences by both the kernel and user space are also caught via this mapping. User space mappings Per-thread mappings are placed here via the mmap() system call. Kernel module space Kernel modules inserted via insmod are placed here using dynamic mappings. Kernel direct-mapped RAM region. This maps the platforms RAM, and typically maps all platform RAM in a 1:1 relationship.  0xC000 0000 Reserved for future expansion of DMA mapping region. DMA memory mapping region.  Memory returned by the dma_alloc_xxx functions will be dynamically mapped here CPU vector page.  The CPU vectors are mapped here if the CPU supports vector relocation (control register V bit.) Reserved. Platforms must not use this address range. copy_user_page / clear_user_page use.
IRQ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IRQ(Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
irqaction ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Timer Tick ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Timer Tick(Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Timer Tick(Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Board Level Device Initialization ,[object Object],[object Object],[object Object],[object Object]
Platform bus ,[object Object],[object Object],[object Object],[object Object]
Platform devices ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Platform Device (Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Platform drivers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Platform data ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Linux Flow ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Linux Flow(Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Linux Flow (Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Linux Flow (Contd.) ,[object Object],[object Object],[object Object],[object Object]
Kernel command line Parameters ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
General Non-Device Specific Boot Args ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
General Boot Args(Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
RAM Disk Management ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Related to Memory Handling ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Misc. Kernel Boot Arguments ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Debugging Linux Kernel With KGDB ,[object Object],[object Object],[object Object],[object Object]
Procedure for KGDB ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Procedure for KGDB(Contd.) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Advantages of KGDB ,[object Object],[object Object],[object Object],[object Object],[object Object]
Disadvantages of KGDB ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Debugging With JTAG ,[object Object],[object Object],[object Object],[object Object],[object Object]
Creating Downloadable Image ,[object Object],[object Object],[object Object],[object Object],[object Object]
Different types of Linux kernel Images ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel
User Processes ,[object Object],[object Object],[object Object],[object Object],task_struct Memory_map
User Threads ,[object Object],[object Object],[object Object]
Threads Library ,[object Object],[object Object],[object Object],[object Object],[object Object]
Linux “Tasks” ,[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel Daemons ,[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel threads ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Process States Ready Suspended Running Stopped Zombie Creation Scheduling Termination Signal Signal Signal
 
Scheduler ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Process priority ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
SCHEDULING POLICY ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Preemptive-Priority Based ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Process Queues ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Process Creation ,[object Object],[object Object],[object Object],[object Object]
System Calls related to Scheduling ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
System Calls ,[object Object],[object Object],[object Object],[object Object],[object Object]
System call Implementation ,[object Object],[object Object],[object Object],[object Object]
SYSTEM CALL (Cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
SYSTEM CALL (Cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
Memory manager ,[object Object],[object Object]
Virtual memory ,[object Object],[object Object],[object Object]
Virtual vs. Physical Addresses DRAM Size 0 0xFFFFFFFF 0xC0000000 0x10000000 Kernel Application Code Data Heap Thread 1 Stk Thread 2 Stk 2MBs 2MBs Invalid page (256 MB) (3 GB) (4 GB) Main Stk 2MBs 0x80000000 (2 GB) FFF00000h 3.75GB -  DRAM Size 224 MB 15 MB 1 MB 1 MB 1 MB 1 MB 6 MB 7 MB 1 MB FF800000h FF300000h  FF200000h  FF100000h  FEF00000h  FE000000h  F0000000h  FFFFFFFFh 0h  Boot FLASH Optional Flash Reserved Optional I/O MPIC Registers Reserved On-Board Peripherals PCI/ISA I/O  Space Optional Flash PCI Memory  Space Local DRAM System Memory PPC
Virtual - Physical
Memory Mapping(virtual to Physical) ,[object Object],CPU Page Table Value Key MAPPER Page Frames Logical page Physical Frame Access Code
Main Components ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Concepts used in VM Domain ,[object Object],[object Object],[object Object]
Demand Paging ,[object Object],[object Object],[object Object],[object Object],[object Object]
Memory Protection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Page table
Page Table (cont) ,[object Object],[object Object],[object Object],[object Object],[object Object]
TLB ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ARM-Memory Managment Access control hardware ARM Cache and write buffer Cache line fetch hardware TLB Translation table walk hardware Main memory Abort VA PA C,B bits Access bits,domain
Points to remember for memory management ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
KERNEL ADDRESS SPACE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
USER ADDRESS SPACE ,[object Object],[object Object],[object Object],[object Object]
Code Executing in Kernel Space ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Code Executing in User Space ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Address Space
Process Address space ,[object Object],[object Object],[object Object],[object Object],[object Object]
MM Structure ,[object Object],[object Object],[object Object],[object Object],[object Object]
Example
Process address space(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel Address Space
Kernel address space ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Page Fault ,[object Object],[object Object],[object Object],[object Object]
Page Fault ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Page fault (cont) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Page Fault (COW)
 
 
Memory manager components ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kernel dynamic memory allocation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Non-Contiguous memory allocation ,[object Object],[object Object],[object Object],[object Object]
Physical page allocator ,[object Object]
Physical Page allocator(cont) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Physical Page allocator(cont) ,[object Object],[object Object],[object Object],[object Object]
GFP Flags ,[object Object],[object Object],[object Object],[object Object],[object Object]
Slab Allocator ,[object Object],[object Object],[object Object],[object Object]
VFS
USER PROCESSES SYSTEM CALL INTERFACE VFS Ext2 Ext3 DOS FS Buffer Cache Device Driver IO REQUEST HARDWARE Kernel
What is VFS ,[object Object],[object Object],[object Object],[object Object],[object Object]
4 Basic FS abstractions ,[object Object],[object Object],[object Object],[object Object]
Main features for FS to work with VFS ,[object Object],[object Object],[object Object],[object Object]
4 Primary objects of VFS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Root File-system ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Root File-system (cont) ,[object Object],[object Object],[object Object],[object Object]
Initrd ,[object Object],[object Object],[object Object]
File-System on system ,[object Object],[object Object],[object Object],[object Object],[object Object]
Flash-system ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Manually building custom init tam-disk ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Points to think about: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Different file-system  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Comparison Paramters ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Special FileSystems ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
PROC FILE SYSTEM ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IPC ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
signal ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Signal (cont) ,[object Object],[object Object]
Signal (cont) ,[object Object],[object Object],[object Object]
Signal transmission ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Signal Handling ,[object Object],[object Object],[object Object],[object Object]
pipes ,[object Object],[object Object],[object Object]
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals
Basic Linux Internals

More Related Content

What's hot

Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
Tushar B Kute
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
Emertxe Information Technologies Pvt Ltd
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
shimosawa
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
Emertxe Information Technologies Pvt Ltd
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
Emertxe Information Technologies Pvt Ltd
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
Linaro
 
File systems for Embedded Linux
File systems for Embedded LinuxFile systems for Embedded Linux
File systems for Embedded Linux
Emertxe Information Technologies Pvt Ltd
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
shimosawa
 
Lesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemLesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File System
Sadia Bashir
 
Linux booting process
Linux booting processLinux booting process
Linux booting process
Prashant Hegde
 
Kernel Module Programming
Kernel Module ProgrammingKernel Module Programming
Kernel Module Programming
Saurabh Bangad
 
A Quick Introduction to Linux
A Quick Introduction to LinuxA Quick Introduction to Linux
A Quick Introduction to Linux
Tusharadri Sarkar
 
An Introduction To Linux
An Introduction To LinuxAn Introduction To Linux
An Introduction To Linux
Ishan A B Ambanwela
 
Linux Internals - Part III
Linux Internals - Part IIILinux Internals - Part III
Linux Internals - Part III
Emertxe Information Technologies Pvt Ltd
 
Linux introduction
Linux introductionLinux introduction
Linux introduction
Md. Zahid Hossain Shoeb
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
Divye Kapoor
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
Emertxe Information Technologies Pvt Ltd
 

What's hot (20)

Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
 
Linux
Linux Linux
Linux
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
 
File systems for Embedded Linux
File systems for Embedded LinuxFile systems for Embedded Linux
File systems for Embedded Linux
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
 
Lesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemLesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File System
 
Linux booting process
Linux booting processLinux booting process
Linux booting process
 
Kernel Module Programming
Kernel Module ProgrammingKernel Module Programming
Kernel Module Programming
 
A Quick Introduction to Linux
A Quick Introduction to LinuxA Quick Introduction to Linux
A Quick Introduction to Linux
 
An Introduction To Linux
An Introduction To LinuxAn Introduction To Linux
An Introduction To Linux
 
Linux Internals - Part III
Linux Internals - Part IIILinux Internals - Part III
Linux Internals - Part III
 
Linux introduction
Linux introductionLinux introduction
Linux introduction
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
 
Linux Kernel Overview
Linux Kernel OverviewLinux Kernel Overview
Linux Kernel Overview
 

Similar to Basic Linux Internals

Android memory analysis Debug slides.pdf
Android memory analysis Debug slides.pdfAndroid memory analysis Debug slides.pdf
Android memory analysis Debug slides.pdf
VishalKumarJha10
 
Linux basics
Linux basics Linux basics
Linux basics
suniljosekerala
 
Linux basics
Linux basics Linux basics
Linux basics
suniljosekerala
 
brief intro to Linux device drivers
brief intro to Linux device driversbrief intro to Linux device drivers
brief intro to Linux device drivers
Alexandre Moreno
 
Lecture1 Introduction
Lecture1  IntroductionLecture1  Introduction
Lecture1 Introduction
Mohammed Farrag
 
Linuxdd[1]
Linuxdd[1]Linuxdd[1]
Linuxdd[1]mcganesh
 
Introduction to Operating Systems.pptx
Introduction to Operating Systems.pptxIntroduction to Operating Systems.pptx
Introduction to Operating Systems.pptx
MohamedSaied877003
 
Kernel compilation
Kernel compilationKernel compilation
Kernel compilationmcganesh
 
linux installation.pdf
linux installation.pdflinux installation.pdf
linux installation.pdf
MuhammadShoaibHussai2
 
Unix Administration 2
Unix Administration 2Unix Administration 2
Unix Administration 2
Information Technology
 
Linux Device Driver,LDD,
Linux Device Driver,LDD,Linux Device Driver,LDD,
Linux Device Driver,LDD,
Rahul Batra
 
Unix fundamentals
Unix fundamentalsUnix fundamentals
Unix fundamentals
Bimal Jain
 
Linux device driver
Linux device driverLinux device driver
Linux device driver
chatsiri
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel Development
Priyank Kapadia
 
LINUX Device Drivers
LINUX Device DriversLINUX Device Drivers
LINUX Device Drivers
Partha Bhattacharya
 
Visual comparison of Unix-like systems & Virtualisation
Visual comparison of Unix-like systems & VirtualisationVisual comparison of Unix-like systems & Virtualisation
Visual comparison of Unix-like systems & Virtualisation
wangyuanyi
 
Linux conf-admin
Linux conf-adminLinux conf-admin
Linux conf-adminbadamisri
 

Similar to Basic Linux Internals (20)

Linux filesystemhierarchy
Linux filesystemhierarchyLinux filesystemhierarchy
Linux filesystemhierarchy
 
Android memory analysis Debug slides.pdf
Android memory analysis Debug slides.pdfAndroid memory analysis Debug slides.pdf
Android memory analysis Debug slides.pdf
 
Linux basics
Linux basics Linux basics
Linux basics
 
Linux basics
Linux basics Linux basics
Linux basics
 
brief intro to Linux device drivers
brief intro to Linux device driversbrief intro to Linux device drivers
brief intro to Linux device drivers
 
Lecture1 Introduction
Lecture1  IntroductionLecture1  Introduction
Lecture1 Introduction
 
Device drivers tsp
Device drivers tspDevice drivers tsp
Device drivers tsp
 
Linuxdd[1]
Linuxdd[1]Linuxdd[1]
Linuxdd[1]
 
Introduction to Operating Systems.pptx
Introduction to Operating Systems.pptxIntroduction to Operating Systems.pptx
Introduction to Operating Systems.pptx
 
Ch1 linux basics
Ch1 linux basicsCh1 linux basics
Ch1 linux basics
 
Kernel compilation
Kernel compilationKernel compilation
Kernel compilation
 
linux installation.pdf
linux installation.pdflinux installation.pdf
linux installation.pdf
 
Unix Administration 2
Unix Administration 2Unix Administration 2
Unix Administration 2
 
Linux Device Driver,LDD,
Linux Device Driver,LDD,Linux Device Driver,LDD,
Linux Device Driver,LDD,
 
Unix fundamentals
Unix fundamentalsUnix fundamentals
Unix fundamentals
 
Linux device driver
Linux device driverLinux device driver
Linux device driver
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel Development
 
LINUX Device Drivers
LINUX Device DriversLINUX Device Drivers
LINUX Device Drivers
 
Visual comparison of Unix-like systems & Virtualisation
Visual comparison of Unix-like systems & VirtualisationVisual comparison of Unix-like systems & Virtualisation
Visual comparison of Unix-like systems & Virtualisation
 
Linux conf-admin
Linux conf-adminLinux conf-admin
Linux conf-admin
 

Recently uploaded

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 

Recently uploaded (20)

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 

Basic Linux Internals

  • 1. INTRODUCTION TO LINUX WORLD PART 1 Mukul Bhardwaj
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.  
  • 16.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33. Introduction to Device Driver framework
  • 34.
  • 35. Device Driver Interface System Call interface User Program Open Read close write Virtual File System Switch DevX_Open DevX_Read DevX_write DevX_close Hardware
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98. ATAG Parameter List Command line to pass to kernel 2(length_of_cmdline + 3) / 4) 0x54410009 ATAG_CMDLINE Initial values for vesafb-type framebuffers 8 0x54410008 ATAG_VIDEOLFB 32 bit board revision number 3 0x54410007 ATAG_REVISION 64 bit board serial number 4 0x54410006 ATAG_SERIAL Describes where the compressed ramdisk image is placed in memory 4 0x54420005 ATAG_INITRD2 Describes how the ramdisk will be used in kernel 5 0x54410004 ATAG_RAMDISK Describes a VGA text display 5 0x54410003 ATAG_VIDEOTEXT Describes a physical area of memory 4 0x54410002 ATAG_MEM First tag used to start list 5 (2 if empty) 0x54410001 ATAG_CORE Empty tag used to end list 2 0x00000000 ATAG_NONE Description Size Value Tag name
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114. Kernel Memory Layout on ARM Linux-1
  • 115. Kernel Memory Layout on ARM Linux-2 FFFFFFFF FFFF7FFF FFFF0FFF FFFE FFFF FFBF FFFF FEFF FFFF VMALLOC_END-1 VMALLOC_START high_memory-1 PAGE_OFFSET-1 TASK_SIZE-1 0000 0FFF 0000 0000 Free for platform use, recommended. vmalloc() / ioremap() space. Memory returned by vmalloc/ioremap will be dynamically placed in this region. VMALLOC_START may be based upon the value of the high_memory variable. CPU vector page / null pointer trap CPUs which do not support vector remapping place their vector page here. NULL pointer dereferences by both the kernel and user space are also caught via this mapping. User space mappings Per-thread mappings are placed here via the mmap() system call. Kernel module space Kernel modules inserted via insmod are placed here using dynamic mappings. Kernel direct-mapped RAM region. This maps the platforms RAM, and typically maps all platform RAM in a 1:1 relationship. 0xC000 0000 Reserved for future expansion of DMA mapping region. DMA memory mapping region. Memory returned by the dma_alloc_xxx functions will be dynamically mapped here CPU vector page. The CPU vectors are mapped here if the CPU supports vector relocation (control register V bit.) Reserved. Platforms must not use this address range. copy_user_page / clear_user_page use.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146. Kernel
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153. Process States Ready Suspended Running Stopped Zombie Creation Scheduling Termination Signal Signal Signal
  • 154.  
  • 155.
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164.
  • 165.
  • 166.
  • 167.
  • 168.
  • 169. Virtual vs. Physical Addresses DRAM Size 0 0xFFFFFFFF 0xC0000000 0x10000000 Kernel Application Code Data Heap Thread 1 Stk Thread 2 Stk 2MBs 2MBs Invalid page (256 MB) (3 GB) (4 GB) Main Stk 2MBs 0x80000000 (2 GB) FFF00000h 3.75GB - DRAM Size 224 MB 15 MB 1 MB 1 MB 1 MB 1 MB 6 MB 7 MB 1 MB FF800000h FF300000h FF200000h FF100000h FEF00000h FE000000h F0000000h FFFFFFFFh 0h Boot FLASH Optional Flash Reserved Optional I/O MPIC Registers Reserved On-Board Peripherals PCI/ISA I/O Space Optional Flash PCI Memory Space Local DRAM System Memory PPC
  • 171.
  • 172.
  • 173.
  • 174.
  • 175.
  • 177.
  • 178.
  • 179. ARM-Memory Managment Access control hardware ARM Cache and write buffer Cache line fetch hardware TLB Translation table walk hardware Main memory Abort VA PA C,B bits Access bits,domain
  • 180.
  • 181.
  • 182.
  • 183.
  • 184.
  • 186.
  • 187.
  • 189.
  • 191.
  • 192.
  • 193.
  • 194.
  • 196.  
  • 197.  
  • 198.
  • 199.
  • 200.
  • 201.
  • 202.
  • 203.
  • 204.
  • 205.
  • 206. VFS
  • 207. USER PROCESSES SYSTEM CALL INTERFACE VFS Ext2 Ext3 DOS FS Buffer Cache Device Driver IO REQUEST HARDWARE Kernel
  • 208.
  • 209.
  • 210.
  • 211.
  • 212.
  • 213.
  • 214.
  • 215.
  • 216.
  • 217.
  • 218.
  • 219.
  • 220.
  • 221.
  • 222.
  • 223.
  • 224.
  • 225.
  • 226.
  • 227.
  • 228.
  • 229.
  • 230.
  • 231.

Editor's Notes

  1. Asmlinkage Paramters copied from user mode stack to registers before issuing system call Kernel copies paramters from CPU registers to kernel stack before calling routine
  2. ess