Операционные системы: базовый курс по системным основам

Погрузитесь в глубину операционных систем! Вы не просто узнаете что такое операционная система, а поймете, как работает ядро, процессы, файловые системы и память на уровне системных вызовов. Поймёте, как работают fork, exec, pipes, семафоры и многопоточность.
Продвинутый уровень
6 часов в неделю

Чему вы научитесь

  • Знать историю и эволюцию ОС, от первых ламповых машин до современных систем, включая ключевые вехи: UNIX, MS-DOS, Linux.
  • Разбираться в архитектуре ОС: понимать различия между монолитным, микроядерным и гибридным ядрами, а также принципы работы основных компонентов (ядро, системные вызовы, оболочка).
  • Программировать на низком уровне в Unix/Linux: уверенно работать с системными вызовами open, read, write, close, fork, exec, wait, stat, lstat, chmod, chown.
  • Управлять процессами и потоками: создавать, запускать и ожидать завершения дочерних процессов, управлять их жизненным циклом, предотвращать появление "зомби".
  • Организовывать межпроцессное взаимодействие (IPC): использовать каналы (pipes), именованные каналы (FIFO), очереди сообщений, семафоры и разделяемую память для обмена данными между процессами.
  • Работать с файловой системой: понимать концепцию "всё есть файл", управлять файлами и каталогами, работать с инодами, жёсткими и символическими ссылками, анализировать метаданные файлов.
  • Синхронизировать потоки: применять мьютексы, условные переменные и другие примитивы для защиты критических секций и предотвращения состояний гонки и взаимоблокировок (deadlock).
  • Работать с виртуальной памятью: понимать принципы страничной организации памяти, работу MMU и TLB, механизм page fault, а также использовать системные вызовы brk, sbrk, mmap и munmap для управления памятью.
  • Использовать буферизованный и небуферизованный ввод-вывод: выбирать подходящий метод в зависимости от задачи, понимать различия между stdio.h и прямым использованием системных вызовов, а также работать с флагами вроде O_DIRECT для прямого доступа к устройствам.
  • Анализировать состояние системы: читать и интерпретировать информацию из /proc/pid/maps и других системных файлов для диагностики и отладки.
  • Применять полученные знания на практике: реализовывать аналоги утилит (cat, cp, ls), простые шеллы, клиент-серверные приложения и многопоточные программы.

О курсе

Этот курс — ваш проводник в глубину устройства операционных систем, от их исторических корней до современных архитектур и практик. Мы не просто перечислим факты, а проведем вас через ключевые концепции, которые лежат в основе всех современных компьютеров: от вашего смартфона до суперкомпьютера.

Вы поймете, как устроены системы, которые вы используете каждый день. Мы начнем с истории, проследим эволюцию от первых ламповых машин к UNIX, Linux и Windows, чтобы понять, почему ОС стали такими, какие они есть. Затем перейдем к внутреннему устройству: ядру, системным вызовам, файловым системам, управлению процессами и памятью.

Курс построен на практике. Вы не просто будете читать теорию — вы напишете свои собственные аналоги cat, cp и даже простой shell на C. Вы научитесь работать с системными вызовами open, read, write, fork, exec, pipe, mmap и многими другими, чтобы понять, как на самом деле работает ваша система. Мы разберем, что такое процессы, потоки, мьютексы, условные переменные и как с ними работать, чтобы избежать гонок и взаимоблокировок.

Ключевая цель — дать вам системное мышление. Вы выйдете из курса с чётким пониманием того, как программа запускается, как она взаимодействует с ядром, как данные передаются между процессами и почему ваш printf в итоге выводится на экран. Это знание необходимо для любого серьезного разработчика, системного администратора или инженера, стремящегося понимать, а не просто использовать технологии.

Для кого этот курс

