![Как гарантировать, что на данном процессоре/ядре выполняется ровно один процесс?](https://rvso.com/image/1313333/%D0%9A%D0%B0%D0%BA%20%D0%B3%D0%B0%D1%80%D0%B0%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%2C%20%D1%87%D1%82%D0%BE%20%D0%BD%D0%B0%20%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%BC%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B5%2F%D1%8F%D0%B4%D1%80%D0%B5%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D1%80%D0%BE%D0%B2%D0%BD%D0%BE%20%D0%BE%D0%B4%D0%B8%D0%BD%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%3F.png)
Я хотел бы сделать это, чтобы иметь возможность точно и быстро тестировать свои процессы, а также просто иметь иллюзию контроля.
Может быть, я хочу зарезервировать один процессор для специальных программ. Может быть, я хочу написать свой собственный оптимизатор процессов. Кто знает. Возможности бесконечны в моем сознании.
Возможно ли это в любой ОС? Если нет, то почему? Если нам разрешено разделять память, почему мы не можем иметь такой контроль над процессорами?
Спасибо.
решение1
В Linux,процессорыдолжно сработать для этого.
решение2
Это теоретически возможно. Самый простой способ сделать что-то близкое к этому — использовать платформу виртуализации, которая позволяет назначать определенные ЦП/ядра определенной виртуальной машине. Тогда вы сможете запустить только тот процесс, который вам нужен, на данной виртуальной машине (конечно, с минимальными издержками ОС).
решение3
Самый простой способ сделать это — установить соответствие процессора для данного процесса или сообщить ОС, на каких логических процессорах (ядрах) этому процессу разрешено работать. Если щелкнуть правой кнопкой мыши по процессу в диспетчере задач Windows и выбрать Set Affinity...
, вы увидите окно, которое выглядит примерно так:
В системах на базе Linux вы можетесделайте то же самое с taskset
утилитойили установив соответствующий флаг маски ЦП в записи процесса /proc
.
К сожалению, не существует простого способа удалить все процессы с определенного процессора или автоматически установить определенную маску для процесса при его запуске — вам понадобится скрипт для отслеживания новых процессов в системе и установки необходимого вам соответствия.