This course is will cover Process Synchronization which is an important concept of Operating System. For concurrent execution of processes synchronization is necessary. For this purpose, processes may be accessing shared resources like memory. Critical section is the memory area where shared code is implemented. While accessing these resources data integrity is must. Mutex and semaphore are two important programming constructs implemented to solve the synchronization issues with critical section. For implementation of mutex and semaphore programming variables are just incremented and decremented to maintain count of processes currently accessing or will be accessing the shared area. Classical synchronization problems are well known problems to be solved with deadlock-free solution using semaphore and mutex. Producer-Consumer problem is producer processes are generating data and consumer processes are using that. But this must be implemented using mutex and semaphore locks. In reader-writer problem, reader and writer processes are accessing shared memory in synchronized manner. The dining philosopher problem is the issue of two resources sharing among processes in deadlock-free manner. This course will give knowledge of all these three problems along with implementation in C programming on Linux OS. This course will build up confidence for working on Linux as Operating System.