👉 Студентов и аспирантов технических специальностей (информатика, прикладная математика, программная инженерия). Для них курс является фундаментальным. Он дает глубокое понимание того, как работают системы, на которых они пишут программы, что критически важно для подготовки к профессиональной деятельности. 👉 Разработчиков ПО всех уровней. От начинающих до опытных. Курс поможет разработчикам перейти от "написания кода" к "пониманию системы". Это позволит писать более эффективный, надежный и безопасный код, правильно диагностировать ошибки и оптимизировать производительность. Особенно полезен для тех, кто работает с системным программированием, разработкой драйверов, встраиваемых систем или высоконагруженными серверами. 👉 Системных администраторов и DevOps-инженеров. Знания о внутреннем устройстве ОС, управлении процессами, памятью и файловыми системами позволяют лучше управлять серверами, настраивать производительность, диагностировать сбои и обеспечивать безопасность инфраструктуры. 👉 Всех, кто интересуется "как это работает изнутри". Людей, которые не удовлетворяются поверхностным знанием и хотят понять, как на самом деле функционируют их компьютеры и смартфоны. Это курс для любознательных, стремящихся к глубокому пониманию технологий.

Начальные требования

Для успешного прохождения курса рекомендуется иметь базовые знания и навыки в следующих областях:

  • Основы программирования. Необходимо понимать базовые концепции, такие как переменные, циклы, условные операторы, функции и структуры данных. Опыт программирования на любом языке (C, Python, Java и др.) будет полезен.
  • Работа с командной строкой (терминалом). Умение выполнять базовые команды в оболочке (например, cd, ls, mkdir, touch, cat, man) и работать с файловой системой — ключевой навык для выполнения лабораторных работ.
  • Базовые знания Linux/UNIX. Понимание того, что такое операционная система, процесс, файл, каталог, а также знакомство с основными принципами работы Unix-подобных систем (например, "всё есть файл") поможет быстрее погрузиться в материал.
  • Навыки работы с текстовыми редакторами. Умение создавать и редактировать файлы с помощью редакторов в терминале (например, nano, vim) или графических редакторов.

Курс не предполагает глубокого знания C, но большая часть практической части будет выполняться на этом языке. Поэтому наличие хотя бы минимального опыта работы с C (или готовность быстро освоить его) значительно упростит обучение. Для тех, кто хочет использовать более современные языки, будут предоставлены примеры на Rust, Go и Python.

Главное требование — это мотивация и желание разобраться в том, как устроены компьютеры изнутри. Курс построен от простого к сложному, и все необходимые концепции будут объяснены.

Наши преподаватели

Как проходит обучение

Обучение в этом курсе построено на глубоком погружении в материал через сочетание теории и практики. Курс не ограничивается пассивным прослушиванием лекций — он требует активного участия и самостоятельной работы.

Программа курса

загружаем...

Что вы получаете

  • Глубокое системное мышление. Вы перестанете просто использовать операционные системы и начнёте понимать, как они устроены изнутри — от ядра до пользовательских приложений. Это фундаментальное знание, необходимое для решения сложных задач.
  • Практические навыки программирования на C. Вы научитесь писать код, который напрямую взаимодействует с ядром ОС, используя системные вызовы open, read, write, fork, exec, pipe и другие. Вы реализуете аналоги утилит (cat, cp, ls) и создадите собственный простой shell.
  • Мастерство работы с командной строкой. Вы освоите не только базовые команды, но и продвинутые техники: управление файлами и правами доступа, написание скриптов на Bash и Python, анализ системных данных.
  • Уверенность в работе с процессами и потоками. Вы поймете разницу между процессом и потоком, научитесь создавать и управлять ими, а также решать ключевые проблемы параллелизма — состояние гонки и взаимоблокировку — с помощью мьютексов, условных переменных и других примитивов синхронизации.
  • Навыки анализа и диагностики. Вы научитесь читать и интерпретировать информацию о системе, используя такие инструменты, как /proc/pid/maps, что позволит вам диагностировать проблемы производительности и поведения программ.
Price: Бесплатно

Расскажите о курсе друзьям

Price: Бесплатно