(Click Category to List Courses)

40 - IT-O - Information Technology - Operating Systems and System Administration

IT-O 203 - UNIX/Linux - Administration-Advanced

Code Start Date Duration Venue
IT-O 203 06 November 2023 5 Days Istanbul Registration Form Link
IT-O 203 04 December 2023 5 Days Istanbul Registration Form Link
Please contact us for fees


Course Description

In-depth training for software developers on UNIX system programming facilities. Learn how to develop sophisticated multiprocess applications using system calls and library routines. The course is illustrated with practical examples in UNIX's 'native' C language which show how to write programs to exploit the features of UNIX and how to choose the correct API calls for the task. UNIX is an excellent environment for client/server programming.

Course Objectives

  • Understanding the fundamental concepts of  POSIX?
  • Learning how to Using Files and Directories effectively
  • Learning what is the Signals
  • Learning what is meaing of  Pthreads
  • Understanding other Industry Specs and Standards
  • Learning the Real and Effective user IDs
  • Learning how to manage File System Security 
  • Being able to identify Utilities
  • Understanding the TCP Client Design and TCP Server Design
  • Learning what is meaing of Date and Time Functions
  • Understanding  System V Interprocess Communication

Who Should Attend?

  • UNIX professional
  • Software developers and those working toward becoming an effective system
  • Network or database administrator on the UNIX platform
  • Application developers who will be writing advanced programs on UNIX
  • Anyone who deal directly or indirectly with UNIX system 

Course Details/Schedule

Day 1

  • UNIX Standards
  • Brief History of UNIX
  • ATT and Berkeley UNIX Systems
  • Major Vendors
  • What is a Standard?
  • What is POSIX?
  • Other Industry Specs and Standards
  • Library vs. System-Level Functions
  • Files and Directories
  • 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
  • System I/O
  • Standard I/O vs System I/O
  • System I/O Calls
  • File and Record Locking

Day 2

  • Processes
  • What is a Process?
  • Process Creation and Termination
  • Process Memory Layout
  • Dynamic Memory Allocation
  • Accessing Environment Variables
  • Real and Effective User IDs
  • Process Management
  • The Difference Between Programs and Processes
  • The fork() System Function
  • Parent and Child
  • The exec System Function
  • Current Image and New Image
  • The wait() and waitpid() Function
  • Interpreter files and exec
  • Interprocess Communication: Pipes
  • Interprocess Communication
  • Pipes
  • FIFOs
  • Signals
  • Types of Signals
  • Signal Action
  • Blocking Signals from Delivery
  • The sigaction() Function
  • Signal Sets and Operations

Day 3

  • Sending a Signal to Another Process
  • Blocking Signals with sigprocmask()
  • Scheduling and Waiting for Signals
  • Restarting System Calls (SVR4)
  • Signals and Reentrancy
  • Pthreads
  • 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
  • Pthreads Synchronization
  • The Sharing Problem
  • Mutexes
  • Creating and Initializing Mutexes
  • Using Mutexes
  • Additional Synchronization Requirement
  • Using Condition Variables
  • Client/Server Programming
  • Designing Applications for a Distributed Environment

Day 4

  • Clients and Servers
  • Ports and Services
  • Connectionless vs. Connection-Oriented Servers
  • Stateless vs. Stateful Servers
  • Concurrency Issues
  • The Berkeley Sockets API
  • Berkeley Sockets
  • Data Structures of the Sockets API
  • Socket System Calls
  • Socket Utility Functions
  • TCP Client Design
  • Algorithms Instead of Details
  • Client Architecture
  • Generic Client/Server Model - TCP
  • The TCP Client Algorithm
  • TCP Server Design
  • Concepts
  • Iterative Servers
  • Concurrent Servers
  • Performance Consideration
  • An Iterative Server Design
  • A Concurrent Server Design
  • System V Interprocess Communication
  • System V IPC
  • Elements Common to msg, shm, and sem Facilities

Day 5

  • The Three System V IPC Facilities
  • IPC via Message Queues
  • IPC via Shared Memory
  • Coordinating the Use of Shared Memory Segments
  • Semaphore Sets - emget()
  • Semaphore Sets - semctl()
  • Semaphore Sets - the semop() calls
  • Shared Memory Coordination Using Semaphores
  • Commands for IPC Facility Handling - ipcs and ipcrm
  • Date and Time Functions
  • Time Representations
  • Decoding Calendar Time
  • Shorthand Functions - asctime(), ctime()
  • Formatting Date and Time Strings
  • Process Times
  • The Difference Between clock() and times()
  • Berkeley High Resolution Timers
  • Standard I/O
  • Standard I/O Calls to manipulate streams
  • Standard I/O Calls which perform character I/O
  • Standard I/O Calls which perform string I/O
  • Standard I/O Calls Which Perform Formatted I/O
  • Standard I/O Calls Which Perform Binary I/O