Альтернативные ОС
От: TarasCo  
Дата: 18.06.08 12:16
Оценка:
RO>Винде капец.

Нееет, это просто капец теперь распространился и на линукс. .

И то, уже писал не раз: этих двух динозавров пора отправить на свалку, архитектура обоих ОС — это иллюстрация старого фокуса "как сделать их мухи слона".

28.06.08 18:16: Ветка выделена из темы Wine
Автор: Roman Odaisky
Дата: 17.06.08
— WolfHound
Да пребудет с тобою сила
Re: Альтернативные ОС
От: OCTAGRAM Россия http://octagram.name/
Дата: 18.06.08 12:40
Оценка:
TarasCo пишет:

> И то, уже писал не раз: этих двух динозавров пора отправить на свалку,

> архитектура обоих ОС — это иллюстрация старого фокуса "как сделать их
> мухи слона".

Ближе к делу

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Альтернативные ОС
От: TarasCo  
Дата: 18.06.08 13:48
Оценка: 1 (1) +1 :))) :))) :)))
OCT>Ближе к делу

системы построенные на классической модели с процессами, каждый с изолированным адресным пространством и многочисленными средствами коммуникации между этими процессами — по большей части заняты согреванием воздуха ( и наверное и повинны в глобальном потеплении ). Будущее — за системами с управляемым кодом и сплошная виртуализация. В идеале, прикладные программисты будут ограничены своим фреймворком и потеряют окончательно всякую связь с действительность и меньше всего их будут волновать на какой ОС будет выполняться код. Системные программисты вымрут или переродятся в прикладных. Хакеры вымрут или переродятся в социальных инженеров. И только гордые веб верстальщики будут вечны.
Да пребудет с тобою сила
Re[3]: Альтернативные ОС
От: CreatorCray  
Дата: 18.06.08 14:06
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>системы построенные на классической модели с процессами, каждый с изолированным адресным пространством и многочисленными средствами коммуникации между этими процессами — по большей части заняты согреванием воздуха ( и наверное и повинны в глобальном потеплении ). Будущее — за системами с управляемым кодом и сплошная виртуализация. В идеале, прикладные программисты будут ограничены своим фреймворком и потеряют окончательно всякую связь с действительность и меньше всего их будут волновать на какой ОС будет выполняться код. Системные программисты вымрут или переродятся в прикладных. Хакеры вымрут или переродятся в социальных инженеров. И только гордые веб верстальщики будут вечны.


Не, нам такой травы не отсыпай. Уж мрачно все очень.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Альтернативные ОС
От: _d_m_  
Дата: 19.06.08 02:56
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Не, нам такой травы не отсыпай. Уж мрачно все очень.


"Neo, the Marix has you"

Ты погряз в матрице.
Хотя есть более точный перевод
Re[3]: Альтернативные ОС
От: TarasCo  
Дата: 19.06.08 11:08
Оценка: 3 (1) +3 -1 :)
А что за гомерический хохот? Я серьезно написал. Пока народ тут упражняется в холиварах Linux vs Windows и извращается с шаблонами на плюсах, это все катится в топку. Мы все пассажиры Титаников, свято верим в их непотопляемость и все наши споры "у нас скорость на полузла больше" vs "а у нас зато мореходность выше". А титаники больше не нужны нафиг... И айсберг уже вышел на курс.

Что будет через 10-15 лет:
1) Один процесс — одна операционная система. Куча операционных систем будет жить на одном гипервизоре.
2) Системы с управляемым кодом
3) Это все будет скомбинировано ( так и будет, не сомневайтесь ). В итоге на вашей станции будет несколько микроядер, ориентированных на различные задачи — графика, интернет, работа с дисковыми массивами. Вот к примеру как мог бы выглядеть ПО компьютера моей жены через 15 лет:
материнская плата Intel ABCD с 32 CPU, 16 GPU, 2 NPU ( Network — соответственно ), встроенный гипервизор FGHJ v2.3, микро ОС для управления системой хранения данных, броузер FF9.5 + микроОС для работы в сети, пара игрух, работающих на микро ОС Nvidia, какая-нибудь графическая оболочка, а скорее всего — прям из броузера будем всем управлять.

Чего не будет:
1)Гигантских "изолированных" плоских виртуальных моделей памяти, которые надо постоянно свопить, защищать с помощью всяких DEP и.т.д
2)Вытесняющей многозадачности, с этими бесконечными ( по сравнению со временем выполнения инструкции ) слайсами и постоянными загрузками и выгрузками контекстов и полной индифферентности к реальному времени.
3)Драйверов, которые могут в любой момент уронить все систему или сожрать все память
4)Вирусов и антивирусов в том виде, как он существуют сейчас
5) C, C++, asm — это все уйдет в топку, останется доживать в узких нишах и в отделах системных разработок крупных фирм.

Open Source будет жить , но скорее всего будет вытеснен от железа и прочих системных вещей и займется разработкой прикладного софта в рамках пропреитарных фреймворков.

Столлман повеситься

Брин будет ( если вернется из космоса ) будет первым мультимиллиардером.

А вот что будет с нами?
Да пребудет с тобою сила
Re[4]: Альтернативные ОС
От: rising_edge  
Дата: 19.06.08 11:47
Оценка: :))) :)
Здравствуйте, TarasCo, Вы писали:

TC>Столлман повеситься


Это приказ?
Re[5]: Альтернативные ОС
От: Impuls  
Дата: 19.06.08 12:04
Оценка:
Здравствуйте, rising_edge, Вы писали:

_>Здравствуйте, TarasCo, Вы писали:


TC>>Столлман повеситься


_>Это приказ?


Нет , наверное предсказание
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Альтернативные ОС
От: Roman Odaisky Украина  
Дата: 19.06.08 15:07
Оценка: +4
Здравствуйте, Impuls, Вы писали:

TC>>>Столлман повеситься ;)


_>>Это приказ?


I>Нет , наверное предсказание :)


Глагол употреблен или в инфинитиве, или в повелительном наклонении, но никак не в личной форме.
До последнего не верил в пирамиду Лебедева.
Re[4]: Альтернативные ОС
От: Roman Odaisky Украина  
Дата: 19.06.08 15:19
Оценка: 4 (2) -1 :))) :)
Здравствуйте, TarasCo, Вы писали:

TC>Что будет через 10-15 лет:


Скосить, что ли, и мне немного травки? Вон как всё во дворе заросло.

TC>1) Один процесс — одна операционная система. Куча операционных систем будет жить на одном гипервизоре.


А гипервизор на чем?

TC>2) Системы с управляемым кодом


А транслятор управляемого кода на чем?

TC>3) Это все будет скомбинировано ( так и будет, не сомневайтесь ). В итоге на вашей станции будет несколько микроядер, ориентированных на различные задачи — графика, интернет, работа с дисковыми массивами. Вот к примеру как мог бы выглядеть ПО компьютера моей жены через 15 лет:


Несколько микроядер — ну ты и завернул. Микроядро — оно по определению одно, и к нему серверы!

TC>материнская плата Intel ABCD с 32 CPU, 16 GPU, 2 NPU ( Network — соответственно ), встроенный гипервизор FGHJ v2.3, микро ОС для управления системой хранения данных, броузер FF9.5 + микроОС для работы в сети, пара игрух, работающих на микро ОС Nvidia, какая-нибудь графическая оболочка, а скорее всего — прям из броузера будем всем управлять.


Да, до чего всех доведет управляемый код: даже перекидывать байты по сети придется двум процессорам.

TC>Чего не будет:

TC>1)Гигантских "изолированных" плоских виртуальных моделей памяти, которые надо постоянно свопить, защищать с помощью всяких DEP и.т.д

В предыдущем абзаце ты скромно не упомянул количество ОЗУ, которое для всего этого понадобится. Раз всё на управляемом коде, то понадобится под терабайт и еще петабайт свопа, куда же ты денешься?

TC>2)Вытесняющей многозадачности, с этими бесконечными ( по сравнению со временем выполнения инструкции ) слайсами и постоянными загрузками и выгрузками контекстов и полной индифферентности к реальному времени.


Правильно, 10 мс по сравнению со временем выполнения инструкции станут очень даже конечными.

TC>3)Драйверов, которые могут в любой момент уронить все систему или сожрать все память


И точно, компьютеры будут вещами в себе, без клавиатур и мониторов.

TC>4)Вирусов и антивирусов в том виде, как он существуют сейчас


Кстати, раз уж об этом заговорили, на юниксах мало вирусов сейчас из-за популярности той другой ОС, и никогда не будет много, даже в связи с наступившим виндекапцом (потому что AppArmor и SELinux). Любопытно получается.

TC>5) C, C++, asm — это все уйдет в топку, останется доживать в узких нишах и в отделах системных разработок крупных фирм.

TC>Open Source будет жить :)), но скорее всего будет вытеснен от железа и прочих системных вещей и займется разработкой прикладного софта в рамках пропреитарных фреймворков.
TC>Столлман повеситься ;)
TC>Брин будет ( если вернется из космоса ) будет первым мультимиллиардером.
TC>А вот что будет с нами? :(

За 15 лет или Столлман умрет, или управляемый код, или ты — если не бросишь эту пагубную привычку!
До последнего не верил в пирамиду Лебедева.
Re[5]: Альтернативные ОС
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 19.06.08 21:25
Оценка: +1 :)))
TC>>1) Один процесс — одна операционная система. Куча операционных систем будет жить на одном гипервизоре.
RO>А гипервизор на чем?

Аппаратный.

TC>>2) Системы с управляемым кодом

RO>А транслятор управляемого кода на чем?

На управляемом коде, конечно.

TC>>материнская плата Intel ABCD с 32 CPU, 16 GPU, 2 NPU ( Network — соответственно ), встроенный гипервизор FGHJ v2.3, микро ОС для управления системой хранения данных, броузер FF9.5 + микроОС для работы в сети, пара игрух, работающих на микро ОС Nvidia, какая-нибудь графическая оболочка, а скорее всего — прям из броузера будем всем управлять.

RO>Да, до чего всех доведет управляемый код: даже перекидывать байты по сети придется двум процессорам.

Откуда такая фобия управляемого кода?

TC>>Чего не будет:

TC>>1)Гигантских "изолированных" плоских виртуальных моделей памяти, которые надо постоянно свопить, защищать с помощью всяких DEP и.т.д
RO>В предыдущем абзаце ты скромно не упомянул количество ОЗУ, которое для всего этого понадобится. Раз всё на управляемом коде, то понадобится под терабайт и еще петабайт свопа, куда же ты денешься?

Не вижу связи выделенного и остального

TC>>3)Драйверов, которые могут в любой момент уронить все систему или сожрать все память

RO>И точно, компьютеры будут вещами в себе, без клавиатур и мониторов.

Подразумевалось, что драйверы потребуются только для гипервизора.

TC>>4)Вирусов и антивирусов в том виде, как он существуют сейчас

RO>Кстати, раз уж об этом заговорили, на юниксах мало вирусов сейчас из-за популярности той другой ОС, и никогда не будет много, даже в связи с наступившим виндекапцом (потому что AppArmor и SELinux). Любопытно получается.

Еще любопытнее увидеть статистику реального использования возможностей и армора и селинукса всеми пользователями линукса

RO>За 15 лет или Столлман умрет, или управляемый код


Я не понял, ты сейчас Столлмана перед выбором поставил или управляемый код?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Альтернативные ОС
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 19.06.08 21:32
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

TC>>>1) Один процесс — одна операционная система. Куча операционных систем будет жить на одном гипервизоре.

RO>>А гипервизор на чем?

KV>Аппаратный.


Тут забыл смайлик поставить

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.06.08 22:32
Оценка: 4 (3) +2
Здравствуйте, TarasCo, Вы писали:

TC>Что будет через 10-15 лет:

TC>1) Один процесс — одна операционная система. Куча операционных систем будет жить на одном гипервизоре.

Это уже было. На самом деле, я бы ожидал следующего прорыва не в области ядер, а в области пользовательского интерфейса. Возможно это звучит неочевидно, но все предудущие прорывы в области операционных систем были в первую очередь прорывами именно в области пользовательского интерфейса. Например, тот же UNIX, который в свое время был прорывом, внес новую идею населить систему сотней маленьких программок, которые с помощью шеловских скриптов и командной строки можно причудливым образом комбинировать между собой. Windows прорывом никогда не был, но он был эхом прорыва, связанного с появлением оконного GUI и мыши.

TC>2) Системы с управляемым кодом


Аппаратная защита памяти затем и придумана, чтобы не надо было софтверно управлять кодом. Просто программы стали слишком большими, и понадобилась защита памяти уже внутри программы.

Обратите внимание, что если в языке нет указателей и адресной арифметики, то и managed код не нужен. А при этом существуют языки, которые компилируются в прекрасный машинный код, и обходятся без указателей и адресной арифметики.

TC>1)Гигантских "изолированных" плоских виртуальных моделей памяти, которые надо постоянно свопить, защищать с помощью всяких DEP и.т.д


Ручное управление памятью явно уходит в прошлое. А для автоматического управления по-моему ничего более удобного, чем плоская память с постраничной подкачкой, еще не изобрели.

TC>2)Вытесняющей многозадачности, с этими бесконечными ( по сравнению со временем выполнения инструкции ) слайсами и постоянными загрузками и выгрузками контекстов и полной индифферентности к реальному времени.


Из линуха слайсы уже извели. Превращение этого в mainstream — дело недалекого будущего. Я согласен, что ОС будущего будут риалтаймовыми, но вся наука на этот счет уже существует, осталось постепенно протолкать это в индустрию. Не думаю, что здесь будет революция, будет плавный переход.

TC>3)Драйверов, которые могут в любой момент уронить все систему или сожрать все память


Драйвер корневой файловой системы, или диска на котором живет эта файловая система, в случае падения все равно сломает всю систему, даже если его изолировать.

TC>Open Source будет жить , но скорее всего будет вытеснен от железа и прочих системных вещей и займется разработкой прикладного софта в рамках пропреитарных фреймворков.


Я думаю, наоборот. Closed source имеет смысл только там, где надо сохранить технологические секреты. А таких областей очень мало.

Я думаю, вся инфраструктура, включая операционные системы, компиляторы, интерпретаторы, фреймворки, библиотеки и проч. станет open source.

TC>Столлман повеситься


Нет, будет причислен к лику святых при жизни — чтобы не мешал людям работать

TC>Брин будет ( если вернется из космоса ) будет первым мультимиллиардером.


Гугль купит микрософт ради нескольких сотен имеющихся там неплохих программистов, которые немедленно будут раскиданы по разным проектам внутри гугля

TC>А вот что будет с нами?


Ничего, прорвемся
Re[5]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.06.08 02:49
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Аппаратная защита памяти затем и придумана, чтобы не надо было софтверно управлять кодом. Просто программы стали слишком большими, и понадобилась защита памяти уже внутри программы.

Нет, аппаратная защита придумана чтобы нельзя было нарушить изоляцию. И проблема не в размере программ, а в стоимости аппаратной изоляции: она становится барьером к дальнейшему росту производительности.
Pzz>Обратите внимание, что если в языке нет указателей и адресной арифметики, то и managed код не нужен.
Обрати внимание, что если в языке нет указателей и адресной арифметики, то это — управляемый язык.
TC>>1)Гигантских "изолированных" плоских виртуальных моделей памяти, которые надо постоянно свопить, защищать с помощью всяких DEP и.т.д
Pzz>Ручное управление памятью явно уходит в прошлое.
Пока что этого не видно.
Pzz> А для автоматического управления по-моему ничего более удобного, чем плоская память с постраничной подкачкой, еще не изобрели.
Автоматическое управление подразумевает отсутствие таких понятий, как страница и подкачка. Автоматика — это A a = new A(); и всё.

Pzz>Из линуха слайсы уже извели. Превращение этого в mainstream — дело недалекого будущего. Я согласен, что ОС будущего будут риалтаймовыми, но вся наука на этот счет уже существует, осталось постепенно протолкать это в индустрию. Не думаю, что здесь будет революция, будет плавный переход.

На мой непросвещенный взгляд, в приведенной статье речь не об этом. Слайсы никуда не делись — убрали только непрерывное пробуждение системы даже если все потоки сделали sleep().
Если в системе больше активных потоков, чем есть ядер в процессоре, то в любом случае придется их переключать — именно об этом говорит Тарас.

Pzz>Драйвер корневой файловой системы, или диска на котором живет эта файловая система, в случае падения все равно сломает всю систему, даже если его изолировать.

Нет конечно. В хорошо изолированной системе падение драйвера корневой файлухи лечится перезапуском драйвера. Падение диска — более редкая штука; но изолированную систему не сломает и оно — просто придется откатиться к предыдущему save point.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Альтернативные ОС
От: Sheridan Россия  
Дата: 20.06.08 05:34
Оценка:
Sinclair однажды (20 июня 2008 [Пятница] 06:49) писал:

> Здравствуйте, Pzz, Вы писали:

>
> Pzz>Аппаратная защита памяти затем и придумана, чтобы не надо было софтверно управлять кодом. Просто программы стали слишком большими, и понадобилась защита памяти уже внутри
> программы. Нет, аппаратная защита придумана чтобы нельзя было нарушить изоляцию. И проблема не в размере программ, а в стоимости аппаратной изоляции: она становится барьером к
> дальнейшему росту производительности. Pzz>Обратите внимание, что если в языке нет указателей и адресной арифметики, то и managed код не нужен.
> Обрати внимание, что если в языке нет указателей и адресной арифметики, то это — управляемый язык.
Баш?
Перл?... А нет, там ссылки есть...

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[6]: Альтернативные ОС
От: Cyberax Марс  
Дата: 20.06.08 05:40
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>На мой непросвещенный взгляд, в приведенной статье речь не об этом. Слайсы никуда не делись — убрали только непрерывное пробуждение системы даже если все потоки сделали sleep().

Делись. Новый scheduler в Линуксе для переключения учитывает реальную статистику использования процессора, а не количество слайсов, например. И в самом ядре тоже как таковые слайсы не используются — если нужно что-то сделать в будущем, то ядро просто ставит будильник.
Sapienti sat!
Re[7]: Альтернативные ОС
От: Трурль  
Дата: 20.06.08 06:01
Оценка:
Здравствуйте, Sheridan, Вы писали:


>> Обрати внимание, что если в языке нет указателей и адресной арифметики, то это — управляемый язык.

S>Баш?
S>Перл?... А нет, там ссылки есть...

Фортран!
Re[7]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.06.08 06:13
Оценка:
Здравствуйте, Sheridan, Вы писали:
S>Баш?
Конечно.
S>Перл?...
Конечно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Альтернативные ОС
От: Mr.Cat  
Дата: 20.06.08 09:53
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Обрати внимание, что если в языке нет указателей и адресной арифметики, то это — управляемый язык.

Haskell? OCaml? Тогда дайте Ваше определение управляемого языка.

S>Автоматическое управление подразумевает отсутствие таких понятий, как страница и подкачка. Автоматика — это A a = new A(); и всё.

Каким образом наличие страниц и подкачки в винде мешает Вам на C# писать A a = new A();? Либо я просто не совсем понимаю Вашу мысль.
Re[7]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.06.08 10:11
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

S>>Автоматическое управление подразумевает отсутствие таких понятий, как страница и подкачка. Автоматика — это A a = new A(); и всё.

MC>Каким образом наличие страниц и подкачки в винде мешает Вам на C# писать A a = new A();?
Гм. Модель памяти в шарпе не включает в себя ни страниц, ни подкачки. Именно поэтому программу можно исполнять на любой технологической базе, в том числе и на сегментной модели памяти, и на flat модели с подкачкой. Всеми вопросами исполнения new A() занимается рантайм.
MC>Либо я просто не совсем понимаю Вашу мысль.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Альтернативные ОС
От: Mr.Cat  
Дата: 20.06.08 10:33
Оценка:
Здравствуйте, Sinclair, Вы писали:
S>Гм. Модель памяти в шарпе не включает в себя ни страниц, ни подкачки. Именно поэтому программу можно исполнять на любой технологической базе, в том числе и на сегментной модели памяти, и на flat модели с подкачкой. Всеми вопросами исполнения new A() занимается рантайм.

Ааа. Это Вы к фразе.
Pzz> А для автоматического управления по-моему ничего более удобного, чем плоская память с постраничной подкачкой, еще не изобрели.
Re[4]: Альтернативные ОС
От: Mr.Cat  
Дата: 20.06.08 11:09
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>Что будет через 10-15 лет:

Поживем-увидим. Я на всякий случай этот месадж в избранное добавлю, через 10 лет апнем темку ))) Хотя есть у меня ощущение, что вы сейчас стебётесь.

TC>1) Один процесс — одна операционная система. Куча операционных систем будет жить на одном гипервизоре.

А нафига, собственно, козе баян? Давайте забудем на некоторое время про серверные платформы (там, где это надо — оно применяется), и подумаем об обычных десктопах. Какая на десктопе принципиальная разница: несколько однозадачных ОС, по одному процессу на каждую или одна многозадачная с изолированными процессами? Изолированные процессы — это же тоже виртуализация, только не на уровне ОС, а на уровне процесса, и для изоляции процессов также существуют и развиваются аппаратные средства.

TC>2) Системы с управляемым кодом

TC>3) Это все будет скомбинировано ( так и будет, не сомневайтесь ). В итоге на вашей станции будет несколько микроядер, ориентированных на различные задачи — графика, интернет, работа с дисковыми массивами.
В любом случае придется организовывать взаимодействие между процессами, запущенными под разными ядрами (игры ведь на дисковый массив устанавливать будете?). Так что в итоге Ваш десяток ядер будет завязан друг на друга, и вы получите те же яйца, вид сбоку: микроядерную архитектуру.

Все, что Вы предлагаете — это микроядерная архитектура, где микроядро реализовано аппаратно: гипервизор Ваш и будет микроядром, отвечающим за изоляцию и взаимодействие серверов (которые Вы обозвали ядрами), каждый из которых обслуживает одного клиента (приложение), а, может, и не одного. Будет ли такая архитектура удачнее, чем продукт 10-15-ти летней эволюции Linux/Windows и аппаратных средств — увидим.

TC>Чего не будет:

TC>1)Гигантских "изолированных" плоских виртуальных моделей памяти,
А какая модель памяти в приложении будет? Мы тут только что говорили, что плоская модель вполне состоятельна.

TC>которые надо постоянно свопить, защищать с помощью всяких DEP и.т.д

Не будет подкачки? Т.е у нас будут терабайты супербыстрой супердешевой памяти?


TC>2)Вытесняющей многозадачности, с этими бесконечными ( по сравнению со временем выполнения инструкции ) слайсами и постоянными загрузками и выгрузками контекстов и полной индифферентности к реальному времени.

А какая будет многозадачность? Или Каждому процессу по процессору?

TC>3)Драйверов, которые могут в любой момент уронить все систему или сожрать все память

Что будет управлять периферией?

TC>4)Вирусов и антивирусов в том виде, как он существуют сейчас

А это-то каким боком? Похоже, что Вы реально стебётесь.
Re[7]: Альтернативные ОС
От: TarasCo  
Дата: 20.06.08 11:24
Оценка:
C>Делись. Новый scheduler в Линуксе для переключения учитывает реальную статистику использования процессора, а не количество слайсов, например.

В висте тоже. Учитывается время, потраченное обработчиками прерываний в контексте текущего потока и прочие системные мудрости. Т.е планировщик смотрит, сколько сам поток работал и в соответствии с этим принимает справедливое решение .

Но это все, лишь доказательство моих слов. Архитектурные близнецы Linus и Windox достигли всего, что можно было выжать из этой архитектуры. Уже начинается погоня за копейками. А ведь система могла бы без всякий переключений и синхронизаций просто тупо дергать за различные маленькие тупенькие, написанные на управляемом коде, объектики и не тормозить ВООБЩЕ. Вершина и конец изолированных адресных пространств процессов — это наличие кучи различных методов, как это дело обойти, которые предоставляет сама же система!!! Эта такая компьютерная коррупция — закон, что дышло .
Да пребудет с тобою сила
Re[6]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 20.06.08 11:39
Оценка: -1
Здравствуйте, Sinclair, Вы писали:

S>Нет, аппаратная защита придумана чтобы нельзя было нарушить изоляцию. И проблема не в размере программ, а в стоимости аппаратной изоляции: она становится барьером к дальнейшему росту производительности.


Изоляцию можно делать либо с помощью аппаратной защиты, либо чисто в софтварии. Совсем ее не делать нельзя, вы согласны?

Так вот, по-моему очевидно, что если использовать аппаратную поддержку, то производительность всяко будет больше, чем если не использовать.

Pzz>>Обратите внимание, что если в языке нет указателей и адресной арифметики, то и managed код не нужен.

S>Обрати внимание, что если в языке нет указателей и адресной арифметики, то это — управляемый язык.

Ocaml — это управляемый язык?

Pzz>>Ручное управление памятью явно уходит в прошлое.

S>Пока что этого не видно.

Видно. Языки более высокого уровня, чем C++, имеют явную тенденцию в первую очередь избавить программиста именно от ручного выделения/освобождения памяти.

Pzz>> А для автоматического управления по-моему ничего более удобного, чем плоская память с постраничной подкачкой, еще не изобрели.

S>Автоматическое управление подразумевает отсутствие таких понятий, как страница и подкачка. Автоматика — это A a = new A(); и всё.

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

Но суть не в этом. Страницы/подкачка у нее под капотом. Прикладному программисту этого не видно.

S>На мой непросвещенный взгляд, в приведенной статье речь не об этом. Слайсы никуда не делись — убрали только непрерывное пробуждение системы даже если все потоки сделали sleep().

S>Если в системе больше активных потоков, чем есть ядер в процессоре, то в любом случае придется их переключать — именно об этом говорит Тарас.

Тогда я не очень понимаю, о чем говорит Тарас. Надо ли его понимать в том духе, что параллельные вычисления (в виде явных потоков) нас покунут? Или он хочет сказать, что нас ждет революция в области скедулеров?

Pzz>>Драйвер корневой файловой системы, или диска на котором живет эта файловая система, в случае падения все равно сломает всю систему, даже если его изолировать.

S>Нет конечно. В хорошо изолированной системе падение драйвера корневой файлухи лечится перезапуском драйвера.

А что будет при этом с открытыми файлами?

S>Падение диска — более редкая штука; но изолированную систему не сломает и оно — просто придется откатиться к предыдущему save point.


Падение и перезапуск диска IMHO проще обработать прозрачно для приложений, чем падение файловой системы.
Re[7]: Альтернативные ОС
От: TarasCo  
Дата: 20.06.08 12:55
Оценка:
S>>Если в системе больше активных потоков, чем есть ядер в процессоре, то в любом случае придется их переключать — именно об этом говорит Тарас.

Pzz>Тогда я не очень понимаю, о чем говорит Тарас. Надо ли его понимать в том духе, что параллельные вычисления (в виде явных потоков) нас покунут? Или он хочет сказать, что нас ждет революция в области скедулеров?


Да, революция. Сейчас шедулер построен по принципу полной независимости от кода. И правильно. Он ему не может доверять — код то сцука опасен . Поэтому он сам переключает потоки на основе самых общих представлениях о них. Если шедулер будет доверять коду ( а код у нас управляемый — читай, ему можно доверять ), возможны настолько гибкие алгоритмы разделения процессорного времени, что мне даже не придумать с ходу .

А самое главное, потоки то вообще зачем нужны? Кто-нибудь может привести пример, зачем нужен поток, который тянется многие секунды и переживает тысячи переключений контекста? Практически все задачи можно разбить на последовательность мелких задачек, которые при условии что они работают в системе с управляемым кодом могут выполняться в едином аппаратном контексте процессора и памяти. Возьмите гуйню — поток спит, иногда выполняет коротенькие операции с оконной подсистемой. Зачем тут именно поток, со своим стеком? Единственный класс задач, где требуется именно потоки в нашем традиционном понимании — это длительные вычисления. Так может для них просто написать классик, который будет эмулировать традиционную многопоточность?
Да пребудет с тобою сила
Re[8]: Альтернативные ОС
От: Roman Odaisky Украина  
Дата: 20.06.08 14:03
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>А ведь система могла бы без всякий переключений и синхронизаций просто тупо дергать за различные маленькие тупенькие, написанные на управляемом коде, объектики и не тормозить ВООБЩЕ.


Хорошо. Вот тебе псевдокод на некоем управляемом языке:

Thread t1 = new Thread(LargePrimeComputer.Compute);
Thread t2 = new Thread(LargePrimeComputer.Compute);

t1.Join();
t2.Join();

