czarker
|
Friday 18.02.2005 11:27
|
|
|
Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
|
Нет, товарищи! У вас получается, что Trusted- любой компилятор языка высокого уровня. Но в Windows полным-полного лагучего и, в некоторых случаях, вредоносного софта на языках высокого уровня. И т.д.
Я думал, что речь идёт об особом компиляторе, особо устроенном, имеющим интеллектуальную систему проверки на "агрессивность" кода. Ну а так...
И вообще, ваш идеал, похоже, - PalmOS4. Пейджер, который вообще не позволяет выйти за отведённые рамки. Нужен тебе 1 байт или 100 Кб - всё получай боксами по 40 (по-моему) Кб.
Полный trusted. Даже на C.
Но это всё, конечно, моё сугубо личное мнение.
|
Наверх
|
|
AlexanderK
|
Friday 18.02.2005 11:44
|
|
|
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
|
Я не вижу смысла строить систему именно в виде компилятора. Это ничего не даст.
|
Наверх
|
|
AlexanderK
|
Friday 18.02.2005 11:55
|
|
|
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
|
<captain cobalt>
Замечательно!
Вот хорошая ссылка по теме:
http:/qnx.org.ru/index.php?option=com_minibb&action=vthread&forum=4&topic=2849
Краткое содержание: "Как мне инкапсулировать pthread-ы?" - спрашивает некто. "Используй Active Objects" - отвечает Оlej, и отмечает существенное отличие AO от "процессов".
А лучше объекты типа "COM-server".
|
Наверх
|
|
KSLcom
|
Friday 18.02.2005 16:59
|
|
|
Зарегистрирован: Saturday 29.01.2005 20:47
Сообщений - 5
|
мдя... ну вы тут и нафлеймили ))
ради поддержания образовательного флейма подкину ссылочку http://rsdn.ru/Forum/Message.aspx?mid=994725#994725 Там народ обсуждает необходимость защиты памяти в Оберон-ОС.
А если по существу... Вот если кто то сейчас собирается писать ОС, то хорошо если вменяемый результат будет к году 2010 и ОС будет эксплуатироваться лет эдак 10-15 на компах с процессором(ами) от 5 гигагерц, памятью от 8 гигабайт в которой живут десятки тысяч процессов/потоков (активных объектов). Неужели работа всего этого хозяйства будет зависеть от внимательности програмиста? Врятли. В Microsoft это тоже поняли и родили .NET, которая, я думаю, в будующем полностью заменит Win32API и вытеснит unmanaged код, оставив ему место в драйверах и т.п. Но у microsoft это всё пока впереди, а в BlueBottle эти идеи уже реализованы как 5 лет. Конешно BlueBottle и Windows не сравнимы, но ведь BluеBottle это типа прототип системы построенной на новой концепции.
|
Наверх
|
|
AlexanderK
|
Friday 18.02.2005 18:14
|
|
|
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
|
Тогда и писать по большому счёту ничего не нужно, всё равно всё MS со временем напишет. И .Net и WinFS и всё остальное прочее. Подводим итог - проект успешно завершён
|
Наверх
|
|
captain cobalt
|
Wednesday 23.03.2005 18:45
|
|
|
Зарегистрирован: Sunday 15.02.2004 03:47
Сообщений - 49
|
Vadim Ushakov писал(а): ... Динамических проверок не требуется?
Vadim Ushakov писал(а): ... Кстати, приведенная цитата означает, что runtime Оберона все-таки выполняет динамические проверки типов.
Одно дело указатели, другое дело типы.
Если смастерить указатель невозможно, то не нужно проверять их корректность во время исполнения.
Динамическая типизация в Обероне реализуется в явном виде с помощью IS и WITH. В остальных случаях контроль типизации может быть произведён статически, без накладных расходов в рантайме.
AlexanderK писал(а): ... Я не вижу смысла строить систему именно в виде компилятора. Это ничего не даст.
Это даст новые возможности за счёт тесного взаимовыгодного сотрудничества компилятора и рантайма. Не обязательно, чтобы компилятор был только для одного языка. Достаточно лишь, чтобы используемые языки были сильно типизированными и обладали прозрачностью ссылок.
czarker писал(а): ... Я думал, что речь идёт об особом компиляторе, особо устроенном, имеющим интеллектуальную систему проверки на "агрессивность" кода. Ну а так...
Так и есть.
Фактически, речь идёт о языке программирования, на котором невозможно написать программу, которая сможет произвольно обратиться к чужим данным в общем адресном пространстве.
Компилятор здесь "особый" в том смысле, что загружать можно только код, полученный с помощью этого компилятора. И нельзя загрузить собственноручно изготовленный машинный код.
KSLcom писал(а): ... мдя... ну вы тут и нафлеймили ))
ради поддержания образовательного флейма подкину ссылочку
Хорошая ссылочка. Давненько не доводилось читать форум rsdn.
KSLcom писал(а): ... В Microsoft это тоже поняли и родили .NET, которая, я думаю, в будующем полностью заменит Win32API и вытеснит unmanaged код
А многие до сих пор не верят в это.
KSLcom писал(а): ... Но у microsoft это всё пока впереди, а в BlueBottle эти идеи уже реализованы как 5 лет. Конешно BlueBottle и Windows не сравнимы, но ведь BluеBottle это типа прототип системы построенной на новой концепции.
Вот меня и интересует, не появились ли здесь сторонники (или противники) Bluebottle? A?
Поддерживаю утверждение о том, что это технологический лидер на данный момент.
[ Редактирование Wednesday 23.03.2005 19:13 ]
|
Наверх
|
|
Vadim Ushakov
|
Wednesday 13.04.2005 10:32
|
|
|
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
|
Кажется, миллион лет назад я писал: Vadim Ushakov писал(а): ... если использовать парадигму единого адресного пространства, то можно навсегда попрощаться с подсистемой безопасности - в рамках этой модели ее реализовать невозможно Я пытался найти принципиальные (неустранимые) уязвимости такой модели, но теперь вынужден признать, что построение системы вокруг ЯВУ-компилятора - это хорошая мысль. Я попробовал спроектировать нечто объектно-ориентированное поверх микроядра с класическим IPC на основе сообщений, но столкнулся с тем, что нижележащие абстракции не удается "упрятать" в ОО-оболочку и они все время напоминают о себе. В итоге у меня начало получаться нечто монструозное, типа COM. Переход же к single-address-space системе снимает все проблемы. Можете считать этот абзац извинением перед captain cobalt и покаянием в грехах .
Какой ЯВУ выбрать в качестве основного языка системы? Я думаю, выбор не особо велик: Oberon-2, Active Oberon, или даже не очень широко известный O2M. Последний, впрочем, использует процедурно-параметрическую модель и эволюцию программ снизу вверх, в то время как классическое ООП основано на виртуальных методах и эволюции сверху вниз (от абстрактного к конкретному).
На мой взгляд, недостатком Оберона является отсутствие структурной обработки исключений и абстракции подтипов (таких как подтипы в Ада). Кстати, кто-нибудь знает, где можно (если вообще можно) достать исходные тексты какого-либо из Оберонов?
to captain cobalt:
captain cobalt писал(а): ... Так ведь нет.
Всё проверки происходят во время компиляции. На самом деле не все так однозначно. Можно показать сущность динамических проверок на таком примере (используется Ада-подобный синтаксис) :
subtype AA is INTEGER range 0..10 ;
subtype BB is INTEGER range -10..-1 ;
subtype CC is INTEGER range 0..20 ;
a: AA; b: BB; c: CC;
b := a; c := a; a := c;
Присваивание b := a явно бессмысленно, поскольку диапазоны подтипов не пересекаются, следовательно его ошибочность можно определить во время компиляции. Присваивание c := a можно выполнить всегда, поскольку CC включает в себя все возможные значения AA, динамических проверок не требуется. Однако присваивание a := c нуждается в динамических проверках, и, если присваиваемое значение не входит в интервал 0..10, будет инициировано исключение.
С объектами, массивами и указателями точно также - часть присваиваний всегда будет нуждаться в динамических проверках.
Давайте пользоваться настоящими высокоуровневыми языками, а не "высокоуровневым ассемблером Си" .
|
Наверх
|
|
Vadim Ushakov
|
Wednesday 13.04.2005 10:36
|
|
|
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
|
captain cobalt писал(а): ... KSLcom писал(а): ... В Microsoft это тоже поняли и родили .NET, которая, я думаю, в будующем полностью заменит Win32API и вытеснит unmanaged код А многие до сих пор не верят в это. По поводу unmanaged code. Юникс целиком написана на Си, который, как известно, не поддерживает автоматическую проверку выхода индекса за границы массива. Из-за этого практически каждый день в системе обнаруживают очередную дыру, которую потом спешно заделывают, а бедным админам приходится ставить на систему кучу заплаток. Всем ясно, что виноваты особенности языка программирования, но никому не приходит в голову сказать: "Давайте писать на более безопасном языке." Почему? Я часто задавал этот вопрос юниксойдам и обычно мне отвечали что: 1) все так делают и 2) нечего задавать глупые вопросы. Либо же начинали рассуждать о производительности и о том, какой быстрый код генерирует компилятор Си.
Чтобы делали все эти специалисты по сетевой безопасности, консультанты всех мастей, авторы книг "Техника сетевых атак" и им подобные личности, если бы люди вдруг начали пользоваться системой, в которой В ПРИНЦИПЕ И ВООБЩЕ не существует проблемы переполнения буфера? Вот поэтому unmanaged code до сих пор жив.
|
Наверх
|
|
captain cobalt
|
Wednesday 13.04.2005 18:49
|
|
|
Зарегистрирован: Sunday 15.02.2004 03:47
Сообщений - 49
|
Vadim Ushakov писал(а): ... Я пытался найти принципиальные (неустранимые) уязвимости такой модели, но теперь вынужден признать, что построение системы вокруг ЯВУ-компилятора - это хорошая мысль. Я попробовал спроектировать нечто объектно-ориентированное поверх микроядра с класическим IPC на основе сообщений, но столкнулся с тем, что нижележащие абстракции не удается "упрятать" в ОО-оболочку и они все время напоминают о себе. В итоге у меня начало получаться нечто монструозное, типа COM. Переход же к single-address-space системе снимает все проблемы. Можете считать этот абзац извинением перед captain cobalt и покаянием в грехах . Принимается.
Будем Bluebottle напильником обрабатывать?
Vadim Ushakov писал(а): ... Какой ЯВУ выбрать в качестве основного языка системы? Я думаю, выбор не особо велик: Oberon-2, Active Oberon, или даже не очень широко известный O2M. Последний, впрочем, использует процедурно-параметрическую модель и эволюцию программ снизу вверх, в то время как классическое ООП основано на виртуальных методах и эволюции сверху вниз (от абстрактного к конкретному). Active Oberon - хорошо.
Хотелось бы "Active Component Pascal".
Vadim Ushakov писал(а): ... На мой взгляд, недостатком Оберона является отсутствие структурной обработки исключений и абстракции подтипов (таких как подтипы в Ада). Это тоже очень флудерастическая тема (а сейчас по сути идёт двенадцатая страница оффтопика, надо бы конкретных тем наделать). Есть весьма весомые доводы с другой стороны.
Vadim Ushakov писал(а): ... Кстати, кто-нибудь знает, где можно (если вообще можно) достать исходные тексты какого-либо из Оберонов? А что, там-где-надо нету? Сейчас посмотрю.
Vadim Ushakov писал(а): ... На самом деле не все так однозначно. Можно показать сущность динамических проверок на таком примере (используется Ада-подобный синтаксис) :
subtype AA is INTEGER range 0..10 ;
subtype BB is INTEGER range -10..-1 ;
subtype CC is INTEGER range 0..20 ;
a: AA; b: BB; c: CC;
b := a; c := a; a := c;
Присваивание b := a явно бессмысленно, поскольку диапазоны подтипов не пересекаются, следовательно его ошибочность можно определить во время компиляции. Присваивание c := a можно выполнить всегда, поскольку CC включает в себя все возможные значения AA, динамических проверок не требуется. Однако присваивание a := c нуждается в динамических проверках, и, если присваиваемое значение не входит в интервал 0..10, будет инициировано исключение.
С объектами, массивами и указателями точно также - часть присваиваний всегда будет нуждаться в динамических проверках. Да, часть присваиваний всегда будет нуждаться в динамических проверках.
Динамическая проверка диапазонов - это замечательная вещь в Ada. Однако, как известно, в Обероне специально были исключены типы-диапазоны Паскаля (тоже неоднозначное решение).
Vadim Ushakov писал(а): ... Давайте пользоваться настоящими высокоуровневыми языками, а не "высокоуровневым ассемблером Си" . Аплодисменты.
Vadim Ushakov писал(а): ... "Давайте писать на более безопасном языке." Почему? Я часто задавал этот вопрос юниксойдам и обычно мне отвечали что: 1) все так делают и 2) нечего задавать глупые вопросы. Либо же начинали рассуждать о производительности и о том, какой быстрый код генерирует компилятор Си. Наверное надо им показывать вот это. Там сравнивается производительность state-of-the-art компиляторов си++ с сугубо исследовательскими компиляторами Оберона собственно из школы Вирта рук нескольких человек (а также компиляторами некоторых других языков). Сделать вывод о том, каковы были бы способности оптимизаторов Оберона, если бы в них была вложена хотя бы малая доля ресурсов, потраченных на оптимизаторы си++. Впрочем, говорят способности XDS впечатляют...
|
Наверх
|
|
pumba103
|
Wednesday 13.04.2005 19:20
|
|
|
Зарегистрирован: Monday 08.11.2004 09:39
Сообщений - 9
|
Как человек, три месяца назад инициировавший эту тему, с удовольствием (искренне) соглашаюсь, что повидимому лучшим языком для напмсания новой операционной системы является Oberon. Выбирая диалект языка, мы в свое время (два года назад) остановились на Oberon-2 в версии Oberon PC Native по следующим соображениям - это зрелый, устоявшийся диалект языка, обладающий всеми средствами для написания ОС. Основной разработчик компилятора - Patrik Reali - покинул ETHZ в 2002 и в настоящее время ActiveOberon похоже заброшен и основные усилия направлены на Zonnon. Что касается напильника и BlueBottle, то представляется более перспективным создание своей системы "по мотивам" Oberon и BlueBottle.
Но естественно это мое личное мнение.
|
Наверх
|
|
Модераторы: Roman I Khimov, netwizard. |
|
|