Как гарантировать, что на данном процессоре/ядре выполняется ровно один процесс?

Как гарантировать, что на данном процессоре/ядре выполняется ровно один процесс?

Я хотел бы сделать это, чтобы иметь возможность точно и быстро тестировать свои процессы, а также просто иметь иллюзию контроля.

Может быть, я хочу зарезервировать один процессор для специальных программ. Может быть, я хочу написать свой собственный оптимизатор процессов. Кто знает. Возможности бесконечны в моем сознании.

Возможно ли это в любой ОС? Если нет, то почему? Если нам разрешено разделять память, почему мы не можем иметь такой контроль над процессорами?

Спасибо.

решение1

В Linux,процессорыдолжно сработать для этого.

решение2

Это теоретически возможно. Самый простой способ сделать что-то близкое к этому — использовать платформу виртуализации, которая позволяет назначать определенные ЦП/ядра определенной виртуальной машине. Тогда вы сможете запустить только тот процесс, который вам нужен, на данной виртуальной машине (конечно, с минимальными издержками ОС).

решение3

Самый простой способ сделать это — установить соответствие процессора для данного процесса или сообщить ОС, на каких логических процессорах (ядрах) этому процессу разрешено работать. Если щелкнуть правой кнопкой мыши по процессу в диспетчере задач Windows и выбрать Set Affinity..., вы увидите окно, которое выглядит примерно так:

Настройка соответствия процессора в Windows

В системах на базе Linux вы можетесделайте то же самое с tasksetутилитойили установив соответствующий флаг маски ЦП в записи процесса /proc.

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

Связанный контент