Как идеологически правильная ОС распределит процессорное время между этими задачами, если их больше, чем процессоров?
До последнего не верил в пирамиду Лебедева.
Re[8]: Альтернативные ОС
От: Roman Odaisky Украина  
Дата: 20.06.08 14:04
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>А самое главное, потоки то вообще зачем нужны? Кто-нибудь может привести пример, зачем нужен поток, который тянется многие секунды и переживает тысячи переключений контекста? Практически все задачи можно разбить на последовательность мелких задачек, которые при условии что они работают в системе с управляемым кодом могут выполняться в едином аппаратном контексте процессора и памяти. Возьмите гуйню — поток спит, иногда выполняет коротенькие операции с оконной подсистемой. Зачем тут именно поток, со своим стеком? Единственный класс задач, где требуется именно потоки в нашем традиционном понимании — это длительные вычисления. Так может для них просто написать классик, который будет эмулировать традиционную многопоточность?


Поздравляю, ты изобрел Erlang. Только для этого совсем не нужен управляемый код.
До последнего не верил в пирамиду Лебедева.
Re[8]: Альтернативные ОС
От: Cyberax Марс  
Дата: 20.06.08 14:29
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>Но это все, лишь доказательство моих слов. Архитектурные близнецы Linus и Windox достигли всего, что можно было выжать из этой архитектуры. Уже начинается погоня за копейками. А ведь система могла бы без всякий переключений и синхронизаций просто тупо дергать за различные маленькие тупенькие, написанные на управляемом коде, объектики и не тормозить ВООБЩЕ.

Я уже как-то писал как можно сделать очень дешовое переключение между контекстами. Оно может быть лишь чуть медленнее обычного вызова функции.
Sapienti sat!
Re[7]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 20.06.08 16:31
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>Изоляцию можно делать либо с помощью аппаратной защиты, либо чисто в софтварии. Совсем ее не делать нельзя, вы согласны?


Не согласен, можно, если статически доказано, что выполняемый код не портит чужую память.
&
Re[8]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 20.06.08 18:32
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>Да, революция. Сейчас шедулер построен по принципу полной независимости от кода. И правильно. Он ему не может доверять — код то сцука опасен . Поэтому он сам переключает потоки на основе самых общих представлениях о них. Если шедулер будет доверять коду ( а код у нас управляемый — читай, ему можно доверять ), возможны настолько гибкие алгоритмы разделения процессорного времени, что мне даже не придумать с ходу .


Управляемому коду можно доверять в том плане, что он сам себе по памяти не проедется. Но в том плане, что он не задумал недоброе, ему доверять нельзя. Иначе нужен не только управляемый код, а еще и управляемые разработчики и управляемые пользователи

Придумайте хоть один алгоритм для скедулера, который 1) имеет практический смысл 2) implementable в принципе 3) не implementable из-за того, что код не managed. Тогда будет от чего отталкиваться в разговоре.

TC>А самое главное, потоки то вообще зачем нужны?


Потому, что многим кажется, что так думать проще, чем в стиле конечного автомата.

А переключалку потоков можно и в user space вынести. Не так уж ей и много надо от операционной системы.
Re[8]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 20.06.08 18:38
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

Pzz>>Изоляцию можно делать либо с помощью аппаратной защиты, либо чисто в софтварии. Совсем ее не делать нельзя, вы согласны?


НС>Не согласен, можно, если статически доказано, что выполняемый код не портит чужую память.


Во-первых, в общем случае эта задача по-видимому алгоритмически неразрешима.

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

Во-третьих, возникает организационный аспект. Когда пользователь ставит программу на систему, откуда система знает, что для этой программы что-то там статически доказано? Очевидно, что эта задача разрешима только если ввести обязательное гослицензирование всех поставщиков программ. Я не хотел бы жить в таком мире
Re[9]: Альтернативные ОС
От: OCTAGRAM Россия http://octagram.name/
Дата: 21.06.08 07:09
Оценка:
Roman Odaisky пишет:
>
> new Thread(LargePrimeComputer.Compute);

Указатель?

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Альтернативные ОС
От: OCTAGRAM Россия http://octagram.name/
Дата: 21.06.08 07:13
Оценка:
Roman Odaisky пишет:
>
> Здравствуйте, Impuls, Вы писали:
>
> TC>>>Столлман повеситься
>
> _>>Это приказ?
>
> I>Нет , наверное предсказание
>
> Глагол употреблен или в инфинитиве, или в повелительном наклонении, но
> никак не в личной форме.

Да там то ли точки посередине, то ли скобок вокруг слов не хватает

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[9]: Альтернативные ОС
От: OCTAGRAM Россия http://octagram.name/
Дата: 21.06.08 09:23
Оценка:
Pzz пишет:
>
> Во-третьих, возникает организационный аспект. Когда пользователь ставит
> программу на систему, откуда система знает, что для этой программы
> что-то там статически доказано? Очевидно, что эта задача разрешима
> только если ввести обязательное гослицензирование всех поставщиков
> программ. Я не хотел бы жить в таком мире

Если из дистрибутива, то подпись дистростроителя, если чужая — то из
исходников собрать.

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[10]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 21.06.08 10:09
Оценка:
Здравствуйте, OCTAGRAM, Вы писали:

OCT>Если из дистрибутива, то подпись дистростроителя, если чужая — то из

OCT>исходников собрать.

А статически доказывать тоже самому, из исходников?
Re[11]: Альтернативные ОС
От: OCTAGRAM Россия http://octagram.name/
Дата: 21.06.08 11:05
Оценка:
Pzz пишет:
>
> А статически доказывать тоже самому, из исходников?

А в чём проблема? Если ограничиться доказательством целостности, обычно
там несложные проверки, и для всего есть готовые инструменты.

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[12]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 21.06.08 11:49
Оценка:
Здравствуйте, OCTAGRAM, Вы писали:

>> А статически доказывать тоже самому, из исходников?


OCT>А в чём проблема? Если ограничиться доказательством целостности, обычно

OCT>там несложные проверки, и для всего есть готовые инструменты.

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

Я уж не говорю о том, что доказать можно (да и то под вопросом, поскольку по-моему это эквиавалентно доказательству завершения алгоритма за конечное число шагов, что для Тьюринг-полных машин является алгоритмически неразрешимой задачей), что программа не убъет саму себя. То, что она не убъет что-то еще, не в следствии ошибки, а по злому умыслу, доказать невозможно. Хотя статически проверенная программа наделает гадостей с особой надежностью
Re[13]: Статические проверки
От: OCTAGRAM Россия http://octagram.name/
Дата: 21.06.08 13:20
Оценка:
Pzz пишет:
>
> Здравствуйте, OCTAGRAM, Вы писали:
>
>> > А статически доказывать тоже самому, из исходников?
>
> OCT>А в чём проблема? Если ограничиться доказательством целостности, обычно
> OCT>там несложные проверки, и для всего есть готовые инструменты.
>
> Проблема в том, что большинству людей программы нужны, чтобы поставить и
> пользоваться, а не статически доказывать.
>
"Статически доказывать" — часть сборки из исходников. Если из исходников
не собирать, то возможен вариант TAL — Typed Assembly Language, когда к
бинарному коду прилагаются аннотации, по которым можно проверить
сохранение целостности запускаемой программы.

> Я уж не говорю о том, что доказать можно (да и то под вопросом,

> поскольку по-моему это эквиавалентно доказательству завершения алгоритма
> за конечное число шагов, что для Тьюринг-полных машин является
> алгоритмически неразрешимой задачей), что программа не убъет саму себя.

Обычно рассматривают не все допустимые варианты ассемблерных извращений,
а некоторое высокоуровневое подмножество программ. Для Oberon–2 можно
проверить неиспользование псевдомодуля System, для Ады запустить
gnatcheck или AdaControl. Аналогично в любом другом языке. Только и всего.

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[12]: Альтернативные ОС
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 22.06.08 05:53
Оценка:
Здравствуйте, OCTAGRAM, Вы писали:

OCT>Pzz пишет:

>>
>> А статически доказывать тоже самому, из исходников?

OCT>А в чём проблема? Если ограничиться доказательством целостности, обычно

OCT>там несложные проверки, и для всего есть готовые инструменты.

А если я не верю производителю?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[13]: Альтернативные ОС
От: OCTAGRAM Россия http://octagram.name/
Дата: 22.06.08 06:06
Оценка:
kochetkov.vladimir пишет:
>
> Здравствуйте, OCTAGRAM, Вы писали:
>
> OCT>Pzz пишет:
>> >
>> > А статически доказывать тоже самому, из исходников?
>
> OCT>А в чём проблема? Если ограничиться доказательством целостности, обычно
> OCT>там несложные проверки, и для всего есть готовые инструменты.
>
> А если я не верю производителю?

Какому?

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Альтернативные ОС
От: iiice Россия  
Дата: 22.06.08 13:38
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC> Поскипано...


Всё, что ты перечислил, обозначает ООП-капец, и приход dataflow. С нетерпением жду этого дня.
Re[4]: Альтернативные ОС
От: iiice Россия  
Дата: 22.06.08 13:41
Оценка:
Ты сам себе противоречишь. "Смерть системного программирования" и троекратное упоминание микро-ОС слабо совместимы.
Re[14]: Альтернативные ОС
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 22.06.08 14:00
Оценка:
Здравствуйте, OCTAGRAM, Вы писали:

OCT>kochetkov.vladimir пишет:

>>
>> Здравствуйте, OCTAGRAM, Вы писали:
>>
>> OCT>Pzz пишет:
>>> >
>>> > А статически доказывать тоже самому, из исходников?
>>
>> OCT>А в чём проблема? Если ограничиться доказательством целостности, обычно
>> OCT>там несложные проверки, и для всего есть готовые инструменты.
>>
>> А если я не верю производителю?

OCT>Какому?


Любому

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[15]: Альтернативные ОС
От: OCTAGRAM Россия http://octagram.name/
Дата: 22.06.08 14:21
Оценка:
kochetkov.vladimir пишет:
>
> Здравствуйте, OCTAGRAM, Вы писали:
>
> OCT>kochetkov.vladimir пишет:
>> >
>> > Здравствуйте, OCTAGRAM, Вы писали:
>> >
>> > OCT>Pzz пишет:
>> >> >
>> >> > А статически доказывать тоже самому, из исходников?
>> >
>> > OCT>А в чём проблема? Если ограничиться доказательством целостности,
> обычно
>> > OCT>там несложные проверки, и для всего есть готовые инструменты.
>> >
>> > А если я не верю производителю?
>
> OCT>Какому?
>
> Любому

Хорошо, перефразирую: производителю чего?

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[9]: Альтернативные ОС
От: WolfHound  
Дата: 22.06.08 19:06
Оценка: +1
Здравствуйте, Pzz, Вы писали:

НС>>Не согласен, можно, если статически доказано, что выполняемый код не портит чужую память.

Pzz>Во-первых, в общем случае эта задача по-видимому алгоритмически неразрешима.
Разрешима для подавляющей части кода.
В тех местах где нет можно и проверку вставить.
Благо у нас есть вся метаинформация.

Pzz>Во-вторых, программа может не портить чужую память, и при этом быть вредной. Например, она может открывать документы, и заменять приличные слова на неприличные. Я не могу придумать компьютерно-проверяемый формальный критерий, позволяющий отличить такую программу от программы, которая делает с документами что-то полезное.

Очень просто.
Все программы живут в персональных песочницах.
Если программе понадобился доступ за пределами ее персональной папки то она просит ОСь о том чтобы ОСь попросила юзера открыть нужный файл.

Pzz>Во-третьих, возникает организационный аспект. Когда пользователь ставит программу на систему, откуда система знает, что для этой программы что-то там статически доказано? Очевидно, что эта задача разрешима только если ввести обязательное гослицензирование всех поставщиков программ. Я не хотел бы жить в таком мире

У нас все управляемое.
И ОСь сама может все проверить.
Если программе нужны права которых у нее нет по умолчанию то автор в инсталяторе прописывает соответствующие требования.
А система при установке спрашивает пользователя действительно ли он хочет дать этой программе данные права.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: Альтернативные ОС
От: WolfHound  
Дата: 22.06.08 19:09
Оценка: +2
Здравствуйте, Pzz, Вы писали:

OCT>>Если из дистрибутива, то подпись дистростроителя, если чужая — то из исходников собрать.

Pzz>А статически доказывать тоже самому, из исходников?
Вобще говоря бинарник с управляемым кодом имеет очень интересное свойство: В нем есть вся информация которая есть в исходниках. За исключением форматирования и комментариев.
Те исходники нам и не нужны.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: Альтернативные ОС
От: DOOM Россия  
Дата: 23.06.08 08:59
Оценка:
Здравствуйте, TarasCo, Вы писали:


Интересная перспектива. Если привязывать к реальности, то будет что-то вроде мега-развитого EFI, поверх которого будет работать легковесная ОС, основная задача которой — реализация ФС... Ничего не напоминает?
Re[6]: Альтернативные ОС
От: DOOM Россия  
Дата: 23.06.08 09:02
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

TC>>>3)Драйверов, которые могут в любой момент уронить все систему или сожрать все память

RO>>И точно, компьютеры будут вещами в себе, без клавиатур и мониторов.

KV>Подразумевалось, что драйверы потребуются только для гипервизора.


The fact is, the absolute last place you want to see drivers is in the hypervisor

(c) угадай кто.
Кстати, MS тоже придерживаются этого мнения и пеняют в этом смысле на VMWare.
Re[7]: Альтернативные ОС
От: DOOM Россия  
Дата: 23.06.08 09:03
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Здравствуйте, kochetkov.vladimir, Вы писали:


TC>>>>1) Один процесс — одна операционная система. Куча операционных систем будет жить на одном гипервизоре.

RO>>>А гипервизор на чем?

KV>>Аппаратный.


KV>Тут забыл смайлик поставить


Кстати, VMWare ESX 3i будет встроено в качестве firmware в хулитовые сервера следующего поколения — это можно назвать аппаратным гипервизором?
Re[7]: Альтернативные ОС
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 23.06.08 09:09
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>

DOO>The fact is, the absolute last place you want to see drivers is in the hypervisor

DOO>(c) угадай кто.
DOO>Кстати, MS тоже придерживаются этого мнения и пеняют в этом смысле на VMWare.

Я же выше написал, что гипервизор — аппаратный

А сказал он это, тут: http://lwn.net/Articles/244431/ если кому интересно...

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[9]: Альтернативные ОС
От: TarasCo  
Дата: 23.06.08 09:15
Оценка:
RO>Хорошо. Вот тебе псевдокод на некоем управляемом языке:

RO>
RO>Thread t1 = new Thread(LargePrimeComputer.Compute);
RO>Thread t2 = new Thread(LargePrimeComputer.Compute);

RO>t1.Join();
RO>t2.Join();
RO>

RO>Как идеологически правильная ОС распределит процессорное время между этими задачами, если их больше, чем процессоров?

Я ниже по ветке уже писал об этом. Данный случай ( долгие вычисления ) очень не типичен для современной десктопной машины. Этим я думаю занимается не более 1% потоков на машине. Большинство работает в стиле обработчика события — проснулся, пукнул, заснул. Либо может быть легко сведен к такой модели. Поэтому планировка должна в первую очередь ориентироваться на такие "потоки", а по сути просто последовательный вызов некого обработчика. А делают такие "потоки" в виде нити только потому, что так устроена система. А если истема будет устроена по другому, данный псевдокод мог бы выглядеть как то так:


Sheduler  s = new Sheduler( LongTask );

Thread t1 = new Thread(LargePrimeComputer.Compute);
Thread t2 = new Thread(LargePrimeComputer.Compute);

s.Attach( t1 );
s.Attach( t2 );

System.Shedulers.Add( s );

RO>


Т.е это некий особый случай, требующий неких извращений.
Да пребудет с тобою сила
Re[12]: Управляемый код
От: OCTAGRAM Россия http://octagram.name/
Дата: 23.06.08 09:28
Оценка:
WolfHound пишет:
>
> Здравствуйте, Pzz, Вы писали:
>
> OCT>>Если из дистрибутива, то подпись дистростроителя, если чужая — то
> из исходников собрать.
> Pzz>А статически доказывать тоже самому, из исходников?
> Вобще говоря бинарник с управляемым кодом имеет очень интересное
> свойство: В нем есть вся информация которая есть в исходниках. За
> исключением форматирования и комментариев.
> Те исходники нам и не нужны.

А что такое управляемый код? Компилировать исходники в байт–код или нет,
это не принципиально. Исходники сами по себе тоже могут быть
производными от чего–то другого.

Исходники, однако же, имеют тенденцию быть инвариантными относительно
байт–кодирования, которое может и поменяться (в Erlang вот поменяли).
Поэтому я говорю об исходниках.

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[9]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 23.06.08 10:35
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Во-первых, в общем случае эта задача по-видимому алгоритмически неразрешима.


А в общем и не нужно, нужно в частном, подходящем для создания ядра.

Pzz>Во-вторых, программа может не портить чужую память, и при этом быть вредной. Например, она может открывать документы, и заменять приличные слова на неприличные.


Аппаратная защита от таких программ тоже не спасает.

Pzz>Во-третьих, возникает организационный аспект. Когда пользователь ставит программу на систему, откуда система знает, что для этой программы что-то там статически доказано?


Смотри Сингуларити.

Pzz> Очевидно, что эта задача разрешима только если ввести обязательное гослицензирование всех поставщиков программ.


Узко мыслишь.
&
Re[10]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 23.06.08 23:47
Оценка: -1
Здравствуйте, Ночной Смотрящий, Вы писали:

Pzz>>Во-вторых, программа может не портить чужую память, и при этом быть вредной. Например, она может открывать документы, и заменять приличные слова на неприличные.


НС>Аппаратная защита от таких программ тоже не спасает.


Я что-то несколько потерял нить. Аппаратная защита помогает эффективно изолировать программы друг от друга и контроллировать доступ к аппаратуре. Того же самого можно добиться, запретив нативный код и гоняя все программы на интерпретаторе. Но это в любом случае будет медленнее, чем при использовании аппаратной защиты. Аппаратная поддержка играет такую же роль для построения защиты, как хорошая видеокарта — для рисования гуя. В принципе, можно и гуй по точкам рисовать, у пентиума мегагерцев много.

Так что в чем ваш тезис, собственно? Что вообще защита не нужна, или что аппаратная не нужна?

Pzz>>Во-третьих, возникает организационный аспект. Когда пользователь ставит программу на систему, откуда система знает, что для этой программы что-то там статически доказано?


НС>Смотри Сингуларити.


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

В игрушечной системе можно, конечно, гонять весь код в интерпретаторе. В настоящей системе это слишком дорогое удовольствие, и код должен исполняться на железе.

Pzz>> Очевидно, что эта задача разрешима только если ввести обязательное гослицензирование всех поставщиков программ.


НС>Узко мыслишь.


Обосновать можете?
Re[11]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.06.08 03:31
Оценка: +2
Здравствуйте, Pzz, Вы писали:
Pzz>Так что в чем ваш тезис, собственно? Что вообще защита не нужна, или что аппаратная не нужна?
Что аппаратная не нужна.
НС>>Смотри Сингуларити.

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


Pzz>В игрушечной системе можно, конечно, гонять весь код в интерпретаторе. В настоящей системе это слишком дорогое удовольствие, и код должен исполняться на железе.

А можно я тоже буду хихикать? Потому, что
а) в сингулярити код не гоняется в интерпретаторе. Учите матчасть, дотнет вообще никогда не гоняется в интерпретаторе.
б) сингулярити (естественно) показывает более высокое быстродействие, чем linux или windows. Учите матчасть.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[12]: Альтернативные ОС
От: Sheridan Россия  
Дата: 24.06.08 05:08
Оценка: :)))
Sinclair однажды (24 июня 2008 [Вторник] 07:31) писал:

> а) в сингулярити код не гоняется в интерпретаторе. Учите матчасть, дотнет вообще никогда не гоняется в интерпретаторе.

Мантра? Ты кстати это все время твердиш. Покажи ка более другой источник. Желательно независимый от M$

> б) сингулярити (естественно) показывает более высокое быстродействие, чем linux или windows. Учите матчасть.

Мне пожалуйста с собой заверните... В смысле сравнительных тестов производительности.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[13]: Альтернативные ОС
От: Константин Б. Россия  
Дата: 24.06.08 05:20
Оценка: 3 (1) +1 :)
Здравствуйте, Sheridan, Вы писали:

S>Sinclair однажды (24 июня 2008 [Вторник] 07:31) писал:


>> а) в сингулярити код не гоняется в интерпретаторе. Учите матчасть, дотнет вообще никогда не гоняется в интерпретаторе.

S>Мантра? Ты кстати это все время твердиш. Покажи ка более другой источник. Желательно независимый от M$

Шеридан, покажи источник утверждающий что .net интерпертируется. Желательно не зависимый от ЛОРа
Re[14]: Альтернативные ОС
От: Sheridan Россия  
Дата: 24.06.08 05:35
Оценка:
Константин Б. однажды (24 июня 2008 [Вторник] 09:20) писал:

> Шеридан, покажи источник утверждающий что .net интерпертируется. Желательно не зависимый от ЛОРа

Я первый спросил

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[13]: Альтернативные ОС
От: WFrag США  
Дата: 24.06.08 05:36
Оценка:
Здравствуйте, Sheridan, Вы писали:

>> а) в сингулярити код не гоняется в интерпретаторе. Учите матчасть, дотнет вообще никогда не гоняется в интерпретаторе.

S>Мантра? Ты кстати это все время твердиш. Покажи ка более другой источник. Желательно независимый от M$

Возьми дебаггер, подключись к приложению на .NET, да посмотри, что там реально исполняется.
Re[14]: Альтернативные ОС
От: Sheridan Россия  
Дата: 24.06.08 05:38
Оценка:
WFrag однажды (24 июня 2008 [Вторник] 09:36) писал:

> Возьми дебаггер, подключись к приложению на .NET, да посмотри, что там реально исполняется.

Купи мне винду и студию...

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[13]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.06.08 05:49
Оценка: +1
Здравствуйте, Sheridan, Вы писали:
>> а) в сингулярити код не гоняется в интерпретаторе. Учите матчасть, дотнет вообще никогда не гоняется в интерпретаторе.
S>Мантра?
"Учите матчасть?" Да, мантра.
S>Ты кстати это все время твердиш. Покажи ка более другой источник. Желательно независимый от M$
Независимый от МС дебаггер тебя устроит?

>> б) сингулярити (естественно) показывает более высокое быстродействие, чем linux или windows. Учите матчасть.

S>Мне пожалуйста с собой заверните... В смысле сравнительных тестов производительности.
http://research.microsoft.com/os/singularity/publications/osr2007_rethinkingsoftwarestack.pdf
Смотреть таблицу на странице 2 и вдуплять до просветления.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[15]: Альтернативные ОС
От: kuj  
Дата: 24.06.08 06:58
Оценка: :)))
Здравствуйте, Sheridan, Вы писали:

>> Шеридан, покажи источник утверждающий что .net интерпертируется. Желательно не зависимый от ЛОРа

S>Я первый спросил
Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!
Re[16]: Альтернативные ОС
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 24.06.08 07:01
Оценка: +1 :)
Здравствуйте, kuj, Вы писали:

kuj>Здравствуйте, Sheridan, Вы писали:


>>> Шеридан, покажи источник утверждающий что .net интерпертируется. Желательно не зависимый от ЛОРа

S>>Я первый спросил
kuj>Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!

Баян. То, что он не работает на Microsoft, он мне до сих пор не доказал

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[16]: Альтернативные ОС
От: Sheridan Россия  
Дата: 24.06.08 07:26
Оценка:
kuj однажды (24 июня 2008 [Вторник] 10:58) писал:

> Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!

http://gzip.rsdn.ru/Users/Profile.aspx?uid=28760 фоткал не я. Достаточно?

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[17]: Альтернативные ОС
От: kuj  
Дата: 24.06.08 07:35
Оценка:
Здравствуйте, Sheridan, Вы писали:


>> Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!

S>http://gzip.rsdn.ru/Users/Profile.aspx?uid=28760 фоткал не я. Достаточно?


Внутренняя ошибка сервера

URL: /Users/Profile.aspx?uid=28760

An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: TCP Provider, error: 0 — No such host is known.)



Нет, ты точно марсианин!
Re[18]: Альтернативные ОС
От: Sheridan Россия  
Дата: 24.06.08 07:46
Оценка:
kuj однажды (24 июня 2008 [Вторник] 11:35) писал:

>>> Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!

> S>http://gzip.rsdn.ru/Users/Profile.aspx?uid=28760 фоткал не я. Достаточно?
> Внутренняя ошибка сервера
Еще раз попробуй, ага

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[11]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 24.06.08 07:57
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я что-то несколько потерял нить. Аппаратная защита помогает эффективно изолировать программы друг от друга и контроллировать доступ к аппаратуре. Того же самого можно добиться, запретив нативный код и гоняя все программы на интерпретаторе. Но это в любом случае будет медленнее, чем при использовании аппаратной защиты.


При чем тут интерпретация? Я говорил про статический контроль.

Pzz>Так что в чем ваш тезис, собственно? Что вообще защита не нужна, или что аппаратная не нужна?


Аппаратная не нужна, если есть возможность проводить статический контроль.

НС>>Смотри Сингуларити.


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


Тем не менее ответ на твой вопрос там есть.

Pzz>В игрушечной системе можно, конечно, гонять весь код в интерпретаторе.


В Сингуларити нет интерпретаторов. Там даже JIT нет.

Pzz> В настоящей системе это слишком дорогое удовольствие, и код должен исполняться на железе.


Сингуларити на многих операциях быстрее обычных ОС. Как раз из-за отсутствия аппаратной защиты.

Pzz>>> Очевидно, что эта задача разрешима только если ввести обязательное гослицензирование всех поставщиков программ.


НС>>Узко мыслишь.


Pzz>Обосновать можете?


Могу. Достаточно верификатор сделать частью ОС, и не надо никого никуда лицензировать.
&
Re[12]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 24.06.08 08:53
Оценка: -3
Здравствуйте, Sinclair, Вы писали:

Pzz>>Так что в чем ваш тезис, собственно? Что вообще защита не нужна, или что аппаратная не нужна?

S>Что аппаратная не нужна.

А аппаратный ускоритель в видеокарте тоже не нужен?

Pzz>>В игрушечной системе можно, конечно, гонять весь код в интерпретаторе. В настоящей системе это слишком дорогое удовольствие, и код должен исполняться на железе.

S>А можно я тоже буду хихикать? Потому, что
S>а) в сингулярити код не гоняется в интерпретаторе. Учите матчасть, дотнет вообще никогда не гоняется в интерпретаторе.

Ну расскажите мне еще про то, как JIT-компилер, озаряемый светом неземного разума, превращает .Net'овский код в машинный код непостижимой красоты и эффективности.

S>б) сингулярити (естественно) показывает более высокое быстродействие, чем linux или windows. Учите матчасть.


В игрушечных тестах?
Re[19]: Альтернативные ОС
От: TarasCo  
Дата: 24.06.08 13:08
Оценка: +1 :))) :)
S>Еще раз попробуй, ага
Сигнал с Марса идет долго...
Да пребудет с тобою сила
Re[20]: Альтернативные ОС
От: Sheridan Россия  
Дата: 24.06.08 13:21
Оценка:
TarasCo однажды (24 июня 2008 [Вторник] 17:08) писал:

> S>Еще раз попробуй, ага

> Сигнал с Марса идет долго...
Извините, ближе ретранслятор поставить не получилось...

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[19]: Альтернативные ОС
От: kuj  
Дата: 24.06.08 15:21
Оценка:
Здравствуйте, Sheridan, Вы писали:

>>>> Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!

>> S>http://gzip.rsdn.ru/Users/Profile.aspx?uid=28760 фоткал не я. Достаточно?
>> Внутренняя ошибка сервера
S>Еще раз попробуй, ага
Одень цак, дорогой!
Re[20]: Альтернативные ОС
От: Sheridan Россия  
Дата: 24.06.08 17:10
Оценка:
kuj однажды (24 июня 2008 19:21) писал:

>>>>> Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!

>>> S>http://gzip.rsdn.ru/Users/Profile.aspx?uid=28760 фоткал не я. Достаточно?
>>> Внутренняя ошибка сервера
> S>Еще раз попробуй, ага
> Одень цак, дорогой!
Уважаемый пацак, ты на планете чалан, забыл? Так что 3 ку перед коренным жителем и цак в нос. ЖИВО!!!

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[13]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 24.06.08 21:29
Оценка: +1
Здравствуйте, Pzz, Вы писали:

S>>а) в сингулярити код не гоняется в интерпретаторе. Учите матчасть, дотнет вообще никогда не гоняется в интерпретаторе.


Pzz>Ну расскажите мне еще про то, как JIT-компилер, озаряемый светом неземного разума, превращает .Net'овский код в машинный код непостижимой красоты и эффективности.


Сингулярити не использует JIT. Может хватит уже демонстрировать полное незнание предмета?
&
Re[14]: Альтернативные ОС
От: Sheridan Россия  
Дата: 24.06.08 22:17
Оценка: :)
Ночной Смотрящий однажды (25 июня 2008 01:29) писал в rsdn.flame.comp:

