К чему относится понятие единое адресное пространство и что оно дает
Что проверяют
Понимаете ли вы, как устроена память процесса и почему это влияет на поведение приложения, которое вы тестируете. Вопрос почти всегда тянет за собой уточнение: чем поток отличается от процесса и почему падение одного потока роняет всё приложение.
Как отвечать
Начните с того, к чему относится термин: это организация памяти в архитектуре компьютера и в операционной системе. Единое адресное пространство означает, что у нескольких участников один общий набор адресов, и один и тот же адрес указывает для всех на одно место. Встречается в трёх контекстах:
- архитектура фон Неймана: код и данные лежат в одной памяти и адресуются одинаково, в отличие от гарвардской архитектуры, где у них раздельные шины и адреса;
- отображение устройств в память (memory-mapped I/O): регистры устройств получают адреса в том же пространстве, что и оперативная память, и к ним обращаются обычными командами чтения и записи;
- потоки внутри процесса: у каждого процесса в Linux, Windows и macOS своё виртуальное адресное пространство, а все потоки одного процесса делят его между собой.
Что это даёт: обмен данными без копирования и без механизмов межпроцессного взаимодействия, дешёвое переключение между потоками, простую передачу указателей. Цена: нет изоляции. Ошибочная запись в память портит данные всем, а обращение по неверному адресу в одном потоке завершает весь процесс.
Для тестировщика отсюда прямые следствия. Гонки данных дают плавающие баги, которые не воспроизводятся по шагам. Утечка в одном модуле раздувает память всего приложения. Браузеры выносят вкладки в отдельные процессы именно ради изоляции, которой общее пространство не даёт.
Где спотыкаются
Путают с виртуальной памятью и говорят, что Windows и Linux используют единое адресное пространство для всех процессов. Наоборот, современные ОС дают каждому процессу своё.
Называют общее пространство плюсом для безопасности. Без отдельных механизмов защиты оно её снижает: любой код видит чужие данные.
Отвечают чистой теорией и не связывают её с тестированием: гонками, утечками, падением приложения целиком.