Приоритеты 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
достаточно."