Приоритеты Java в режиме реального времени выше, чем должно быть

*** предупреждение: приоритеты Java в реальном времени>=11 не могут быть использованы, используется приоритет 10 (причина: операция не разрешена)

в настоящее время пробует проект, который выходит с этим сообщением об ошибке.

использование среды Xfce в Vmware, eclipse ide и jamaica vm

что на самом деле не так с этим? Состояние ошибки, что приоритеты Java в реальном времени больше, чем 11, когда системный приоритет равен 10, как я могу установить приоритет выше?

мой код

package realtime;
import javax.realtime.*;


class seconds extends RealtimeThread{

    int secs = 0;
    int mins = 0;
    int hours=0;


    public seconds(SchedulingParameters sched, ReleaseParameters rel)
    {
        super(sched,rel);
    }
    public void run() {
        while(true) {
            secs++;

            System.out.println("seconds" + secs);
            if(secs>58) {
                mins ++;
                secs = 0;
            }
            boolean ok = waitForNextPeriod();
        }
    }

}

class minutes extends RealtimeThread{
    private minutes min = null;
    private seconds sec = null;
    int mins = 0;
    int hours = 0;

    public minutes(SchedulingParameters sched, ReleaseParameters rel)
    {
        super(sched,rel);
    }

    public void run() {
        while(true) {
            mins++;

            System.out.println("minutes" + mins);
            if(mins>58) {
                hours ++;
                mins = 0;
            }
            boolean ok = waitForNextPeriod();
        }
    }

}

class hours extends RealtimeThread{
    private minutes min = null;
    private seconds sec = null;
    private hours hour=null;
    int mins = 0;
    int hours = 0;
    int day =0;

    public hours(SchedulingParameters sched, ReleaseParameters rel)
    {
        super(sched,rel);
    }

    public void run() {
        while(true) {
            mins++;

            System.out.println("hours" + hours);
            if(hours>24) {
                day ++;
                hours= 0;
            }
            boolean ok = waitForNextPeriod();
        }
    }

}


public class Q1 {
    private minutes min = null;
    private seconds sec = null;
    private hours hour = null;

    Q1(){
        PriorityParameters hoursched = new PriorityParameters(PriorityScheduler.instance().getMaxPriority());
        ReleaseParameters hoursrel = new PeriodicParameters(new RelativeTime(59*59*1000,1000));
        PriorityParameters minsched = new PriorityParameters(PriorityScheduler.instance().getMinPriority());
        ReleaseParameters minrel = new PeriodicParameters(new RelativeTime(59000,1000));
        PriorityParameters secsched = new PriorityParameters(PriorityScheduler.instance().getMaxPriority());
        ReleaseParameters secrel = new PeriodicParameters(new RelativeTime(1000,0));

        hour = new hours(hoursched,hoursrel);
        min = new minutes(minsched, minrel);
        sec = new seconds(secsched, secrel);

        hour.start();
        min.start();
        sec.start();
    }   

    public static void main(String[] args) {
        Q1 t = new Q1();
    }


}

1 ответ

Решение

Это часто задаваемые вопросы в руководстве JamaicaVM:

Ответ говорит:

"Создание потока с приоритетом в реальном времени не разрешено операционной системой. Вместо этого JamaicaVM создал поток с обычным приоритетом. Это означает, что планирование в реальном времени недоступно и что приложение, скорее всего, не будет работать должным образом.

В готовых системах Linux использование приоритетов в реальном времени требует привилегий суперпользователя. То есть запуск приложения с sudo решит проблему. В качестве альтернативы, ограничения приоритета для конкретных пользователей или групп могут быть изменены путем редактирования /etc/security/limits.conf и настройка rtprio на максимальный собственный приоритет используется. Для карты приоритетов по умолчанию, используемой JamaicaVM в Linux, установите rtprio ограничено до 80 достаточно."

Другие вопросы по тегам