Linux/Unix System Programming Training Course

Course Title
SF002 – Linux/Unix System Programming Training Course

Course Overview
Linux-Unix Systems Programming Training
Linux/Unix System Programming training transforms an IT-Professional or a Student into a Linux/Unix Systems Developer. The participant will develop a deep understanding of Linux or Unix systems and learn concepts and skills which are essential for programming and software development on Linux-based platforms for both enterprise and embedded products and/or applications. Both Linux and Unix System have very similar programming environment. Application programs written on Unix will work on Linux systems with minimal or no changes. So, by undergoing this training program, one can master the programming skills both for Linux Systems as well as other Unix Systems like Solaris, HPUX, AIX, IRIX and other variants of Unix.

Course Highlights

  • Linux System Programming training course will be delivered by our Founder/Director who is an Expert with 20+ years of experience in Linux Kernel and SAN software development. The course flow will be an assignment driven model so that participants can have a deep understanding of various subsystems of Linux.
  • Participants will be writing lots of Linux system programs to learn complex I/O operations on binary & text files; issues surrounding concurrent programming that can potentially lead to races, process hang, process crash and/or entire Linux system hang; installing signal handlers for various signals, writing daemon processes, mapping of memory/files into process address space, etc.
  • Participants will be designing and developing applications using C and learn how processes talk to each other within a system using Linux IPCs – Pipes, FIFOs, shared memory, semaphores and message queues programming. Focus will be on designing and developing programs and troubleshooting synchronization issues, races and deadlocks.

Course Delivery

  • Lectures, Classroom Discussions and Lab Exercises
  • 30% Theory, 70% Lab
  • Location: Sanfoundry Institute, Bangalore, India

Labs-Assignments
Lab1 – Writing a program on File I/O operations with text and binary files and performance issues with the code design.
Lab2 – Writing a program to check the limit of open files using /proc filesystem.
Lab3 – Writing a program to use select call and its usage.
Lab4 – Writing a program to synchronize access to a file using advisory file locking mechanisms.
Lab5 – Design and implementation of multiprocess model which is used by many popular applications.
Lab6 – Writing programs to create Zombies and Orphans and verification of their states using ps(1) command.
Lab7 – Writing programs to get and set Process scheduling policy and priority.
Lab8 – Design and implementation of a Daemon process.
Lab9 – Writing program to memory map a file and do operation on that file.
Lab10 – Writing programs to understand signals and handling them due to segmentation violations, sending signals from another terminal and restarting a failed system call due to signals.
Lab11 – Design and implementation of shell Pipe mechanism.
Lab12 – Writing programs to do IPCs using unnamed and named Pipes.
Lab13 – Writing client-server programs using System V Message Queues and debugging and troubleshooting issues.
Lab14 – Writing client-server programs using System V Shared Memory and debugging race conditions.
Lab15 – Writing client-server programs using System V Semaphores and debugging synchronization conditions.

Pre-Requisites
A sound knowledge of C programming language

Target Audience
IT Professionals and/or Students who want to learn key skills for developing software applications on Linux systems and become a Linux Systems Developer

advertisement
advertisement

Fee, Schedule & Registration
Click Here for Linux/Unix System Programming course training schedule, fee and registration information.

Linux / Unix System Programming Training Course Outline

  • Introduction to Unix
  • Linux Layered Architecture
  • Bootup Sequence
  • File Tree & Types
  • File Systems
  • Super Block & Inode
  • System Vs Function Calls
  • System Call Sequence
  • File descriptor table

  • File Management
  • File related System Calls
  • File Control Operations
  • File Locking
  • fcntl() calls

  • Process Management
  • Mode of Execution
  • Address Space
  • Context Switching
  • Process Structure & States
  • Scheduling & Priority
  • Process Creation & Exec
  • fork()/exec() calls

  • Memory Management
  • Virtual Memory
  • Paging & Swapping
  • Memory Mapping
  • Demand Paging

  • Signals Vs. Interrupts
  • Signals in Unix
  • Receiving a Signal
  • Handling a Signal
  • Signal System Calls

  • User Vs Daemon Process
  • Characteristics of a Daemon
  • Writing a Daemon
  • Timers & Resource Limits
  • Interval Timers
  • High Resolution Timers
  • System calls for Timers
  • Resource Limits
  • Hard Limit / Soft Limit
  • Why IPCs
  • Type of IPC Mechanisms
  • Primitive IPCs
  • Pipes & FIFOs
  • Full Duplex Pipes
  • Persistence of Pipes & FIFOs
  • Pros and Cons of Pipes/FIFOs
  • Limitation of Pipes/FIFOs

    advertisement
  • System V IPCs
  • IPC Attributes
  • IPC Persistence
  • Kernel Limits for these IPCs

  • Shared Memory
  • Shared Memory System Calls
  • Pros and Cons of Shared Memory

  • Message Queues
  • Message Queue System Calls
  • Pros and Cons of Message Queues

  • Semaphores
  • Classical P() & V() Operations
  • Binary & Counting Semaphores
  • Semaphore System Calls
  • Pros and Cons of Semaphores

    advertisement
  • IPC Control Operations
  • IPC Removal

advertisement
advertisement
Subscribe to our Newsletters (Subject-wise). Participate in the Sanfoundry Certification contest to get free Certificate of Merit. Join our social networks below and stay updated with latest contests, videos, internships and jobs!

Youtube | Telegram | LinkedIn | Instagram | Facebook | Twitter | Pinterest
Manish Bhojasia - Founder & CTO at Sanfoundry
Manish Bhojasia, a technology veteran with 20+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He lives in Bangalore, and focuses on development of Linux Kernel, SAN Technologies, Advanced C, Data Structures & Alogrithms. Stay connected with him at LinkedIn.

Subscribe to his free Masterclasses at Youtube & discussions at Telegram SanfoundryClasses.