Курс на Stepik
Обложка курса «Операционные системы: базовый курс по системным основам» на Stepik
Бесплатно

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

Открыть на
STEPIK.ORG

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

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Операционные системы: базовый курс по системным основам»Учеников на курсе 1 347
Сертификаты, выданные на курсе «Операционные системы: базовый курс по системным основам»Сертификатов выдано 0
Отзывы о курсе «Операционные системы: базовый курс по системным основам»Отзывов получено 6
Рейтинг курса «Операционные системы: базовый курс по системным основам»Рейтинг курса 5.000
Уроки в курсе «Операционные системы: базовый курс по системным основам»Количество уроков 30
Тесты в курсе «Операционные системы: базовый курс по системным основам»Количество квизов 154
Время прохождения курса «Операционные системы: базовый курс по системным основам»Время прохождения курса
Обновления курса «Операционные системы: базовый курс по системным основам»Обновления курса
Дата публикации курса «Операционные системы: базовый курс по системным основам»Дата публикации курса
Последнее обновление курса «Операционные системы: базовый курс по системным основам»Последнее обновление
Сложность hard

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

  • Знать историю и эволюцию ОС, от первых ламповых машин до современных систем, включая ключевые вехи: 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), простые шеллы, клиент-серверные приложения и многопоточные программы.

О курсе

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

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

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

Нагрузка

6 часов в неделю

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