Who Should Attend:
System programmers, application programmers, computer science students, and other IT professionals who wish to write systems and real-time programs in the Linux environment.
Prerequisites:
Participants are expected
to have a prior working knowledge of Linux and programming in C. Participants
who do not have any working knowledge of Linux are advised to enrol in U101:
Introduction to Linux.
Objectives:
This module is aimed at
familiarising participants with system programming in Linux. It equips them
with a knowledge of Linux systems programming facilities including basic file
reading and writing operations and advanced file I/O operations like changing
mode, owner, group, and process control, which includes how to create, execute,
terminate processes, priority, etc., interprocess communication like pipe, dup,
named pipes, semaphores, shared memory, etc. multithreading, and signal handling
necessary for writing real-time applications. Hands-on laboratory sessions will
be provided.
At the end of this module, participants are expected to understand and write
Linux systems programmes, and appreciate the systems features of Linux.
Contents:
Linux Systems Services Objectives: Classes of Linux Systems Services; Programs and Processes: Multiprocessing and Multithreading;
I/O Management: File Manipulation; Process Creation and Management; Intercrosses Communication Using Pipes; Signal Handling. I/O Management: Opening, Reading, Writing, And Closing Files. Random File Access. Setting and Obtaining File Attributes. Directory Manipulation.
Process Control: Process Creation Concepts. Creating Processes with fork; Executing New Programs with exec. Processes and Process Groups. Set User Id and Set Group Id Programs.
Interprocess Communication: Duplicating File Descriptors; Using Pipes for I/O Redirection; Semaphores, Message Queues, Shared Memory. Using Signals, Writing Signal Handling Routines.
Network Interprocess Communication: Berkley Sockets, Stateless Connections, Stateful Connections, Network Interface, Socket Data Structures, Socket Connection Protocol, Listening on Multiple Sockets, Network Considerations, Network Reliability Impact, Packet Filtering Firewalls, Proxy Firewalls, Quality of Service, Open Network Computing Remote Procedure Calls, CORBA, XML-RPC, Web Services.
Threading: Decision Criteria, Thread Creation, Thread Synchronization, Thread Destruction.
Error Handling: Objectives of Error Handling Facilities, Error Return Conventions, System Call Errors, Error Handling Functions, Minimal Error Handling, Stream Error Handling, The System Log Facility.
Advanced
Programming Topics: Program Development Source Control, Make,
Compiler, Linker, Executables vs. Libraries, Shared Libraries vs. Standard Libraries,
Debugging, Tracing, Core Dumps, Using the /proc Filesystem, Using /dev/kmem,
Attaching Background Processes, Security, Secure Sand Box, Bounds Checking,
Clearing Memory, Sticky Bit, Set UID/GID, ACLs, Privileged Ports, Shared Libraries,
PAM