> Сингулярити не использует JIT. Может хватит уже демонстрировать полное незнание предмета?

Тоесть всетаки интерпритатор? о0

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[15]: Альтернативные ОС
От: WFrag США  
Дата: 25.06.08 01:37
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

S>Ночной Смотрящий однажды (25 июня 2008 01:29) писал в rsdn.flame.comp:


>> Сингулярити не использует JIT. Может хватит уже демонстрировать полное незнание предмета?

S>Тоесть всетаки интерпритатор? о0

Нет, там Bartok. Насколько я понимаю, это AOT Compiler. См. http://research.microsoft.com/act/
Re[14]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.06.08 17:07
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Сингулярити не использует JIT. Может хватит уже демонстрировать полное незнание предмета?


В C#, насколько я помню, есть массивы. Кто проверяет границы?
Re[16]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.06.08 21:25
Оценка:
Здравствуйте, WFrag, Вы писали:

>>> Сингулярити не использует JIT. Может хватит уже демонстрировать полное незнание предмета?

S>>Тоесть всетаки интерпритатор? о0

WF>Нет, там Bartok. Насколько я понимаю, это AOT Compiler.


Отличие от JIT, насколько я понимаю, заключается лишь в том, что AOT сохраняет результаты компиляции на диск? Т.е., при повторном запуске не надо еще раз перекомпилировать?

Однако, не из чего не следует, что качество кода при использовании этой технологии лучше, чем у JIT.
Re[12]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.06.08 23:57
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

Pzz>>Я что-то несколько потерял нить. Аппаратная защита помогает эффективно изолировать программы друг от друга и контроллировать доступ к аппаратуре. Того же самого можно добиться, запретив нативный код и гоняя все программы на интерпретаторе. Но это в любом случае будет медленнее, чем при использовании аппаратной защиты.


НС>При чем тут интерпретация? Я говорил про статический контроль.


Статический контроль не может проверить выход за пределы массива, если сложность вычисления индекса выше его понимания. То же самое относится к глубине рекурсии. Это можно, конечно, сделать проблемой программиста, заставив его использовать выражения не сложнее, чем 2*2 и запретив регурсию во всех случаях, кроме совсем очевидных. Но программировать так — все равно, что программировать в кандалах.

Я в принципе считаю статический контроль невредным изобретением. Позволяющим поймять многие типичные ошибки. В общем, развитие темы warning'ов в компиляторе. Но никакие warning'и не дают вам 100%-й гарантии надежности, а именно она нужна при отказе от защиты памяти времени исполнения.

Pzz>>Так что в чем ваш тезис, собственно? Что вообще защита не нужна, или что аппаратная не нужна?


Pzz>>В игрушечной системе можно, конечно, гонять весь код в интерпретаторе.


НС>В Сингуларити нет интерпретаторов. Там даже JIT нет.


А что там есть?

НС>Сингуларити на многих операциях быстрее обычных ОС. Как раз из-за отсутствия аппаратной защиты.


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

Pzz>>Обосновать можете?


НС>Могу. Достаточно верификатор сделать частью ОС, и не надо никого никуда лицензировать.


Это теоретически неразрешимая задача.
Re[17]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.06.08 02:39
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Отличие от JIT, насколько я понимаю, заключается лишь в том, что AOT сохраняет результаты компиляции на диск? Т.е., при повторном запуске не надо еще раз перекомпилировать?

Грубо говоря — да.
Pzz>Однако, не из чего не следует, что качество кода при использовании этой технологии лучше, чем у JIT.
Следует. Потому что Bartok, в отличие от JIT, знает, что нового кода в процессе никогда не появится. Поэтому можно проводить более агрессивный инлайнинг и глобальную оптимизацию.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[15]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.06.08 02:39
Оценка:
Здравствуйте, Pzz, Вы писали:
Pzz>В C#, насколько я помню, есть массивы. Кто проверяет границы?
Код.
В простых случаях JIT устраняет проверки на выход за границы. В сложных — к операции доступа добавляется одна ассемблерная инструкция.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[17]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 02:49
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Отличие от JIT, насколько я понимаю, заключается лишь в том, что AOT сохраняет результаты компиляции на диск? Т.е., при повторном запуске не надо еще раз перекомпилировать?


Pzz>Однако, не из чего не следует, что качество кода при использовании этой технологии лучше, чем у JIT.


В локальных оптимизациях JIT находится не в худшей ситуации, чем обычный компилятор. Разве что у него жесткие рамки на скорость самой компиляции. А вот в плане глобальных оптимизаций у него есть преимущества. Вот только что на ЛОРе я приводил тест (впрочем, лажовый тест, не для этого сайта), который в цикле вызывал функцию, подключенную динамической линковкой в случае C (вызов из .so) и динамической загрузкой класса в случае Java + вызов по интерфейсу (что на самом деле еще более "динамический" случай, в последнем примере имплементация вообще по HTTP грузилась).

Так вот Java просто взяла и заинлайнила виртуальный вызов по интерфейсу и порвала по скорости C-шный вариант, который честно вызывал функцию по указателю. А у Bartok-а еще больше преимуществ. Во-первых, это AOT, можно особо не торопиться и покорпеть над оптимизациями. А во-вторых, новый код подгружать нельзя -- можно инлайнить не заморачиваясь. Java же вынуждена отслеживать моменты, когда эта оптимизация перестает быть валидной и переоптимизировать код.
Re[13]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.06.08 02:56
Оценка:
Здравствуйте, Pzz, Вы писали:
Pzz>Я в принципе считаю статический контроль невредным изобретением. Позволяющим поймять многие типичные ошибки. В общем, развитие темы warning'ов в компиляторе. Но никакие warning'и не дают вам 100%-й гарантии надежности, а именно она нужна при отказе от защиты памяти времени исполнения.
Singularity дает 100% гарантию надежности. В чем проблема?

НС>>Сингуларити на многих операциях быстрее обычных ОС. Как раз из-за отсутствия аппаратной защиты.

Pzz>Существует масса экспериментальных ОС, которые прекрасно справляются с исследовательскими задачами в условиях лаборатории. К сожалению, жизнь сложнее тех частных случаев, с которыми так замечательно справляются экспериментальные ОС в лаборатории.
Основная проблема современных ОС — высокая стоимость системного вызова. Сингулярити показывает, как ее можно сократить еще примерно на порядок.
Естественно, промышленная ось должна очень-очень много что уметь; но главное принципиально уже доказано — модель работает. Никаких принципиальных причин получить худшие результаты при построении промышленной оси с софтной изоляцией процессов нет.

НС>>Могу. Достаточно верификатор сделать частью ОС, и не надо никого никуда лицензировать.

Pzz>Это теоретически неразрешимая задача.
К счастью, на практике она уже разрешена.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[16]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 05:52
Оценка:
Sinclair однажды (26 июня 2008 [Четверг] 06:39) писал в rsdn.flame.comp:

> Pzz>В C#, насколько я помню, есть массивы. Кто проверяет границы?

> Код.
> В простых случаях JIT устраняет проверки на выход за границы. В сложных — к операции доступа добавляется одна ассемблерная инструкция.
Синклер, глянь в этой ветке на пару сообщений выше.
Цитирую "Сингулярити не использует JIT."

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[17]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 06:02
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

S>Синклер, глянь в этой ветке на пару сообщений выше.

S>Цитирую "Сингулярити не использует JIT."

Ты бы вместо того, чтобы к словам цепляться, лучше бы освоился в технических вопросах. А то, честное слово, стыдно за таких безграмотных линуксоидов.

Да, в Сингулярити AOT. Но это несущественно, все отличие, по сути, в том, что он сразу делает трансляцию в нативный код, а не по мере выполнения кода (как JIT).
Re[18]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 06:09
Оценка:
WFrag однажды (26 июня 2008 [Четверг] 10:02) писал в rsdn.flame.comp:

> Ты бы вместо того, чтобы к словам цепляться, лучше бы освоился в технических вопросах. А то, честное слово, стыдно за таких безграмотных линуксоидов.

Ну должен же тут хоть ктото в недоделанном дотнете не разбираться.
Умников, хающих линух, но не разбирающихся в нем тут дофига.

> Да, в Сингулярити AOT. Но это несущественно, все отличие, по сути, в том, что он сразу делает трансляцию в нативный код, а не по мере выполнения кода (как JIT).

Ура, микрософт изобрел Gentoo Все апплодируют.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[19]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 06:13
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Ура, микрософт изобрел Gentoo Все апплодируют.


Ага. А теперь покажи мне в твоем Gentoo оптимизацию (инлайн) вызова функции из .so-шки из другого пакета. Поулыбаемся вместе.
Re[20]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 06:14
Оценка:
WFrag однажды (26 июня 2008 [Четверг] 10:13) писал в rsdn.flame.comp:

> Ага. А теперь покажи мне в твоем Gentoo оптимизацию (инлайн) вызова функции из .so-шки из другого пакета. Поулыбаемся вместе.

Статическая сборка?

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[21]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 06:22
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>WFrag однажды (26 июня 2008 [Четверг] 10:13) писал в rsdn.flame.comp:


>> Ага. А теперь покажи мне в твоем Gentoo оптимизацию (инлайн) вызова функции из .so-шки из другого пакета. Поулыбаемся вместе.

S>Статическая сборка?

Чёрта-с-два. Не будет инлайна. Будет чуть быстрее, но не более. И удачи тебе в поддержке такой системы.
Re[17]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.06.08 06:23
Оценка:
Здравствуйте, Sheridan, Вы писали:
S>Синклер, глянь в этой ветке на пару сообщений выше.
S>Цитирую "Сингулярити не использует JIT."
Это не очень важно. Барток построен по примерно тем же принципам. Под джитом в данном случае я имел в виду любой компилятор MSIL->native. Просто некоторые люди тут явно думают, что там бегает супермедленная виртуальная машина, которая интерпретирует код MSIL строчка за строчкой. Типа
if (operation == "ARRAY_ACCESS") then begin
  array_operand = array_table.lookup_slow(operand1);
    index_operand = calculator_engine.evaluate_slow_scalar(operand2);
    if (index_operand == previous_operand) then goto ARRAY_ACCESS_FAST;
    if (index_operand.type != "int32") then throw_slow new InvalidArgumentException("Variable i has wrong type!");
    if (index_operand.slow_as_int() > array_operand.calc_length_through_iteration()) 
      then throw_slow new ArrayOutOfBoundException("Variable i is to large!");
      else if index_operand.slow_as_int() < 0 
          then throw_slow new ArrayOutOfBoundException("Variable i is to small!");
end

Ну так вот: это неправда.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[22]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 06:36
Оценка:
WFrag однажды (26 июня 2008 [Четверг] 10:22) писал в rsdn.flame.comp:

>>> Ага. А теперь покажи мне в твоем Gentoo оптимизацию (инлайн) вызова функции из .so-шки из другого пакета. Поулыбаемся вместе.

> S>Статическая сборка?
> Чёрта-с-два.
Ну тогда объясни подробнее что это делает.
Напоминаю, я админ, не программер.

> Не будет инлайна. Будет чуть быстрее, но не более.

А инлайн прямотаки сверхприрост дает?

> И удачи тебе в поддержке такой системы.

revdep-rebuild

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[18]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 06:37
Оценка:
Sinclair однажды (26 июня 2008 [Четверг] 10:23) писал в rsdn.flame.comp:

> Ну так вот: это неправда.

Ну я рад за вас. Серьезно.
Осталось только поверить что дотнет чуть более доделанный, чем я думал.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[19]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.06.08 06:57
Оценка: +1
Здравствуйте, Sheridan, Вы писали:
>> Ну так вот: это неправда.
S>Ну я рад за вас. Серьезно.
S>Осталось только поверить что дотнет чуть более доделанный, чем я думал.
Он намного более доделанный, чем ты думаешь. Впрочем, это не изменить: тебе три года рассказывают про дотнет, ты продолжаешь изобретать бредни.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[23]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 07:17
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Ну тогда объясни подробнее что это делает.

S>Напоминаю, я админ, не программер.

Что именно объяснить?

>> Не будет инлайна. Будет чуть быстрее, но не более.

S>А инлайн прямотаки сверхприрост дает?

На моём тупом тесте (вызов функции из другого .c файла в слуаче C и вызов по интерфейсу в случае Java), C выдал 43.3 секунды, Java (после "прогрева", JIT/Hotspot в Java не сразу срабатывает) выдала 5.64 секунды.

>> И удачи тебе в поддержке такой системы.

S>revdep-rebuild

Ой не уверен, что он поможет. revdep-rebuild, AFAIK, просто ищет "сломанные" ссылки на символы и пересобирает соответствующие пакеты. Если же перекомпилить какую-то базовую библиотеку статикой, то вроде как ничего и не сломается.
Re[24]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 07:51
Оценка:
WFrag однажды (26 июня 2008 [Четверг] 11:17) писал в rsdn.flame.comp:

> S>Ну тогда объясни подробнее что это делает.

> S>Напоминаю, я админ, не программер.
> Что именно объяснить?
Что это за оптимизация такая

>>> Не будет инлайна. Будет чуть быстрее, но не более.

> S>А инлайн прямотаки сверхприрост дает?
> На моём тупом тесте (вызов функции из другого .c файла в слуаче C и вызов по интерфейсу в случае Java), C выдал 43.3 секунды, Java (после "прогрева", JIT/Hotspot в Java не сразу
> срабатывает) выдала 5.64 секунды.
Слушай, ты тесты явы то наверное проводил на коре квадро, а С на 8086?
Иначе никак не могу объяснить такие тормоза. Может с порядком ошибся, и не 43сек, а 0,43?

>>> И удачи тебе в поддержке такой системы.

> S>revdep-rebuild
> Ой не уверен, что он поможет. revdep-rebuild, AFAIK, просто ищет "сломанные" ссылки на символы и пересобирает соответствующие пакеты. Если же перекомпилить какую-то базовую
> библиотеку статикой, то вроде как ничего и не сломается.
Может быть, не проверял.
Во всяком случае static не пользую.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[25]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 07:59
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>WFrag однажды (26 июня 2008 [Четверг] 11:17) писал в rsdn.flame.comp:


>> S>Ну тогда объясни подробнее что это делает.

>> S>Напоминаю, я админ, не программер.
>> Что именно объяснить?
S>Что это за оптимизация такая

Очень простая. На пальцах это примерно так:

Есть функция, компилируем её в .a или в .so:
int func(int a, int b) {
  return a+b;
}


В другом файле есть код, её использующий:

int res = 0;
for(int i = 0; i < count; ++i) {
  res = func(res, i);
}


Так вот оптимизация заключается в том, что компилятор просто берет и встраивает код функции в цикл, т.е получаем эквивалентный код:
for(int i = 0; i < count; ++i) {
  res = res + i;
}


Так вот, ld/ld-linux (статический/динамический линкер) такой финт провернуть не могут (если неправ -- научите как их заставить ). Потому что информации на момент линковки в .so/.a недостаточно.

А самые умные компиляторы ещё и цикл выкинут заменив на выражение (count — 1) * count / 2. Этого Java, похоже, не осилила. Но по косвенным причинам, LLVM это сумел сделать. А LLVM — сюрприз — как раз и основан на концепте байткода

S>Слушай, ты тесты явы то наверное проводил на коре квадро, а С на 8086?


Нет, все на своем ноуте.

S>Иначе никак не могу объяснить такие тормоза. Может с порядком ошибся, и не 43сек, а 0,43?


См. выше. Java просто выкинула вызов функции вообще.
Re[26]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 08:11
Оценка:
WFrag однажды (26 июня 2008 [Четверг] 11:59) писал в rsdn.flame.comp:

> Есть функция, компилируем её в .a или в .so:

>
> int func(int a, int b) {
>   return a+b;
> }
>

>
> В другом файле есть код, её использующий:
>
>
> int res = 0;
> for(int i = 0; i < count; ++i) {
>   res = func(res, i);
> }
>

>
> Так вот оптимизация заключается в том, что компилятор просто берет и встраивает код функции в цикл, т.е получаем эквивалентный код:
>
> for(int i = 0; i < count; ++i) {
>   res = res + i;
> }
>

Ну и чем это отличается от статической линковки?

> S>Иначе никак не могу объяснить такие тормоза. Может с порядком ошибся, и не 43сек, а 0,43?

> См. выше. Java просто выкинула вызов функции вообще.
43сек это бред.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[27]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 08:20
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Ну и чем это отличается от статической линковки?


При статической линковке у тебя будет вызов функции. При инлайне такого вызова вообще не будет — код функции будет скопирован в цикл.

S>43сек это бред.


На самом деле, просто тест такой искусственный. Стоимость выполнения кода функции крайне мала по сравнению с кодом, который осуществляет её вызов (подготовка аргументов, вызов).
Re[28]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 08:24
Оценка:
WFrag однажды (26 июня 2008 [Четверг] 12:20) писал в rsdn.flame.comp:

> Здравствуйте, Sheridan, Вы писали:

>
> S>Ну и чем это отличается от статической линковки?
> При статической линковке у тебя будет вызов функции. При инлайне такого вызова вообще не будет — код функции будет скопирован в цикл.
man gcc
       -finline-functions
           Integrate all simple functions into their callers.  The compiler heuristically decides which functions are simple enough to be worth integrating in this way.

           If all calls to a given function are integrated, and the function is declared "static", then the function is normally not output as assembler code in its own right.

           Enabled at level -O3.

       -finline-functions-called-once
           Consider all "static" functions called once for inlining into their caller even if they are not marked "inline".  If a call to a given function is integrated, then the
           function is not output as assembler code in its own right.

           Enabled if -funit-at-a-time is enabled.

       -fearly-inlining
           Inline functions marked by "always_inline" and functions whose body seems smaller than the function call overhead early before doing -fprofile-generate instrumentation
           and real inlining pass.  Doing so makes profiling significantly cheaper and usually inlining faster on programs having large chains of nested wrapper functions.

А чем тогда это отличается от статической линковке при поддержке?

> S>43сек это бред.

> На самом деле, просто тест такой искусственный. Стоимость выполнения кода функции крайне мала по сравнению с кодом, который осуществляет её вызов (подготовка аргументов, вызов).
бред.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[29]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 08:33
Оценка: 1 (1) +1
Здравствуйте, Sheridan, Вы писали:

>> Здравствуйте, Sheridan, Вы писали:

>>
>> S>Ну и чем это отличается от статической линковки?
>> При статической линковке у тебя будет вызов функции. При инлайне такого вызова вообще не будет — код функции будет скопирован в цикл.
S>man gcc
S>
S>       -finline-functions
S>           Integrate all simple functions into their callers.  The compiler heuristically decides which functions are simple enough to be worth integrating in this way.

S>           If all calls to a given function are integrated, and the function is declared "static", then the function is normally not output as assembler code in its own right.

S>           Enabled at level -O3.

S>       -finline-functions-called-once
S>           Consider all "static" functions called once for inlining into their caller even if they are not marked "inline".  If a call to a given function is integrated, then the
S>           function is not output as assembler code in its own right.

S>           Enabled if -funit-at-a-time is enabled.

S>       -fearly-inlining
S>           Inline functions marked by "always_inline" and functions whose body seems smaller than the function call overhead early before doing -fprofile-generate instrumentation
S>           and real inlining pass.  Doing so makes profiling significantly cheaper and usually inlining faster on programs having large chains of nested wrapper functions.
S>


Да. Могу тебя порадовать. Это замечательно работает в пределах _одного_ .c файла. И тогда вкупе с раскруткой циклов C уделывает Java в два-три раза. Результат на моей машине — 1.8 секунды.

S>А чем тогда это отличается от статической линковке при поддержке?


Опять же. Инлайнить умеет gcc, а не ld/ld-linux.so. А статическую линковку делают вторые. Поэтому инлайнинг работает только в пределах одного компилируемого файла. Если ты делаешь вызов однострочной функции из, скажем, libgtk-x11-2.0.so никакой инлайнинг тебе не поможет. Именно поэтому в C++ для того, чтобы какой-то метод класса заинлайнился, его вписывают в заголовочные файлы. Тогда он попадает в каждый компилируемый файл, куда включается этот заголовок и компилятор имеет возможность его заинлайнить.

>> S>43сек это бред.

>> На самом деле, просто тест такой искусственный. Стоимость выполнения кода функции крайне мала по сравнению с кодом, который осуществляет её вызов (подготовка аргументов, вызов).
S>бред.

Можешь сам проверить. Могу дать исходники теста.
Re[30]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 08:49
Оценка:
WFrag однажды (26 июня 2008 [Четверг] 12:33) писал в rsdn.flame.comp:

> Да. Могу тебя порадовать. Это замечательно работает в пределах _одного_ .c файла.

Помоему инлайнинг внешних функций противоречит самой концепции С/С++, хотя не уверен
Да и с дальнейшей поддержкой тяжко будет.

> И тогда вкупе с раскруткой циклов

gcc умеет не только циклы оптимизировать.
в общем случае есть даже стандартные наборы оптимизаций:
       -O
       -O1 Optimize.  Optimizing compilation takes somewhat more time, and a lot more memory for a large function.

           With -O, the compiler tries to reduce code size and execution time, without performing any optimizations that take a great deal of compilation time.

           -O turns on the following optimization flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability -fcprop-registers -floop-optimize -fif-conversion -fif-conversion2
           -ftree-ccp -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants

           -O also turns on -fomit-frame-pointer on machines where doing so does not interfere with debugging.

           -O doesn’t turn on -ftree-sra for the Ada compiler.  This option must be explicitly specified on the command line to be enabled for the Ada compiler.

       -O2 Optimize even more.  GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff.  The compiler does not perform loop unrolling or function
           inlining when you specify -O2.  As compared to -O, this option increases both compilation time and the performance of the generated code.

           -O2 turns on all optimization flags specified by -O.  It also turns on the following optimization flags: -fthread-jumps -fcrossjumping -foptimize-sibling-calls -fcse-fol‐
           low-jumps  -fcse-skip-blocks -fgcse  -fgcse-lm -fexpensive-optimizations -fstrength-reduce -frerun-cse-after-loop  -frerun-loop-opt -fcaller-saves -fpeephole2 -fsched‐
           ule-insns  -fschedule-insns2 -fsched-interblock  -fsched-spec -fregmove -fstrict-aliasing -fdelete-null-pointer-checks -freorder-blocks  -freorder-functions -falign-func‐
           tions  -falign-jumps -falign-loops  -falign-labels -ftree-vrp -ftree-pre

           Please note the warning under -fgcse about invoking -O2 on programs that use computed gotos.

       -O3 Optimize yet more.  -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions, -funswitch-loops and -fgcse-after-reload options.

       -O0 Do not optimize.  This is the default.

       -Os Optimize for size.  -Os enables all -O2 optimizations that do not typically increase code size.  It also performs further optimizations designed to reduce code size.

           -Os disables the following optimization flags: -falign-functions  -falign-jumps  -falign-loops -falign-labels  -freorder-blocks  -freorder-blocks-and-partition
           -fprefetch-loop-arrays  -ftree-vect-loop-version

           If you use multiple -O options, with or without level numbers, the last such option is the one that is effective.

       Options of the form -fflag specify machine-independent flags.  Most flags have both positive and negative forms; the negative form of -ffoo would be -fno-foo.  In the table
       below, only one of the forms is listed---the one you typically will use.  You can figure out the other form by either removing no- or adding it.

       The following options control specific optimizations.  They are either activated by -O options or are related to ones that are.  You can use the following flags in the rare
       cases when "fine-tuning" of optimizations to be performed is desired.


>

> S>А чем тогда это отличается от статической линковке при поддержке?
> Опять же. Инлайнить умеет gcc, а не ld/ld-linux.so. А статическую линковку делают вторые. Поэтому инлайнинг работает только в пределах одного компилируемого файла. Если ты
> делаешь вызов однострочной функции из, скажем, libgtk-x11-2.0.so никакой инлайнинг тебе не поможет. Именно поэтому в C++ для того, чтобы какой-то метод класса заинлайнился, его
> вписывают в заголовочные файлы. Тогда он попадает в каждый компилируемый файл, куда включается этот заголовок и компилятор имеет возможность его заинлайнить.
Тоесть "давай наперегонки, только я на велосипеде, а ты на карачках"?
Я правильно понял, что С код специально ограничивали от инлайнинга?

> Можешь сам проверить. Могу дать исходники теста.

Давай.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[17]: Альтернативные ОС
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 26.06.08 09:03
Оценка:
Здравствуйте, Sheridan, Вы писали:

>> В простых случаях JIT устраняет проверки на выход за границы. В сложных — к операции доступа добавляется одна ассемблерная инструкция.

S>Синклер, глянь в этой ветке на пару сообщений выше.
S>Цитирую "Сингулярити не использует JIT."

Т.е. Синклеру нельзя ничего про обычный джит в обычном дотнет писать, раз сингулярити его не использует ?
Re[31]: Альтернативные ОС
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 26.06.08 09:06
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>WFrag однажды (26 июня 2008 [Четверг] 12:33) писал в rsdn.flame.comp:


>> Да. Могу тебя порадовать. Это замечательно работает в пределах _одного_ .c файла.

S>Помоему инлайнинг внешних функций противоречит самой концепции С/С++, хотя не уверен
S>Да и с дальнейшей поддержкой тяжко будет.

А с перформансом то что ?

S>Тоесть "давай наперегонки, только я на велосипеде, а ты на карачках"?

S>Я правильно понял, что С код специально ограничивали от инлайнинга?

Почему же ? Пусть линкер покажет, как он умеет инлайнить.
Re[18]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 09:07
Оценка:
Ikemefula однажды (26 июня 2008 [Четверг] 13:03) писал в rsdn.flame.comp:

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

А я откуда знал что у вас там джитов как блох на дворняге?

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[31]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 09:08
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>WFrag однажды (26 июня 2008 [Четверг] 12:33) писал в rsdn.flame.comp:


>> Да. Могу тебя порадовать. Это замечательно работает в пределах _одного_ .c файла.

S>Помоему инлайнинг внешних функций противоречит самой концепции С/С++, хотя не уверен
S>Да и с дальнейшей поддержкой тяжко будет.

Вообще, это оптимизация. В Java она работает совершенно прозрачно.

S>gcc умеет не только циклы оптимизировать.

S>в общем случае есть даже стандартные наборы оптимизаций:
S>
S>


Да я как бы в курсе.

S>Тоесть "давай наперегонки, только я на велосипеде, а ты на карачках"?

S>Я правильно понял, что С код специально ограничивали от инлайнинга?

Именно. В этом и был смысл теста — показать _глобальные оптимизации_, в данном случае, в Java, в Bartok случае должно быть также. Java, между прочим, выступала вообще в кандалах — имплементация функции (той самой, что делает сложение) в одном из тестов вообще _скачивалась по HTTP_. Т.е запускаешь тест, он _догружает по HTTP_ кусок кода, выполняет его в цикле и уделывает C Впрочем, только лишь на N-ый прогон тестового метода (в моем случае — 3-ий), ибо в Java эта оптимизация не сразу срабатывает, а тогда, когда Hotspot решает, что имеет смысл потратить немного времени CPU на оптимизацию.

>> Можешь сам проверить. Могу дать исходники теста.

S>Давай.

Поехали. Опять оговорюсь, тест — синтетический, т.е делать далеко идущи выводы из него не стоит.

dosum.c:
int dosum(int a, int b) {
    return a + b;
}


test4.c:
#include <stdio.h>
#include <time.h>

int dosum(int a, int b);

int main(int argc, char** argv) {
    int count1 = atoi(argv[1]);
    int count2 = atoi(argv[2]);
    long c = clock();
    int l = 0, i, j;
    for( j = 0; j < count1; ++j ) {
        for( i = 0; i < count2; ++i ) {
            l = dosum(l, i);
        }
    }
    long end = clock(); 
    printf( "l = %d\n", l );
    printf("%f\n", (float)(end - c) / (float)CLOCKS_PER_SEC);
    return 0;
}


DoSum.java:
public interface DoSum {
    int dosum(int a, int b);
}


DoSumImpl.java:
public class DoSumImpl implements DoSum {
    public int dosum(int a, int b) {
        return a + b;
    }
}


Test4.java:
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
import java.net.*;

public class Test4 {
    public static void main(String[] args) throws Exception {        
        int count1 = Integer.parseInt(args[1]);
        int count2 = Integer.parseInt(args[2]);
        // Можно заменить эту строку
        DoSum d = (DoSum) Class.forName(args[0]).newInstance();
        // Двумя вот этими, тогда код будет подгружаться с сервера (и локальные DoSumImpl.java/DoSumImpl.class можно вообще удалить):
        //ClassLoader cl = new URLClassLoader(new URL[] { new URL("http://wfrag.org/files/") });
        //DoSum d = (DoSum) cl.loadClass(args[0]).newInstance();

        // Прогреем JVM :)
        test(d, count1+1, count2+1);
        test(d, count1+2, count2+2);
        System.err.println("Real results");
        // А вот теперь реально замерим:
        test(d, count1, count2);
        test(d, count1, count2);
    }

