Нужно разработать прогу для устройства работающего под linux. Само устройство представляет из себя мини пк и работает с оборудованием по can сети(оборудование представляет опасность для жизни при неправильном обращении!!!!). Сам линукс на устройстве плюс работающие программы занимают 250 метров из 512 возможных. Процессор 4-х ядрерный и загружен менее чем на половину. От программы требуется отказоустойчивость + бесперебойная работа с can сетью и файловой системой. Устройство принимает и отправляет команды оборудованию, пропуск комманды из за того что приложение затупило недопустим. И тут возникают вопросы:
1)Можно ли на java программировать такие системы?
2)Будут ли сбои при работе с can сетью в момент context switching между ядрами?
3)Возможны ли сбои при работе с can сетью в момент работы горбатого коллектора:) ?
4)Или более предпочтительный вариант написание демона на с/с++(работа с can и бд), а морда на java.
Вопрос возник из-за того что требуется постоянно переписывать ui(добавление новых функций, изменения конфигурации оборудования в следствии приходиться вносить частые изменения внешнего вида проги). На с/с++ это делать долго, в то время как на java это можно сделать быстрее и безболезненние(fx, swing и awt это рай по сравнению с тем что происходит в данный момент на c++ )
Андрей, у обычных jvm в момент сборки мусора будут STW-паузы. Продолжительность пауз зависит от выбранного сборщика и особенностей использования кучи программой. В системах реального времени это непозволительно. Есть сборщики мусора без пауз, но они снижают общую скорость работы виртуальной машины. Тут уже вам виднее, укладывается ли скорость реакции программы с таким сборщиком в требования системы.
Андрей, если это HotSpot JVM, то настройка сводится к указанию параметра командной строки. В этой же инструкции можно почитать в общих чертах о настройках сборки мусора.
Возможно стоит сделать отдельное устройство "контроллер безопасности", которое будет обеспечивать работу по "базовой логике", обеспечивая безопасность в те моменты когда основная система "загружается".
Любой скачок напряжения отправит ваш мини-пк в "ребут" и он не будет доступен как минимум 30 секунд. Поэтому предлагаю сделать промежуточный контролер на микроконтроллере.
Возможно стоит сделать отдельное устройство "контроллер безопасности"....
все чуть чуть сложнее),но что-то вроде контроллера безопасности уже есть
...Любой скачок напряжения отправит ваш мини-пк в "ребут" и он не будет доступен как минимум 30 секунд. ...
-скачки питания, резервное питание. И прочие радости беспокойных электронов заботят совсем других людей.
Моя задача запрограммировать пк так, что бы он не упал)
Но за советы спасибо)
Сталкивался с такими системами в медицине, абсолютно все были построены rtos, в некоторых случаях в железке было 2 физических ПК, 1 на rtos и работает с оборудованием а второй с winxp\linux\dos для ui и\или передачи инфы в сеть (кстати забавный момент, в одном из аппаратов МРТ 2й ПК с ui был физически отдельным и соединен 4мя оптическими кабелями с 1м, внутри свой протокол т.е. не tcp\ip, те кто вкурсе о чем я узнают шутку о peek4pony =D ).
Языки со сборщиками мусора очень плохая идея для таких систем.