Linux Internals
-
Install and configure the Linux Kernel.
Understand the structure under which the Linux Kernel was built and continues to evolve.
Gain an understanding of the tasks that we use the Kernel for.
Modify, test and implement new features in the Linux Kernel.
Identify the difference between user space and Kernel space on the Linux operating system, and understand how we can link these two levels.
Be able to use the various hardware abstraction levels that the Kernel makes available to the programmer, in order to produce code which is both architecture and version independent.
Distinguish the differences between the version 2.4 and 2.2 of the Linux Kernel.
-
Introduction and Environmental Setup
Main Characteristics of the Linux Operating System
Linux Distributions
Kernel Configuration facilities
Building the Kernel
Location of components
Compiling2
-
Important Data structures
-
Processes and tasks
Files and Inodes
Dynamic memory management
Queues and semaphores
System time and timers
-
Signals
Interrupts
System booting
Timer interrupt
Scheduler
-
Description of system calls
Practical examples
Adding new system calls
-
Architecture-dependent memory model
-
Pages
Virtual address space
Linear address conversion
Page table and page directory
Middle page directory
-
User segment
Virtual memory
The brk system call
Mapping functions
Kernel segment
Static and dynamic memory allocation in the Kernel
-
Block buffering
Update and bdflush
List structures for the buffer cache
How to use the buffer cache
-
Page cache management
Finding free pages
Page exceptions
-
Synchronization
Communication via files
Pipes
Debugging using “ptrace”
SysV Inter-Process communication
Socket based communications
-
Basic aspects
VFS
Mouting a file system
Superblock
The Inode concept and operations
File operations
Directory cache
Proc filesystem
Ext2 filesystem
-
Structure
Directories
Block allocation
Extensions
-
Initialization
Process management
Memory management
Communication
Filesystem
-
Ps
top
free
init
shutdown
strace
traceroute
mount
-
Character vs Block devices
Polling and interrupts
-
Polling and interrupt mode
Interrupt sharing
Bottom halves
Task queues
-
Setup
Init
Open and release
Read and write
IOCTL
Select
Lseek
Mmap
Readdir
Fsync and fasync
Check_media_change and revalidate
-
Interfaces to modules
Adding/removing modules to the Kernel
-
Insmod
Modprobe
rmmod
-
Layer model
Network communications
Data structures
-
Socket
sk_buff
Inet socket
proto
-
Ethernet
SLIP and PPP
Loopback
Dummy device
-
Arp
IP
Functions
Routing
Multicasting
Packet filters
Accounting
Firewalls
-
Standard and extra functions
-
Standard functions
Communication details
-
Architecture overview
Names and conventions
Upper level
Block devices (hard disks, CD-ROM)
Character devices (Tape)
Generic drivers
Mid level (Boot parameters, proc interface)
Lower (Hardware) level and Pseudo drivers
-
Booting details
-
LILO
-
Started by MBR
Started by a boot manager
Structure in the MBR
Files
Parameters
Start-up messages
Error messages
-
Day 1: Basic Kernel configuration, building and testing.
Day 2: Filesystem internals
Day 3: Implementing a new system call and integrating it in the Kernel
Day 4: Device driver development: design and implementation
Day 5: Making modules out of device driver
Notice: Undefined index: HTTP_REFERER in /var/www/datadeliverance/inc/trademarks.inc on line 3
Notice: Undefined index: HTTP_REFERER in /var/www/datadeliverance/inc/trademarks.inc on line 4
Notice: Undefined variable: REMOTE_USER in /var/www/datadeliverance/inc/trademarks.inc on line 7
Notice: Undefined index: HTTP_REFERER in /var/www/datadeliverance/inc/trademarks.inc on line 7
Notice: Undefined index: printer in /var/www/datadeliverance/inc/trademarks.inc on line 11