Skip to main content

Section outline

  • 1. Introduction to Linux User Space & System Calls (1.5 hours)

    • System calls vs. library functions.
    • Tracing system calls using strace.

    Hands-on:

    • Use strace for tracing system calls.
    • Locking a file and file regions.

    2. Processes in Linux (3 hours)

    • Process creation using fork().
    • Executing processes with exec().
    • Zombie and orphan processes.

    Hands-on:

    • Creating processes using fork().
    • Executing a process with exec().
    • Managing zombie and orphan processes.

    3. Inter-Process Communication (IPC) (2.5 hours)

    • IPC mechanisms: Pipes, FIFOs, Shared Memory, Semaphores.

    Hands-on:

    • Create and manage pipes and FIFOs.
    • Implement shared memory between processes.
    • Use semaphores for synchronization.
  • Threads in Linux (2.5 hours)

    • POSIX threads (pthreads) and their usage.
    • Thread creation, management, and synchronization.

    Hands-on:

    • Create multiple threads using pthread_create().
    • Implement thread joining with pthread_join().

    Synchronization in Linux (2.5 hours)

    • Mutexes and Semaphores.
    • Synchronization strategies for multi-threaded environments.

    Hands-on:

    • Solve a producer-consumer problem using semaphores.
    • Demonstrate mutex locks in a multi-threaded application.

    Final Project & Wrap-Up (2 hours)

    • Develop a multi-threaded and multi-processing application integrating:
      • Processes, Threads, Synchronization, IPC.
      • Proper error handling and resource management.

    Final Project Evaluation:

    • Review project implementation.
    • Discuss best practices and optimization strategies.