SlideShare a Scribd company logo
1 of 333
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

linux device driver
linux device driverlinux device driver
linux device driverRahul Batra
 
Linux Kernel Module - For NLKB
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKBshimosawa
 
Linux kernel Architecture and Properties
Linux kernel Architecture and PropertiesLinux kernel Architecture and Properties
Linux kernel Architecture and PropertiesSaadi Rahman
 
Embedded_Linux_Booting
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_BootingRashila Rr
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driverVandana Salve
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoCMacpaul Lin
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/CoreShay Cohen
 
Linux kernel architecture
Linux kernel architectureLinux kernel architecture
Linux kernel architectureSHAJANA BASHEER
 
Lesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemLesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemSadia Bashir
 
Linux power management: are you doing it right?
Linux power management: are you doing it right?Linux power management: are you doing it right?
Linux power management: are you doing it right?Chris Simmonds
 

What's hot (20)

linux device driver
linux device driverlinux device driver
linux device driver
 
Linux Kernel Module - For NLKB
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKB
 
Linux Internals - Part I
Linux Internals - Part ILinux Internals - Part I
Linux Internals - Part I
 
Linux kernel
Linux kernelLinux kernel
Linux kernel
 
Linux kernel Architecture and Properties
Linux kernel Architecture and PropertiesLinux kernel Architecture and Properties
Linux kernel Architecture and Properties
 
Embedded_Linux_Booting
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_Booting
 
Presentation on linux
Presentation on linuxPresentation on linux
Presentation on linux
 
Linux file system
Linux file systemLinux file system
Linux file system
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driver
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
 
Linux Kernel Overview
Linux Kernel OverviewLinux Kernel Overview
Linux Kernel Overview
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
 
Linux kernel architecture
Linux kernel architectureLinux kernel architecture
Linux kernel architecture
 
Linux-Internals-and-Networking
Linux-Internals-and-NetworkingLinux-Internals-and-Networking
Linux-Internals-and-Networking
 
Lesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemLesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File System
 
File systems for Embedded Linux
File systems for Embedded LinuxFile systems for Embedded Linux
File systems for Embedded Linux
 
Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0
 
Linux power management: are you doing it right?
Linux power management: are you doing it right?Linux power management: are you doing it right?
Linux power management: are you doing it right?
 
Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0
 
Linux basics
Linux basicsLinux basics
Linux basics
 

Similar to Basic Linux Internals

Similar to Basic Linux Internals (20)

Linux filesystemhierarchy
Linux filesystemhierarchyLinux filesystemhierarchy
Linux filesystemhierarchy
 
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
 
Linux Conf Admin
Linux Conf AdminLinux Conf Admin
Linux Conf Admin
 

Recently uploaded

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

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