Операционные системы
OS
Что это такое
Операционная система делит одну машину между множеством программ. Каждая получает иллюзию, будто владеет процессором и всей памятью, а за кулисами она решает, кто пойдёт на процессор дальше, что останется в памяти и что отправится на диск. Процессы, потоки, виртуальная память, кэш страниц и файловая система — те части этого слоя, с которыми разработчик встречается в работе напрямую.
Почему это важно
Почти каждое загадочное число производительности в продакшене принадлежит именно этому слою, ведь сервис, быстрый в одиночку и медленный под нагрузкой, конкурирует за ядра. Процесс, погибший ни с того ни с сего, стал жертвой учёта памяти в ядре, а не вашего кода. Запись в файл возвращается мгновенно, и всё же она лежит в кэше страниц, а не на диске. Ничего из этого не видно в исходном коде приложения, поэтому без модели такого слоя остаётся только угадывать. Грубая картина процессов, планировщика и кэша превращает эти сюрпризы в вещи, которые можно назвать и измерить.
Что в этом треке
- Процессы, потоки и планирование (01-cs-fundamentals/15-operating-systems/01-processes-threads-and-scheduling) — что принадлежит процессу, чем делятся потоки и как планировщик распределяет процессор.
- Память и файловые системы (01-cs-fundamentals/15-operating-systems/02-memory-and-filesystems) — виртуальная память, страницы, кэш страниц и путь файла до диска.
Предварительные требования
- Структуры данных (01-cs-fundamentals/02-data-structures)
Что читать дальше
- Конкурентность и асинхронное программирование (01-cs-fundamentals/05-concurrency-async-programming) — те же проблемы совместного доступа, только изнутри программы, а не под ней.
- Компьютерные сети (01-cs-fundamentals/03-computer-networks) — сокеты — это файловые дескрипторы, а сетевой путь входит в этот слой на системном вызове.
- Внутреннее устройство баз данных (01-cs-fundamentals/04-database-internals) — движок хранения — набор ставок на то, как поведёт себя этот слой.