Операционные системы
Модератор: Модераторы
Операционные системы
Всем известен тот факт что большинство современных ОС написано на языках низкого и среднего уровня (С и asm). Это несомненно дает выйгрыш в производительности, но затрудняет котроль над безопастностью и ошибками. Например такой язык как С своей свободой "провоцирует" программиста на ошибки. Переход на языки высокого уровня (С#, Java, etc) сильно ухудшит производительность, но уменьшит количество ошибок.
Возникает вопрос - если есть достаточные вычислительные ресурсы почему не писать ядро ОС на языке менее подверженном ошибкам?
Возникает вопрос - если есть достаточные вычислительные ресурсы почему не писать ядро ОС на языке менее подверженном ошибкам?
- artfwo
- ВЕТЕРАН
- Сообщения: 2076
- Зарегистрирован: 20 ноя 2007, 16:17
- Откуда: КККП
- Контактная информация:
Ensase, ты же грамотный дядька, должен сам понимать... Потому что программы на С#, Java, etc должны выполняться в виртуальной машине. А виртуальная машина предусматривает платформенные вызовы (скажем malloc), которые могут быть реализованы только как машинные инструкции.
Да и не настолько сложно управлять памятью на C. Берёшь glib/gobject и бесплатно получаешь вместе с ней счётчик ссылок для своих объектов. Но для профилактики геморроя я выбираю языки высокоуровневые :)
Да и не настолько сложно управлять памятью на C. Берёшь glib/gobject и бесплатно получаешь вместе с ней счётчик ссылок для своих объектов. Но для профилактики геморроя я выбираю языки высокоуровневые :)
Был проект OS на С# налабали, ну а вообще я имею ввиду и и другие языки высокого уровня С++, Дельфи(шутка).
В принципе я не считаю программирование на С сложным и порождающим ошибки протсо я ща на коференции и спор об этом зашел с одним бильдерастом(С++ Билдер) который совершенно уверен что все вокруг должно быть ООПированным.
В принципе я не считаю программирование на С сложным и порождающим ошибки протсо я ща на коференции и спор об этом зашел с одним бильдерастом(С++ Билдер) который совершенно уверен что все вокруг должно быть ООПированным.
- artfwo
- ВЕТЕРАН
- Сообщения: 2076
- Зарегистрирован: 20 ноя 2007, 16:17
- Откуда: КККП
- Контактная информация:
Так при чём тут C++, ты же спрашивал про C# и Java, которые объединяет в первую очередь "байткодовость". Тем не менее, я бы не сказал, что софт на C++ заметно более тормознутый чем на C. Тут многое зависит от самого кода, компилятора и т.д. Ведь первые компиляторы C++ представляли собой по сути C-препроцессоры...Ensase писал(а):Для С++ не нужен, но ядер ос написанных на оном я еще не видал ввиду тормознусти его относительно С. ООП дает тормознутость.
Основной вопрос в следующем:
ООПированность позволяет разбивать программу на отдельные классы, создавать свои типы данных(например динамические защищенные от переполнения массивы, суперстроки итп) в отличие от структурного С, который дает программисту неограниченную свободу действий, и строится на элегантных, шустрых но в некоторых случаях подвергающихся перепонениям и тяжело выявляемым ошибкам(это доказывает количество уязвимостей в популярных ОС вин, линух, итп). В таком случает переход к написанию ядер на ООП язык разумеется уменьшит производительность, но позволит избегать многих уязвимостей, что в современном контексте супермощных ПК может иметь свой успех. При дальнейшем увеличении вычислительных мощностей возможен ли все-таки переход к этому самому ООП. Который в свою очередь я вляется еще и отличным инструментом для моделирования и реализации очень сложных информацинных систем - какой является ядро ОС.
ООПированность позволяет разбивать программу на отдельные классы, создавать свои типы данных(например динамические защищенные от переполнения массивы, суперстроки итп) в отличие от структурного С, который дает программисту неограниченную свободу действий, и строится на элегантных, шустрых но в некоторых случаях подвергающихся перепонениям и тяжело выявляемым ошибкам(это доказывает количество уязвимостей в популярных ОС вин, линух, итп). В таком случает переход к написанию ядер на ООП язык разумеется уменьшит производительность, но позволит избегать многих уязвимостей, что в современном контексте супермощных ПК может иметь свой успех. При дальнейшем увеличении вычислительных мощностей возможен ли все-таки переход к этому самому ООП. Который в свою очередь я вляется еще и отличным инструментом для моделирования и реализации очень сложных информацинных систем - какой является ядро ОС.
- artfwo
- ВЕТЕРАН
- Сообщения: 2076
- Зарегистрирован: 20 ноя 2007, 16:17
- Откуда: КККП
- Контактная информация:
Таки тебя интересует вопрос возможности написания объектно-ориентированного ядра или ядра на байткоде?
Для C вот тоже есть потрясающая объектная система - gobject, а также инструменты типа gob или Vala, которые позволяют писать очень красивый объектно-ориентированный код, НО! Ядро операционки (в современном понимании) - не тот случай, где будет толк от объектно-ориентированного программирования. Ни суперстроки, ни ковариантные массивы там нафиг не нужны, по крайней мере сейчас...
Для C вот тоже есть потрясающая объектная система - gobject, а также инструменты типа gob или Vala, которые позволяют писать очень красивый объектно-ориентированный код, НО! Ядро операционки (в современном понимании) - не тот случай, где будет толк от объектно-ориентированного программирования. Ни суперстроки, ни ковариантные массивы там нафиг не нужны, по крайней мере сейчас...
Ладно.
Сколько уязвимостей в существующих ОС обнаруживается ежемесячно? Наибольшее число уязвимостей связано с чем? Правильно, с переполнением буфера.
В таком случае, какие пути решения проблемы безопастности?
Открытый код не спасает.
Какие из существующих ОС наиболее защищены?
На ум приходит опенбсд. Основная идея разработки - безопастность.
Использовать опенбсд на десктопе нецелесообразно.
Какие первостепенные цели разработки десктоопных ос?
Удобство использования и скорость работы!
В таком случае возникает вопрос - как сделать десктопные системы защищенными не потеряв достоинств?
Сколько уязвимостей в существующих ОС обнаруживается ежемесячно? Наибольшее число уязвимостей связано с чем? Правильно, с переполнением буфера.
В таком случае, какие пути решения проблемы безопастности?
Открытый код не спасает.
Какие из существующих ОС наиболее защищены?
На ум приходит опенбсд. Основная идея разработки - безопастность.
Использовать опенбсд на десктопе нецелесообразно.
Какие первостепенные цели разработки десктоопных ос?
Удобство использования и скорость работы!
В таком случае возникает вопрос - как сделать десктопные системы защищенными не потеряв достоинств?
- artfwo
- ВЕТЕРАН
- Сообщения: 2076
- Зарегистрирован: 20 ноя 2007, 16:17
- Откуда: КККП
- Контактная информация:
Это почему?Ensase писал(а):Использовать опенбсд на десктопе нецелесообразно.
1. ООП-языки не решают данной проблемы, например была же попытка приспособить для этой цели Objective-C - я какое-то время очень им увлекался, впечатлённый красотой и общей пинцетностью :) Тем не менее, ОС на нём так никто и не сделал, необходимости в подобном ядре просто НЕТ...Ensase писал(а):В таком случае возникает вопрос - как сделать десктопные системы защищенными не потеряв достоинств?
2. Сама проблема кажется мне весьма надуманной. Вот сколько уязвимостей на десктопе ни обнаруживается ежемесячно, но у меня комп уже 33 дня подряд работает, не повис ни разу, попробуй взломай, вряд ли ты обнаружишь хоть какую-то дырку

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