Операционные системы

OS

Что это такое

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

Почему это важно

Почти каждое загадочное число производительности в продакшене принадлежит именно этому слою, ведь сервис, быстрый в одиночку и медленный под нагрузкой, конкурирует за ядра. Процесс, погибший ни с того ни с сего, стал жертвой учёта памяти в ядре, а не вашего кода. Запись в файл возвращается мгновенно, и всё же она лежит в кэше страниц, а не на диске. Ничего из этого не видно в исходном коде приложения, поэтому без модели такого слоя остаётся только угадывать. Грубая картина процессов, планировщика и кэша превращает эти сюрпризы в вещи, которые можно назвать и измерить.

Что в этом треке

  1. Процессы, потоки и планирование (01-cs-fundamentals/15-operating-systems/01-processes-threads-and-scheduling) — что принадлежит процессу, чем делятся потоки и как планировщик распределяет процессор.
  2. Память и файловые системы (01-cs-fundamentals/15-operating-systems/02-memory-and-filesystems) — виртуальная память, страницы, кэш страниц и путь файла до диска.

Предварительные требования

Что читать дальше

  • Конкурентность и асинхронное программирование (01-cs-fundamentals/05-concurrency-async-programming) — те же проблемы совместного доступа, только изнутри программы, а не под ней.
  • Компьютерные сети (01-cs-fundamentals/03-computer-networks) — сокеты — это файловые дескрипторы, а сетевой путь входит в этот слой на системном вызове.
  • Внутреннее устройство баз данных (01-cs-fundamentals/04-database-internals) — движок хранения — набор ставок на то, как поведёт себя этот слой.