Linux System Programming ( Linux Internals)
About Course
The Linux System Programming course is designed to provide a deep understanding of how the Linux operating system works under the hood. This course introduces students to the fundamentals of system-level programming, covering essential topics such as file I/O, process control, memory management, inter-process communication (IPC), signals, and multithreading using the POSIX thread library. Learners will gain hands-on experience writing C programs that interface directly with the Linux kernel via system calls and the GNU C Library (glibc), empowering them to build robust, low-level software components for performance-critical applications.
By the end of this course, students will be equipped to develop efficient and secure programs that interact with the Linux operating system at a granular level. The course is particularly beneficial for aspiring systems programmers, embedded developers, and backend engineers who wish to master Linux internals, improve debugging skills, and understand how high-level abstractions are implemented at the OS level. Through real-world projects and exercises, learners will bridge the gap between application programming and kernel operations, gaining valuable insights into the structure and behavior of modern Linux-based systems.
What Will You Learn?
- How to utilize Linux Libraries for application building
- How to use semaphore for communication internally
- IPC Mechanisms
- Shared Memory, Message Queues
- Pipes, Named Pipes
- Socket, Network Programming
Course Content
Linux Internal Architecture, User Mode, Kernel Mode
-
Linux Internal Architecture
-
Kernel and Utilities
-
Mode of operation in Linux System
Sub Systems and working structure(files, inodes)
-
Process Management
-
Memory Management
-
Network Management
-
File Management
-
Device Management
What is the difference between API and System Calls
Process and States
-
Creation of Process using fork
-
Process Wait, pid, ppid
-
Process State Diagram in Details and CPU Access effect
-
What is PCB, What are the contents of a PCB, How Kernel maintains PCB?
Process Synchronization
-
Why Process should synchronize, what we achieve with this?
-
Application of Process synchronization
Pipes, Named Pipes
-
Concept of Pipes
-
Programming Pipes using c in Linux
-
Client and Server Pipe Communication
Share memory
-
Concept of share memory
-
Application of shared Memory
-
Client and Server shared memory Communication
Semaphores
-
Concept of Semphore
-
Application of semephore
-
Client and Server communication program using semaphore
Message Queues
-
Concept of Message Queue
-
Application of Message Queue
-
C Program implementing message queue
-
Client and Server Communication program using message queue
Socket Meaning
-
Concept of Socket, IP Address, Port Number
-
Socket in a Network, how to understand
Client – Server Concept in Network Programming
-
Single Server, Multiple Client
-
Single Client, Single Server
Structures Involved in Communication
-
IP Address, Message buffer, SOCKET Type, AF_INET
Basic Program for both TCP and UDP
-
Client and Server communication for TCP application
-
Client and Server communication for UDP application
-
Multiple Client and Server communication for TCP application
-
Multiple Client and Server communication for UDP application
Network Payload representation
-
Structure of a Packet
-
Bit Fields – Dos and Don’ts
-
Packing, Alignment and Boundaries
-
Endian – Big and Little Endian Issues
-
Debugging packets in a network
Concept of Makefile and significance in building big projects
Static and dynamic Library in Linux
-
.a and .so files
How a Makefile looks like – Sample and Examples
-
Design of the simple make file
-
Various other utilities in the make file
Linux Utilities – Performance Tools
-
Valgrind – Memory Debugging
-
gprof, gcov – Performance tools
-
Debugging in Linux – Memory Issue Analysis of RAM Real Time Issues
