Linux System Programming – A programmers/Practical Approach
Note : This course is conducted by IT working Professional, and not by a Professional Instructor.
Q. What is the speciality of this course?
A. This is purely a Course on “Learning Programming using Linux“, This course does not teach ‘C’. Since this course is conducted by industry working professionals, This course tries to cover gap between academics and Industry, Also the last section Bonus – Students Q & A, contains the collective students questions and its solution to them. It is a regularly updating section.
Q. What is the Prior knowledge required for this course?
A. This course teaches from Basics of Linux Programming to Advanced, hence no prior knowledge on Linux is assumed, but should be energetic to learn Linux technology.
Q. Who is this course for?
A. This course is designed in mind from beginners(students) to intermediate professionals who want to learn Linux and Utilise the Open Source platform to help build their careers related in field of Linux systems Design and Development.
Q. What will be the outcome of this course?
A. The students upon completion will definitely have a SOLID understanding of Linux System Programming, For freshers this can be a good guide to crack interviews, for already working professionals they can start working as individual contributor in their projects, and definitely will be in par with the experienced colleagues.
Q. What are the contents of course?
In this course you will be learning the below Linux system programming. And more emphasis is given on the Programming part.
1. Introduction to Linux systems.
a. Linux architecture.
b. Writing ‘Hello World’ program, compiling using GCC and its execution.
2. What is system call and standard library function calls
3. Kernel and User mode in Linux
4. File operations
open(), close(), read(), write(), lseek()
Blocking and Non-Blocking calls.
Atomic operations, Race condition.
5. Memory Management and Virtual Memory
stack segment, code segment, heap segment, data segment,
Virtual memory management.
functions related to Memory allocation – Malloc(), calloc(), Realloc(), Auto variables, static variables.
6. Process Management
Process creation, Process termination, wait(), Process ID, fork() system call, Exec() family of system call, Parent-Child Process management,
Command line arguments of Process.
signal(), signal handlers, sending signals to process, ignoring and default signal actions.
8. Posix Threads
Thread creation, thread termination, thread ID, joinable and detachable threads.
9. Thread synchronisation
Mutex, Condition variables, Thread safe.
10. Posix – Inter Process communication.
Pipes, FIFO, Posix message Queue, Posix Semaphores, Posix Shared Memory.
NOTE – Ubuntu Distribution (Linux) is used for all Demo in this course.