LINUX.ORG.RU
ФорумTalks

Ядра не на Си есть?


0

2

Читал тут на OpenNet тему про уязвимости в ядре: http://www.opennet.ru/opennews/art.shtml?num=30336
В ней, да и во всех подобных, часто ругают Си и называют его главной причиной подобных уязвимостей (Возможность разыменования NULL-указателя, целочисленное переполнение).
Стало интересно, на чем еще пишут ядра ОС кроме Си.
У меня есть только одно подозрение - Mach (Objective-C? Хотя он в этом плане от Си не отличается), хотя я не уверен.

Может кто в курсе?

★★★★★

Твой выбор - ntoskrnl.exe - C++.
Так же есть сингулярити, там драйвера на .Net'e и фигни не позволяют такой.

AiFiLTr0 ★★★★★
()

ах да, есть еще House - эксперимент на Haskell

Dimson
()

> У меня есть только одно подозрение - Mach (Objective-C? Хотя он в этом плане от Си не отличается), хотя я не уверен.

Оно на С написано. IOKit — на подмножестве С++.

Relan ★★★★★
()

MenuetOS написан на ассемблере.

krakatau
()
Ответ на: комментарий от ramon13666

Где-то в сети была ОС на паскале

Естественно была. MacOS называлась. А вот MacOSX уже нет. На Java написана jNode, но это естественно proof of the concept, достаточно томозной. Но тормознутость - вопрос оптимизации. Ничего не препятствует сделать большую часть OS на Java если будет нормальный Shared VM, блоки сразу освобождаемых ресурсов как в Java 7, и хороший AOT. Потому что пропускать через JIT ядро при каждой загрузке на одной и той же тачке - первоклассное ССЗБ. Второе ССЗБ у них - это самописный JVM. Но тут их понять можно, не выпускаются нормальные JVM для работы на прямую на железе без ОС. Вот если бы они сорцы OpenJDK подкрутили по это, было бы интерестно. Думаю бы работало нормально

vertexua ★★★★★
()

>Ошибка в реализации IOCTL-вызовов AGPIOC_RESERVE и AGPIOC_ALLOCATE может быть использована для исчерпания всей доступной памяти.
Ядро на Java тоже легко может быть использовано для исчерпания всей доступной памяти, так что никакой разницы.

Да и в той же JVM баги не так редко всплывают.

Tark ★★
()

Колибри ОС же

luke ★★★★★
()

> часто ругают Си и называют его главной причиной подобных уязвимостей

Не спасёт иная парадигма от ошибок, по крайней мере на тьюринг архитектуре.

iBliss
()
Ответ на: комментарий от Relan

Об этом писалось сколько-то лет назад, что там в ядре C++. Или ошибаюсь? У кого есть утекшие сырцы 2к - подсмотрите и скажите наверняка.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

> Об этом писалось сколько-то лет назад, что там в ядре C++. Или ошибаюсь?

Я смотрел WRK 1.2 — это ядро (тот самый ntoskrnl, который вы упомянули) от 2003 SP1 — С++ там не увидел, только С и ассемблер.

Relan ★★★★★
()

А если найду?

Есть то они есть, но на практике - их нет. Все концепты.

unikoid ★★★
()
Ответ на: комментарий от AiFiLTr0

> там в ядре C++. Или ошибаюсь?

Ошибаешься. С++ там только в компонентах, исполняющихся в пользовательском пространстве. В ядре — pure C.

fang
()

> Си и называют его главной причиной подобных уязвимостей (Возможность разыменования NULL-указателя, целочисленное переполнение)

можно подумать в С++ от этого язык страхует. так же можно на перечисленные грабли наступить

gunja
()

Древние макоси писались на паскале. Минуэт-ОС ЕМНИП написана на чистом асме

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от SergikXP

У Страуструпа там много чего перечислено в том числе и

IBM:

OS/400.

K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.

Nokia.

Symbian OS: rationale: «[...] using C++ for all system code, from the kernel upwards.» This is one of the most widespread OS's for cellular phones.

SergikXP
()
Ответ на: комментарий от RedPossum

>тогда к селу будет вспомнить операционки на java.
А что, таки есть ОС целиком на жабе, даже ядро и загрузчик? Без единой строки на языке, компилируемом в нативный машинный бинарник?

unikoid ★★★
()
Ответ на: комментарий от RedPossum

>нет. о том и речь, вообще-то.
Да, извиняюсь, не уловил нить дискуссии.

unikoid ★★★
()

Ядра есть на всём. И на x86 assembler (MenuetOS), и на Haskell (House), и на Lisp, и на Java, и на C# (хоть все они содержат вставки на C).

В качестве решения, когда не система пишется на самом-лучшем-языке-в-мире, а язык делается для создания системы можно посмотреть на Coyotos с BitC

kim-roader ★★
()
Ответ на: комментарий от vertexua

>На Java написана jNode, но это естественно proof of the concept, достаточно томозной.

Ставил тут это недавно, она не умеет абсолютно ничего.

splinter ★★★★★
()

Есть. Multics на PL/I.

Quasar ★★★★★
()

Ядро XNU напейсано на Obj-C???

Отсыпьте травы!

Bioreactor ★★★★★
()

> В ней, да и во всех подобных, часто ругают Си и называют его главной причиной подобных уязвимостей

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

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