Если я у меня есть ЦП с 4 ядрами (например, Intel I5), и мне нужно, чтобы процесс работал исключительно на одном ядре, не прерываясь планировщиком Linux, даже на несколько миллисекунд.
Что мне нужно делать?
Чтобы дополнить этот вопрос, я провел исследование, поэтому у меня есть теория.
Я не уверен, даже если можно избежать остановки процесса, потому что, если я понимаю планировщик Linux, они предназначены для зависания процесса, чтобы избежать монополизации ядра ЦП.
Этот вопрос важен, потому что в некоторых исследовательских и научных приложениях необходимо запустить виртуальную машину, инкапсулирующую приложение реального времени, поэтому, если Linux остановит виртуальную машину, чтобы проверить список процессов или освободить ядро ЦП для другого процесс, приложение также будет остановлено.
Мне нужно, чтобы процесс выполнялся исключительно на одном из этих ядер, не прерываясь планировщиком Linux даже на несколько миллисекунд.
Это невозможно (с пользовательскими приложениями). Linux (как и большинство обычных операционных систем) использует упреждающеепланирование.
Тем не менее, читайте больше о Linux реального времении Xenomai
(конечно, часть ядра часто не вытесняется, но вы не хотите писать модуль ядра для такой цели)
На практике, я уверен, вы сможете настроить свою систему так, чтобы вытеснение было незначительным для ваших целей сравнительного анализа. Накладные расходы планирования (или могут быть настроены так), вероятно, в микросекундах, а не в миллисекундах.
(в противном случае отказаться от использования Linux)
См. sched(7)