Workshop on Unix/Linux System Programming


The Linux system programming workshop is designed to be a completely hands on workshop to address the need of professionals who would like to move to Linux/Unix for development or QA related activities from any other OS platform. It is also useful for those who have done some work on any Unix flavour and feel the need to develop a solid understanding of the operating system and system programming related concepts on Linux.
This course aims at developing a comprehensive understanding of the Linux system programming aspects with emphasis on the following areas:

  • Overview and structure 
  • Development environment – compiling, linking, creating shared libraries 
  • Working of system calls on Linux 
  • Detailed understanding of file, process and memory management 
  • Inter-process communication and signal handling 
  • Multi-threading and thread synchronization 
  • Logging 
  • Debugging

Takeaways from Workshop:

  • Develop good understanding of Linux operating system concepts and development environment
  • Exhaustive hands-on coverage on every area aimed at making participant ready for independent software development/QA •
  • Understanding key tools and resources available on Linux

Target Audience:

  • Developers/Designers, Senior Developers/Designers 
  • Technical/Engineering or Project Managers who need a good technical background of any Unix/Linux
  • Technical Leads, QA Leads and QA Engineers who plan to work on Unix/Linux systems 
  • Anyone who wishes to develop a good understanding of the workings of Unix/Linux OS


  • C coding on any platform 
  • Some familiarity using any flavour of Unix/Linux. Knowledge of some basic shell commands like listing files, starting processes, using cat, grep etc. Refer pre-requisite doc for more information.

Delivery Method:

Instructor lead and hands on. The course has a heavy emphasis on hands on coding for almost every topic of the presentations.

Faculty: Ravishankar Rajagopalan, BE (NIT):

Ravishankar has 16 years of professional experience in software design, development and has lead engineering product development teams at several reputed MNC’s. He has been associated with Cisco Systems, Intransa, Symphony Services among others and is currently consulting. He has also conducted several internal trainings in the companies he worked for and recently also delivered corporate trainings at Wipro and Symphony services.

Course Contents:

  1. Introduction to Unix development environment 
    • Overview of Source structure
  2. Compiling and linking programs with gcc 
    • Compiling C source
    • Understanding the 3 steps for compiling
    • Writing functions in separate file, compiling files separately
    • Linking together to produce executable
  3. Using libraries
    • Overview of libraries 
    • Creating static and shared libraries 
    • Linking program to shared library to produce executable 
    • Types of linking (static, dynamic, run-time), understanding the process for generation 
    • Related utilities
  4. System Calls and File management 
    • Internals of system calls 
    • Examples of system calls 
    • Understanding file management and related system calls
  5. Processes 
    • Types of processes (executables, daemons, zombies..) 
    • Process creation 
    • Process scheduling 
    • Process IDs (uid, gid, effective uid etc)
  6. Signals 
    • Types of signals 
    • Signal handlers 
    • Signal handler re-entrancy
  7. Memory management 
    • Memory management overview (virtual address space, virtual memory, paging, shared memory)
    • Memory allocation 
    • Understanding how to write memory tracking programs
  8. Multithreading 
    • Creating Threads 
    • Thread data 
    • Scheduling, prioritization 
    • Thread synchronization mechanisms
  9. Interprocess Communication 
    • Overview of interprocess communication 
    • Interprocess communication using Pipes 
    • Interprocess communication using FIFO’s 
    • Interprocess communication using Message Queues 
    • Interprocess communication using Shared Memory 
    • Synchronization using Semaphores
  10. Syslog 
    • Reviewing syslog logs 
    • Writing to syslog
  11. Using GDB 
    • Overview of GDB 
    • Stepping into code 
    • Breakpoints, conditional breakpoints 
    • Watchpoints 
    • Attaching debugger to a running process 
    • Tracing forked processes 
    • Setting variable values 
    • Miscellaneous topics
  12. Network programming 
    • Network fundamentals 
    • Introduction to TCP, UDP and IP 
    • Sockets 
    • Server architectures – iterative and concurrent servers 
    • Programming for IPv6 – an introduction

Duration: 5 days

Click here to download this as a PDF doc