LINUX.ORG.RU

планировщик


0

0

Имеется 5 процессов(не родственных, может и > 5), все они висят на семафоре(хотят сделать lock). Как заставить шедулер, делать lock в порядке пораждения процессов?

anonymous

в общем случае - никак.

хотя может всякие sched_setscheduler на что-то и повлияют.

тоесть ты должен сам построить некий свой шедуллер который будет планировать доступ к твоему семафору.

cvv ★★★★★
()
Ответ на: комментарий от anonymous

ну создаёш некоторый процесс которой будет получать запросы на использование ресурса и дать разрешение по мере продвижения очереди.

протокол выбери сам

cvv ★★★★★
()
Ответ на: комментарий от cvv

Спасибо за sched_get_priority_min, я так понимаю с помощью политики SCHED_FIFO, можно решить мою проблему.
Установка приоритета, для вызвавшегося процесса:

    struct sched_param par;    
    par.sched_priority = 10;
    if(sched_setscheduler(getpid(),SCHED_FIFO,&par) == -1)
        {perror("set sched"); exit(-1);}

после, запуска сомтрю поле PRI(ps -auxl) и там приоритет -4;
Почему он не выстовляется в 10?

anonymous
()
Ответ на: комментарий от anonymous

не знаю. права рута есть? сменить шедуллер без рута если возможно то крайне проблематично.

ещё это была только идея которая ТРЕБУЕТ проверки. или подтверждения со стороны idle

cvv ★★★★★
()
Ответ на: комментарий от cvv

Ну что от рута, так это естественно. В мане сказано, что SCHED_FIFO работает только со значениями статического приоритета, большими нуля. А sched_setscheduler(), выставляет приоритет -4(хотя я выставляю >0), соответственно этот алгоритм планирования отрабатывать не будет.

anonymous
()
Ответ на: комментарий от anonymous

Или может где чего не понимаю? idle просвети меня по данному вопросу)))

anonymous
()
Ответ на: комментарий от anonymous

> Почему он не выстовляется в 10?

ps вам показывает вот что:

int task_prio(const task_t *p)
{
        return p->prio - MAX_RT_PRIO;
}

проверяйте свой приоритет с помощью sched_getparam().

тем не менее странно, ps должен показывать -11.

какое ядро? может procutils или как они там называются
нужно обновить.

semaphores приоритет процесса игнорируют, они как-бы
FIFO, но без гарантии. это если вы про kernel.

idle ★★★★★
()
Ответ на: комментарий от idle

>это если вы про kernel.

нет. он про юзерспейс

cvv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.