ADVANCED UNIX PROGRAMMING – GTU19

Course Description

This is an in-depth training course for software developers on UNIX system programming facilities. Learn how to develop sophisticated multi-process applications using system calls and library routines.

^^

Duration

4 days

^^

Target Audience

Please contact us for further details.

^^

Course Prerequisites

Unix as well as strong C programming skills are required for this course. These skills are taught in the following GuruTeam courses (or similar training programmes)

If you have any questions or doubts as to whether you meet the pre-requisites for this course, or indeed are wondering which course best suits you, please contact us to discuss your suitability for course attendance.

^^

Suggested Follow on Courses

There are a number of options of suitable follow-on courses, depending on your business needs. Please Contact Us for further details.

^^

Course Content

1. UNIX Standards

  1. Brief History of UNIX
  2. AT&T and Berkeley UNIX Systems
  3. Major Vendors
  4. What is a Standard?
  5. What is POSIX?
  6. Other Industry Specs and Standards
  7. Library vs. System-Level Functions

2. Files and Directories

  1. Basic File Types
  2. File Descriptors
  3. The open() and creat() Functions
  4. Keeping Track of Open Files
  5. File Table Entries
  6. The v-node Structure
  7. The fcntl Function
  8. The fcntl() Function – with F_DUPFD
  9. Command
  10. File Attributes
  11. The access() Function
  12. link(), unlink(), remove(), and rename()
  13. Functions
  14. Functions to Create, Remove, and Read
  15. Directories

3. System I/O

  1. Standard I/O vs System I/O
  2. System I/O Calls
  3. File and Record Locking

4. Processes

  1. What is a Process?
  2. Process Creation and Termination
  3. Process Memory Layout
  4. Dynamic Memory Allocation
  5. Accessing Environment Variables
  6. Real and Effective User Ids

5. Process Management

  1. The Difference Between Programs and
  2. Processes
  3. The fork() System Function
  4. Parent and Child
  5. The exec System Function
  6. Current Image and New Image
  7. The wait() and waitpid() Function
  8. Interpreter files and exec

6. Basic Interprocess Communication:

  1. Pipes
  2. Interprocess Communication
  3. Pipes
  4. FIFOs

7. Signals

  1. What is a Signal?
  2. Types of Signals
  3. Signal Action
  4. Blocking Signals from Delivery
  5. The sigaction() Function
  6. Signal Sets and Operations
  7. Sending a Signal to Another Process
  8. Blocking Signals with sigprocmask()
  9. Scheduling and Waiting for Signals
  10. Restarting System Calls (SVR4)
  11. Signals and Reentrancy

8. Introduction to Pthreads

  1. Processes and Threads
  2. Creating Threads
  3. Multitasking
  4. Overview of Thread Architectures
  5. Processes Versus Threads
  6. The Pthreads API
  7. Thread Termination
  8. Joining Threads
  9. Detaching Threads
  10. Passing Arguments to Threads

9. Pthreads Synchronization

  1. The Sharing Problem
  2. Mutexes
  3. Creating and Initializing Mutexes
  4. Using Mutexes
  5. Additional Synchronization Requirement
  6. Using Condition Variables

10. Overview of Client/Server

  1. Programming
  2. Designing Applications for a Distributed
  3. Environment
  4. Clients and Servers
  5. Ports and Services
  6. Connectionless vs. Connection-Oriented
  7. Servers
  8. Stateless vs. Stateful Servers
  9. Concurrency Issues

11. The Berkeley Sockets API

  1. Berkeley Sockets
  2. Data Structures of the Sockets API
  3. Socket System Calls
  4. Socket Utility Functions

12. TCP Client Design

  1. Algorithms Instead of Details
  2. Client Architecture
  3. Generic Client/Server Model – TCP
  4. The TCP Client Algorithm

13. TCP Server Design

  1. General Concepts
  2. Iterative Servers
  3. Concurrent Servers
  4. Performance Consideration
  5. An Iterative Server Design
  6. A Concurrent Server Design

14. System V Interprocess

  1. Communication
  2. System V IPC
  3. Elements Common to msg, shm, and
  4. sem Facilities
  5. The Three System V IPC Facilities
  6. IPC via Message Queues
  7. IPC via Shared Memory
  8. Coordinating the Use of Shared Memory
  9. Segments
  10. Semaphore Sets – emget()
  11. Semaphore Sets – semctl()
  12. Semaphore Sets – the semop() calls
  13. Shared Memory Coordination Using
  14. Semaphores
  15. Commands for IPC Facility Handling –
  16. ipcs and ipcrm

Also Discussed:

15. Date and Time

  1. Functions
  2. Overview
  3. Time Representations
  4. Decoding Calendar Time
  5. Shorthand Functions – asctime(), ctime()
  6. Formatting Date and Time Strings
  7. Process Times
  8. The Difference Between clock() and
  9. times()
  10. Berkeley High Resolution Timers

 

16. Standard I/O

  1. Standard I/O Calls to manipulate streams
  2. Standard I/O Calls which perform
  3. character I/O
  4. Standard I/O Calls which perform string
  5. I/O
  6. Standard I/O Calls Which Perform
  7. Formatted I/O
  8. Standard I/O Calls Which Perform
  9. Binary I/O

^^

See more Linux/Unix courses