    public static void test(DoSum d, int count1, int count2) throws Exception {
        ThreadMXBean mx = ManagementFactory.getThreadMXBean();
        long c = mx.getCurrentThreadCpuTime();
        int l = 0, i, j;
        for( j = 0; j < count1; ++j ) {
            for( i = 0; i < count2; ++i ) {
                l = d.dosum(l, i);
            }
        }
        long end = mx.getCurrentThreadCpuTime(); 
        System.err.println( "l = " + l);
        System.err.println((float)(end - c) / 1000000000);
    }
}


Поехали.

Динамическая линковка (C):
wfrag@fragentoo ~/test/1 $ gcc -O3 -funroll-loops -finline-functions dosum.c -o libdosum.so -shared
wfrag@fragentoo ~/test/1 $ gcc -O3 -funroll-loops -finline-functions -L. -ldosum test4.c 
wfrag@fragentoo ~/test/1 $ LD_LIBRARY_PATH=. ./a.out 10 1000000000
l = 451808768
48.170000


Статическая линковка (C):
wfrag@fragentoo ~/test/1 $ gcc -O3 -funroll-loops -finline-functions dosum.c -o libdosum.so -c
wfrag@fragentoo ~/test/1 $ gcc -O3 -funroll-loops -finline-functions -L. -ldosum test4.c 
wfrag@fragentoo ~/test/1 $ ./a.out 10 1000000000
l = 451808768
43.780000


"Склееный" случай (C):
wfrag@fragentoo ~/test/1 $ cat test4.c dosum.c  > test4combined.c
wfrag@fragentoo ~/test/1 $ gcc -O3 -funroll-loops -finline-functions test4combined.c 
wfrag@fragentoo ~/test/1 $ ./a.out 10 1000000000
l = 451808768
1.850000


Java (заметь, до запуска Java-код вообще не знает, что ему вызывать — имя класса, реализующего функциональность, передается параметром):
wfrag@fragentoo ~/test/1 $ /opt/sun-jdk-1.6.0.06/bin/javac Test4.java 
wfrag@fragentoo ~/test/1 $ /opt/sun-jdk-1.6.0.06/bin/java -cp . -XX:CompileThreshold=10 -server  Test4 DoSumImpl 10 1000000000
l = 1618564864
27.84
l = 490353676
30.24
Real results
l = 451808768
5.64
l = 451808768
5.65


В сумме Java, конечно, проиграла — много времени ушло на JIT-компиляцию ("разогрев"). Поэтому не пытайся мерять time-ом. Впрочем, если запускать тест не 1 раз, а в цикле раз 10, то Java и по суммарному времени должна обойти C с статической/динамической линковкой.
Re[32]: Альтернативные ОС
От: Sheridan Россия  
Дата: 26.06.08 09:16
Оценка:
Ikemefula однажды (26 июня 2008 [Четверг] 13:06) писал в rsdn.flame.comp:

>>> Да. Могу тебя порадовать. Это замечательно работает в пределах _одного_ .c файла.

> S>Помоему инлайнинг внешних функций противоречит самой концепции С/С++, хотя не уверен
> S>Да и с дальнейшей поддержкой тяжко будет.
> А с перформансом то что ?
А куда оно денется. с -O3 соберем.
Что с поддержкой?

> S>Тоесть "давай наперегонки, только я на велосипеде, а ты на карачках"?

> S>Я правильно понял, что С код специально ограничивали от инлайнинга?
> Почему же ? Пусть линкер покажет, как он умеет инлайнить.
Ясно. Тобишь тестировался именно линкер, тогда как со стороны явы тестировался весь комплекс. Замечательно.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[33]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 09:20
Оценка: +2
Здравствуйте, Sheridan, Вы писали:

S>Ясно. Тобишь тестировался именно линкер, тогда как со стороны явы тестировался весь комплекс. Замечательно.


А теперь загляни в каталог /usr/lib и посмотри сколько там работы для линкера Или посчитай количество .o файлов, скажем, для KDE или Gnome. Всех их связывать будет именно линкер.
Re[12]: Альтернативные ОС
От: Трурль  
Дата: 26.06.08 10:05
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Вобще говоря бинарник с управляемым кодом имеет очень интересное свойство: В нем есть вся информация которая есть в исходниках. За исключением форматирования и комментариев.

WH>Те исходники нам и не нужны.

С другой стороны, при наличии исходников, нам не нужны бинарники с управляемым кодом.
Re[13]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 10:44
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>С другой стороны, при наличии исходников, нам не нужны бинарники с управляемым кодом.


Ага. И как быстро будут работать, например, те же глобальные оптимизации? Ты предлагаешь в каждую динамичскую библиотеку вшивать её исходники?

Посмотри, например, на LLVM. Там байт-код как раз для этой цели и используется -- для оптимизаций.
Re[18]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 12:30
Оценка:
Здравствуйте, WFrag, Вы писали:

WF>В локальных оптимизациях JIT находится не в худшей ситуации, чем обычный компилятор. Разве что у него жесткие рамки на скорость самой компиляции.


Тем не менее, в худшей. Я, например, не очень понимаю, каким образом во время JIT можно сделать constant propagation, вынос инварианта из цикла, common subexpression elimination и т.п.

WF>А вот в плане глобальных оптимизаций у него есть преимущества.


Это правда. Кроме того, у него есть очевидное преимущество в плане использования результатов профилирования для выборов стратегии оптимизации.

Тем не менее, FAQ про DirectShow есть вопрос, будет ли DirectShow доступен через managed код. Ответ — "нет", по причинам произвидительности. Я думаю, это честный ответ.
Re[19]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 12:41
Оценка:
Здравствуйте, Pzz, Вы писали:

WF>>В локальных оптимизациях JIT находится не в худшей ситуации, чем обычный компилятор. Разве что у него жесткие рамки на скорость самой компиляции.


Pzz>Тем не менее, в худшей. Я, например, не очень понимаю, каким образом во время JIT можно сделать constant propagation, вынос инварианта из цикла, common subexpression elimination и т.п.


Не вижу проблем. Я вон даже пример приводил, где виртуальная функция была заинлайнена. LLVM, насколько я понимаю, именно над своим "биткодом" оптимизации делает.
Re[14]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 12:54
Оценка:
Здравствуйте, Sinclair, Вы писали:

Pzz>>Я в принципе считаю статический контроль невредным изобретением. Позволяющим поймять многие типичные ошибки. В общем, развитие темы warning'ов в компиляторе. Но никакие warning'и не дают вам 100%-й гарантии надежности, а именно она нужна при отказе от защиты памяти времени исполнения.

S>Singularity дает 100% гарантию надежности. В чем проблема?

Вы это повторяете, как мантру.

За счет чего сингулярити дает 100% гарантию? Какие при этом налагаются ограничения?

Pzz>>Существует масса экспериментальных ОС, которые прекрасно справляются с исследовательскими задачами в условиях лаборатории. К сожалению, жизнь сложнее тех частных случаев, с которыми так замечательно справляются экспериментальные ОС в лаборатории.

S>Основная проблема современных ОС — высокая стоимость системного вызова. Сингулярити показывает, как ее можно сократить еще примерно на порядок.

Сискол на линухе, который почти ничего не делает (gettimeofday(), например), занимает 1 микросекунду на довольно средненькой машине. Глядя на то, как в линухе реализована обработка сисколов, становится понятно, что его можно разогнать раз в 10, просто аккуратно перекодировав соответствующие места, без необходимости менять архитектуру. У них там в пути несколько сотен строк довольно развесистого сишного кода.

Это я к тому, что мешает использование именно аппаратной защиты. Плохому танцору известно, что мешает.
Re[15]: Альтернативные ОС
От: WolfHound  
Дата: 26.06.08 14:12
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Вы это повторяете, как мантру.

Это ты как мантру повторяешь про невозможность.

Pzz>За счет чего сингулярити дает 100% гарантию? Какие при этом налагаются ограничения?

Re[10]: Wine
Автор: WolfHound
Дата: 22.06.08
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: Альтернативные ОС
От: Cadet  
Дата: 26.06.08 14:20
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Купи мне винду и студию...


По твоим словам в другом топике у тебя дома виста есть . А отладчик можно бесплатный взять.
... << RSDN@Home 1.2.0 alpha 4 rev. 1091>>
Re[26]: Альтернативные ОС
От: Mr.Cat  
Дата: 26.06.08 15:08
Оценка:
Здравствуйте, WFrag, Вы писали:
WF>Так вот, ld/ld-linux (статический/динамический линкер) такой финт провернуть не могут (если неправ -- научите как их заставить ). Потому что информации на момент линковки в .so/.a недостаточно.

А они и не обязаны это уметь. Ибо UNIX-way, и каждый должен своим делом заниматься. Инструменты link-time оптимизации есть. Гуглите по "link-time optimization" (желатьльно с указанием целевой платформы). Вот, например: http://research.ac.upc.edu/pact01/wbt/debray.pdf.
Re[27]: Альтернативные ОС
От: WFrag США  
Дата: 26.06.08 15:24
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>А они и не обязаны это уметь. Ибо UNIX-way, и каждый должен своим делом заниматься. Инструменты link-time оптимизации есть. Гуглите по "link-time optimization" (желатьльно с указанием целевой платформы). Вот, например: http://research.ac.upc.edu/pact01/wbt/debray.pdf.


Согласен, какие-то оптимизации на x86 коде сделать можно. Вот только тот же LLVM всё равно их гораздо больше умеет и не в последнюю очередь за счёт своего представления кода. Ещё и на разных платформах работать будет.

Вот ещё интересная PDF-ка на эту тему: http://gcc.gnu.org/projects/lto/lto.pdf Собственно, там описывается ровно то, о чём я говорю — недостаток информации в объектных файлах и способ это обойти. Собственно, предлагается как раз вшивать в объектники промежуточного кода, который может использовать линкер для оптимизаци.
Re[17]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 26.06.08 15:33
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Отличие от JIT, насколько я понимаю, заключается лишь в том, что AOT сохраняет результаты компиляции на диск? Т.е., при повторном запуске не надо еще раз перекомпилировать?


Компиляция происходит при инсталляции приложения. И верификация тоже.

Pzz>Однако, не из чего не следует, что качество кода при использовании этой технологии лучше, чем у JIT.


Хуже или лучше, это второй вопрос. Ты тут нам рассказывал про интерпретатор.
&
Re[19]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 26.06.08 15:33
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Тем не менее, в худшей. Я, например, не очень понимаю, каким образом во время JIT можно сделать constant propagation, вынос инварианта из цикла, common subexpression elimination и т.п.


Вот в том то и проблема, что ты не понимаешь. Текущий JIT уже, к примеру, умеет выкидывать проверки границ массива в цикле.
&
Re[20]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 19:25
Оценка:
Здравствуйте, WFrag, Вы писали:

Pzz>>Тем не менее, в худшей. Я, например, не очень понимаю, каким образом во время JIT можно сделать constant propagation, вынос инварианта из цикла, common subexpression elimination и т.п.


WF>Не вижу проблем. Я вон даже пример приводил, где виртуальная функция была заинлайнена. LLVM, насколько я понимаю, именно над своим "биткодом" оптимизации делает.


Вы не видите проблем как специалист по компиляторам, или как дилетант, не осознающий ограниченности своих знаних?

Я не вижу проблем сделать инлайнинг на уровне ассемблера или байт-кода — вставил нужный код в нужное место, прошелся peephole'м и все дела. Можно даже peephole'м не проходиться, если не знаешь, что это такое

Но как, видя байткод, а не синтаксическое дерево, сделать data flow analysis или вынос инварианта из цикла, я ума не приложу.
Re[21]: Альтернативные ОС
От: Cyberax Марс  
Дата: 26.06.08 19:30
Оценка: +2
Здравствуйте, Pzz, Вы писали:

Pzz>Но как, видя байткод, а не синтаксическое дерево, сделать data flow analysis или вынос инварианта из цикла, я ума не приложу.

А какие проблемы? Строим дерево и делаем анализ. Байткод для этого вполне адекватен.
Sapienti sat!
Re[16]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 19:30
Оценка:
Здравствуйте, WolfHound, Вы писали:

Pzz>>Вы это повторяете, как мантру.

WH>Это ты как мантру повторяешь про невозможность.

Ну да. Вы утверждаете, что в природе существует некоторое чудо. Вполне справедливо, что на вас лежит бремя доказательства. По дефолту чудес не бывает

Pzz>>За счет чего сингулярити дает 100% гарантию? Какие при этом налагаются ограничения?

WH>Re[10]: Wine
Автор: WolfHound
Дата: 22.06.08


За счет чего осуществляется гарантия того, что программа не вылезет из своей песочницы?
Re[18]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 19:34
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Компиляция происходит при инсталляции приложения. И верификация тоже.


Эта подробность на что-нибудь влияет?

Pzz>>Однако, не из чего не следует, что качество кода при использовании этой технологии лучше, чем у JIT.


НС>Хуже или лучше, это второй вопрос. Ты тут нам рассказывал про интерпретатор.


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

Поэтому при обсуждении вопроса о нужности или ненужности чего-нибудь аппаратного вполне уместен вопрос о производительности.
Re[20]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 19:36
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Вот в том то и проблема, что ты не понимаешь. Текущий JIT уже, к примеру, умеет выкидывать проверки границ массива в цикле.


Которые евонный же компилятор туда и вставил. Хотел бы я посмотреть, как он выкинет мой инвариант, а не свой собственный.

Вообще, я в этом вопросе вполне верю мелкософту, который в FAQ про DirectShow прямо утверждает, что DirectShow не будет managed по причине производительности. Ссылку я уже приводил, лень повторяться, но гугль никто не отменял.
Re[22]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 19:56
Оценка: -1 :)
Здравствуйте, Cyberax, Вы писали:

Pzz>>Но как, видя байткод, а не синтаксическое дерево, сделать data flow analysis или вынос инварианта из цикла, я ума не приложу.

C>А какие проблемы? Строим дерево и делаем анализ. Байткод для этого вполне адекватен.

Байткод это ассемблер некоторой абстрактной машины. К тому времени, когда программа стала байткодом, много существенной информации об исходном коде уже утеряно.
Re[21]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 26.06.08 20:03
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Вообще, я в этом вопросе вполне верю мелкософту


Нет никакого мелкософта, есть куча разных команд, каждая из которых в определенных пределах имеет возможность маневра. И я не одну такую команду знаю. Ровно как знаю и другие команды, например HPC team, которые считают не так. Бывает даже совсем забавно, когда команду, работавшую над первым Лонгхорном, заменяют на толпу индусов и менеджеров, почти все наработки выкидывают, Олчина уволняют, и в итоге выпускают совсем другой Лонгхорн. Делать из этого какие то технологические выводы, имхо, не стоит.
&
Re[19]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 26.06.08 20:03
Оценка:
Здравствуйте, Pzz, Вы писали:

НС>>Компиляция происходит при инсталляции приложения. И верификация тоже.


Pzz>Эта подробность на что-нибудь влияет?


Эта подробность отвечает на твой вопрос. как обойтись без подписи всех экзешников.

НС>>Хуже или лучше, это второй вопрос. Ты тут нам рассказывал про интерпретатор.


Pzz>Мне тут рассказывают, что аппаратная защита не нужна.


Верно.

Pzz> Аппаратная защита, как и все аппаратное — это способ чего-нибудь ускорить по сравнению с чисто софтверной реализацией.


Софтверная защита в исполнении Сингулярити не заменяет, а устраняет большую часть защиты. Вот и весь фокус.

Pzz> Так можно договориться и до того, что графические акселераторы не нужны, и рисовать все по точкам.


Аналогии не годятся в качестве доказательства.
&
Re[17]: Альтернативные ОС
От: WolfHound  
Дата: 26.06.08 20:03
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну да. Вы утверждаете, что в природе существует некоторое чудо.

Мы с этими "чудесами" регулярно имеем дело.

Pzz>Вполне справедливо, что на вас лежит бремя доказательства. По дефолту чудес не бывает

Если не веришь возьми тот же C# и попробуй проехаться по памяти без использования unsafe и нативного кода.
А мы похихикаем.

Таже фигня с еще очень большим колличеством языков.

Ибо создать правила написания доказательств (систему типов) и их проверяльщик для столь тривиальных гарантий как отсутствие порчи памяти задача тривиальная.

Pzz>За счет чего осуществляется гарантия того, что программа не вылезет из своей песочницы?

При правильной системе типов по памяти она проехаться не сможет.
Как следствие получить доступ ни к чему кроме того что ей дала ОСь не сможет.
А ОСь ее никуда кроме песочници не пустит.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[23]: Альтернативные ОС
От: Cyberax Марс  
Дата: 26.06.08 20:03
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>Байткод это ассемблер некоторой абстрактной машины. К тому времени, когда программа стала байткодом, много существенной информации об исходном коде уже утеряно.

Неправда. Байт-код .NET/Java восстанавливается до исходника почти на 100%. Код LLVM так не всегда позволяет делать, но для анализа в нём информации вполне достаточно.
Sapienti sat!
Re[23]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 26.06.08 20:05
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Байткод это ассемблер некоторой абстрактной машины. К тому времени, когда программа стала байткодом, много существенной информации об исходном коде уже утеряно.


Рефлектор доказывает, что никакая существенная для control flow анализа информация при компиляции в IL не теряется.
&
Re[23]: Альтернативные ОС
От: WolfHound  
Дата: 26.06.08 20:07
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Байткод это ассемблер некоторой абстрактной машины. К тому времени, когда программа стала байткодом, много существенной информации об исходном коде уже утеряно.

Скажи это рефлектору.
А если байткод можно декомпилировать в человекочитаемый код... то это твой утверждение как бы это по мягче сказать...
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 20:08
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Софтверная защита в исполнении Сингулярити не заменяет, а устраняет большую часть защиты. Вот и весь фокус.


OK, пойдем по 25-му кругу.

За счет чего конкретно сингулярити обеспечивает софтверную защиту, делая это надежно и эффективно?

НС>Аналогии не годятся в качестве доказательства.


Повторения одной и той же мантры тоже.
Re[21]: Альтернативные ОС
От: WolfHound  
Дата: 26.06.08 20:11
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>За счет чего конкретно сингулярити обеспечивает софтверную защиту, делая это надежно и эффективно?

За счет системы типов.
Указание типов суть доказательство того что нет проездов по памяти.
Проверка того что типы совпадают тривиальна.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[18]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 20:13
Оценка:
Здравствуйте, WolfHound, Вы писали:

Pzz>>Вполне справедливо, что на вас лежит бремя доказательства. По дефолту чудес не бывает

WH>Если не веришь возьми тот же C# и попробуй проехаться по памяти без использования unsafe и нативного кода.
WH>А мы похихикаем.

C# делает кучу проверок в рантайме. Что дороже, чем использовать аппаратную защиту памяти.

Pzz>>За счет чего осуществляется гарантия того, что программа не вылезет из своей песочницы?

WH>При правильной системе типов по памяти она проехаться не сможет.

У оси нет гарантии, что при получении байткода использовалась правильная система типов.

WH>Как следствие получить доступ ни к чему кроме того что ей дала ОСь не сможет.

WH>А ОСь ее никуда кроме песочници не пустит.

Это при условии, что ось в состоянии защитить свою собственную память.
Re[19]: Альтернативные ОС
От: Cyberax Марс  
Дата: 26.06.08 20:15
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>У оси нет гарантии, что при получении байткода использовалась правильная система типов.

Есть. Оно доказывается с помощью процедуры, называемой "верификация".

Pzz>Это при условии, что ось в состоянии защитить свою собственную память.

Способна, способна. Можешь мне поверить — я далеко не сторонник Сингулярности.
Sapienti sat!
Re[19]: Альтернативные ОС
От: WolfHound  
Дата: 26.06.08 20:21
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>C# делает кучу проверок в рантайме.

1)Не такую уж кучу.
2)Большинство из них можно устранить немного более умным оптимизатором.
Из кода вида:
for (int i = 0; i < arr.Length; ++i)
{
    ...arr[i]...
}

Уже научились устранять проверки.

Pzz>Что дороже, чем использовать аппаратную защиту памяти.

Даже учитывая что еще очень много чего можно устранить это не правда.

Pzz>У оси нет гарантии, что при получении байткода использовалась правильная система типов.

Есть.
Система типов прошита в байткод.

Pzz>Это при условии, что ось в состоянии защитить свою собственную память.

Как нефиг делать.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[22]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 20:31
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>За счет системы типов.

WH>Указание типов суть доказательство того что нет проездов по памяти.
WH>Проверка того что типы совпадают тривиальна.

Статически или в рантайме?
Re[20]: Альтернативные ОС
От: Cyberax Марс  
Дата: 26.06.08 20:32
Оценка:
Здравствуйте, WolfHound, Вы писали:

Pzz>>Что дороже, чем использовать аппаратную защиту памяти.

WH>Даже учитывая что еще очень много чего можно устранить это не правда.
И это тоже неправда. Я уже показывал способы получить очень дешовое переключение контекстов с аппаратной защитой, если её слегка усовершенствовать.
Sapienti sat!
Re[23]: Альтернативные ОС
От: WolfHound  
Дата: 26.06.08 20:34
Оценка:
Здравствуйте, Pzz, Вы писали:

WH>>За счет системы типов.

WH>>Указание типов суть доказательство того что нет проездов по памяти.
WH>>Проверка того что типы совпадают тривиальна.
Pzz>Статически или в рантайме?
Статически.
В рантайме только явные привидения от базы к потомку.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: Альтернативные ОС
От: WolfHound  
Дата: 26.06.08 20:38
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>И это тоже неправда. Я уже показывал способы получить очень дешовое переключение контекстов с аппаратной защитой, если её слегка усовершенствовать.

Она всеравно не позволяет получить такую же гранулярность защиты что и софтварная защита.
Ну не сможешь ты аппаратно контролировать кто что куда пишет и читает с точностью до бита и проверками типов.
К тому же не факт что тот способ будет гарантированно дешевле.

ЗЫ Кстати я придумал систему типов в которой можно доказать отсутствие рейскондишенев имея расшаренные изменяемые данные между потоками.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[24]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 20:42
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Статически.

WH>В рантайме только явные привидения от базы к потомку.

Я тогда не очень понимаю. Если я могу использовать массивы и могу вычислять индекс в массиве, каким образом статически можно доказать, что я не выскочу за пределы массива?
Re[22]: Альтернативные ОС
От: Cyberax Марс  
Дата: 26.06.08 20:48
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>И это тоже неправда. Я уже показывал способы получить очень дешовое переключение контекстов с аппаратной защитой, если её слегка усовершенствовать.

WH>Она всеравно не позволяет получить такую же гранулярность защиты что и софтварная защита.
WH>Ну не сможешь ты аппаратно контролировать кто что куда пишет и читает с точностью до бита и проверками типов.
Да. Но другой вопрос: а нужно ли нам это? Практически оказалось, что гранулярности с точностью до процесса нам вполне достаточно. В конце концов, в самом .NET тоже мало кто использует CAS внутри прикладного кода для чего-то своего — обычно просто есть разделение на "системный" и прикладной код.

WH>К тому же не факт что тот способ будет гарантированно дешевле.

Ну так он уже на ARMах реализован.

WH>ЗЫ Кстати я придумал систему типов в которой можно доказать отсутствие рейскондишенев имея расшаренные изменяемые данные между потоками.

С какой строгостью? Тупую проверку, что они все обязательно будут под локом не считаем.
Sapienti sat!
Re[25]: Альтернативные ОС
От: Cyberax Марс  
Дата: 26.06.08 20:48
Оценка: +2
Здравствуйте, Pzz, Вы писали:

Pzz>Я тогда не очень понимаю. Если я могу использовать массивы и могу вычислять индекс в массиве, каким образом статически можно доказать, что я не выскочу за пределы массива?

Доказываешь, что индекс не может превысить границы. Это воможно не всегда, но в достаточно многих случаях.
Sapienti sat!
Re[26]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 23:09
Оценка:
Здравствуйте, Cyberax, Вы писали:

Pzz>>Я тогда не очень понимаю. Если я могу использовать массивы и могу вычислять индекс в массиве, каким образом статически можно доказать, что я не выскочу за пределы массива?

C>Доказываешь, что индекс не может превысить границы. Это воможно не всегда, но в достаточно многих случаях.

Ну т.е., криптографика какая-нибудь, которая сочетает замысловатые вычисления с активным использованием полувычисленного в качестве индекса в таблице, будет работать медленно, т.к. все время придется "вручную" проверять выход за границу таблицы. И то же самое относится к обработке изображения и звука.
Re[27]: Альтернативные ОС
От: Cyberax Марс  
Дата: 26.06.08 23:33
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну т.е., криптографика какая-нибудь, которая сочетает замысловатые вычисления с активным использованием полувычисленного в качестве индекса в таблице, будет работать медленно, т.к. все время придется "вручную" проверять выход за границу таблицы. И то же самое относится к обработке изображения и звука.

Да, примерно так.
Sapienti sat!
Re[28]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 23:36
Оценка:
Здравствуйте, Cyberax, Вы писали:

Pzz>>Ну т.е., криптографика какая-нибудь, которая сочетает замысловатые вычисления с активным использованием полувычисленного в качестве индекса в таблице, будет работать медленно, т.к. все время придется "вручную" проверять выход за границу таблицы. И то же самое относится к обработке изображения и звука.

C>Да, примерно так.

Ну т.е., очередная игрушка "теоретиков" с целью опробовать некоторые идеи?
Re[29]: Альтернативные ОС
От: Cyberax Марс  
Дата: 26.06.08 23:39
Оценка:
Здравствуйте, Pzz, Вы писали:

C>>Да, примерно так.

Pzz>Ну т.е., очередная игрушка "теоретиков" с целью опробовать некоторые идеи?
Почему? Оно реально работает на практике. Не весь же код представляет из себя хардкорную криптографию с обработкой изображений.

Исследования сейчас идут по поводу как ещё можно верифицируемость увеличить с помощью явных способов.
Sapienti sat!
Re[30]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.06.08 23:51
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>>>Да, примерно так.

Pzz>>Ну т.е., очередная игрушка "теоретиков" с целью опробовать некоторые идеи?
C>Почему? Оно реально работает на практике. Не весь же код представляет из себя хардкорную криптографию с обработкой изображений.

Потому, что эта цацка забирает последние мегагерцы на свои бесчеловечные эксперименты именно тогда, когда их и без нее не хватает, чтобы сберечь их там, где и без нее хорошо.

А так, я вообще с симпатией отношусь ко всяким там теоретическим игрушкам. Plan9, Inferno, Singularity. Haskell опять же. Уважаю, да. Я не какой-нибудь там мракобес . Мелкософт уважаю немного меньше, потому что я не слышал до сих пор, чтобы что-нибудь заметное в computer science из них вывалилось.

C>Исследования сейчас идут по поводу как ещё можно верифицируемость увеличить с помощью явных способов.


Я может чего не понимаю, но по-моему верификатор должен быть частью компилятора, а не интерпретатора . И говорить свои слова он должен программисту в лицо, а не пользователю, который вообще не при чем.
Re[31]: Альтернативные ОС
От: WFrag США  
Дата: 27.06.08 01:51
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я может чего не понимаю, но по-моему верификатор должен быть частью компилятора, а не интерпретатора . И говорить свои слова он должен программисту в лицо, а не пользователю, который вообще не при чем.


В компиляторе он тоже есть, на более высоком уровне. Если ты попробуешь вызвать на объекте метод, которого у него нет, тебе компилятор об этом сразу скажет и программа не скомпилируется. А вот если ты руками байт-код сфабрикуешь, и попробуешь его скормить такой машине с верификатором, то именно верификатор не позволит тебе этот код выполнить. В Java такая верификация уже цать лет, как работает. В частности, позволяя исполнять, и даже JIT-ить в нативный код апплеты и при этом быть уверенным, что они не сделают ничего лишнего.
Re[25]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.06.08 02:23
Оценка:
Здравствуйте, Pzz, Вы писали:
Pzz>Я тогда не очень понимаю. Если я могу использовать массивы и могу вычислять индекс в массиве, каким образом статически можно доказать, что я не выскочу за пределы массива?
Это не имеет отношения к теме. Аппаратная защита контролем границ массивов не занимается. И вряд ли когда-нибудь будет — слишком дорого.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: Альтернативные ОС
От: WFrag США  
Дата: 27.06.08 02:27
Оценка:
Здравствуйте, Pzz, Вы писали:

WF>>Не вижу проблем. Я вон даже пример приводил, где виртуальная функция была заинлайнена. LLVM, насколько я понимаю, именно над своим "биткодом" оптимизации делает.


Pzz>Вы не видите проблем как специалист по компиляторам, или как дилетант, не осознающий ограниченности своих знаних?


