ОС: процессы и потоки

7 вопросов

Фундамент операционных систем: процессы, потоки, виртуальная память, переключение контекста, deadlock. Понимание различий между конкурентностью и параллелизмом критически важно для Go-разработчика.

1 Чем поток (thread) отличается от процесса (process)? 🟢 Лёгкий
Ответ: B) Потоки одного процесса разделяют память, процессы - нет

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

Подробнее →
2 Что такое context switch (переключение контекста)? 🟡 Средний
Ответ: B) Сохранение состояния одного потока и загрузка другого

При переключении контекста ОС сохраняет регистры, стек и состояние текущего потока, затем загружает состояние другого. Это дорогая операция (тысячи тактов CPU). Горутины Go значительно дешевле в переключении, чем потоки ОС.

Подробнее →
3 В чём разница между конкурентностью (concurrency) и параллелизмом (parallelism)? 🟡 Средний
Ответ: B) Конкурентность - структура кода, параллелизм - одновременное выполнение

Конкурентность - возможность работать с несколькими задачами (не обязательно одновременно). Параллелизм - буквально одновременное выполнение на разных ядрах. Конкурентный код может работать на одном ядре. Параллелизм требует нескольких ядер.

Подробнее →
4 Что такое виртуальная память? 🟡 Средний
Ответ: B) Абстракция, дающая каждому процессу собственное адресное пространство

Виртуальная память - абстракция ОС, которая даёт каждому процессу иллюзию собственного непрерывного адресного пространства. Маппинг виртуальных адресов на физические выполняет MMU. Swap - один из механизмов виртуальной памяти.

Подробнее →
5 Чем мьютекс отличается от семафора? 🟡 Средний
Ответ: B) Мьютекс допускает только 1 поток, семафор - N потоков

Мьютекс - бинарная блокировка: только один поток может владеть ресурсом. Семафор - счётчик: допускает до N одновременных потоков. В Go мьютекс - sync.Mutex, семафор можно реализовать через буферизованный канал: make(chan struct{}, N).

Подробнее →
6 Какую модель планирования использует Go runtime? 🟡 Средний
Ответ: B) M:N (M горутин на N потоков ОС)

Go использует M:N модель: M горутин мультиплексируются на N потоков ОС. Планировщик Go (GMP: Goroutine, Machine, Processor) распределяет горутины по потокам. Это даёт лёгкость горутин и настоящий параллелизм на нескольких ядрах.

Подробнее →
7 Какие условия необходимы для возникновения deadlock? 🔴 Сложный
Ответ: B) Mutual exclusion, hold and wait, no preemption, circular wait

Deadlock возникает при одновременном выполнении 4 условий Коффмана: 1) mutual exclusion - эксклюзивный доступ; 2) hold and wait - удержание ресурса при ожидании другого; 3) no preemption - ресурс нельзя отобрать; 4) circular wait - циклическое ожидание.

Подробнее →
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.