Innovation... driven by intelligence and logic

Linux System Programming using Processes, IPC, Sync & threads


Linux System programming is the activity of programming computer system software. It aims to produce software and platforms which provide services to other applications, operating system and hardware. The system software also manages running of the system. System programming requires a great degree of hardware awareness. Its goal is to achieve optimal use of available hardware and software resources.

The training module covers various aspects of learning with respect to developing efficient Linux based system software. 

Salient Feature of Training Module:

Training Topics in brief

SlNo Topics
  • System Programming, APIs and ABIs, Standards, Concepts of Linux Programming, Getting Started with System Programming
Input and Output
  • File I/O: Synchronized I/O, Direct I/O, Positional Reads and Writes, runcating Files, Multiplexed I/O, Kernel Internals.
  • Buffered I/O: User-Buffered I/O, Standard I/O, File Pointers, Opening Files, Modes, Opening a Stream via File Descriptor, Closing Streams, Reading from a Stream, Writing to a Stream, Sample Program, Using Buffered I/O, Seeking a Stream, Flushing a Stream, Errors and End-of-File, Obtaining the Associated File Descriptor, Controlling the Buffering, Thread Safety.
  • Advanced FileIO: Scatter/Gather I/O, Event Poll, Mapping Files into Memory, Synchronized, Synchronous, and Asynchronous Operations, I/O Schedulers and I/O Performance
Process Management
  • Programs, Processes, and Threads, Process Control Block,
  • Introduction to processes and files. Process creation, duplication. replacement invoking.
  • Termination / interrupting processes
  • Waiting and Pausing processes
  • Sessions and Process Groups  - Session System Calls, Process Group System Calls, Obsolete Process Group Functions
  • Process Scheduling - Timeslices, I/O- Versus Processor-Bound Processes, Preemptive Scheduling, The Completely Fair Scheduler, Process Priorities, Processor Affinity, Real-Time Systems
Inter Process Communication using Pipes
  • Pipes - Creating / managing pipes. Establishing Interprocess communication between processes using pipes.
  • Implementing a client-server application using pipes. Establishing interaction between clients and servers.
  • Signal Concepts, Basic Signal Management, Sending a Signal, Reentrancy, Signal Sets, Blocking Signals, Advanced Signal Management, Sending a Signal with a Payload.
Inter Process Communication using FIFOs
  • FIFOs - Creating/managing FIFOs. Establishing Interprocess communication between processes using FIFOs.
  • Implementing a client-server application using pipes & FIFOs. Establishing interaction between clients & servers.
  • Understanding various operating and configuration modes.
Process Synchronization
  • Synchrinization using semaphores, identifying critical section and protecting shared resources using semaphores.
Inter Process Communication using Message Queues and Shared Memory
  • Creating/managing message queues and shared memory. Establishing Interprocess communication between processes.
  • Implementing a client-server application. Establishing interaction between clients & servers.
  • Understanding various operating and configuration modes.
  • Binaries, Processes, and Threads, Multithreading, Threading Models, Threading Patterns, Concurrency, Parallelism, and Races, Synchronization, Pthreads
File and Directory Management
  • Files and Their Metadata, Directories, Links, Copying and Moving Files, Device Nodes, Out-of-Band Communication, Monitoring File Events
Memory Management
  • The Process Address Space, Allocating Dynamic Memory, Managing the Data Segment, Anonymous Memory Mappings, Advanced Memory Allocation, Debugging Memory Allocations, Stack-Based Allocations, Choosing a Memory Allocation Mechanism, Manipulating Memory, Locking Memory, Opportunistic Allocation












































Training Objective

  • This module is designed to ensure that students of Engineering College with academic capabilities will have the skill set needed to deal with the challenges involved in real-world projects involving Linux based system programming to meet the needs of industries both today and in the future.

  • The treainee should be comfertable in designing and developing system software using Linux for various devices so as to encorporate intelligence 

  • The course is taught mainly using the Bash Shell, Linux operating system and C programming.
Pre requisite
  • Education: ​Persuing final Year B E, B Tech. MCA
  • ​Proficency in C programming, using  LInux OS, Shell Scripting using Bash
  • A prior knowledge of a basic system commands, general understanding about operating system concepts will be helpful.


  • The Duration of training would be 15 working days
  • There would be:
    • 13 Classroom Sessions of 2 hours each
    • 15 Lab Sessions of 4 hours each
    • 86 hours of Training


After the training is over, the Trainee should be able to:-

  • Understand the concepts absorbed during the training and should be able to implement the concepts into the real world projects.

EmbLogic would issue/provide the following:-

  • Work Report for Submitting into their college (if required).
  • A presentation and demonstration assistance(if required).
  • Completed tasks (by the trainee).
  • Certificate of Completion for the training and Project as mentioned above

Linux System Programming:

The Linux based System Programming is all about programming in C programming language for incorporating software service in the operating system for facilitating platform for applicaitions to run, provide operating system facilities to applications and hardware.

The programmer will understand requirements about the hardware and other properties of the system that the program runs on, will exploit those properties and develop algorithms that is known to be efficient when used with specific hardware.
  • It is a high level programming for facilitating low-level programming language or device hardware.
  • It can operate in resource-constrained environments
  • It is very efficient and has little runtime overhead
  • It has a small runtime library, or none at all
  • It allows for direct and "raw" control over memory access and control flow
  • It lets the programmer write parts of the program directly in C or  assembly language
Often systems programs cannot be run in a debugger. Running the program in a simulated environment can sometimes be used to reduce this problem.
Systems programming is sufficiently different from application programming that programmers tend to specialize in one or the other.
In system programming, often limited programming facilities are available. The use of automatic garbage collection is not common and debugging is sometimes hard to do. The runtime library, if available at all, is usually far less powerful, and does less error checking. Because of those limitations, monitoring and logging are often used; operating systems may have extremely elaborate logging subsystems.
Implementing certain parts in operating systems and networking requires systems programming.

Training and projects Resources   Click here...

EmbLogic is an ISO 9001:2008(QMS) (Quality Management System) Certified Company

Go to Top ^
We can call you