Я читаю то, что написано на сайте того же LLVM. И смотрю, что он умеет.

Pzz>Я не вижу проблем сделать инлайнинг на уровне ассемблера или байт-кода — вставил нужный код в нужное место, прошелся peephole'м и все дела.


Это плохой инлайнинг. Он не позволит тебе соптимизировать функцию, как одно целое. Например, соптимизировать регистры. Вынести инвариант из цикла.

Pzz>Можно даже peephole'м не проходиться, если не знаешь, что это такое


Я еще в детстве, лет двенадцать назад с книжки компилятор C переписывал и там была такая оптимизация.

Pzz>Но как, видя байткод, а не синтаксическое дерево, сделать data flow analysis или вынос инварианта из цикла, я ума не приложу.


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

Между прочим, тот же gcc оптимизации делает совсем не на синтаксическом дереве. А на внтуреннем представлении кода, в частности, на коде, представленном в [http://en.wikipedia.org/wiki/Static_single_assignment_form]SSA[/url] форме. А у LLVM, сюрприз, как раз "биткод" с расчетом на SSA сделан.
Re[15]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.06.08 02:41
Оценка: +1
Здравствуйте, Pzz, Вы писали:
Pzz>За счет чего сингулярити дает 100% гарантию? Какие при этом налагаются ограничения?
Предлагаю пойти и прочитать одну обзорную статью про Singulrity, чтобы не задавать в тридцатый раз дурацкие вопросы.

Pzz>Сискол на линухе, который почти ничего не делает (gettimeofday(), например), занимает 1 микросекунду на довольно средненькой машине. Глядя на то, как в линухе реализована обработка сисколов, становится понятно, что его можно разогнать раз в 10, просто аккуратно перекодировав соответствующие места, без необходимости менять архитектуру. У них там в пути несколько сотен строк довольно развесистого сишного кода.

Я уже приводил тут ссылку на статью, где сравнивались характеристики систем по отношению к межпроцессному обмену информацией. Софтная изоляция рулит неподетски.
Pzz>Это я к тому, что мешает использование именно аппаратной защиты. Плохому танцору известно, что мешает.
Ага. Плохому программисту обычно мешает неумение и нежелание читать.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[23]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.06.08 03:32
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, Cyberax, Вы писали:


Pzz>>>Но как, видя байткод, а не синтаксическое дерево, сделать data flow analysis или вынос инварианта из цикла, я ума не приложу.

C>>А какие проблемы? Строим дерево и делаем анализ. Байткод для этого вполне адекватен.

Pzz>Байткод это ассемблер некоторой абстрактной машины. К тому времени, когда программа стала байткодом, много существенной информации об исходном коде уже утеряно.

Это в случае, когда байткод выбран неудачно. Современные байткоды пишутся так, чтобы существенной информации не терялось.
Вообще, есть очень хорошая серия книг Аппеля, "Modern compiler implementation". При желании, можно найти в сети. Очень рекомендую почитать — там много написано про то, как вообще работают оптимизирующие компиляторы.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[26]: Альтернативные ОС
От: DOOM Россия  
Дата: 27.06.08 04:06
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Это не имеет отношения к теме. Аппаратная защита контролем границ массивов не занимается. И вряд ли когда-нибудь будет — слишком дорого.


Как это не имеет? Если у всех процессов общая память должны же быть гарантии, что один процесс не съест все остальные...
Re[22]: Альтернативные ОС
От: DOOM Россия  
Дата: 27.06.08 04:08
Оценка:
Здравствуйте, WFrag, Вы писали:


Pzz>>Но как, видя байткод, а не синтаксическое дерево, сделать data flow analysis или вынос инварианта из цикла, я ума не приложу.


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


WF>Между прочим, тот же gcc оптимизации делает совсем не на синтаксическом дереве. А на внтуреннем представлении кода, в частности, на коде, представленном в [http://en.wikipedia.org/wiki/Static_single_assignment_form]SSA[/url] форме. А у LLVM, сюрприз, как раз "биткод" с расчетом на SSA сделан.


Да и в книге дракона написано, что оптимизация идет на стадии кодогенерации, а не синтаксического анализа или трансляции.
Re[27]: Альтернативные ОС
От: WFrag США  
Дата: 27.06.08 04:26
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Как это не имеет? Если у всех процессов общая память должны же быть гарантии, что один процесс не съест все остальные...


Выход за границы массива это далеко не всегда выход за границы памяти процесса.
Re[28]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.06.08 05:16
Оценка: 1 (1)
Здравствуйте, WFrag, Вы писали:
WF>Выход за границы массива это далеко не всегда выход за границы памяти процесса.
На самом деле Doom прав. Никаких "границ процесса" в софтной изоляции не должно быть — не хватит адресного пространства.
Вся идея как раз в том, что данные могут располагаться более-менее вперемешку. Просто есть жесткий контроль за указателями, в частности — никакой арифметики. Благодаря этому всегда есть гарантия, что никакой процесс никогда не увидит чужие данные — у него просто нет средств это сделать.
Зато можно получить очень дешевый маршалинг без копирования — просто система явно вносит указатель на данные процесса-источника в "область видимости" процесса-приемника.

Единственное место, где в управляемой среде остается арифметика указателей — это доступ к массивам. Поэтому все операции доступа к массивам обязаны проходить range check.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[26]: Альтернативные ОС
От: Sergey Россия  
Дата: 27.06.08 06:34
Оценка:
Sinclair пишет:

> Pzz>Я тогда не очень понимаю. Если я могу использовать массивы и могу

> вычислять индекс в массиве, каким образом статически можно доказать, что
> я не выскочу за пределы массива?
> Это не имеет отношения к теме. Аппаратная защита контролем границ
> массивов не занимается. И вряд ли когда-нибудь будет — слишком дорого.

У Бабаяна кстати на эту тему (аппаратная защита всего на свете) что-то
было. Не понятно правда чем там дело кончилось.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[19]: Альтернативные ОС
От: squid  
Дата: 27.06.08 07:58
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Тем не менее, FAQ про DirectShow есть вопрос, будет ли DirectShow доступен через managed код. Ответ — "нет", по причинам произвидительности. Я думаю, это честный ответ.


Честный ответ — MS на него просто забили

DirectShowLib это доказывает. Там ведь просто куча интерфейсов, весь код выполняется в недрах... Другое дело — писать фильтры, где будет реальная обработка видео, например. Но их никто на C# писать и не призывает.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[27]: Альтернативные ОС
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.06.08 09:45
Оценка:
Здравствуйте, Sergey, Вы писали:

S>У Бабаяна кстати на эту тему (аппаратная защита всего на свете) что-то

S>было. Не понятно правда чем там дело кончилось.

У бабы яна много чего было. Больше на словах.
Re[28]: Альтернативные ОС
От: Cyberax Марс  
Дата: 27.06.08 11:45
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>У бабы яна много чего было. Больше на словах.

А ты вообще мог бы помолчать, если сказать ничего не можешь по сути.

Схема защиты памяти в бабаяновских "Эльбрусах" была успешно реализована ещё в OS/390 и Sun SPARC — там старший бит мог использоваться для указания того, что данные в памяти являются указателем. Соответственно, для операции с ним нужны были привиллегированые операции.
Sapienti sat!
Re[27]: Альтернативные ОС
От: Cyberax Марс  
Дата: 27.06.08 11:47
Оценка:
Здравствуйте, DOOM, Вы писали:

S>>Это не имеет отношения к теме. Аппаратная защита контролем границ массивов не занимается. И вряд ли когда-нибудь будет — слишком дорого.

DOO>Как это не имеет? Если у всех процессов общая память должны же быть гарантии, что один процесс не съест все остальные...
А как он это может сделать? Адресной арифметики нет, до другого процесса ты можешь добраться только по графу ссылок. Т.е. если тебе не дадут ссылку на объект в другом процессе — ты до другого процесса просто никак не доберёшься.
Sapienti sat!
Re[23]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 11:59
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Да. Но другой вопрос: а нужно ли нам это?

Да.

C>Практически оказалось, что гранулярности с точностью до процесса нам вполне достаточно.

Ага... то-то постоянно всякие переполнения буфера находят...

C>В конце концов, в самом .NET тоже мало кто использует CAS внутри прикладного кода для чего-то своего — обычно просто есть разделение на "системный" и прикладной код.

В .NET практически 100% кода safe.
А в safe коде никаких проездов нет и быть не может.
А что касается CAS то это очередной костыль и при правильной системе типов он вобще не нужен.

C>Ну так он уже на ARMах реализован.

Еще раз прочитай то что я написал.

C>С какой строгостью?

100%

C>Тупую проверку, что они все обязательно будут под локом не считаем.

Что значит тупую проверку?
Для изменяемых данных всегда нужно проверять верность синхронизации.
Так что под твою фразу можно подвести что угодно.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[27]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 12:05
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>Ну т.е., криптографика какая-нибудь, которая сочетает замысловатые вычисления с активным использованием полувычисленного в качестве индекса в таблице, будет работать медленно, т.к. все время придется "вручную" проверять выход за границу таблицы.

С индексом размером байт по таблице из 256 элементов?
Так такая проверка устраняется на раз.

Pzz>И то же самое относится к обработке изображения и звука.

Не скажу за звук я с ним дел не имел но про обработку изображений ты гонишь.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[24]: Альтернативные ОС
От: Cyberax Марс  
Дата: 27.06.08 12:31
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Да. Но другой вопрос: а нужно ли нам это?

WH>Да.
Ну, ты знаешь мой ответ

C>>Практически оказалось, что гранулярности с точностью до процесса нам вполне достаточно.

WH>Ага... то-то постоянно всякие переполнения буфера находят...
А пофиг. Главное от них повреждения уменьшить.

C>>В конце концов, в самом .NET тоже мало кто использует CAS внутри прикладного кода для чего-то своего — обычно просто есть разделение на "системный" и прикладной код.

WH>В .NET практически 100% кода safe.
Да? И ты захочешь дать какому-нибудь Silverlight-приложению доступ ко всей файловой системе?

C>>Ну так он уже на ARMах реализован.

WH>Еще раз прочитай то что я написал.
Что именно?

C>>С какой строгостью?

WH>100%
Я имею в виду, он будет понимать, например, самопальные механизмы синхронизации?

WH>Для изменяемых данных всегда нужно проверять верность синхронизации.

WH>Так что под твою фразу можно подвести что угодно.
Объясню чуть позже, сейчас занят.
Sapienti sat!
Re[20]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 13:07
Оценка:
Здравствуйте, squid, Вы писали:

S>DirectShowLib это доказывает. Там ведь просто куча интерфейсов, весь код выполняется в недрах... Другое дело — писать фильтры, где будет реальная обработка видео, например. Но их никто на C# писать и не призывает.


У нас вообще тема беседы заключается в том, чего стоит защита памяти методом managed code в терминах производительности.

То, что производительность нужна не всегда, это очевидно.
Re[25]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 13:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

WH>>Ага... то-то постоянно всякие переполнения буфера находят...

C>А пофиг. Главное от них повреждения уменьшить.
Ну ты знаешь мой ответ.

C>Да? И ты захочешь дать какому-нибудь Silverlight-приложению доступ ко всей файловой системе?

А с чего ты взял что он ее получит?
Его даже браузер не получит.

WH>>Еще раз прочитай то что я написал.

C>Что именно?
Что хард будет всегда быстрее софтовых проверок.
Тем более что для того чтобы хард вобще что-то проверял с гранулярностью мельче чем процесс нужна помощь софта...
Проверки же софтовой защиты всегда тотальны. Ни один бит не пропустит.

C>Я имею в виду, он будет понимать, например, самопальные механизмы синхронизации?

Что значит самопальные?
Ручками на асме что-ли?
Так на асме тебе никто ничего писать не даст. Ибо дырища огромадная.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[26]: Альтернативные ОС
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.06.08 13:26
Оценка:
Здравствуйте, WolfHound, Вы писали:


C>>Я имею в виду, он будет понимать, например, самопальные механизмы синхронизации?

WH>Что значит самопальные?
WH>Ручками на асме что-ли?
WH>Так на асме тебе никто ничего писать не даст. Ибо дырища огромадная.

Зачем на асме ? Есть дельцы которые пишут вещи вроде SuspendThread ResumeThread
Re[23]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 14:10
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Да и в книге дракона написано, что оптимизация идет на стадии кодогенерации, а не синтаксического анализа или трансляции.


Я в свое время читал про то, как оптимизация делается в gcc. Там есть несколько проходов, некоторые используют синтаксическое дерево, некоторые — RTL (грубо говоря, некий внутренний эквиавалент байт-кода). Сейчас, наверное, все уже поменялось, но вряд ли в сторону упрощения
Re[16]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 14:12
Оценка:
Здравствуйте, Sinclair, Вы писали:

Pzz>>За счет чего сингулярити дает 100% гарантию? Какие при этом налагаются ограничения?

S>Предлагаю пойти и прочитать одну обзорную статью про Singulrity, чтобы не задавать в тридцатый раз дурацкие вопросы.

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

Общий совет на будущее: не надо рекламировать технологию, про которую вы не можете в нескольких предложениях рассказать ее суть. Выглядит несерьезно.
Re[22]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 14:13
Оценка:
Здравствуйте, WFrag, Вы писали:

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


Я вижу проблему как дилетант, осознающий ограниченность своих знаний.
Re[26]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 14:16
Оценка:
Здравствуйте, Sinclair, Вы писали:

Pzz>>Я тогда не очень понимаю. Если я могу использовать массивы и могу вычислять индекс в массиве, каким образом статически можно доказать, что я не выскочу за пределы массива?

S>Это не имеет отношения к теме. Аппаратная защита контролем границ массивов не занимается. И вряд ли когда-нибудь будет — слишком дорого.

Аппаратная защита позволяет изолировать программы друг от друга. При вылете за границы массива страдает только та программа, которая вылетела.

Если же не использовать аппаратную защиту, придется строго контроллировать вылет за границы массивов. Поэтому сравнивать эффективность аппаратной защиты с софтверной защитой памяти внутри процесса вполне уместно.
Re[32]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 14:18
Оценка:
Здравствуйте, WFrag, Вы писали:

WF>В компиляторе он тоже есть, на более высоком уровне. Если ты попробуешь вызвать на объекте метод, которого у него нет, тебе компилятор об этом сразу скажет и программа не скомпилируется.


Это понятно. Но если существует более-менее надежный способ отследить выход за границу массива и т.п. путем анализа программы, я хочу об этом услышать при компиляции, а не от изумленного пользователя. Это гораздо более пристальный анализ программы, чем контроль за соблюдением интерфейсов.
Re[24]: Альтернативные ОС
От: Cyberax Марс  
Дата: 27.06.08 14:25
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я в свое время читал про то, как оптимизация делается в gcc. Там есть несколько проходов, некоторые используют синтаксическое дерево, некоторые — RTL (грубо говоря, некий внутренний эквиавалент байт-кода). Сейчас, наверное, все уже поменялось, но вряд ли в сторону упрощения

RTL сейчас используется для самых низкоуровневых оптимизаций — распределения регистров, распараллеливания по конвейеру и т.п.

Всё остальное делается на уровне Tree-SSA. Но код LLVM в него отображается тривиально (собственно, оно так и работает внутри).
Sapienti sat!
Re[26]: Альтернативные ОС
От: Cyberax Марс  
Дата: 27.06.08 14:32
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Да? И ты захочешь дать какому-нибудь Silverlight-приложению доступ ко всей файловой системе?

WH>А с чего ты взял что он ее получит?
WH>Его даже браузер не получит.
Это я для примера того, что CAS в .NET уже вполне используется. Просто в ограниченном виде.

WH>Тем более что для того чтобы хард вобще что-то проверял с гранулярностью мельче чем процесс нужна помощь софта...

WH>Проверки же софтовой защиты всегда тотальны. Ни один бит не пропустит.
А зачем? Лично мне вполне достаточно защиты на уровне процесса. С ограничением привиллегий процесса для предотвращения катастрофичных действий.

C>>Я имею в виду, он будет понимать, например, самопальные механизмы синхронизации?

WH>Что значит самопальные?
WH>Ручками на асме что-ли?
Нет.
public class BicycleMutex
{
   private Object systemMutex="sdfjg";
   private boolean locked;

   public void lock()
   {
      synchronized(systemMutex)
      {
         locked=true;
      }
   }

   public void unlock()
   {
      synchronized(systemMutex)
      {
         locked=false;
      }
   }
}

Понятно, что именно такой код — это ССЗБ, но оно может получатсья и в нормальных случаях (chain locking при работе со списками, например).
Sapienti sat!
Re[27]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 14:54
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Это я для примера того, что CAS в .NET уже вполне используется. Просто в ограниченном виде.

CAS в правильной системе не нужен. Его сделали мелкософты по тому что не осилили нормальную систему типов.

C>А зачем? Лично мне вполне достаточно защиты на уровне процесса. С ограничением привиллегий процесса для предотвращения катастрофичных действий.

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

C>Понятно, что именно такой код — это ССЗБ, но оно может получатсья и в нормальных случаях (chain locking при работе со списками, например).

Чё?
А то я что-то в гугле запрос подобрать не могу.
Все на производителей противоугонок для лесопедов попадаю.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[17]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 14:56
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Интересно, что никто из защитников сингулярити так и не смог ответить на этот вопрос. Из чего я делаю вывод, что он не столь уж и дурацкий.

Тебе уже несколько раз на него отвечали.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[28]: Альтернативные ОС
От: Cyberax Марс  
Дата: 27.06.08 15:11
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Это я для примера того, что CAS в .NET уже вполне используется. Просто в ограниченном виде.

WH>CAS в правильной системе не нужен. Его сделали мелкософты по тому что не осилили нормальную систему типов.
У меня подозрение есть, что CAS нужен при наличии статических переменных.

C>>А зачем? Лично мне вполне достаточно защиты на уровне процесса. С ограничением привиллегий процесса для предотвращения катастрофичных действий.

WH>А мне нет.
WH>Я хочу просто взять код и просто его использовать и при этом быть уверенным что он ничего не поломает и никуда не пролезет.
И при этом лишиться возможности вставить хитрый трюк с менеджером памяти?

Да ни за что!



C>>Понятно, что именно такой код — это ССЗБ, но оно может получатсья и в нормальных случаях (chain locking при работе со списками, например).

WH>Чё?
WH>А то я что-то в гугле запрос подобрать не могу.
Вот здесь есть: http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/Lock.html

WH>Все на производителей противоугонок для лесопедов попадаю.

Sapienti sat!
Re[28]: Альтернативные ОС
От: DOOM Россия  
Дата: 27.06.08 15:27
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, DOOM, Вы писали:


S>>>Это не имеет отношения к теме. Аппаратная защита контролем границ массивов не занимается. И вряд ли когда-нибудь будет — слишком дорого.

DOO>>Как это не имеет? Если у всех процессов общая память должны же быть гарантии, что один процесс не съест все остальные...
C>А как он это может сделать?
Как-как... Прозвучало же сомнение в том, что это вообще надо делать.
Re[29]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 15:45
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>У меня подозрение есть, что CAS нужен при наличии статических переменных.

А у меня есть подозрение что статические переменные не нужны
Они вобще много чему мешают и ничего не дают.

C>И при этом лишиться возможности вставить хитрый трюк с менеджером памяти?

А зачем?
Тем более что системный менеджер памяти может хитрить так что мало не покажется.

WH>>А то я что-то в гугле запрос подобрать не могу.

C>Вот здесь есть: http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/Lock.html

"chain locking": you acquire the lock of node A, then node B, then release A and acquire C, then release B and acquire D and so on.

Это в моей системе типов сделать можно.
Причем недолочить или недоразлочить тебе система типов не позволит. Ибо если что-то забудешь то просто типы не совпадут и как следствие получишь от компилятора по рукам.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[18]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 15:50
Оценка:
Здравствуйте, WolfHound, Вы писали:

Pzz>>Интересно, что никто из защитников сингулярити так и не смог ответить на этот вопрос. Из чего я делаю вывод, что он не столь уж и дурацкий.

WH>Тебе уже несколько раз на него отвечали.

Пока что мне отвечают на него в духе:
— как проверяются границы массивов?
— с помощью статического анализа
— а статический анализ как их проверяет?
— с помощью системы типов
— а система типов как проверяет?
— а система типов это гарантирует
— а за счет чего она это гарантирует?
— за счет статического анализа

Если бы это была рекурсия, стек бы уже сорвало
Re[33]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 15:53
Оценка:
Здравствуйте, Pzz, Вы писали:

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

1)Изумленного пользователя не будет. Ибо если в программе все типы совпали ее просто отправят на исполнение. Ауж что там соптимизировалось, а что нет пользователя волновать не будет.
2)Если захочешь посмотреть сам что удалось устранить, а что нет то никто не мешает написать оптимизатор так чтобы он делал отчет об оптимизации если его просят.

А если до пользователя дошол битый или сгенеренный хакером бинарник то система его просто не примит к исполнению.
Это сильно другой случай нежели оптимизации доступа к массиву.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 15:57
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Пока что мне отвечают на него в духе:

хъ
Pzz>Если бы это была рекурсия, стек бы уже сорвало
Никто тут тебе лекции по системам типов и оптимизации читать не будет.
Если не хочешь верить изучи предмет. Если не хочешь изучать то придется поверить.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 17:10
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Никто тут тебе лекции по системам типов и оптимизации читать не будет.

WH>Если не хочешь верить изучи предмет. Если не хочешь изучать то придется поверить.

Я верю, когда мне сообщают простые проверяемые факты. Когда же мне сообщают выводы из них, мне хочется знать, на каком основании такие выводы были сделаны. Нормальный такой научный подход.
Re[21]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 17:24
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я верю, когда мне сообщают простые проверяемые факты. Когда же мне сообщают выводы из них, мне хочется знать, на каком основании такие выводы были сделаны. Нормальный такой научный подход.

Вот тебе простой и проверяемый факт: В C# однопоточный код без unsafe и/или нативного кода проехатся по памяти не может.

В более совершенной системе типов можно гарантировать отсутствие рейскондишенев.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[30]: Альтернативные ОС
От: Cyberax Марс  
Дата: 27.06.08 17:37
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>У меня подозрение есть, что CAS нужен при наличии статических переменных.

WH>А у меня есть подозрение что статические переменные не нужны
Я полностью согласен. Без них у нас получается классическая capability-based security, для которой даже доказана невозможность несанкционированого доступа.

WH>Они вобще много чему мешают и ничего не дают.

Но тем не менее, всё равно нужны на практике. Хотя бы в виде thread-local переменных.

C>>И при этом лишиться возможности вставить хитрый трюк с менеджером памяти?

WH>А зачем?
WH>Тем более что системный менеджер памяти может хитрить так что мало не покажется.
Я всё равно умнее менеджера Ну не хочется терять дополнительную гибкость.

В принципе, я не против гибридной системы, сочетающей достоинства обоих систем. Т.е. нативное микроядро, сверхбыстрый переключатель контекстов, обычная runtime-система для обычных приложений, и общий разделяемый runtime для управляемого кода.

C>>Вот здесь есть: http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/Lock.html

WH>

"chain locking": you acquire the lock of node A, then node B, then release A and acquire C, then release B and acquire D and so on.

WH>Это в моей системе типов сделать можно.
Я просто точно помню, что там был сценарий, когда наивная проверка блокировок не срабатывает. Сейчас попробую вспомнить его

WH>Причем недолочить или недоразлочить тебе система типов не позволит. Ибо если что-то забудешь то просто типы не совпадут и как следствие получишь от компилятора по рукам.

А как это выглядит, примерно?
Sapienti sat!
Re[22]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 27.06.08 17:42
Оценка:
Здравствуйте, WolfHound, Вы писали:

Pzz>>Я верю, когда мне сообщают простые проверяемые факты. Когда же мне сообщают выводы из них, мне хочется знать, на каком основании такие выводы были сделаны. Нормальный такой научный подход.

WH>Вот тебе простой и проверяемый факт: В C# однопоточный код без unsafe и/или нативного кода проехатся по памяти не может.

Этому я верю, нет проблем. Неочевидным утверждением является то, что это implementable без заметного performance penalty.
Re[23]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 17:48
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Этому я верю, нет проблем. Неочевидным утверждением является то, что это implementable без заметного performance penalty.

Это лишь вопрос оптимизации.
Скажем C# уже быстрее очень многих нативных компиляторов.
Факт медицинский.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[31]: Альтернативные ОС
От: WolfHound  
Дата: 27.06.08 18:17
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Но тем не менее, всё равно нужны на практике. Хотя бы в виде thread-local переменных.

Зачем?
Не вижу смысла.

C>Я всё равно умнее менеджера Ну не хочется терять дополнительную гибкость.

А нафига она тебе?

C>В принципе, я не против гибридной системы, сочетающей достоинства обоих систем.

А есть ли достоинства у натива?
Вот в чем вопрос.

C>Т.е. нативное микроядро,

Нативность ему нафиг не упала.

C>сверхбыстрый переключатель контекстов, обычная runtime-система для обычных приложений, и общий разделяемый runtime для управляемого кода.

А нафига нам "обычные" приложения?

C>Я просто точно помню, что там был сценарий, когда наивная проверка блокировок не срабатывает. Сейчас попробую вспомнить его

Попробуй.

C>А как это выглядит, примерно?

Я еще недодумал несколько смежных решений.
Так что какнибудь в другой раз когда додумаю.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: Альтернативные ОС
От: squid  
Дата: 27.06.08 18:29
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>У нас вообще тема беседы заключается в том, чего стоит защита памяти методом managed code в терминах производительности.


Pzz>То, что производительность нужна не всегда, это очевидно.


ну, я просто увидел что то что написано не правда и сказал как на самом деле
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[32]: Альтернативные ОС
От: Cyberax Марс  
Дата: 28.06.08 01:28
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Но тем не менее, всё равно нужны на практике. Хотя бы в виде thread-local переменных.

WH>Зачем?
WH>Не вижу смысла.
Для протаскивания вещей типа текущей локали или авторизованого пользователя через слои, которые об этом не думают.

C>>Я всё равно умнее менеджера Ну не хочется терять дополнительную гибкость.

WH>А нафига она тебе?
Для гибкости, не понятно, что ли?

C>>В принципе, я не против гибридной системы, сочетающей достоинства обоих систем.

WH>А есть ли достоинства у натива?
WH>Вот в чем вопрос.
Для хардкорной криптографии, обработки данных, работы с SIMD, и прочих CUDA — думаю, что да.

C>>Т.е. нативное микроядро,

WH>Нативность ему нафиг не упала.
Управляемость тоже. Если это настоящее микроядро — то код можно будет под микроскопом вылизать. Вон, у QNX микроядро до недавнего времени в 11Кб машинного кода укладывалось.

А всё остальное можно уже будет реализовать в виде набора серверов, используя управляемый код, где это имеет смысл. Скажем, драйвер видеокарты с ускорителем смысла писать на управляемом коде нет. А вот драйвер клавиатуры вполне нормально как раз на управляемом коде можно написать.

C>>сверхбыстрый переключатель контекстов, обычная runtime-система для обычных приложений, и общий разделяемый runtime для управляемого кода.

WH>А нафига нам "обычные" приложения?
1) Legacy. Ни куда от него не деться.
2) Скорость.

C>>Я просто точно помню, что там был сценарий, когда наивная проверка блокировок не срабатывает. Сейчас попробую вспомнить его

WH>Попробуй.
Пробую. Один сценарий уже нашёл Вечером на свежую голову напишу.

C>>А как это выглядит, примерно?

WH>Я еще недодумал несколько смежных решений.
WH>Так что какнибудь в другой раз когда додумаю.
Sapienti sat!
Re[33]: Альтернативные ОС
От: WolfHound  
Дата: 28.06.08 14:10
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Для протаскивания вещей типа текущей локали

Так и запишем: Для объезда кривой архитектуру путем еще большего скривления архитектуры.
Вот скажи нахрена тебе локаль в коде который не занимается юзер интерфейсом?

C>или авторизованого пользователя через слои, которые об этом не думают.

Пусть думают. Ибо иначе получаем дырявое решето типа современного софта ничиная с ОСей и заканчивая браузерами.

C>>>Я всё равно умнее менеджера Ну не хочется терять дополнительную гибкость.

WH>>А нафига она тебе?
C>Для гибкости, не понятно, что ли?
Не понятно.

C>Для хардкорной криптографии, обработки данных, работы с SIMD, и прочих CUDA — думаю, что да.

А я думаю что нет.

C>Управляемость тоже. Если это настоящее микроядро — то код можно будет под микроскопом вылизать. Вон, у QNX микроядро до недавнего времени в 11Кб машинного кода укладывалось.

Так пусть его еще и верификатор повылизывает.

C>Скажем, драйвер видеокарты с ускорителем смысла писать на управляемом коде нет.

C>А вот драйвер клавиатуры вполне нормально как раз на управляемом коде можно написать.
А чем драйвер видюхи хуже чем драйвер клавиатуры?

