UNIX system programming

By attending UNIX System Programming workshop, Participants will learn:

  • Adding, changing and deleting users and user groups
  • Managing user passwords
  • Configuring login files
  • Running background tasks at regular intervals
  • Creating file systems
  • Mounting, monitoring and repairing file systems
  • Managing file access
  • Backing up and restoring files and directories using standard utilities
  • Managing swap space
  • Adding printers to the system
  • Monitoring and controlling print jobs
  • Starting and shutting down the system
  • Customizing start-up and shutdown procedures
  • Monitoring system performance with the sar utility
  • Configuring syslog to manage system event messages
  • Carrying out various housekeeping procedures to manage disk space

UNIX System Programming training course is designed to give delegates practical experience in the administration of a SVR4 compatible Unix System. Practical work will concentrate on the basic SVR4 unix commands rather than vendor-specific administration menu driven or GUI tools.

  • Knowledge of UNIX
  • Knowledge of UNIX Shell Programming

IT staff responsible for the maintenance and day-to-day running of a SVR4 compatible UNIX system. Typically, where several different versions of UNIX systems are supported and the delegate needs knowledge of administration procedures common to all that adhere to SVR4 standards.

COURSE AGENDA

  • Basic File Types
  • File Descriptors
  • The open() and creat() Functions
  • Keeping Track of Open Files
  • File Table Entries
  • The v-node Structure
  • The fcntl() Function
  • The fcntl() Function – with F_DUPFD Command
  • File Attributes
  • The access() Function
  • link(), unlink(), remove(), and rename() Functions
  • Functions to Create, Remove, and Read Directories
  • Brief History of UNIX
  • AT&T and Berkeley UNIX Systems
  • Major Vendors
  • What is a Standard?
  • What is POSIX?
  • Other Industry Specs and Standards
  • Library vs. System-Level Functions
  • Standard I/O vs system I/O
  • System I/O Calls
  • File and Record Locking
  • What is a Process?
  • Process Creation and Termination
  • Process Memory Layout
  • Dynamic Memory Allocation
  • Accessing Environment Variables
  • Real and Effective User IDs
  • The Difference Between Programs and Processes
  • The fork() System Function
  • Parent and Child
  • The exec System Functions
  • Current Image and New Image
  • The wait() Functions
  • The waitpid() Function
  • Interpreter files and exec
  • Interprocess Communication
  • Pipes
  • FIFOs
  • What is a Signal?
  • Types of Signals
  • Signal Actions
  • Blocking Signals from Delivery
  • The sigaction() function
  • Signal Sets and Operations
  • Sending a Signal to Another Process
  • Blocking Signals with sigprocmask()
  • Scheduling and Waiting for Signals
  • Restarting System Calls (SVR4)
  • Signals and Reentrancy
  • Processes and Threads
  • Creating Threads
  • Multitasking
  • Overview of Thread Architectures
  • Processes Versus Threads
  • The Pthreads API
  • Thread Termination
  • Joining Threads
  • Detaching Threads
  • Passing Arguments to Threads
  • The Sharing Problem
  • Mutexes
  • Creating and Initializing Mutexes
  • Using Mutexes
  • Additional Synchronization Requirement
  • Using Condition Variables
  • Designing Applications for a Distributed Environment
  • Clients and Servers
  • Ports and Services
  • Connectionless vs. Connection-Oriented Servers
  • Stateless vs. Stateful Servers
  • Concurrency Issues
  • Berkeley Sockets
  • Data Structures of the Sockets API
  • Socket System Calls
  • Socket Utility Functions
  • Algorithms instead of Details
  • Client Architecture
  • Generic Client/Server Model – TCP
  • The TCP Client Algorithm
  • General Concepts
  • Iterative Servers
  • Concurrent Servers
  • Performance Consideration
  • An Iterative Server Design
  • A Concurrent Server Design
  • System V IPC
  • Elements Common to msg, shm, and sem Facilities
  • The Three System V IPC Facilities
  • IPC via Message Queues
  • IPC via Shared Memory
  • Coordinating the Use of Shared Memory Segments
  • Semaphore Sets – semget()
  • Semaphore Sets – semctl()
  • Semaphore Sets – the semop() call
  • Shared Memory Coordination Using Semaphores
  • Commands for IPC Facility Handling – ipcs and ipcrm