почему RTOS кодируется только в c? - PullRequest
4 голосов
/ 18 декабря 2009

Всегда ли нужно кодировать RTOS на языке Си? Почему это не может быть закодировано в Java или какой-то другой технологии? Это из-за отсутствия концепции указателя в Java?

Ответы [ 16 ]

2 голосов
/ 18 декабря 2009

В Java есть реальное время, но оно требует поддержки со стороны ОС. Смотри: http://java.sun.com/javase/technologies/realtime/index.jsp

1 голос
/ 28 января 2011

ОСРВ не всегда написана на C. Обычно это так, но в ThreadX я считаю, что они используют сборку.

1 голос
/ 22 декабря 2009

Если что, это из-за указателей. В Java все, кроме фундаментальных типов данных, размещается в куче, и любая переменная, которая не похожа на int, является указателем. Это не очень хороший способ написания операционной системы, потому что он накладывает один уровень косвенности на большинство операций, и при написании ОС этот уровень может убить вас.

Ядро ОС - это место, где вам нужна оптимизация и высокая производительность, поскольку вы не знаете, что на нем будет работать. Это особенно верно для ОС реального времени, в которых задержка в полмисекунды может быть критической. Для этого нужно быть очень дружелюбным с процессором и другим оборудованием, а также с умением писать микрооптимизированный код, который будет выполнять определенные вещи с большой предсказуемостью.

По этой причине C - очень хороший инструмент для сборки ядра RTOS, а Java - нет. Это не значит, что вы не можете сделать это с Java, но это будет сложнее и, вероятно, не так успешно.

Мне любопытно, почему вы задаете вопрос. Если вы используете ОСРВ, на самом деле не имеет значения, во что она была написана. Если вы хотите взломать ее, важно, во что она была написана, но концепции и реализация ОС сами по себе достаточно сложны, чтобы изучение нового языка тривиально для изучения. (Более того, если вы изучаете проектирование и реализацию ОС, вы почти наверняка обнаружите, что используемые вами ресурсы будут использовать C в качестве языка обучения.)

1 голос
/ 18 декабря 2009

C был разработан для написания операционных систем, отсюда и общая формулировка «переносной ассемблер», поэтому следует ожидать, что он используется для этой цели.

Если вы хотите использовать Java в реальном времени, у Sun есть коммерческое предложение.

0 голосов
/ 18 декабря 2009

Всегда ли нужно кодировать RTOS на языке Си?

Нет. Например, RTOS написан на Лиспе или Smalltalk.

Почему это не может быть закодировано в Java или какой-либо другой технологии .. ??

Что заставляет вас думать, что это невозможно?

Это из-за отсутствия концепции указателя в Java?

Нет, это потому, что существует миф, что операционные системы могут быть написаны только на C. Миф, который может быть тривиально доказан как ложный, но все же отказывается умереть.

Этот миф настолько распространен, что люди, которые хотят написать новую ОС, просто слишком боятся попробовать что-либо, кроме C.

0 голосов
/ 18 декабря 2009

Язык для сбора мусора, такой как Java, очень не подходит для программирования в реальном времени. Причины этого должны быть очевидны.

...