C>1) Legacy. Ни куда от него не деться.

Тут можно просто завиртуалить.
Причем когда процессоры наконец забъют на x86 можно будет софтварно код JIT'ить.

C>2) Скорость.

Ой не факт.
Пока что тот же C# сливает только там где нужно исползовать те же SMID и только по тому что JIT не обучен.
Если обучить то будет примерно то же самое.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[34]: Альтернативные ОС
От: Cyberax Марс  
Дата: 28.06.08 14:23
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Для протаскивания вещей типа текущей локали

WH>Так и запишем: Для объезда кривой архитектуру путем еще большего скривления архитектуры.
WH>Вот скажи нахрена тебе локаль в коде который не занимается юзер интерфейсом?
Банально ошибку "нарушена ссылочная целостность" сформировать из БД. Да много где так оно нужно по мелочам, особенно в существующем коде.

C>>или авторизованого пользователя через слои, которые об этом не думают.

WH>Пусть думают. Ибо иначе получаем дырявое решето типа современного софта ничиная с ОСей и заканчивая браузерами.
На самом деле, скажем, для всяких серверов — это достаточно нормальное решение. Связывание с контекстом транзакции в app-сервере — это вообще классика.

Так что это обязательно в практических системах придётся поддерживать.

C>>Для гибкости, не понятно, что ли?

WH>Не понятно.
Для игрушки написать свой GC, например, чтобы не тормозило в ненужные моменты. И т.п.

C>>Управляемость тоже. Если это настоящее микроядро — то код можно будет под микроскопом вылизать. Вон, у QNX микроядро до недавнего времени в 11Кб машинного кода укладывалось.

WH>Так пусть его еще и верификатор повылизывает.
Он там особо многого не даст. Проверить, что обращения к массивам всегда защищены — это даже на С++ можно без проблем.

C>>А вот драйвер клавиатуры вполне нормально как раз на управляемом коде можно написать.

WH>А чем драйвер видюхи хуже чем драйвер клавиатуры?
Драйверу видюхи нужно заниматься очень большим количеством магии в секунду — работой в нескольких адресных пространствах, работой с аппаратными регистрами и т.д. Посмотри какой-нибудь открытый видеодрайвер на досуге.

C>>1) Legacy. Ни куда от него не деться.

WH>Тут можно просто завиртуалить.
WH>Причем когда процессоры наконец забъют на x86 можно будет софтварно код JIT'ить.
Ну завиртуализировал. Что дальше? Нужно будет давать им доступ до файловой системы хоста, части устройств. Вот тут-то и получится, что мы снова изобретём мою гибридную схему.

WH>Пока что тот же C# сливает только там где нужно исползовать те же SMID и только по тому что JIT не обучен.

WH>Если обучить то будет примерно то же самое.
Не будет. В GCC оно уже несколько лет умеет SIMD использовать. Результаты — далеко не блестящие.
Sapienti sat!
Re[35]: Альтернативные ОС
От: WolfHound  
Дата: 28.06.08 15:41
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Банально ошибку "нарушена ссылочная целостность" сформировать из БД.

Это уровень UI.
Внутри программы должен гулять структуированный объект по которому на уровне UI можно сформировать сообщение на любом языке.

C>Да много где так оно нужно по мелочам,

Где?

C>особенно в существующем коде.

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

C>На самом деле, скажем, для всяких серверов — это достаточно нормальное решение. Связывание с контекстом транзакции в app-сервере — это вообще классика.

И? Нафига тут статические переменные?

C>Для игрушки написать свой GC, например, чтобы не тормозило в ненужные моменты. И т.п.

Ты это серьезно?

C>Он там особо многого не даст. Проверить, что обращения к массивам всегда защищены — это даже на С++ можно без проблем.

Ну это если его на жабке писать.
А с более другими системами типов можно еще много чего проверить.

C>Драйверу видюхи нужно заниматься очень большим количеством магии в секунду — работой в нескольких адресных пространствах, работой с аппаратными регистрами и т.д. Посмотри какой-нибудь открытый видеодрайвер на досуге.

И зачем тут натив?

C>Не будет. В GCC оно уже несколько лет умеет SIMD использовать. Результаты — далеко не блестящие.

Есть еще Интеловский компилятор.

Да и сама по себе идея SMID какаято странная.
Особенно при приближении chip multithreading'а.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: Альтернативные ОС
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 29.06.08 14:53
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Тем не менее, FAQ про DirectShow есть вопрос, будет ли DirectShow доступен через managed код. Ответ — "нет", по причинам произвидительности. Я думаю, это честный ответ.


Ваш пересказ вводит в заблуждение, ибо сильно отличается от оригинала.

Доступ к DirectShow из managed кода давно есть — через упомянутую managed библиотеку, которая инкапсулирует COM Interop. Иначе и не получится, т.к. DirectShow состоит из кучи нативных COM компонентов, а реализовывать 'a "Managed DirectShow" platform' у MS планов нет, о чем там и говорится.

А не рекомендуют из соображений производительности они не работать с DirectShow вообще, а конкретно писать на .NET свои фильтры. И тут, имхо, дело не в тормознутости C#, а в том, что такому фильтру придется каждый сэмпл (кадр видео или кусок звука) гонять туда-сюда через маршалинг.
Re[31]: Альтернативные ОС
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 29.06.08 14:55
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А так, я вообще с симпатией отношусь ко всяким там теоретическим игрушкам. Plan9, Inferno, Singularity. Haskell опять же. Уважаю, да. Я не какой-нибудь там мракобес . Мелкософт уважаю немного меньше, потому что я не слышал до сих пор, чтобы что-нибудь заметное в computer science из них вывалилось.


В MS работает S.P.Jones, из которого кое-что вываливалось.
Re[28]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 29.06.08 17:48
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Это я для примера того, что CAS в .NET уже вполне используется. Просто в ограниченном виде.

WH>CAS в правильной системе не нужен. Его сделали мелкософты по тому что не осилили нормальную систему типов.

Какая связь между CAS и системой типов?
&
Re[29]: Альтернативные ОС
От: WolfHound  
Дата: 29.06.08 17:59
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Какая связь между CAS и системой типов?

Прямая.
Тупая система типов .NET не может запретить кому попало лезть куда попало по этому ей нужен CAS.
Более умная система типов может.
И как следствие ей CAS не нужен.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[36]: Альтернативные ОС
От: Cyberax Марс  
Дата: 29.06.08 18:09
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Банально ошибку "нарушена ссылочная целостность" сформировать из БД.

WH>Это уровень UI.
WH>Внутри программы должен гулять структуированный объект по которому на уровне UI можно сформировать сообщение на любом языке.
Так где оно может возникнуть — может не быть возможности найти слой UI.

C>>Да много где так оно нужно по мелочам,

WH>Где?
Я люблю делать софт красиво, и у меня в системе "ни одного гвоздя" — в смысле в программе нет ни одной статической переменной.

Точнее, есть одна — последнее зафокусированое окно. Оно нужно для того, чтобы показать в случае чего диалог с ошибкой.

C>>особенно в существующем коде.

WH>Ага в кривом коде.
WH>Ибо если бы он был прямым то это было бы не нужно.
Да я не спорю. Но кривой код — это часть жизни.

C>>На самом деле, скажем, для всяких серверов — это достаточно нормальное решение. Связывание с контекстом транзакции в app-сервере — это вообще классика.

WH>И? Нафига тут статические переменные?
Не совсем статические, а thread-local.

C>>Для игрушки написать свой GC, например, чтобы не тормозило в ненужные моменты. И т.п.

WH>Ты это серьезно?
А почему нет? Вот сейчас написал для программы на С++ свой упаковывающий GC. Аж посмотреть приятно.

C>>Он там особо многого не даст. Проверить, что обращения к массивам всегда защищены — это даже на С++ можно без проблем.

WH>Ну это если его на жабке писать.
WH>А с более другими системами типов можно еще много чего проверить.
Лучшая идея тут — доказать корректность ядра. Это должно быть как раз в пределах реального (http://www.cse.unsw.edu.au/~kleing/papers/os-overview.pdf).

C>>Драйверу видюхи нужно заниматься очень большим количеством магии в секунду — работой в нескольких адресных пространствах, работой с аппаратными регистрами и т.д. Посмотри какой-нибудь открытый видеодрайвер на досуге.

WH>И зачем тут натив?
Там слишком много низкоуровневых трюков. Типа получения адреса с регистра и разыменование по нему данных в основной памяти.

C>>Не будет. В GCC оно уже несколько лет умеет SIMD использовать. Результаты — далеко не блестящие.

WH>Есть еще Интеловский компилятор.
Однофигственно.

WH>Да и сама по себе идея SMID какаято странная.

WH>Особенно при приближении chip multithreading'а.
"chip"=="cheap"? Идея SIMD вполне нормальная — мы выполняем операции сразу с вектором значений.
Sapienti sat!
Re[37]: Альтернативные ОС
От: WolfHound  
Дата: 29.06.08 19:18
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Так где оно может возникнуть — может не быть возможности найти слой UI.

Значит пользователь его не увидит.
И как следствие локаль не нужна.

C>>>Да много где так оно нужно по мелочам,

WH>>Где?
C>Я люблю делать софт красиво, и у меня в системе "ни одного гвоздя" — в смысле в программе нет ни одной статической переменной.
Тебе не нужно.
Мне не нужно.
И вобще хорошие программисты както без них всегда обходятся.
Спрашивается нафига козе баян если мы без этого баяна можем доказывать кучу замечательных теоремм?

C>Точнее, есть одна — последнее зафокусированое окно. Оно нужно для того, чтобы показать в случае чего диалог с ошибкой.

Это зависит исключительно от дизайна GUI.
Уверен можно и без этого.

C>Да я не спорю. Но кривой код — это часть жизни.

А кто спорит.
Другое дело что возможность запретить довольно большому классу кривостей компилироваться то код станет прямее.

C>Не совсем статические, а thread-local.

Один хрен.

C>А почему нет? Вот сейчас написал для программы на С++ свой упаковывающий GC. Аж посмотреть приятно.

А жабу взять не проще?

C>Лучшая идея тут — доказать корректность ядра. Это должно быть как раз в пределах реального (http://www.cse.unsw.edu.au/~kleing/papers/os-overview.pdf).

Лучше доказать все что вобще можно доказать.

C>Там слишком много низкоуровневых трюков. Типа получения адреса с регистра и разыменование по нему данных в основной памяти.

Надо посмотреть.
Но что-то мне подсказывает что можно не сильно напрягаясь обойтись без них.

C>"chip"=="cheap"?

Нет.
http://developers.sun.com/solaris/articles/chip_multi_thread.html

C>Идея SIMD вполне нормальная — мы выполняем операции сразу с вектором значений.

А нафига?
Операция над вектором из N элементов занимает примерно столько же транзисторов сколько возможность спарить N операций по одному элементу. Или я не прав?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[38]: Альтернативные ОС
От: Cyberax Марс  
Дата: 29.06.08 19:35
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Так где оно может возникнуть — может не быть возможности найти слой UI.

WH>Значит пользователь его не увидит.
WH>И как следствие локаль не нужна.
Надо же что-то пользователю показать перед тем как рухнуть полностью.

WH>И вобще хорошие программисты както без них всегда обходятся.

WH>Спрашивается нафига козе баян если мы без этого баяна можем доказывать кучу замечательных теоремм?
Я ещё о другом подумал. Ладно, убрали статические переменные. Вместо них везде передаётся структура AppContext со свойствами типа currentLocale, authorizedUser, ...

Но что делать, если я захочу передать ссылку на эту структуру "враждебному" коду? Просто так её передавать нельзя.

C>>Точнее, есть одна — последнее зафокусированое окно. Оно нужно для того, чтобы показать в случае чего диалог с ошибкой.

WH>Это зависит исключительно от дизайна GUI.
WH>Уверен можно и без этого.
Можно. Но получается уже некрасиво — нужно вводить искусственный менеджер окон

C>>Не совсем статические, а thread-local.

WH>Один хрен.
Угу.

C>>А почему нет? Вот сейчас написал для программы на С++ свой упаковывающий GC. Аж посмотреть приятно.

WH>А жабу взять не проще?
Не проще. Было бы проще — прикрутил бы какой-нибудь Питон через boost::python.

C>>Лучшая идея тут — доказать корректность ядра. Это должно быть как раз в пределах реального (http://www.cse.unsw.edu.au/~kleing/papers/os-overview.pdf).

WH>Лучше доказать все что вобще можно доказать.
Там не так уж много нужно доказать, на самом деле.

C>>"chip"=="cheap"?

WH>Нет.
WH>http://developers.sun.com/solaris/articles/chip_multi_thread.html
Ага, понял — то о чём я не так давно поспорил с Gaperton'ом

C>>Идея SIMD вполне нормальная — мы выполняем операции сразу с вектором значений.

WH>А нафига?
WH>Операция над вектором из N элементов занимает примерно столько же транзисторов сколько возможность спарить N операций по одному элементу. Или я не прав?
Не прав. Векторные операции существенно дешевле за счёт того, что последовательность команд имеет существенно больше степеней свободы, чем одна фиксированная команда. Тут самый экстремальный пример — это видеокарты.
Sapienti sat!
Re[39]: Альтернативные ОС
От: WolfHound  
Дата: 29.06.08 20:10
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Надо же что-то пользователю показать перед тем как рухнуть полностью.

Пользователю можно что-то показать только на уровне UI. А на уровне UI у нас есть локаль.

C>Я ещё о другом подумал. Ладно, убрали статические переменные. Вместо них везде передаётся структура AppContext со свойствами типа currentLocale, authorizedUser, ...

Ой не факт что ее везде нужно передовать.
К тому же опять нафига тебе currentLocale?

C>Но что делать, если я захочу передать ссылку на эту структуру "враждебному" коду? Просто так её передавать нельзя.

Ну так не передавай.
Передай урезанный по самые не балуйся контекст и все.

C>Можно. Но получается уже некрасиво — нужно вводить искусственный менеджер окон

Как по мне слова "статическая переменная" и "красиво" совершенно не совместимы.

C>Не проще. Было бы проще — прикрутил бы какой-нибудь Питон через boost::python.

А что ты там такое делаешь?

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

Re[16]: Nehalem
Автор: Gaperton
Дата: 14.06.08


C>Тут самый экстремальный пример — это видеокарты.

С видюхами все несколько сложнее.
Там куча очень специализированных конвееров. Кешей итп.

А в случае когда есть выбор между одним элементом который умножает 2 пары чисел и 2мя элементами каждый из которых умножает одну пару чисел ИМХО разници практически нет.
Хотя тут нужно спросить железячников.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[28]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.06.08 02:45
Оценка: +1
Здравствуйте, WolfHound, Вы писали:
WH>CAS в правильной системе не нужен. Его сделали мелкософты по тому что не осилили нормальную систему типов.
Тут я не согласен. Совершенно не представляю себе, каким образом можно получить ограничение привилегий для подмножества call stack-ов на основе одной только системы типов.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[23]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.06.08 02:45
Оценка: +1
Здравствуйте, Pzz, Вы писали:
Pzz>Этому я верю, нет проблем. Неочевидным утверждением является то, что это implementable без заметного performance penalty.
Я же тебе сказал: пойди прочитай статью. Там всего пара десятков страниц, и на второй же приведены данные по производительности. Системы с хардварной изоляцией нервно курят в сторонке.

По поводу простых утверждений: пока что всё, чем ты смог обеспокоиться — это дополнительные проверки при доступе к массивам.
Ну вот практика показывает, что в большинстве обращений к массивам современные компиляторы управляемых сред устраняют проверки диапазона. Это понятно? Непонятно почему?
Потому что есть несколько типичных паттернов доступа, для которых очень легко сделать анализ кода и вынести инвариант за цикл.
Для нетипичных паттернов — не удастся, но
а) количество этих нетипичных паттернов не столь велико по сравнению с типичными
б) в полностью управляемой OS компиляцией занимается не JIT в рантайме, а медленный компилятор времени инсталляции, поэтому ему доступны более жесткие методы анализа, что еще сокращает количество неустранимых проверок
в) проверка диапазона — две ассемблерных инструкции на современной архитектуре. При этом предсказывалка переходов работает настолько хорошо, что performance penalty пренебрежимо мал по сравнению с телом цикла.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[32]: Альтернативные ОС
От: DOOM Россия  
Дата: 30.06.08 04:26
Оценка:
Здравствуйте, WolfHound, Вы писали:



C>>сверхбыстрый переключатель контекстов, обычная runtime-система для обычных приложений, и общий разделяемый runtime для управляемого кода.

WH>А нафига нам "обычные" приложения?

Понятно нафига — как ты ограничишь доступ к файлам и устройствам? Особенно к файлам. Особенно к бинарным.
Re[30]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 30.06.08 08:54
Оценка:
Здравствуйте, WolfHound, Вы писали:

НС>>Какая связь между CAS и системой типов?

WH>Прямая.

Можно поподробнее?

WH>Тупая система типов .NET не может запретить кому попало лезть куда попало по этому ей нужен CAS.


Как система типов может запретить лезть сборкам имени Петрова на сайты, отличные от www.petrov.ru, при том что сборкам имени Васечкина можно лезть к любым сайтам?

WH>Более умная система типов может.И как следствие ей CAS не нужен.


Ответа на вопрос нет.
&
Re[29]: Альтернативные ОС
От: Ночной Смотрящий Россия  
Дата: 30.06.08 08:54
Оценка:
Здравствуйте, Sinclair, Вы писали:

WH>>CAS в правильной системе не нужен. Его сделали мелкософты по тому что не осилили нормальную систему типов.

S>Тут я не согласен. Совершенно не представляю себе, каким образом можно получить ограничение привилегий для подмножества call stack-ов на основе одной только системы типов.

Собственно, большинство задач CAS решается в зависимости от текущего состояния программы (за редкими исключениями вроде LinkDemand), и как их можно решить статически я пока не понимаю.
&
Re[29]: Альтернативные ОС
От: WolfHound  
Дата: 30.06.08 11:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Тут я не согласен. Совершенно не представляю себе, каким образом можно получить ограничение привилегий для подмножества call stack-ов на основе одной только системы типов.

Тотальным запретом глобального состояния.
Те никаких статических переменных. Никаких fopen итп.
Таким образом если код не получит ручку через которую можно получить доступ к файлу то он не получит доступ к файлу.
Никак.

Дынный зпрет позволяет производить не только доказательство системы безопасности но и еще нескольких не тривиальных утверждений типа отсутствия race condition.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[33]: Альтернативные ОС
От: WolfHound  
Дата: 30.06.08 11:59
Оценка:
Здравствуйте, DOOM, Вы писали:

C>>>сверхбыстрый переключатель контекстов, обычная runtime-система для обычных приложений, и общий разделяемый runtime для управляемого кода.

WH>>А нафига нам "обычные" приложения?
DOO>Понятно нафига — как ты ограничишь доступ к файлам и устройствам? Особенно к файлам. Особенно к бинарным.
Не вижу никаких проблем.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[30]: Альтернативные ОС
От: DOOM Россия  
Дата: 30.06.08 12:12
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Те никаких статических переменных. Никаких fopen итп.

WH>Таким образом если код не получит ручку через которую можно получить доступ к файлу то он не получит доступ к файлу.
WH>Никак.

Если у нас нет разделения на пользовательский код и код ОС, то кто же все-таки напрямую общается с диском и выдергивает файлы? Безо всяких "ручек"?
Re[16]: Альтернативные ОС
От: Bigger Российская Империя  
Дата: 30.06.08 12:14
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Здравствуйте, Sheridan, Вы писали:


>>> Шеридан, покажи источник утверждающий что .net интерпертируется. Желательно не зависимый от ЛОРа

S>>Я первый спросил
kuj>Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!

Истинно говорю, Шеридан не марсианин, он с Альфа-Центавра

Программист — это шаман..., подарите бубен!
Re[17]: Альтернативные ОС
От: Sheridan Россия  
Дата: 30.06.08 12:23
Оценка: 1 (1)
Bigger однажды (30 июня 2008 [Понедельник] 16:14) писал в rsdn.flame.comp:

> Истинно говорю, Шеридан не марсианин, он с Альфа-Центавра

Какойже я центаврианин то?
Написано же — Sheridan.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[18]: Альтернативные ОС
От: DOOM Россия  
Дата: 30.06.08 12:27
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Bigger однажды (30 июня 2008 [Понедельник] 16:14) писал в rsdn.flame.comp:


>> Истинно говорю, Шеридан не марсианин, он с Альфа-Центавра

S>Какойже я центаврианин то?
S>Написано же — Sheridan.
S>)
Вобще-то был эпизод в 3-м сезоне, где Вир занимался спасением нарнов от имени некоего центаврианина Авраама Линкольна, портрет у него был: Джон Шеридан в виде центаврианина. Неплохо смотрелся
Re[31]: Альтернативные ОС
От: Cyberax Марс  
Дата: 30.06.08 12:41
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Если у нас нет разделения на пользовательский код и код ОС, то кто же все-таки напрямую общается с диском и выдергивает файлы? Безо всяких "ручек"?

А как пользовательский код получит "ручку" для драйвера FS, через который можно открыть файл?

На самом деле, WolfHound придумал capability-based security
Sapienti sat!
Re[24]: Альтернативные ОС
От: Cyberax Марс  
Дата: 30.06.08 12:45
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Я же тебе сказал: пойди прочитай статью. Там всего пара десятков страниц, и на второй же приведены данные по производительности. Системы с хардварной изоляцией нервно курят в сторонке.

Но не все: http://linux.slashdot.org/article.pl?sid=06/05/31/0641207
Sapienti sat!
Re[31]: Альтернативные ОС
От: WolfHound  
Дата: 30.06.08 13:56
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Если у нас нет разделения на пользовательский код и код ОС, то кто же все-таки напрямую общается с диском и выдергивает файлы? Безо всяких "ручек"?

Вобще говоря в такой ОС должно быть 2 уровня кода.
Первый уровень это HAL, микроядро, кодогенератор... все это доказывается какимито внешними проверяльщиками и подписывается ацки стойкими подписями.
И все остальное включая все драйверы проверяется на месте.
Система работает следующем способом (очень грубое описание):
Процесс драйвера винта получает ссылку на HAL и предоставляет интерфейс блочного устройства.
Драйвер файловой системы получает ссылку на блочное устройство и реализует по верх него собственно файловую систему.
Процесс ассоциированный с пользователем получает ссылку на файлувую систему. И реализует фильтрацию в соответствии с правами юзера. Этот процесс запускает процесс пользовательского шелла передав ему уже отвильтрованную файловую систему.
Сам шелл тоже может пофильтровать файловую систему для каждого конкретного приложения.
Приложение тоже может пофильтровать и передать плагинам еще более обкоцанную файловую систему.
...
Благодоря статической типизации мы можем гарантировать что ссылка на HAL не уйдет дальше драйвера винта.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[30]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.07.08 03:08
Оценка:
Здравствуйте, WolfHound, Вы писали:
S>>Тут я не согласен. Совершенно не представляю себе, каким образом можно получить ограничение привилегий для подмножества call stack-ов на основе одной только системы типов.
WH>Тотальным запретом глобального состояния.
WH>Те никаких статических переменных.
Это понятно.
WH>Никаких fopen итп.
Это — непонятно.
Откуда вообще берутся объекты FileStream? Понятно, что кто-то их создает.
WH>Таким образом если код не получит ручку через которую можно получить доступ к файлу то он не получит доступ к файлу.
WH>Никак.
Понятно, что по логике для недоверенного кода единственная возможность получить FileStream — это вызвать диалог открытия файла, который сам по себе реализован в доверенном коде и обязательно спросит у пользователя подтверждения.
Непонятно, каким образом конструктор FileStream в одном случае вернет объект, а в другом — выкинет PermissionException. В случае CAS это делается путем проверки Execution Stack. Каким образом система типов поможет этого добиться?
Каким образом система типов поможет мне добиться изменения поведения системы после того, как администратор руками выдал доверие некоторому коду?
Каким образом система типов поможет мне добиться устранения избыточных проверок в коде после того, как администратор руками выдал ему доверие?

WH>Дынный зпрет позволяет производить не только доказательство системы безопасности но и еще нескольких не тривиальных утверждений типа отсутствия race condition.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[32]: Альтернативные ОС
От: DOOM Россия  
Дата: 01.07.08 04:10
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, DOOM, Вы писали:


DOO>>Если у нас нет разделения на пользовательский код и код ОС, то кто же все-таки напрямую общается с диском и выдергивает файлы? Безо всяких "ручек"?

WH>Вобще говоря в такой ОС должно быть 2 уровня кода.

Ага. Все-таки надо "обычные приложения"
Без этого все же никак...
Re[33]: Альтернативные ОС
От: WolfHound  
Дата: 01.07.08 12:00
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Ага. Все-таки надо "обычные приложения"

DOO>Без этого все же никак...
Не надо.
HAL это мягко говоря не обычное приложение.
Да и он может быть вполне себе управляймым.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[34]: Альтернативные ОС
От: DOOM Россия  
Дата: 01.07.08 12:07
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, DOOM, Вы писали:


DOO>>Ага. Все-таки надо "обычные приложения"

DOO>>Без этого все же никак...
WH>Не надо.
WH>HAL это мягко говоря не обычное приложение.

Если HAL это не обычное приложение, то значит есть и обычные. Т.е. один фиг есть разделение на привилегированные приложения и не очень.
Re[34]: Альтернативные ОС
От: WolfHound  
Дата: 01.07.08 12:21
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Да и он может быть вполне себе управляймым.

А в собранном виде оно поставляется по тому что без этого систему не забутстрапить.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[35]: Альтернативные ОС
От: WolfHound  
Дата: 01.07.08 12:24
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Если HAL это не обычное приложение, то значит есть и обычные.

Ты вобще чего под "обычными" понимаешь?
Тут под этим стовом имелись в виду "нативные" приложения.

DOO>Т.е. один фиг есть разделение на привилегированные приложения и не очень.

Оно есть вобще во всех системах которые претендуют на жизнь.
Разница в том как эти привилегии раздаются и проверяются.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[36]: Альтернативные ОС
От: DOOM Россия  
Дата: 01.07.08 12:43
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Ты вобще чего под "обычными" понимаешь?

WH>Тут под этим стовом имелись в виду "нативные" приложения.

Я под "обычными" понимаю то, что мы привыкли назвать "пользовательским приложением" в классической ОС — т.е. приложение, возможности которого ограничены аппаратной защитой, встроенной в процессор.



DOO>>Т.е. один фиг есть разделение на привилегированные приложения и не очень.

WH>Оно есть вобще во всех системах которые претендуют на жизнь.
WH>Разница в том как эти привилегии раздаются и проверяются.
Разговор здесь начался с того, что в управляемой среде можно отказаться от аппаратной защиты и переключений контекста. А сейчас приходим к тому, что один фиг — режим ядра будет. Переключение контекста тоже будет, возможно реже.
Re[37]: Альтернативные ОС
От: WolfHound  
Дата: 01.07.08 13:20
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Я под "обычными" понимаю то, что мы привыкли назвать "пользовательским приложением" в классической ОС — т.е. приложение, возможности которого ограничены аппаратной защитой, встроенной в процессор.

Такие нафиг не нужны.

Разве что только легаси но это совершенно отдельная история.

DOO>Разговор здесь начался с того, что в управляемой среде можно отказаться от аппаратной защиты и переключений контекста. А сейчас приходим к тому, что один фиг — режим ядра будет.

Нет не будет.
Откуда ты это вобще взял?

DOO>Переключение контекста тоже будет, возможно реже.

Только если на 32х битной системе нужно будет больше 4 гигов памяти.
На 64х битах вобще никаких переключений не будет.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[31]: Альтернативные ОС
От: WolfHound  
Дата: 01.07.08 13:37
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Откуда вообще берутся объекты FileStream? Понятно, что кто-то их создает.

Драйвер файловой системы.

S>Понятно, что по логике для недоверенного кода единственная возможность получить FileStream — это вызвать диалог открытия файла, который сам по себе реализован в доверенном коде и обязательно спросит у пользователя подтверждения.

S>Непонятно, каким образом конструктор FileStream в одном случае вернет объект, а в другом — выкинет PermissionException. В случае CAS это делается путем проверки Execution Stack. Каким образом система типов поможет этого добиться?
В отсутствие глобального состояния единственный способ получить какойто внешний объект это обратится к сервису имен. Типа как в сингулярити.
Сервисы имен можно выстраивать в цепочку.
И в каждом звене можно делать любые проверки.
Добавлять и удалять целые куски пространства имен.

Таким образом у нас есть некий общисистемный севис имен. Прямой доступ к нему имеют очень не многие.
Потом для каждого юзера заводим свой сервис имен который ссылается на общисистемный сервис имен и производит фильтрацию.
Для каждого приложения свой сервис имен который ссылается на сервис имен юзера от имени которого работает приложение.
Приложение внутри себя может создать еще более урезанный сервис имен.
Итд.

