The course provides basic knowledge and skills necessary for software development for the rapidly gaining popularity of the Linux operating system.

The Linux operating system occupies the leading position, second place in the segment of Internet servers and is rapidly gaining popularity in the corporate segment.

Course Program

Topic 1. Introduction

  • Familiarization with the specifics of building software in GNU/Linux;
  • Familiarization with console text editors;
  • Manual and automatic software building;
  • Client-Interface-Server (CIS) model;
  • Static library building;
  • Sharing libraries;
  • Working with environment variables.

Topic 2: Low-level I/O and File Operations

  • Overview of Linux I/O mechanisms;
  • File descriptors;
  • System calls: open, close, write, read and lseek;
  • File Types;
  • Index descriptors and hard links;
  • File permissions;
  • The proc file system;
  • Two ways to read the contents of a directory;
  • Sparse files;
  • Locking file areas.

Topic 3: Interprocess communication

  • Methods of interprocess communication: channels, messages, shared memory, and semaphores;
  • Unnamed channels;
  • Named channels;
  • Messages;
  • Shared memory;
  • Semaphores.

Topic 4: Sockets

  • Sockets in file namespace (UNIX sockets);
  • Paired sockets;
  • Network sockets.

Topic 5: Signals

  • Getting acquainted with signals;
  • Distinguishing signals from other mechanisms of interprocess communication;
  • Specifics of signals processing.

Topic 6: Processes

  • Cloning processes – fork;
  • Executable process replacement – exec;
  • Zombies – causes of occurrence and ways to eliminate them.

Topic 7: Threads

  • Threads and processes;
  • Specifics of building multithreaded applications;
  • Early thread termination.

Topic 8: Threads (continued)

  • Creating a thread termination handler;
  • Thread synchronization tools;
  • Thread attributes.

Topic 9: Daemons (Services)

  • Distinguishing a daemon from a console utility;
  • Demon development specifics;
  • Creating a daemon that uses network sockets.

Topic 10. Console I/O

  • Preventing output redirection;
  • Terminal management;
  • Hiding user password during authentication.

Topic 11. Displayed Memory

  • Displaying a regular file;
  • File sharing;
  • Private mappings;
  • Other mmap applications.

At the end of the course there is a final assessment in the form of a test or on the basis of grades for practical work completed during the course.