
Я хотел бы сделать это, чтобы иметь возможность точно и быстро тестировать свои процессы, а также просто иметь иллюзию контроля.
Может быть, я хочу зарезервировать один процессор для специальных программ. Может быть, я хочу написать свой собственный оптимизатор процессов. Кто знает. Возможности бесконечны в моем сознании.
Возможно ли это в любой ОС? Если нет, то почему? Если нам разрешено разделять память, почему мы не можем иметь такой контроль над процессорами?
Спасибо.
решение1
В Linux,процессорыдолжно сработать для этого.
решение2
Это теоретически возможно. Самый простой способ сделать что-то близкое к этому — использовать платформу виртуализации, которая позволяет назначать определенные ЦП/ядра определенной виртуальной машине. Тогда вы сможете запустить только тот процесс, который вам нужен, на данной виртуальной машине (конечно, с минимальными издержками ОС).
решение3
Самый простой способ сделать это — установить соответствие процессора для данного процесса или сообщить ОС, на каких логических процессорах (ядрах) этому процессу разрешено работать. Если щелкнуть правой кнопкой мыши по процессу в диспетчере задач Windows и выбрать Set Affinity...
, вы увидите окно, которое выглядит примерно так:
В системах на базе Linux вы можетесделайте то же самое с taskset
утилитойили установив соответствующий флаг маски ЦП в записи процесса /proc
.
К сожалению, не существует простого способа удалить все процессы с определенного процессора или автоматически установить определенную маску для процесса при его запуске — вам понадобится скрипт для отслеживания новых процессов в системе и установки необходимого вам соответствия.