Миграция процессов


В вычислительной технике миграция процессов — это специализированная форма управления процессами , при которой процессы перемещаются из одной вычислительной среды в другую. Это зародилось в распределенных вычислениях , но теперь используется более широко. На многоядерных машинах (несколько ядер на одном процессоре или на нескольких процессорах) миграция процесса происходит как стандартная часть планирования процесса , и процесс на данной машине довольно легко мигрировать, поскольку большинство ресурсов (память, файлы, сокеты) не используются. менять нужно только контекст выполнения (в первую очередь программный счетчик и регистры).

Традиционная форма миграции процессов — компьютерные кластеры , где процессы перемещаются с машины на машину, что значительно сложнее, поскольку требует сериализации образа процесса и миграции или повторного получения ресурсов на новой машине. Первая реализация миграции процессов была реализована в рабочем проекте DEMOS/MP в Калифорнийском университете в Беркли и была описана в статье 1983 года Бартона Миллера и Майкла Пауэлла. [1] Миграция процессов реализована, в частности, в OpenMosix и ОС Sprite от Калифорнийского университета в Беркли .

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

Взаимодействие между процессами: сообщения, отправленные процессу с идентификатором процесса P на машине M , должны быть перенаправлены на новую машину N и новый идентификатор процесса Q. Машина, с которой процесс мигрировал, должна хранить записи о мигрированных процессах. Если происходит множественная миграция, накладные расходы возрастают.

Общая память : если один из группы взаимодействующих процессов мигрирует и все эти процессы используют сегмент общей памяти, то для эмуляции доступа к общей памяти необходимо использовать сеть. Это усложняет и резко замедляет доступ к общей памяти для процессов, которые мигрировали с машины, на которой находится общая память. Явление, когда хост-компьютер должен предоставлять услуги мигрировавшему процессу, называется остаточной зависимостью.

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