Операционные системы

Алгоритмы, вопросы по синаксису, описание програмного обеспечения, администрирование серверов и т.д. и т.п.

Модератор: Модераторы

Ответить
Аватара пользователя
Ensase
серебрянный кавалер
серебрянный кавалер
Сообщения: 184
Зарегистрирован: 07 апр 2007, 14:47

Операционные системы

Сообщение Ensase »

Всем известен тот факт что большинство современных ОС написано на языках низкого и среднего уровня (С и asm). Это несомненно дает выйгрыш в производительности, но затрудняет котроль над безопастностью и ошибками. Например такой язык как С своей свободой "провоцирует" программиста на ошибки. Переход на языки высокого уровня (С#, Java, etc) сильно ухудшит производительность, но уменьшит количество ошибок.
Возникает вопрос - если есть достаточные вычислительные ресурсы почему не писать ядро ОС на языке менее подверженном ошибкам?
Аватара пользователя
artfwo
ВЕТЕРАН
ВЕТЕРАН
Сообщения: 2076
Зарегистрирован: 20 ноя 2007, 16:17
Откуда: КККП
Контактная информация:

Сообщение artfwo »

Ensase, ты же грамотный дядька, должен сам понимать... Потому что программы на С#, Java, etc должны выполняться в виртуальной машине. А виртуальная машина предусматривает платформенные вызовы (скажем malloc), которые могут быть реализованы только как машинные инструкции.

Да и не настолько сложно управлять памятью на C. Берёшь glib/gobject и бесплатно получаешь вместе с ней счётчик ссылок для своих объектов. Но для профилактики геморроя я выбираю языки высокоуровневые :)
Аватара пользователя
Ensase
серебрянный кавалер
серебрянный кавалер
Сообщения: 184
Зарегистрирован: 07 апр 2007, 14:47

Сообщение Ensase »

Был проект OS на С# налабали, ну а вообще я имею ввиду и и другие языки высокого уровня С++, Дельфи(шутка).

В принципе я не считаю программирование на С сложным и порождающим ошибки протсо я ща на коференции и спор об этом зашел с одним бильдерастом(С++ Билдер) который совершенно уверен что все вокруг должно быть ООПированным.
Аватара пользователя
artfwo
ВЕТЕРАН
ВЕТЕРАН
Сообщения: 2076
Зарегистрирован: 20 ноя 2007, 16:17
Откуда: КККП
Контактная информация:

Сообщение artfwo »

Ensase писал(а):Был проект OS на С# налабали, ну а вообще я имею ввиду и и другие языки высокого уровня С++, Дельфи(шутка).
Ха-ха! ОС на C# конечно возможна, но не в среде .Net, кто ей будет runtime-то обеспечивать? :D
Аватара пользователя
Ensase
серебрянный кавалер
серебрянный кавалер
Сообщения: 184
Зарегистрирован: 07 апр 2007, 14:47

Сообщение Ensase »

Это скорее всего и я думаю в основном на ансейф коде
Аватара пользователя
artfwo
ВЕТЕРАН
ВЕТЕРАН
Сообщения: 2076
Зарегистрирован: 20 ноя 2007, 16:17
Откуда: КККП
Контактная информация:

Сообщение artfwo »

Ensase писал(а):Это скорее всего и я думаю в основном на ансейф коде
Один хрен, для выполнения бинарников нужен runtime environment
Аватара пользователя
Ensase
серебрянный кавалер
серебрянный кавалер
Сообщения: 184
Зарегистрирован: 07 апр 2007, 14:47

Сообщение Ensase »

Для С++ не нужен, но ядер ос написанных на оном я еще не видал ввиду тормознусти его относительно С. ООП дает тормознутость.
Аватара пользователя
artfwo
ВЕТЕРАН
ВЕТЕРАН
Сообщения: 2076
Зарегистрирован: 20 ноя 2007, 16:17
Откуда: КККП
Контактная информация:

Сообщение artfwo »

