/ / Правила за график в системно обаждане на оператор след разклонение - c, linux, график, scheduler, execvp

Правила за насрочване на разговор в системно обаждане след вилица - c, linux, график, scheduler, execvp

Да предположим, че имам детски процес, чиято политика на планиране съм възприела SCHED_BATCH, използвайки функцията на библиотеката C, sched_setscheduler, а сега този детски процес създава външен процес, използващ execvp системно повикване.

Ще бъде ли планиращият Scheduler на новия процес същият като този на предишния детски процес, т.е. са наследени политиките за график през execvp системно обаждане? Прочетох страницата на човека, която го казва FIFO и RR политиките са наследени, но какво ще кажете за нормалните политики SCHED_BATCH, SCHED_IDLE и SCHED_OTHER ?

Има ли execфункция на семейството, която подкрепя наследяването на всички политики за график?

Отговори:

0 за отговор № 1

На първо място, exec семейството на системните повиквания не изпълнява неговия собствен образ, а изпълнява двоичното, което се зарежда man exec:

The exec() family of functions replaces the current process image with a new process image.

Така че, ще се държи как е готово да се насрочи това конкретно изпълнимо изображение.

Когато процес, маркиран да бъде насрочен като SCHED_BATCH, те ще бъдат насрочени въз основа на техните хубави ценности точно като SCHED_OTHER, Тъй като партидните задачи не изискват взаимодействие с потребителя, планиращият обработва задачата като интензивно за процесора man sched_setschedparam цитат от SCHED_BATCH: Scheduling batch process -

This policy is similar to SCHED_OTHER in that it schedules the process according to its dynamic priority (based on the nice value).The difference is that this policy will cause the scheduler to always assume that the process is CPU-intensive. Consequently, the scheduler will apply a small scheduling penalty with respect to wakeup behaviour, so that this process is mildly disfavored in scheduling decisions.

Следователно, ако промените правилата за график на даден процес SCHED_BATCH, ще бъде насрочено като почти всички други нормални процеси (SCHED_OTHER, стандартната политика за график) .Ако искате да се върнете към изцяло по подразбиране, тогава трябва да използвате SCHED_RESET_ON_FORK флаг ORed с правилата за график. Ако посочите този флаг, всеки новосъздаден процес ще се замени с правилата за график по подразбиране, а не с поведението на родителя.

Надявам се това да помогне!