S>Каким образом система типов поможет мне добиться изменения поведения системы после того, как администратор руками выдал доверие некоторому коду?

Просто меняем поведение фильтров.

S>Каким образом система типов поможет мне добиться устранения избыточных проверок в коде после того, как администратор руками выдал ему доверие?

Пару десятков тактов при открытии файла экономим? Ты уверен что это вобще имеет смысл рассматривать?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[32]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.07.08 04:31
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Sinclair, Вы писали:


S>>Откуда вообще берутся объекты FileStream? Понятно, что кто-то их создает.

WH>Драйвер файловой системы.
Ну, в терминах flat model никаких "драйверов" нет — все работают в одном и том же кольце. Кстати, запрет обращаться к HAL тоже должен быть как-то реализован.

WH>В отсутствие глобального состояния единственный способ получить какойто внешний объект это обратится к сервису имен.

Да-да, чем тебе CreateFile не сервис имен?
WH>Типа как в сингулярити.
WH>Сервисы имен можно выстраивать в цепочку.
WH>И в каждом звене можно делать любые проверки.
WH>Добавлять и удалять целые куски пространства имен.
Это не имеет отношения к вопросу. Вот тебе реалистичная задачка: приложение может открыть файл autoexec.bat, но только если пользователь сам выбрал его через File Open Dialog. Напрямую оно открыть его не может.
Это означает, что разные фрагменты кода имеют доступ к разным "сервисам имен". Даже несмотря на то, что исполняются в контексте одного и того же процесса.

WH>Таким образом у нас есть некий общисистемный севис имен. Прямой доступ к нему имеют очень не многие.

Каким образом определяется, кто имеет, а кто не имеет? Как это описать в системе типов?
WH>Потом для каждого юзера заводим свой сервис имен который ссылается на общисистемный сервис имен и производит фильтрацию.
На основании чего он производит фильтрацию? Как это описать в системе типов?
WH>Для каждого приложения свой сервис имен который ссылается на сервис имен юзера от имени которого работает приложение.
WH>Приложение внутри себя может создать еще более урезанный сервис имен.
WH>Итд.

WH>Просто меняем поведение фильтров.

Как это описать в системе типов?
На всякий случай поясню, что в дотнете система фильтров называется CAS, и именно ее ты критиковал здесь
Автор: WolfHound
Дата: 27.06.08
.
S>>Каким образом система типов поможет мне добиться устранения избыточных проверок в коде после того, как администратор руками выдал ему доверие?
WH>Пару десятков тактов при открытии файла экономим?
Пару десятков тысяч тактов в случае более-менее сложных фильтров.
WH>Ты уверен что это вобще имеет смысл рассматривать?
Конечно. Не все защищаемые ресурсы нас такие крупноблочные.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[38]: Альтернативные ОС
От: DOOM Россия  
Дата: 02.07.08 05:03
Оценка:
Здравствуйте, WolfHound, Вы писали:


DOO>>Разговор здесь начался с того, что в управляемой среде можно отказаться от аппаратной защиты и переключений контекста. А сейчас приходим к тому, что один фиг — режим ядра будет.

WH>Нет не будет.
WH>Откуда ты это вобще взял?
Есть же более привилегированный HAL — сам же выше написал. А как ты отличишь HAL от менее привилегированной программы, если не будет строго разделения на режим ОС и пользовательский? Ну и не надо забывать, что управляемость управляемостью, а исполняться-то все будет в неуправляемой аппаратной среде.
Re[39]: Альтернативные ОС
От: _d_m_  
Дата: 02.07.08 06:39
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Есть же более привилегированный HAL — сам же выше написал. А как ты отличишь HAL от менее привилегированной программы, если не будет строго разделения на режим ОС и пользовательский? Ну и не надо забывать, что управляемость управляемостью, а исполняться-то все будет в неуправляемой аппаратной среде.


Неуправляемая аппаратная среда — это сильно. Что ты этим хотел сказать?
Re[40]: Альтернативные ОС
От: DOOM Россия  
Дата: 02.07.08 07:02
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Здравствуйте, DOOM, Вы писали:


DOO>>Есть же более привилегированный HAL — сам же выше написал. А как ты отличишь HAL от менее привилегированной программы, если не будет строго разделения на режим ОС и пользовательский? Ну и не надо забывать, что управляемость управляемостью, а исполняться-то все будет в неуправляемой аппаратной среде.


___>Неуправляемая аппаратная среда — это сильно. Что ты этим хотел сказать?


А то, что после всех JIT'ов и ngen'ов твоя программа это набор машинных кодов. И если отключена аппаратная защита, то начинается настоящий DOS: все могут все. И в порт написать, и в любую ячейку памяти и вообще все, что угодно делать. Поэтому любой обход JIT'а, любыми способами приведет к тому, что программа захватит всю систему целиком. Значит надо понимать, кто имеет право на привилегированную работу, а кто нет. HAL имеет такое право, другие программы — нет.
Re[33]: Альтернативные ОС
От: WolfHound  
Дата: 02.07.08 09:14
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

S>Ну, в терминах flat model никаких "драйверов" нет — все работают в одном и том же кольце.

A device driver, or software driver, is a computer program allowing higher-level computer programs to interact with a device.


S>Кстати, запрет обращаться к HAL тоже должен быть как-то реализован.

Нет ссылки на HAL нет обращения к HAL.
Все просто.

WH>>В отсутствие глобального состояния единственный способ получить какойто внешний объект это обратится к сервису имен.

S>Да-да, чем тебе CreateFile не сервис имен?
Он имеет все проблемы синглетонов.
Хрен проконтролируешь.
Хрен наложишь ограничения.
...

S>Это не имеет отношения к вопросу. Вот тебе реалистичная задачка: приложение может открыть файл autoexec.bat, но только если пользователь сам выбрал его через File Open Dialog. Напрямую оно открыть его не может.

Идет в сервис имен.
Просит сервис открытия файла.
...
S>Это означает, что разные фрагменты кода имеют доступ к разным "сервисам имен".
И что такого?
S>Даже несмотря на то, что исполняются в контексте одного и того же процесса.
Процессы в управляемой ОС дешевле фиберов в венде. Со всеми вытекающими.

S>Каким образом определяется, кто имеет, а кто не имеет? Как это описать в системе типов?

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

S>Пару десятков тысяч тактов в случае более-менее сложных фильтров.

Это для CAS. Тут все сильно проще и эффективней.

S>Конечно. Не все защищаемые ресурсы нас такие крупноблочные.

Например?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[39]: Альтернативные ОС
От: WolfHound  
Дата: 02.07.08 09:14
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Есть же более привилегированный HAL — сам же выше написал.

Где?
Цитату приведи.

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

А надо?

DOO>Ну и не надо забывать, что управляемость управляемостью, а исполняться-то все будет в неуправляемой аппаратной среде.

И?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[41]: Альтернативные ОС
От: WolfHound  
Дата: 02.07.08 09:14
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>А то, что после всех JIT'ов и ngen'ов твоя программа это набор машинных кодов. И если отключена аппаратная защита, то начинается настоящий DOS: все могут все.

Не могут.
Система типов не пропустит.

DOO>И в порт написать, и в любую ячейку памяти и вообще все, что угодно делать.

Как?

DOO>Поэтому любой обход JIT'а, любыми способами приведет к тому, что программа захватит всю систему целиком.

Как?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[34]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.07.08 09:36
Оценка:
Здравствуйте, WolfHound, Вы писали:

S>>Каким образом определяется, кто имеет, а кто не имеет? Как это описать в системе типов?

WH>Если нет глобальных данных мы можем это реализовать.
WH>Есть не можем. И как следствие приходится наворачивать костыли типа CAS.
WH>Вот причем тут система типов.

Всё понятно. В общем, будем иметь тот же CAS, построенный на другой основе. На всякий случай напомню, что CAS — это Code Access Security, общий термин, применяемый для описания любой системы, где политика доступа определяется не только свойствами субъекта (пользователя) и объекта (ресурса), но так же и свойствами кода, который выполняет доступ к объекту от имени и по поручению субъекта.

Под это определение попадают также и предлагаемые тобой фильтры — поскольку они применяются не на уровне пользователя, а на уровне, скажем, приложения.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[35]: Альтернативные ОС
От: WolfHound  
Дата: 02.07.08 10:06
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Всё понятно. В общем, будем иметь тот же CAS, построенный на другой основе. На всякий случай напомню, что CAS — это Code Access Security, общий термин, применяемый для описания любой системы, где политика доступа определяется не только свойствами субъекта (пользователя) и объекта (ресурса), но так же и свойствами кода, который выполняет доступ к объекту от имени и по поручению субъекта.

Вот только все ссылки по этому термину идут на конкретный костыль имени мелкософт.
Не считая совсем оффтопичных.

S>Под это определение попадают также и предлагаемые тобой фильтры — поскольку они применяются не на уровне пользователя, а на уровне, скажем, приложения.

Мои фильтры гораздо точнее попадают под capability-based_security
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[42]: Альтернативные ОС
От: DOOM Россия  
Дата: 02.07.08 10:17
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, DOOM, Вы писали:


DOO>>А то, что после всех JIT'ов и ngen'ов твоя программа это набор машинных кодов. И если отключена аппаратная защита, то начинается настоящий DOS: все могут все.

WH>Не могут.
WH>Система типов не пропустит.
Какая система типов после компиляции программы и заточки ее под платформу — т.е. когда уже есть конкретно набор машинных кодов и все?

DOO>>И в порт написать, и в любую ячейку памяти и вообще все, что угодно делать.

WH>Как?
mov, in, out вот как...

DOO>>Поэтому любой обход JIT'а, любыми способами приведет к тому, что программа захватит всю систему целиком.

WH>Как?
Если она обойдет JIT — ну не знаю как, модифицировав свой закэшированный образ на диске или еще как... Ведь HAL умеет общаться к диску напрямую, но при этом ты говоришь, что ему не надо быть каким-то особым процессом.
Re[43]: Альтернативные ОС
От: WolfHound  
Дата: 02.07.08 10:40
Оценка: :)
Здравствуйте, DOOM, Вы писали:

DOO>Какая система типов после компиляции программы и заточки ее под платформу — т.е. когда уже есть конкретно набор машинных кодов и все?

Такая.
Код скомпилирован так что никто ничего кроме того что явно разрешено не может.
Это тебе не С/С++ где всем все можно.

DOO>mov, in, out вот как...

А откуда они возьмутся?

DOO>Если она обойдет JIT — ну не знаю как, модифицировав свой закэшированный образ на диске или еще как...

Кто?
HAL? Написанный и сертифицированный разработчиком ОС.
Драйвер винта? Написанный и сертифицированный разработчиком ОС. При этом не имеющий представления о том что там за ФС.
Драйвер ФС? Написанный и сертифицированный разработчиком ОС. Более того он уже не знает на какой аппаратной платформе он работает. Он не знает что там внизу x86 или альфа. Дравер винта скорей всего тоже. Я так гдубоко не забирался.
Так же драйвер ФС не знает что там за блочное устройство. Ему до лампочки что это. Винт, аппаратный рейд, софтовый рейд, кусок памяти который прикинулся блочным устройством,...

DOO>Ведь HAL умеет общаться к диску напрямую, но при этом ты говоришь, что ему не надо быть каким-то особым процессом.

Что в твоем понимании "особый процесс"?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[44]: Альтернативные ОС
От: DOOM Россия  
Дата: 02.07.08 10:48
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Кто?

WH>HAL? Написанный и сертифицированный разработчиком ОС.
WH>Драйвер винта? Написанный и сертифицированный разработчиком ОС.
Это уже оптимистично.

WH>При этом не имеющий представления о том что там за ФС.

А это не важно.

WH>Драйвер ФС? Написанный и сертифицированный разработчиком ОС.

Это тоже очень оптимистично.


DOO>>Ведь HAL умеет общаться к диску напрямую, но при этом ты говоришь, что ему не надо быть каким-то особым процессом.

WH>Что в твоем понимании "особый процесс"?
Процесс, имеющий, например, возможность прямого доступа к устройствам или памяти — HAL его имеет.
Re[45]: Альтернативные ОС
От: WolfHound  
Дата: 02.07.08 11:02
Оценка:
Здравствуйте, DOOM, Вы писали:

WH>>Драйвер винта? Написанный и сертифицированный разработчиком ОС.

DOO>Это уже оптимистично.
Да ладно.
Такие вещи пишут либо разработчики ОС. Либо разработчики железа, а разработчики ОС это дело сертифицируют.
Ни те ни другие не будут вставлять закладки.

WH>>При этом не имеющий представления о том что там за ФС.

DOO>А это не важно.
Ну да. EXT3, Reiser4 и NTFS ну совсем не различаются.

WH>>Драйвер ФС? Написанный и сертифицированный разработчиком ОС.

DOO>Это тоже очень оптимистично.
Ну если юзер сумел запустить свою ОС на ФС которую не сертифицировал производитель ОС то он наверное знает что делает и доверяет разработчикам этой ФС.

В любом случае если вклиниться на этот уровень в абсолютно любой ОС можно сделать с этой ОС все что угодно не смотря на любой тип защиты в том числе аппаратный.

DOO>Процесс, имеющий, например, возможность прямого доступа к устройствам или памяти — HAL его имеет.

Ну да. В HAL есть код который это может.
В других частях системы такого кода нет.
И прорватся они к нему не могут благодоря системе типов.
Ну не получат они ссылку на HAL.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[46]: Альтернативные ОС
От: DOOM Россия  
Дата: 02.07.08 11:52
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, DOOM, Вы писали:


WH>>>Драйвер винта? Написанный и сертифицированный разработчиком ОС.

DOO>>Это уже оптимистично.
WH>Да ладно.
WH>Такие вещи пишут либо разработчики ОС. Либо разработчики железа, а разработчики ОС это дело сертифицируют.
WH>Ни те ни другие не будут вставлять закладки.
Зачем закладки? Достаточно какой-нибудь ошибки.

WH>>>При этом не имеющий представления о том что там за ФС.

DOO>>А это не важно.
WH>Ну да. EXT3, Reiser4 и NTFS ну совсем не различаются.
Это здесь при чем?



WH>И прорватся они к нему не могут благодоря системе типов.

WH>Ну не получат они ссылку на HAL.
Ну допустим он ее не получит через какие-то стандартные функции, а где гарантия, что он туда не залезет обходными путями? Через тоже переполнение массива? Где гарантия, что он не сможет вызвать невидимый ему сервис каким-то альтернативным образом?
Тут появляется много вопросов на уровне реализации — на том уровне, где уже управляемостью и не пахнет.
Re[47]: Альтернативные ОС
От: WolfHound  
Дата: 02.07.08 12:32
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Зачем закладки? Достаточно какой-нибудь ошибки.

Еще раз: Ошибка или закладка в этом месте будет фатальна для АБСОЛЮТНО ЛЮБОЙ ОС.

WH>>Ну да. EXT3, Reiser4 и NTFS ну совсем не различаются.

DOO>Это здесь при чем?
При том что драйверу винта нужно еще знать что там за ФС чтобы что-то в ней поправить.
Да и система комманд процессора понадобится.
И еще много чего.
Такую кучу кода очень трудно не заметить.

DOO>Ну допустим он ее не получит через какие-то стандартные функции, а где гарантия, что он туда не залезет обходными путями?

Какими?
Тут capability-based security она теоритически не пробиваема.
Те не дали тебе ручку и не видать тебе доступа.

DOO>Через тоже переполнение массива?

В управляемом коде их нет.
Вобще.
Доказано.

DOO>Где гарантия, что он не сможет вызвать невидимый ему сервис каким-то альтернативным образом?

Каким?

DOO>Тут появляется много вопросов на уровне реализации — на том уровне, где уже управляемостью и не пахнет.

Ты не понимаешь.
Она везьде.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[48]: Альтернативные ОС
От: DOOM Россия  
Дата: 02.07.08 12:40
Оценка:
Здравствуйте, WolfHound, Вы писали:

DOO>>Через тоже переполнение массива?

WH>В управляемом коде их нет.
WH>Вобще.
WH>Доказано.

Угу. Только вот выше было обсуждение, что не все так просто — либо арифметику урезать, либо каждый раз перед обращением проверку делать, что не очень-то хорошо скажется на производительности.

DOO>>Тут появляется много вопросов на уровне реализации — на том уровне, где уже управляемостью и не пахнет.

WH>Ты не понимаешь.
WH>Она везьде.
Да как это везде! Опять же выше уже говорили, что никто не собирается делать ОС, в которой все будет JIT'ится — будут уже готовые бинарники, т.е. всё — управляемость кончилась. Теперь вся надежда только на контроль целостности бинаря. В конце-концов, даже если JIT'ятся, то будет какой-то кэш для ускорения работы — тогда просто объект атаки (защиты) сужается до этого кэша.
Ну не верю я, что при таких условиях можно все сделать и нигде ничего не пропустить или ошибиться.
Re[49]: Альтернативные ОС
От: WolfHound  
Дата: 02.07.08 13:26
Оценка: +1
Здравствуйте, DOOM, Вы писали:

DOO>Угу. Только вот выше было обсуждение, что не все так просто — либо арифметику урезать, либо каждый раз перед обращением проверку делать, что не очень-то хорошо скажется на производительности.

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

DOO>Да как это везде!

Так!

DOO>Опять же выше уже говорили, что никто не собирается делать ОС, в которой все будет JIT'ится — будут уже готовые бинарники, т.е. всё — управляемость кончилась.

Эти готовые бинарники компилятся все тем же компилятором из того же байткода со всеми проверками.
В бинарном виде они поставляются только из-за того что что-то должно выполняться ибо байткод сам себя на произвольном процессоре не запустит. Ему bootstrap нужен.

DOO>Теперь вся надежда только на контроль целостности бинаря.

Ну иди сломай цифровую подпись.
Особенно если она параноидальная:
Те берем N хешей на разных принципах.
M ассиметричных шифраторов на разных принципах.
И все! Можно скомпромитировать N — 1 хешей и M — 1 шифраторов. Но подпись будет держаться.
При N == M == 2 мы уже получаем не ломаемую на практике подпись.

DOO>В конце-концов, даже если JIT'ятся, то будет какой-то кэш для ускорения работы — тогда просто объект атаки (защиты) сужается до этого кэша.

А что будет с линухом если вирь ему ядро подменит?

DOO>Ну не верю я, что при таких условиях можно все сделать и нигде ничего не пропустить или ошибиться.

Это не вопрос веры.
Это вопрос доказательств.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[36]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.07.08 03:03
Оценка:
Здравствуйте, WolfHound, Вы писали:

S>>Под это определение попадают также и предлагаемые тобой фильтры — поскольку они применяются не на уровне пользователя, а на уровне, скажем, приложения.

WH>Мои фильтры гораздо точнее попадают под capability-based_security
Ничего подобного. Про CBS у тебя вообще ничего нет. На всякий случай напомню, что СBS подразумевает, что вместе с дескриптором ресурса всегда передаются разрешения на его использование. В этой концепции нет ничего про фильтры и про ассоциации фильтров с приложениями.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[49]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.07.08 03:20
Оценка:
Здравствуйте, DOOM, Вы писали:
DOO>Угу. Только вот выше было обсуждение, что не все так просто — либо арифметику урезать, либо каждый раз перед обращением проверку делать, что не очень-то хорошо скажется на производительности.
Это были утверждения, высосанные из пальца. Никаких реальных тестов производительности сингулярити, подтверждающих ее проигрышь традиционным ОС, приведено не было. (в отличие от тестов, подтверждающих обратное).
WH>>Она везьде.
DOO>Да как это везде! Опять же выше уже говорили, что никто не собирается делать ОС, в которой все будет JIT'ится — будут уже готовые бинарники, т.е. всё — управляемость кончилась.
Почитай статьи. Всё предусмотрено. Бинарники получаются путем компиляции верифицируемого байткода.
DOO>Теперь вся надежда только на контроль целостности бинаря. В конце-концов, даже если JIT'ятся, то будет какой-то кэш для ускорения работы — тогда просто объект атаки (защиты) сужается до этого кэша.
DOO>Ну не верю я, что при таких условиях можно все сделать и нигде ничего не пропустить или ошибиться.
Есть очень небольшой фрагмент кода (несколько килобайт), который верифицируется вручную. Всё остальное (ядро, драйверы, и т.п.) проходит верификацию.
Это означает, что для того, чтобы осуществить атаку, тебе нужно иметь в системе код, который может попасть в нее только в результате другой успешной атаки. Потому что обычный верифицируемый код ничего подобного сделать не сможет. В частности, он не сможет поковыряться в кэше нативных имаджей — этот кэш вообще ненаблюдаем для прикладного кода.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[37]: Альтернативные ОС
От: Cyberax Марс  
Дата: 03.07.08 03:21
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ничего подобного. Про CBS у тебя вообще ничего нет. На всякий случай напомню, что СBS подразумевает, что вместе с дескриптором ресурса всегда передаются разрешения на его использование. В этой концепции нет ничего про фильтры и про ассоциации фильтров с приложениями.

Нет. CBS подразумевает, что для управления ресурсом используется capability, которая является привиллегированым ресурсом, непривиллегированый процесс не может сам создать capability.

В данном случае, у WolfHound'а такими capability просто будут объектные ссылки. А что там с ними дальше будет делаться и какие на них вешаются фильтры — вопрос десятый.
Sapienti sat!
Re[38]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.07.08 03:55
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Нет. CBS подразумевает, что для управления ресурсом используется capability, которая является привиллегированым ресурсом, непривиллегированый процесс не может сам создать capability.

Гм. Я вот читаю текст здесь, и первым делом там сказано:

Instead, in a system with capabilities, the mere fact that a user program possesses that capability entitles it to use the referenced object in accordance with the rights that are specified by that capability.

То есть capability уже включает в себя всю информацию не только об объекте, но и о действиях, которые с ним можно предпринять.
И вот уже далее:

Capabilities are typically stored by the operating system in a list, with some mechanism in place to prevent the program from directly modifying the contents of the capability (so as to forge access rights or change the object it points to).

Вот как раз этот механизм вполне описывается системой типов — у прикладного кода вообще нет никаких возможностей залезть "внутрь" capability, потому что он может только вызывать публичные методы.
А публичные методы у capability таковы, что ее содержимое в принципе immutable. Всё, что можно сделать — это получить копию capability с меньшими привилегиями.
C>В данном случае, у WolfHound'а такими capability просто будут объектные ссылки. А что там с ними дальше будет делаться и какие на них вешаются фильтры — вопрос десятый.
Как это десятый? Вот ты упомянул, что "непривилегированный процесс не может сам создать capability". А откуда берется информация о том, что процесс привилегированный?
WH утверждает, что будут какие-то фильтры. Про них в CBS ничего нету. Зато вот в CAS всё описано четко: есть описание политик, где прописано, какие требования предъявляются к коду, который пользуется "привилегированными" возможностями.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[39]: Альтернативные ОС
От: Cyberax Марс  
Дата: 03.07.08 04:16
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Гм. Я вот читаю текст здесь, и первым делом там сказано:

S>

Instead, in a system with capabilities, the mere fact that a user program possesses that capability entitles it to use the referenced object in accordance with the rights that are specified by that capability.

S>То есть capability уже включает в себя всю информацию не только об объекте, но и о действиях, которые с ним можно предпринять.
Ну да. По сути, capability — это ссылка на объект. Как она там внутри себя реализует контроль отдельных действий — её личная проблема. Оно может использовать ACLи или тупо давать доступ только к определённым интерфейсам.

S>

Capabilities are typically stored by the operating system in a list, with some mechanism in place to prevent the program from directly modifying the contents of the capability (so as to forge access rights or change the object it points to).

S>Вот как раз этот механизм вполне описывается системой типов — у прикладного кода вообще нет никаких возможностей залезть "внутрь" capability, потому что он может только вызывать публичные методы.
Да, именно.

S>А публичные методы у capability таковы, что ее содержимое в принципе immutable. Всё, что можно сделать — это получить копию capability с меньшими привилегиями.

На самом деле, ещё обычно есть механизмы обмена capability. Т.е. процессы могут безопасно ими меняться, что тоже прекрасно ложится на систему типов.

C>>В данном случае, у WolfHound'а такими capability просто будут объектные ссылки. А что там с ними дальше будет делаться и какие на них вешаются фильтры — вопрос десятый.

S>Как это десятый? Вот ты упомянул, что "непривилегированный процесс не может сам создать capability". А откуда берется информация о том, что процесс привилегированный?
Очевидно, что привиллегированый процесс держит capability, позволяющую создавать другие capability Что тут непонятного?

То есть, для того, чтобы открыть файл — ты должен иметь ссылку на драйвер устройства. Чтобы получить создать ссылку на драйвер устройства — ты должен иметь ссылку на менеджер устройств. Чтобы иметь ссылку на менеджер устройств — ты должен иметь ссылку на внутреннюю реализацию ядра. А ей владеет, допустим, только начальный загрузчик.

S>WH утверждает, что будут какие-то фильтры. Про них в CBS ничего нету. Зато вот в CAS всё описано четко: есть описание политик, где прописано, какие требования предъявляются к коду, который пользуется "привилегированными" возможностями.

Фильтры — это вопрос отдельный.
Sapienti sat!
Re[40]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.07.08 04:45
Оценка: 2 (1) +1
Здравствуйте, Cyberax, Вы писали:
S>>То есть capability уже включает в себя всю информацию не только об объекте, но и о действиях, которые с ним можно предпринять.
C>Ну да. По сути, capability — это ссылка на объект. Как она там внутри себя реализует контроль отдельных действий — её личная проблема.
C>Оно может использовать ACLи или тупо давать доступ только к определённым интерфейсам.
Я так понял, что всё же нет. Фишка именно в том, что никаких ACL на стороне объекта не используется. ACL в природе существуют уже давно, но не отвечают потребностям безопасности.
Идея именно в том, что контроля как такового нет — раз у тебя есть capability, то ты имеешь право ее использовать.

S>>А публичные методы у capability таковы, что ее содержимое в принципе immutable. Всё, что можно сделать — это получить копию capability с меньшими привилегиями.

C>На самом деле, ещё обычно есть механизмы обмена capability.
На водку?
Ты наверное имел в виду, что capability могут маршалиться между процессами. С т.з. софтно-изолированной оси это частный случай более общего принципа универсальной маршализуемости, но с точки зрения безопасности ты совершенно прав: непередаваемые capability совершенно бесполезны.

C>Очевидно, что привиллегированый процесс держит capability, позволяющую создавать другие capability Что тут непонятного?

Непонятно, какова гранулярность этой capability. Вот простой пример: capability на доступ к файлу. Винда выделяет что-то вроде 12 привилегий для файлового объекта. Мне (непривилегированному) дают только готовый файловый хэндл, открытый, допустим, в режиме read-only. Его выдает кто-то, кто имеет на это право.
Ок, допустим у него был full access хэндл, он склонировал его с понижением привилегий до read-only. Это пока понятно. Непонятно, какие именно привилегии были у того, кто создал тот full access handle?
Даже это мне не вполне понятно как реализовать с помощью системы типов. Ну то есть если у нас набор допустимых операций над файлом однозначно определяется типом хэндла, то нужны 2^12 типов для хэндлов, с соответствующими правилами преобразования типов (так, чтобы нельзя было сконструировать высокопривилегированную ссылку из низкопривилегированной).


C>То есть, для того, чтобы открыть файл — ты должен иметь ссылку на драйвер устройства.

Ну нифига себе, это значит, что любой, получивший единственную ссылку на драйвер устройства, получает полный контроль над всеми файлами???
Какая-то фигня выходит, извините.
C>Чтобы получить создать ссылку на драйвер устройства — ты должен иметь ссылку на менеджер устройств. Чтобы иметь ссылку на менеджер устройств — ты должен иметь ссылку на внутреннюю реализацию ядра. А ей владеет, допустим, только начальный загрузчик.
И что, у нас единственный, кто имеет право открывать файлы — это начальный загрузчик? Какая-то фигня выходит, извините.

S>>WH утверждает, что будут какие-то фильтры. Про них в CBS ничего нету. Зато вот в CAS всё описано четко: есть описание политик, где прописано, какие требования предъявляются к коду, который пользуется "привилегированными" возможностями.

C>Фильтры — это вопрос отдельный.
Ок, вернемся к отдельным вопросам. Отдельный вопрос был про то, зачем нужен CAS. WH утверждает, что CAS — это членоудлинитель для тех, у кого нет какой-то развитой системы типов. При этом внятных пояснений про то, как добиться простых эффектов безопасности на основе только системы типов, не вводя аналога CAS, я пока не увидел.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[37]: Альтернативные ОС
От: WolfHound  
Дата: 03.07.08 12:23
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ничего подобного. Про CBS у тебя вообще ничего нет. На всякий случай напомню, что СBS подразумевает, что вместе с дескриптором ресурса всегда передаются разрешения на его использование.

