Предположим, что у меня есть дочерний процесс, для которого я планировал политику SCHED_BATCH
, используя функцию библиотеки C, sched_setscheduler
, и теперь этот дочерний процесс создает внешний процесс, используя execvp
системный вызов.Планирование политики в системном вызове exec после fork
Будет ли планировщик нового процесса создан таким же, как у предыдущего дочернего процесса, то есть являются политиками планирования, унаследованными при системном вызове execvp
? Я прочитал справочную страницу, в которой указано, что политики FIFO
и RR
наследуются, но как насчет обычных политик, таких как SCHED_BATCH
, SCHED_IDLE
и SCHED_OTHER
?
Есть ли какая-либо функция exec
, которая поддерживает наследование всех политик планирования?
В основном то, что я прошу, несколько отличается, я сначала устанавливаю планировщик нового дочернего процесса «forked» как 'SCHED_IDLE', используя' sched_setscheduler', теперь этот разветвленный дочерний процесс создает новый процесс с использованием 'execvp' системы -call, заменив таким образом образ дочернего процесса. Итак, будет ли этот вновь созданный процесс иметь тот же планировщик «SCHED_IDLE», что и дочерний процесс, который его создал, или он может быть другим? – Jarvis
Опять же, 'execvp' не создает новый процесс, он заменяет образ вызывающего процесса. Существует разница между fork() и exec(). 'fork()' дублирует вызывающий процесс (что означает создание нового пространства в памяти, execvp - нет). –
Да, если он заменяет свое изображение, тогда планировщик первого процесса будет таким же для нового процесса, не так ли? – Jarvis