LINUX.ORG.RU

планировщик


0

0

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

anonymous

Re: планировщик

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

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

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

cvv ★★★★★ ()
Ответ на: Re: планировщик от cvv

Re: планировщик

А может есть идеи как можно синхронизировать запущенные процессы?

anonymous ()
Ответ на: Re: планировщик от anonymous

Re: планировщик

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

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

cvv ★★★★★ ()
Ответ на: Re: планировщик от cvv

Re: планировщик

Спасибо за 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 ()
Ответ на: Re: планировщик от anonymous

Re: планировщик

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

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

cvv ★★★★★ ()
Ответ на: Re: планировщик от cvv

Re: планировщик

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

anonymous ()
Ответ на: Re: планировщик от anonymous

Re: планировщик

Вопрос почему он, выставляет не правильный приоритет?

anonymous ()
Ответ на: Re: планировщик от anonymous

Re: планировщик

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

anonymous ()
Ответ на: Re: планировщик от anonymous

Re: планировщик

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

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

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

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

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

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

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

idle ★★★★★ ()
Ответ на: Re: планировщик от idle

Re: планировщик

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

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

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