Ну да.
Дескриптор это ссылка.
В объекте на который она ссылается есть все разрешения.
Объект совершенно не прозрачен для клиентов.

Драйвер файловой системы может создать объект для доступа к одному из своих файлов.
Создать объект для доступа к файлу другой файловой системы он не может.

S>В этой концепции нет ничего про фильтры и про ассоциации фильтров с приложениями.

Следи за руками:
Рутовый процесс владеет абсолютно превелигерованной ссылкой на глобальное пространство имен.
Далее он пинает по этой ссылке пространство имен чтобы оно создало еще одну ссылку по которой нельзя получить доступ к объектам HAL'а.
И передает ее процессу который занимается управлением процессами пользователей (UserManager).

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

При старте приложения процесс пользователя смотрет на прова приложения и просит пространство имен еще больше ужесточить фильтрацию и передает ссылку на еще более жестокий фильтр приложению.

Таким образом каждый следующий процесс получает все более и более урезанную capability.
С другой стороны на каждом уровне можно добавить что-то свое. Например сервис открытия файлов.

Таким образом никакого анализа стека как в случае с File.Open делать не надо.
Если можно через полученную ссылку на пространство имен открыть файл с запрошенными привелегиями то его можно открыть. Если нельзя то нельзя.

Если получилось открыть то ты эту ссылку можешь передать кому угодно.

Как приложение может открыть любой файл:
Идем в пространство имен.
Получаем ссылку на сервис открытия файлов.
Передаем сервису capability на открытие диалога в одном из своих окон.
Сервис открывает диалог с контексте окна приложения.
Пользователь открывает файл используя пространство имен укоцанное с учетом прав пользователя.
Приложение от сервиса открытия файлов получает capability на работу с файлом.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[41]: Альтернативные ОС
От: Cyberax Марс  
Дата: 03.07.08 20:33
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>Оно может использовать ACLи или тупо давать доступ только к определённым интерфейсам.

S>Я так понял, что всё же нет. Фишка именно в том, что никаких ACL на стороне объекта не используется. ACL в природе существуют уже давно, но не отвечают потребностям безопасности.
S>Идея именно в том, что контроля как такового нет — раз у тебя есть capability, то ты имеешь право ее использовать.
Да, именно. Но ACLи при этом параллельно никто не мешает использовать.

C>>На самом деле, ещё обычно есть механизмы обмена capability.

S>На водку?
Ага.

S>Ты наверное имел в виду, что capability могут маршалиться между процессами. С т.з. софтно-изолированной оси это частный случай более общего принципа универсальной маршализуемости, но с точки зрения безопасности ты совершенно прав: непередаваемые capability совершенно бесполезны.

Да, в capability-based системах должен быть безопасный способ передачи (копирования и swap'а) capability.

S>Ок, допустим у него был full access хэндл, он склонировал его с понижением привилегий до read-only. Это пока понятно. Непонятно, какие именно привилегии были у того, кто создал тот full access handle?

"Привиллегий" как таковых у него не было, а была capability, которая позволяет создавать файлы.

S>Даже это мне не вполне понятно как реализовать с помощью системы типов. Ну то есть если у нас набор допустимых операций над файлом однозначно определяется типом хэндла, то нужны 2^12 типов для хэндлов, с соответствующими правилами преобразования типов (так, чтобы нельзя было сконструировать высокопривилегированную ссылку из низкопривилегированной).

Зачем? Ты можешь банально в конструкторе указать canRead, canWrite... и проверять их в соответствующих методах. Это как раз пример, когда ACLи (в простой форме) используются для реализации capability.

C>>То есть, для того, чтобы открыть файл — ты должен иметь ссылку на драйвер устройства.

S>Ну нифига себе, это значит, что любой, получивший единственную ссылку на драйвер устройства, получает полный контроль над всеми файлами???
Да.

S>Какая-то фигня выходит, извините.

Почему? В ядре системы сейчас всё точно так же — если ты получил доступ до ядерного пространства, то можешь делать что угодно. В случае с capabilities мы это "что угодно" существенно уменьшаем. Т.е. сетевой драйвер хоть и может отослать все твои секретные данные в NSA, но вот до файловой системы доступа у него не будет.

C>>Чтобы получить создать ссылку на драйвер устройства — ты должен иметь ссылку на менеджер устройств. Чтобы иметь ссылку на менеджер устройств — ты должен иметь ссылку на внутреннюю реализацию ядра. А ей владеет, допустим, только начальный загрузчик.

S>И что, у нас единственный, кто имеет право открывать файлы — это начальный загрузчик? Какая-то фигня выходит, извините.
Нет, единственный, кто может открыть файлы, — это сервер файловой системы, которыей получает ссылку на файловый драйвер. На самом деле, тут разницы с существующими ОС тоже мало.

S>Ок, вернемся к отдельным вопросам. Отдельный вопрос был про то, зачем нужен CAS. WH утверждает, что CAS — это членоудлинитель для тех, у кого нет какой-то развитой системы типов. При этом внятных пояснений про то, как добиться простых эффектов безопасности на основе только системы типов, не вводя аналога CAS, я пока не увидел.

Мне так интуитивно кажется, что какая-то система типа CAS всё равно понадобится для практической реализации всего этого. Но в очень упрощённом виде, скорее всего.
Sapienti sat!
Re[38]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.07.08 03:27
Оценка:
Здравствуйте, WolfHound, Вы писали:

S>>В этой концепции нет ничего про фильтры и про ассоциации фильтров с приложениями.

WH>Следи за руками:
WH>Рутовый процесс владеет абсолютно превелигерованной ссылкой на глобальное пространство имен.
WH>Далее он пинает по этой ссылке пространство имен чтобы оно создало еще одну ссылку по которой нельзя получить доступ к объектам HAL'а.
WH>И передает ее процессу который занимается управлением процессами пользователей (UserManager).

WH>При логине пользователя UserManager пинает по своей ссылке с уже установленной фильтрацией чтобы она создала еще более урезанную ссылку по которой можно получить только то что причетается пользователю

Вот тут вот: откуда берется информация о том, что причитается пользователю?
WH>и передает эту ссылку процессу который отвечает за этого пользователя.

WH>При старте приложения процесс пользователя смотрет на прова приложения

Вот тут вот: куда именно смотрит процесс пользователя на права приложения?
WH> и просит пространство имен еще больше ужесточить фильтрацию и передает ссылку на еще более жестокий фильтр приложению.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[23]: Альтернативные ОС
От: Eugeny__ Украина  
Дата: 04.07.08 08:50
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, Cyberax, Вы писали:


Pzz>>>Но как, видя байткод, а не синтаксическое дерево, сделать data flow analysis или вынос инварианта из цикла, я ума не приложу.

C>>А какие проблемы? Строим дерево и делаем анализ. Байткод для этого вполне адекватен.

Pzz>Байткод это ассемблер некоторой абстрактной машины. К тому времени, когда программа стала байткодом, много существенной информации об исходном коде уже утеряно.


Как правило, утерянная информация — это имена локальных переменных. Иногда еще компилятор вставляет минимальные оптимизации(типа конкатенации строк через стингбуферы). Из по-дефолту скомпиленного кода восстанавливается 99% инфы, причем этот 1% — инфа, не нужная оптимизатору никаким боком. Говорю про java.

Пример:

Маленький класс на java, чита.щий инфу из ком порта(писал для чтения дебаг-инфы с некоего девайса):
import easysoft.device.io.FileSerialPort;
import easysoft.device.io.SerialPortParameter;
import java.io.FileOutputStream;
import java.io.InputStream;


public class ComReader {
    public static void main(String[] args) throws Throwable {
        FileOutputStream fileOut = new FileOutputStream("e:\\dbg");
        new SerialPortParameter() {
            protected void applyForWindows(String portName) {
                exec("portparams.exe " + portName + " speed=115200 databits=8 parity=0", true);
            }
        }.apply("com1");
        FileSerialPort port = new FileSerialPort("com1");
        InputStream in = port.getInputStream();
        int read;
        while(true) {
            if ((read = in.read()) == -1) {
                Thread.sleep(10);
                continue;            
            }
            fileOut.write(read);
            if (read == 10) {
                System.out.println();
                continue;
            }
            System.out.print((char)read);
        }
    }
}


Скомпилил дефолтным эклипсовым компайлером, получил ComReader.class и ComReader$1.class.

Потом:

E:\temp\_tmp\decompiled>jad.exe ComReader.class
Parsing ComReader.class...Parsing inner class ComReader$1.class... Generating ComReader.jad


Найдите 10 отличий:
[ComReader.jad]
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   ComReader.java

import easysoft.device.io.FileSerialPort;
import easysoft.device.io.SerialPortParameter;
import java.io.*;

public class ComReader
{

    public ComReader()
    {
    }

    public static void main(String args[])
        throws Throwable
    {
        FileOutputStream fileOut = new FileOutputStream("e:\\dbg");
        (new SerialPortParameter() {

            protected void applyForWindows(String portName)
            {
                exec((new StringBuilder("portparams.exe ")).append(portName).append(" speed=115200 databits=8 parity=0").toString(), true);
            }

        }
).apply("com1");
        FileSerialPort port = new FileSerialPort("com1");
        InputStream in = port.getInputStream();
        do
        {
            int read;
            while((read = in.read()) == -1) 
                Thread.sleep(10L);
            fileOut.write(read);
            if(read == 10)
                System.out.println();
            else
                System.out.print((char)read);
        } while(true);
    }
}
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[27]: Альтернативные ОС
От: Eugeny__ Украина  
Дата: 04.07.08 09:16
Оценка:
Здравствуйте, Pzz, Вы писали:


Pzz>Ну т.е., криптографика какая-нибудь, которая сочетает замысловатые вычисления с активным использованием полувычисленного в качестве индекса в таблице, будет работать медленно, т.к. все время придется "вручную" проверять выход за границу таблицы. И то же самое относится к обработке изображения и звука.


Да никто и не позиционировал ту же джаву как идеальное средство обработки мультимедиа.
Больше всего java сейчас на серверах. Те самые энтерпрайз системы. Где масса работы со строками, но почти нет никаких хитрых вычислений. Множество объектов создается, чтобы жить пару милисекунд. Здесь управляемый код рулит. Мало вычислений, но много выделения памяти для короткоживущих объектов(так как нужны они до отправки ответа пользователю, потом их благополучно можно собрать). Операции создания и удаления короткоживущих объектов в управляемых языках дешевы.

Мы используем как клиентское приложение на терминалах самообслуживания(из соображений мультиплатформенности + удобство написания). Но такое использование java нетипично. Впрочем, в производительность мы не упирались ни разу, хотя никто не парился с предварительными оптимизациями.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[31]: Альтернативные ОС
От: Eugeny__ Украина  
Дата: 04.07.08 09:18
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я может чего не понимаю, но по-моему верификатор должен быть частью компилятора, а не интерпретатора . И говорить свои слова он должен программисту в лицо, а не пользователю, который вообще не при чем.


Верификатор всегда без проблем проверифицирует не хакнутый байт-код(собранный нормальным компилятором). А если пользователь хочет запустить у себя хакнутый код, то это ег проблемы.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[39]: Альтернативные ОС
От: WolfHound  
Дата: 04.07.08 10:52
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Вот тут вот: откуда берется информация о том, что причитается пользователю?

Примерно из тех же мест что в венде, линухе итп.

S>Вот тут вот: куда именно смотрит процесс пользователя на права приложения?

Примерно также как с пользователями.
Как при заведении пользователя ему выставляют права так и при инсталяции приложения ему выставляют права.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[42]: Альтернативные ОС
От: WolfHound  
Дата: 04.07.08 10:52
Оценка:
Здравствуйте, Cyberax, Вы писали:

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

А зачем?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[40]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.07.08 11:53
Оценка:
Здравствуйте, WolfHound, Вы писали:
S>>Вот тут вот: откуда берется информация о том, что причитается пользователю?
WH>Примерно из тех же мест что в венде, линухе итп.
Ок, предположим, это работает.
WH>Как при заведении пользователя ему выставляют права так и при инсталяции приложения ему выставляют права.
Ну то есть опять имеем CAS — code access security.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[41]: Альтернативные ОС
От: WolfHound  
Дата: 04.07.08 12:24
Оценка:
Здравствуйте, Sinclair, Вы писали:

WH>>Как при заведении пользователя ему выставляют права так и при инсталяции приложения ему выставляют права.

S>Ну то есть опять имеем CAS — code access security.
Нет. Это application access security.
Привилегии не зависят от кода как такового.
При проверках не используется анализ стека.

Собственно говоря по логике вещей нужно делать код отдельно приложение отдельно.
Те весь код лежит в подписанных сборках.
А приложение это грубо говоря подписанный XML в котором прописанно какие сборки этому приложению нужны.
В какой сборке и как завут точку входа.
И какие привилегии это приложение хочет.

При установке смотрим в XML и читаем от туда привилегии.
Спрашиваем у юзера хочет ли он дать эти привилегии этому приложению.
Если приложение много хочет то говорим про это пользователю.
Пользователь выберает какие привилегии этому приложению дать.
Далее ОСь ищет сборки. Как вариант скачивает из интернета. В том числе через p2p.
Если все сборки прошли верификацию то приложение установлено.
Все!

Нам плевать на природу кода.
Мы смотрим только на требования приложения.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[28]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.07.08 20:47
Оценка:
Здравствуйте, Eugeny__, Вы писали:

E__>Да никто и не позиционировал ту же джаву как идеальное средство обработки мультимедиа.

E__>Больше всего java сейчас на серверах. Те самые энтерпрайз системы. Где масса работы со строками, но почти нет никаких хитрых вычислений. Множество объектов создается, чтобы жить пару милисекунд. Здесь управляемый код рулит. Мало вычислений, но много выделения памяти для короткоживущих объектов(так как нужны они до отправки ответа пользователю, потом их благополучно можно собрать). Операции создания и удаления короткоживущих объектов в управляемых языках дешевы.

На серверах ява в определенных (довольно типичных в реальной жизни) случаях могла бы сильно обгонять средней наивности код, написанный на Си. Например за счет более оптимизации обращений к базе данных. Скажем, собирая записи в базу кучками в транзакцию, и откатываясь автоматически по коду назад, если транзакция не прошла. С не-managed языком так не сделаешь, а руками такое городить тоже сил не хватит. Не знаю, впрочим, реализовал ли кто-нибудь уже эту идею на практике. Но ясно, что рано или поздно реализуют.
Re[32]: Альтернативные ОС
От: WFrag США  
Дата: 05.07.08 06:33
Оценка:
Здравствуйте, Eugeny__, Вы писали:

E__>Верификатор всегда без проблем проверифицирует не хакнутый байт-код(собранный нормальным компилятором). А если пользователь хочет запустить у себя хакнутый код, то это ег проблемы.


Вообще-то, наоборот. Код, собранный нормальным компилятором верификации не требует (при условии, что не произошло, скажем, рассинхронизации библиотек во время клмпиляции и запуска). А вот хакнутый код (например, кладем в стек число и пытаемся вызвать на нём метод, кладем в стек Object, а вызываем метод с класса String) верификацию не пройдёт.

Проверка границ массивов — это другое, это просто оптимизация, которая семантику программы гарантированно (т.е это строго доказуемо) не меняет.
Re[33]: Альтернативные ОС
От: WolfHound  
Дата: 05.07.08 13:20
Оценка:
Здравствуйте, WFrag, Вы писали:

WF>Вообще-то, наоборот. Код, собранный нормальным компилятором верификации не требует

Требует.
Ибо мы не знаем чем его соберали и не хакнули ли его по дороге.
А вот когда проверифицируем тогда и узнаем.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[29]: Альтернативные ОС
От: nme  
Дата: 05.07.08 14:57
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>На серверах ява в определенных (довольно типичных в реальной жизни) случаях могла бы сильно обгонять средней наивности код, написанный на Си. Например за счет более оптимизации обращений к базе данных. Скажем, собирая записи в базу кучками в транзакцию, и откатываясь автоматически по коду назад, если транзакция не прошла. С не-managed языком так не сделаешь, а руками такое городить тоже сил не хватит. Не знаю, впрочим, реализовал ли кто-нибудь уже эту идею на практике. Но ясно, что рано или поздно реализуют.


Если я правильно тебя понял, то у Майкрософт лет 15 назад был такой проект (Warp OS кажется). В общем это была исследовательская ОС, которая могла ход выполнения программы менять на противоположный и обратно в любой момент времени. Сейчас они хотят включить те наработки в CLR.
Re[40]: Альтернативные ОС
От: Константин Л.  
Дата: 05.07.08 15:22
Оценка:
Здравствуйте, Cyberax, Вы писали:

[]

S>>А публичные методы у capability таковы, что ее содержимое в принципе immutable. Всё, что можно сделать — это получить копию capability с меньшими привилегиями.

C>На самом деле, ещё обычно есть механизмы обмена capability. Т.е. процессы могут безопасно ими меняться, что тоже прекрасно ложится на систему типов.

Господа. О какой [системе типов] может идти речь, когда наличие capability определяется тем, есть у тебя на нее не-null ссылка или нет?

Либо я чего-то не понимаю, либо вместо магического и сокрушительного [система типов] стоит писать [архитектура]?

[]
Re[41]: Альтернативные ОС
От: Константин Л.  
Дата: 05.07.08 15:25
Оценка:
Здравствуйте, Sinclair, Вы писали:

[]

C>>Очевидно, что привиллегированый процесс держит capability, позволяющую создавать другие capability Что тут непонятного?

S>Непонятно, какова гранулярность этой capability. Вот простой пример: capability на доступ к файлу. Винда выделяет что-то вроде 12 привилегий для файлового объекта. Мне (непривилегированному) дают только готовый файловый хэндл, открытый, допустим, в режиме read-only. Его выдает кто-то, кто имеет на это право.
S>Ок, допустим у него был full access хэндл, он склонировал его с понижением привилегий до read-only. Это пока понятно. Непонятно, какие именно привилегии были у того, кто создал тот full access handle?
S>Даже это мне не вполне понятно как реализовать с помощью системы типов. Ну то есть если у нас набор допустимых операций над файлом однозначно определяется типом хэндла, то нужны 2^12 типов для хэндлов, с соответствующими правилами преобразования типов (так, чтобы нельзя было сконструировать высокопривилегированную ссылку из низкопривилегированной).

в точку. по-моему словосочетание [система типов] давно пора выкинуть из этого обсуждения, но вот тогда и обсуждать то ничего не останется

[]
Re[41]: Альтернативные ОС
От: WolfHound  
Дата: 05.07.08 17:50
Оценка: :)
Здравствуйте, Константин Л., Вы писали:

КЛ>Господа. О какой [системе типов] может идти речь, когда наличие capability определяется тем, есть у тебя на нее не-null ссылка или нет?

КЛ>Либо я чего-то не понимаю, либо вместо магического и сокрушительного [система типов] стоит писать [архитектура]?
Конечно не понимаешь.
Ибо без защиты со стороны системы типов вся архитектура и как следствие вся безопасность полетит к чертям после первого же любителя срезать углы.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[30]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.07.08 19:04
Оценка:
Здравствуйте, nme, Вы писали:

nme>Если я правильно тебя понял, то у Майкрософт лет 15 назад был такой проект (Warp OS кажется). В общем это была исследовательская ОС, которая могла ход выполнения программы менять на противоположный и обратно в любой момент времени. Сейчас они хотят включить те наработки в CLR.


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

Однако программировать так довольно неудобно. Поэтому можно было бы программе сказать, что транзакция уже закончилась, у пусть себе бежит спокойно, пока транзакция либо правда не закончится, либо программа не собиралась сказать кому-то наружу, что транзакция закончилась (и даже эту попытку сказать наружу можно попридержать — реально программа может бежать до того места, когда она сказала, что транзакция закончилась, и хочет что-то получить в ответ). Беда однако в том, что если в конечном итоге транзакция закончится неудачно, а мы программе уже наврали, что все ОК, поличится нехорошо. И вот в этот момент можно бы откатить программу до того места, где мы ей наврали то, что в конечном итоге оказалось неправдой, и пустить ее по новой, но уже сказав ей правду.

То же самое относится к любому дисковому вводу-выводу.

Понятно, что если код не managed, то откатиться назад очень сложно, а если managed — значительно проще.

Однако я не знаю, реализована ли такая штука уже кем-то на практике. Может быть, правильнее было бы не сюда писать, а пойти написать заявку на патент
Re[31]: Альтернативные ОС
От: Cyberax Марс  
Дата: 05.07.08 19:28
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>То же самое относится к любому дисковому вводу-выводу.

Pzz>Понятно, что если код не managed, то откатиться назад очень сложно, а если managed — значительно проще.
С чего бы?

Pzz>Однако я не знаю, реализована ли такая штука уже кем-то на практике. Может быть, правильнее было бы не сюда писать, а пойти написать заявку на патент

Уже реализована для undo/redo, причём для нативного кода: http://www.codeproject.com/KB/cpp/transactions.aspx
Sapienti sat!
l
Re[31]: Альтернативные ОС
От: nme  
Дата: 06.07.08 04:42
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Однако программировать так довольно неудобно. Поэтому можно было бы программе сказать, что транзакция уже закончилась, у пусть себе бежит спокойно, пока транзакция либо правда не закончится, либо программа не собиралась сказать кому-то наружу, что транзакция закончилась (и даже эту попытку сказать наружу можно попридержать — реально программа может бежать до того места, когда она сказала, что транзакция закончилась, и хочет что-то получить в ответ). Беда однако в том, что если в конечном итоге транзакция закончится неудачно, а мы программе уже наврали, что все ОК, поличится нехорошо. И вот в этот момент можно бы откатить программу до того места, где мы ей наврали то, что в конечном итоге оказалось неправдой, и пустить ее по новой, но уже сказав ей правду.


Ну получается Warp OS это и делает. Если транзакция вдруг не прошла, то начинаем выполнять программу в обратную сторону до места где мы вызывали транзакцию, меняем результат выполнения транзакции и запускаем программу в нормальном порядке.
Re[31]: Альтернативные ОС
От: _d_m_  
Дата: 06.07.08 04:54
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я хочу сказать вот чего. Работу с базой данных можно значительно ускорить, если собирать транзакции в кучки — потому что транзакция кончается, когда данные уже на диске, а это seek головками, а это очень долго, по сравнению с любой другой дисковой операцией.


Pzz>Однако программировать так довольно неудобно. Поэтому можно было бы программе сказать, что транзакция уже закончилась, у пусть себе бежит спокойно, пока транзакция либо правда не закончится, либо программа не собиралась сказать кому-то наружу, что транзакция закончилась (и даже эту попытку сказать наружу можно попридержать — реально программа может бежать до того места, когда она сказала, что транзакция закончилась, и хочет что-то получить в ответ). Беда однако в том, что если в конечном итоге транзакция закончится неудачно, а мы программе уже наврали, что все ОК, поличится нехорошо. И вот в этот момент можно бы откатить программу до того места, где мы ей наврали то, что в конечном итоге оказалось неправдой, и пустить ее по новой, но уже сказав ей правду.


Это уже не транзакция. Да и зачем городить такой сложный огород — проще воспользоваться RAID контроллером с кешем записи с резервным батарейным питанием.
Re[32]: Альтернативные ОС
От: nme  
Дата: 06.07.08 05:17
Оценка:
Здравствуйте, nme, Вы писали:

nme>Ну получается Warp OS это и делает. Если транзакция вдруг не прошла, то начинаем выполнять программу в обратную сторону до места где мы вызывали транзакцию, меняем результат выполнения транзакции и запускаем программу в нормальном порядке.


P.S. Правильное название Timewarp OS.
Re[32]: Альтернативные ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.07.08 12:07
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Это уже не транзакция. Да и зачем городить такой сложный огород — проще воспользоваться RAID контроллером с кешем записи с резервным батарейным питанием.


Современный диск может сделать что-то около 200 seek'ов головкой в секунду. RAID не улучшает этого показателя при записи, но спорить мне на эту тему лень, поэтому пусть будет 1000 seek'ов в секунду — чудовищно медленно по сравнению и с производительностью процессора и со скоростью линейного чтения с диска.

Использование кеша записи не решает проблему как таковую, а лишь делает ее проблемой контроллера диска. И это имеет свою цену: не все данные нуждаются в столь бережном отношении (например, временные файлы не нуждаются), но контроллер диска об этом не знает.

Но вы правы, прикладному программисту лучше об этом не думать, а ждать, пока проблему решат за него — а потом всего лишь останется изучить API новой мегасупертехнологии для построения мегасуперпроизводительных мегасуперсерверов и опять начать себя чувствовать сухо и комфортно. Пучить мозг вообще вредно, нервные клетки не восстанавливаются...
Re[11]: Альтернативные ОС
От: nme  
Дата: 06.07.08 17:30
Оценка:
Здравствуйте, Pzz, Вы писали:

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


Сейчас в майкрософт разрабатывается Midori. Это настоящая ОС (не исследовательская) и она основана на Singularity.
Re[42]: Альтернативные ОС
От: Константин Л.  
Дата: 06.07.08 22:02
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Константин Л., Вы писали:


КЛ>>Господа. О какой [системе типов] может идти речь, когда наличие capability определяется тем, есть у тебя на нее не-null ссылка или нет?

КЛ>>Либо я чего-то не понимаю, либо вместо магического и сокрушительного [система типов] стоит писать [архитектура]?
WH>Конечно не понимаешь.
WH>Ибо без защиты со стороны системы типов вся архитектура и как следствие вся безопасность полетит к чертям после первого же любителя срезать углы.



может быть уже пора описание системы типов в студию?
Re[33]: Альтернативные ОС
От: _d_m_  
Дата: 07.07.08 02:30
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, _d_m_, Вы писали:


___>>Это уже не транзакция. Да и зачем городить такой сложный огород — проще воспользоваться RAID контроллером с кешем записи с резервным батарейным питанием.


Pzz>Современный диск может сделать что-то около 200 seek'ов головкой в секунду. RAID не улучшает этого показателя при записи, но спорить мне на эту тему лень, поэтому пусть будет 1000 seek'ов в секунду — чудовищно медленно по сравнению и с производительностью процессора и со скоростью линейного чтения с диска.


Про то что RAID контроллер ускоряет — я и не говорю — просто только на этих контроллерах есть кэш записи.

Pzz>Использование кеша записи не решает проблему как таковую, а лишь делает ее проблемой контроллера диска. И это имеет свою цену: не все данные нуждаются в столь бережном отношении (например, временные файлы не нуждаются), но контроллер диска об этом не знает.


Ну понятно. Только какую цену за это платить? Кэш записи дешевое приемлимое решение.

Pzz>Но вы правы, прикладному программисту лучше об этом не думать, а ждать, пока проблему решат за него — а потом всего лишь останется изучить API новой мегасупертехнологии для построения мегасуперпроизводительных мегасуперсерверов и опять начать себя чувствовать сухо и комфортно. Пучить мозг вообще вредно, нервные клетки не восстанавливаются...


Насчет пучить... Хм... Не знаю, что это такое, наверное, да.
А думать, развивать мышление — очень даже полезно.
А вот нервные клетки, между прочим восстанавливаются. Так что не надо заезженных стереотипов. Читаем про нейрогенез здесь. И вот здесь еще.
Re[42]: Альтернативные ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.07.08 03:21
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Собственно говоря по логике вещей нужно делать код отдельно приложение отдельно.

WH>Те весь код лежит в подписанных сборках.
WH>А приложение это грубо говоря подписанный XML в котором прописанно какие сборки этому приложению нужны.
WH>В какой сборке и как завут точку входа.
WH>И какие привилегии это приложение хочет.
Пока что я так и не услышал описание реализации простейшей вещи, которая работает уже лет десять как во всех сэндбоксах: приложение имеет право доступа к любому файлу, при условии, что его открыл пользователь через FileOpenDialog.

Каким образом планируется это сделать?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[43]: Альтернативные ОС
От: WolfHound  
Дата: 07.07.08 11:22
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>может быть уже пора описание системы типов в студию?

Пока нет.
Она не завершена.
Но свойство которое защищает данный метод уже озвучено не раз.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[43]: Альтернативные ОС
От: WolfHound  
Дата: 07.07.08 11:24
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Пока что я так и не услышал описание реализации простейшей вещи, которая работает уже лет десять как во всех сэндбоксах: приложение имеет право доступа к любому файлу, при условии, что его открыл пользователь через FileOpenDialog.

Ты издеваешься чтоли?

Как приложение может открыть любой файл:
Идем в пространство имен.
Получаем ссылку на сервис открытия файлов.
Передаем сервису capability на открытие диалога в одном из своих окон.
Сервис открывает диалог с контексте окна приложения.
Пользователь открывает файл используя пространство имен укоцанное с учетом прав пользователя.
Приложение от сервиса открытия файлов получает capability на работу с файлом.

(С)
Автор: WolfHound
Дата: 03.07.08
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.