Advanced Linux System Programming


LX3 - Version:2
Description
The course introduces the participant to programming in the C programming language in a Linux environment. The course focuses on Linux system calls and library functions, how to use them, and their underlying mechanisms. The course deals with many facets of the Linux operating system, including: Linux kernel structure, I/O, Signals, Timers, Processes, Threads, IPC mechanisms: Pipes, Shared memory, Message Queues, Semaphores, and Sockets using TCP and UDP. The course includes many programming examples that can serve as a reference or basis for the participants' work in the future. Time is given to writing and testing several programs to help the participants comprehend the complexity of Linux system programming, along with the satisfaction of knowing how to do it well.
Intended audience
The course is for programmers, software designers, and project managers.
Expand All
  • Introduction.
    • Short History
    • Why is Linux So Successful?
    • UNIX Flavors - BSD, SysV, Linux
    • Standards
    • System Architecture
    • The Kernel
    • The Shell
    • Utilities - Tools and Applications
  • Programming under Linux
    • Privileged Execution Mode
    • Kernel Mode Vs. User Mode
    • System Calls
    • Using System Calls
    • What Happen When a System Call Fails?
    • Printing Error Messages - perror
    • Printing Error Messages - strerror
  • Files
    • Using Files
      • File Descriptors
      • read/write
    • Links
      • Hard Links
      • Symbolic Links
      • Using Links
    • Working With Directories
    • Obtaining File Information
    • File Permissions
    • Special Permissions
  • Timers
    • Using the Linux Clock
    • Working with Clocks
    • Working with Resolution in Seconds
    • High Resolution Clocks
    • Working with Internal Clocks
    • Timer Signals
  • Process
    • Programs and Processes
    • The Process IDs
    • The Process Table
    • The Process State
    • PS - Report Process Status
    • Context Switch
    • The Process Environment
    • Process Group
    • Job and Processes
    • Process Termination
      • exit and_exit
      • The atexit Library Function
    • Creating a New Process
    • The wait Function Family
    • Executing a Program
      • The execve System Call
      • exec Function Family
    • The system C Library Function
    • Redirection of Input and Output
    • The vfork System Call
  • Signals
    • The Way the Kernel Handles Signal
    • Types of Signals
    • Results of a Process Receiving a Signal
    • Handling Signals
    • Signals List
    • Sending Signals
    • Response to Signals
    • Activation of pause,signal
    • System Call for Signal Handling
    • Blocking of Critical Segments
      • Creating the Signal Mask
    • Error Handler
      • Implementing the Error Handler
  • Threads
    • Thread Creation
    • Thread Cancellation
    • Thread-Specific Data
    • Synchronization and Critical Sections
    • GNU/Linux Thread Implementation
    • Processes Vs.Threads
  • Resource Usage
    • Resource Management.
    • Measuring Resource Utilization.
    • Upper Levels of Resource Management.
    • Context Switch.
    • Algorithms for Process Management.
    • Process Management in UNIX.
    • Priorities.
  • Inter-Process Communication (IPC)
    • Pipes
      • Create pipe
      • The Shell and Pipes
      • Pipes and Standard I/O Files
      • Closing Pipes
      • Popen
      • pclose
    • Named Pipes
    • Shared Memory
      • shmget
      • shmat
      • shmdt
      • shmid_ds
      • shmctl
    • Message Queue
      • msgget
      • msgsnd
      • msgrcv
      • msqid_ds
      • msgctl
    • csh Level Commands
      • ipcs
      • ipcrm
  • Synchronization Mechanisms
    • File locking
    • Semaphore
  • Sockets
    • What Is A Socket?
    • A Brief History Of Sockets.
    • Communication Protocols.
    • Communication Capabilities.
    • Endpoint Addresses.
    • The Internet Protocol (IP).
    • Internet Addresses.
    • Address Classes.
    • Connection Oriented Communications And TCP
    • Connectionless Communications And UDP.
    • Stream Sockets - The Basic Model
      • Server side
      • Client side
    • Sending Data – send.
    • Receiving Data - recv.
    • Shutting Down A Socket.
    • Related files.
    • The select( ) System Call.
    • Broadcast and Datagram Sockets
  • A working knowledge of the C programming language.
  • Basic knowledge of the Linux/Unix operating system on a user level is mandatory.
  • The participant will know about the various mechanisms available to the programmer in a Linux environment. This will allow the programmer to write a wide variety of applications using standard Linux system calls and library functions.