The course is devoted to the architecture of modern operating systems and low-level programming for Unix and MS Windows operating systems. The knowledge gained in this course gives the specialist the opportunity to use the capabilities of the operating system to develop fast, efficient, reliable and secure software solutions. The course covers the concepts of operating system architecture, classification of operating systems, file systems, processes, threads, memory; forms skills and abilities in memory management, process management and their interaction, thread management and their synchronization; provides experience and practical knowledge of programming at the system level in Unix and MS Windows operating systems.
The course is devoted to the architecture of modern operating systems and low-level programming for Unix and MS Windows operating systems. The knowledge gained in this course gives the specialist the opportunity to use the capabilities of the operating system to develop fast, efficient, reliable and secure software solutions. The course covers the concepts of operating system architecture, classification of operating systems, file systems, processes, threads, memory; forms skills and abilities in memory management, process management and their interaction, thread management and their synchronization; provides experience and practical knowledge of programming at the system level in Unix and MS Windows operating systems.

System Programming

( ECT = 4 ECTS + optional 2 ECTS).

Part 1. Operating system architecture (2 ECTS).

The concept of kernel objects, and how to work with them; Principles of processes and threads; WinApi functions to manage processes, threads, registry; threads synchronization; Low-level work with files; Principles of work with memory.

Part 2. Concurrent Programming (in Pyton) (2 ECTS).

Introduction to parallel architectures; Parallel programming concepts; Design patterns for parallel programming; Programming hands-on; Debugging parallel programs; Performance monitoring and optimizations; Parallelizing compilers.

Part 3.(optional) Distributed systems (2 ECTS).

Networking: network protocols, point-to-point communication; Marshaling: JSON, Google protocol buffers; Remote procedure calls; Distributed objects; Web services; Clock synchronization; Event ordering: Logical clocks, Vector clocks; Distributed transactions; Concurrency control.