Ensase писал(а):Для С++ не нужен, но ядер ос написанных на оном я еще не видал ввиду тормознусти его относительно С. ООП дает тормознутость.
Так при чём тут C++, ты же спрашивал про C# и Java, которые объединяет в первую очередь "байткодовость". Тем не менее, я бы не сказал, что софт на C++ заметно более тормознутый чем на C. Тут многое зависит от самого кода, компилятора и т.д. Ведь первые компиляторы C++ представляли собой по сути C-препроцессоры...
Аватара пользователя
Ensase
серебрянный кавалер
серебрянный кавалер
Сообщения: 184
Зарегистрирован: 07 апр 2007, 14:47

Сообщение Ensase »

Основной вопрос в следующем:
ООПированность позволяет разбивать программу на отдельные классы, создавать свои типы данных(например динамические защищенные от переполнения массивы, суперстроки итп) в отличие от структурного С, который дает программисту неограниченную свободу действий, и строится на элегантных, шустрых но в некоторых случаях подвергающихся перепонениям и тяжело выявляемым ошибкам(это доказывает количество уязвимостей в популярных ОС вин, линух, итп). В таком случает переход к написанию ядер на ООП язык разумеется уменьшит производительность, но позволит избегать многих уязвимостей, что в современном контексте супермощных ПК может иметь свой успех. При дальнейшем увеличении вычислительных мощностей возможен ли все-таки переход к этому самому ООП. Который в свою очередь я вляется еще и отличным инструментом для моделирования и реализации очень сложных информацинных систем - какой является ядро ОС.
Аватара пользователя
artfwo
ВЕТЕРАН
ВЕТЕРАН
Сообщения: 2076
Зарегистрирован: 20 ноя 2007, 16:17
Откуда: КККП
Контактная информация:

Сообщение artfwo »

Таки тебя интересует вопрос возможности написания объектно-ориентированного ядра или ядра на байткоде?

Для C вот тоже есть потрясающая объектная система - gobject, а также инструменты типа gob или Vala, которые позволяют писать очень красивый объектно-ориентированный код, НО! Ядро операционки (в современном понимании) - не тот случай, где будет толк от объектно-ориентированного программирования. Ни суперстроки, ни ковариантные массивы там нафиг не нужны, по крайней мере сейчас...
Аватара пользователя
Ensase
серебрянный кавалер
серебрянный кавалер
Сообщения: 184
Зарегистрирован: 07 апр 2007, 14:47

Сообщение Ensase »

Ладно.
Сколько уязвимостей в существующих ОС обнаруживается ежемесячно? Наибольшее число уязвимостей связано с чем? Правильно, с переполнением буфера.

В таком случае, какие пути решения проблемы безопастности?
Открытый код не спасает.

Какие из существующих ОС наиболее защищены?
На ум приходит опенбсд. Основная идея разработки - безопастность.
Использовать опенбсд на десктопе нецелесообразно.

Какие первостепенные цели разработки десктоопных ос?
Удобство использования и скорость работы!

В таком случае возникает вопрос - как сделать десктопные системы защищенными не потеряв достоинств?
Аватара пользователя
artfwo
ВЕТЕРАН
ВЕТЕРАН
Сообщения: 2076
Зарегистрирован: 20 ноя 2007, 16:17
Откуда: КККП
Контактная информация:

Сообщение artfwo »

Ensase писал(а):Использовать опенбсд на десктопе нецелесообразно.
Это почему?
Ensase писал(а):В таком случае возникает вопрос - как сделать десктопные системы защищенными не потеряв достоинств?
1. ООП-языки не решают данной проблемы, например была же попытка приспособить для этой цели Objective-C - я какое-то время очень им увлекался, впечатлённый красотой и общей пинцетностью :) Тем не менее, ОС на нём так никто и не сделал, необходимости в подобном ядре просто НЕТ...

2. Сама проблема кажется мне весьма надуманной. Вот сколько уязвимостей на десктопе ни обнаруживается ежемесячно, но у меня комп уже 33 дня подряд работает, не повис ни разу, попробуй взломай, вряд ли ты обнаружишь хоть какую-то дырку :wink:
Ensase писал(а):Сколько уязвимостей в существующих ОС обнаруживается ежемесячно? Наибольшее число уязвимостей связано с чем? Правильно, с переполнением буфера
Для винды не знаю, у них же инфа засекречена... Для UNIX переполнение буфера вылазит как правило в софте, а не ядре :wink:
Ответить

Вернуться в «Программирование, администрирование и софт»