Differentiating system calls and library functions
Tracing system calls using tools like strace
Exercise: Locking file regions, tracing system calls
Process creation, operations, and handling zombie processes
Exercise: Creating and managing processes with fork() and exec()
Pipes, FIFOs, shared memory, and semaphores
Exercise: Demonstrating IPC using pipes and shared memory
POSIX threads: creation, joining, and synchronization
Exercise: Creating threads with pthread_create() and managing them
Mechanisms like mutexes and semaphores
Exercise: Solving the producer/consumer problem with synchronization tools
Design a multitasking application integrating processes, IPC, threads, and synchronization
Exercise: Implement resource sharing and thread/process cleanup
Discussion: Key takeaways, challenges, and feedback