Еще раз об управляемых ОС
От: WolfHound  
Дата: 02.02.06 15:30
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Как интересно GC должен решить задачу о возможности выгрузки вот такого модуля:

За такой код я оторву руки тому кто это написал.
СГ>Допустим количество ссылок на модуль M сейчас равно нулю. Значит его уже можно выгружать, да?
СГ>А вот и нельзя!!!
СГ>Вдруг через 3 часа в систему будет загружен некий другой модуль, который захочет считать значение переменной M.a???? И что он прочтёт??? Если модуль M будет выгружен, а потом опять загружен, то M.a будет равно 0.
Читай до просветления про IServiceProvider и IServiceContainer.

СГ>Вывод.

СГ>Модули нельзя выгружать "автоматически". Их можно выгружать только по явной просьбе.
Для таких извращенцев можно помечать сборки как не выгружаемые.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>

10.02.06 17:50: Ветка выделена из темы Статья Н.Вирта: взгляд из Зазеркалья
Автор: fplab
Дата: 31.01.06
— WolfHound
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: Еще раз об управляемых ОС
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 02.02.06 15:45
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>За такой код я оторву руки тому кто это написал.


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

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


Либо выгружаемая автоматически, либо не выгружаемая вовсе — это две крайности.
Лучше сделать нечто среднее: выгрузку — по просьбе.
Сказали выгрузить — значит выгружается (если у него клиентов/ссылок нет), а не сказали — не выгружается пока не скажут.
Re[15]: Еще раз об управляемых ОС
От: WolfHound  
Дата: 02.02.06 17:37
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Блин, пожалуй мне уже пора начинать прятаться.... мне мои руки жалко...

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

СГ>Либо выгружаемая автоматически, либо не выгружаемая вовсе — это две крайности.

СГ>Лучше сделать нечто среднее: выгрузку — по просьбе.
СГ>Сказали выгрузить — значит выгружается (если у него клиентов/ссылок нет), а не сказали — не выгружается пока не скажут.
Ты разве не понимаешь что так делаь нельзя?
Например есть мудуль A котлорый импортируют модули B и C. В модуле B создаем некоторый объект указатель на который через модуль A передаем в модуль C. Теперь мы не можем выгрузить модуль B пока модуль C что-то делает с объектом полученым от модуля B через модуль A. Те модуль C стал косвенным клиентом модуля B. Болие того такие зависимости могут быть циклическими.
От сюда вывод нельзя выгружать модули вручную.
А статические переменные это вобще плохо. И их использования нужно по возможности избегать.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[16]: Еще раз об управляемых ОС
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 03.02.06 08:21
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Ты разве не понимаешь что так делаь нельзя?


Я понимаю, что выгрузка модуля — потенциально опасная операция.
Поэтому система (среда времени исполнения), получив команду выгрузить модуль, может ответить отказом. Например, таким:

"В настоящий момент времени выгрузить модуль XXX не представляется возможным. Если Вы всё-же хотите его выгрузить, то ещё надо будет выгрузить модули AAA, BBB, CCC и DDD. Выгрузить указанные модули: Да/Нет?"

Конечно, реализовать это сложнее чем крайние случаи: автоматическую выгрузку или невыгружаемость. Но если мы хотим иметь динамическую расширяемую модульную систему (а не её урезанное подобие), то мозги напрячь надо и всё таки такую возможность реализовать.
Re[17]: Еще раз об управляемых ОС
От: WolfHound  
Дата: 03.02.06 11:08
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Конечно, реализовать это сложнее чем крайние случаи: автоматическую выгрузку или невыгружаемость. Но если мы хотим иметь динамическую расширяемую модульную систему (а не её урезанное подобие), то мозги напрячь надо и всё таки такую возможность реализовать.

Тут встает главный вопрос: А зачем нам нужна такая система?
Какие мы получаем преймущества по сравнению с тойже Singularity? В Singularity нельзя не то что выгрузить код из уже запущенного процесса... там даже нельзя загрузить новый код в процесс во время работы процеса. Болие того ссылка на объект созданный в одном процессе никогда и ни при каких условиях не может попасть в другой процесс. И это не по тому что ребятам было лень думать, а на оборот по тому что ребята очень хорошо все продумали.
Эта операционка в отличии от оберон-со в которых о безопасности вобще не думали, а это в современном мире вирусов и хакеров фатальный недостаток, защищена настолько на сколько это вобще возможно.
Короче читай тут
Автор: WolfHound
Дата: 18.01.06
и главное этот документ.
С моей точки зрения Singularity почти идеальныя управляемая ОС. Почти по тому что система комманд и типов CLR довольно бедна и не поддерживает фуцнкциональные языки. Если они исправят этот серьезный хотя и не фатальный недостаток будет вобще супер.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[18]: Еще раз об управляемых ОС
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.02.06 11:33
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>В Singularity нельзя не то что выгрузить код из уже запущенного процесса... там даже нельзя загрузить новый код в процесс во время работы процеса.


Что за ужас? Это серьёзно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[19]: Еще раз об управляемых ОС
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 03.02.06 11:41
Оценка:
Andrei N.Sobchuck,

WH>>В Singularity нельзя не то что выгрузить код из уже запущенного процесса... там даже нельзя загрузить новый код в процесс во время работы процеса.


ANS>Что за ужас? Это серьёзно?


Почему ужас? Общности не ограничивает: новый код запускается в отдельном процессе и между ним и родителям налаживается канал для обмена сообщениями. Создание процесса и обмен сообщениями — дешёвые. В обмен на это ограничение получается одно преимущество — запускаемый код можно гарантированно верифицировать.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[19]: Еще раз об управляемых ОС
От: WolfHound  
Дата: 03.02.06 11:50
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

WH>>В Singularity нельзя не то что выгрузить код из уже запущенного процесса... там даже нельзя загрузить новый код в процесс во время работы процеса.

ANS>Что за ужас? Это серьёзно?
Да. Болие того данное весьма радикальное и с первого взгляда безумное решение дает свои преймущетва. Это дает возможность проводить очень агрессивные оптимизации. Но главное это позволяет создать очень устойчивую систему безопасности, а это в современном мире очень важно. Болие того Singularity создавалась именно как максимально защищенная система. Но мало того что получилась очень защищенная и надежная система она еще и потенциально очень быстрая ибо данные из драйвера могут пересылатся в клиентский код без единого копирования и плясок с кольцами защиты.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: Еще раз об управляемых ОС
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.02.06 12:12
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>>>В Singularity нельзя не то что выгрузить код из уже запущенного процесса... там даже нельзя загрузить новый код в процесс во время работы процеса.

ANS>>Что за ужас? Это серьёзно?
WH>Да. Болие того данное весьма радикальное и с первого взгляда безумное решение дает свои преймущетва. Это дает возможность проводить очень агрессивные оптимизации. Но главное это позволяет создать очень устойчивую систему безопасности, а это в современном мире очень важно. Болие того Singularity создавалась именно как максимально защищенная система. Но мало того что получилась очень защищенная и надежная система она еще и потенциально очень быстрая ибо данные из драйвера могут пересылатся в клиентский код без единого копирования и плясок с кольцами защиты.

Прошу прояснить поподробнее. Откуда могут взяться агресивные оптимизации и система безопасности если выполняются непосредственно коды процессора, а не IL? Чтобы получить это всё понадобиться перекомпилировать всю систему и все приложения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[20]: Еще раз об управляемых ОС
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.02.06 12:12
Оценка: -1
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

WH>>>В Singularity нельзя не то что выгрузить код из уже запущенного процесса... там даже нельзя загрузить новый код в процесс во время работы процеса.


ANS>>Что за ужас? Это серьёзно?


LCR>Почему ужас? Общности не ограничивает: новый код запускается в отдельном процессе и между ним и родителям налаживается канал для обмена сообщениями. Создание процесса и обмен сообщениями — дешёвые. В обмен на это ограничение получается одно преимущество — запускаемый код можно гарантированно верифицировать.


Дык, DLL то не зря придумали. А это откат в каменный век. Я еще понимаю если б они изучали написание действительно управляемой ОС. А так это бесполезная трата времени и сил.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[21]: Еще раз об управляемых ОС
От: WolfHound  
Дата: 03.02.06 12:22
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Прошу прояснить поподробнее. Откуда могут взяться агресивные оптимизации и система безопасности если выполняются непосредственно коды процессора, а не IL? Чтобы получить это всё понадобиться перекомпилировать всю систему и все приложения.

А может ты сначала прочитаешь документ ссылку на который уже не однократно приводили?
Просто у меня нет никакого жилания пересказывать все то что уже написали ребята из MS.
Меня тоже по началу шокировало то что они запретили подгружать новый код в уже запущенный процесс но чем больше я думал об этом особенно в контексте обеспечения безопасносты те больше я склонялся к выводу что оно того стоит.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[18]: Еще раз об управляемых ОС
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 03.02.06 12:26
Оценка: -1 :))
Здравствуйте, WolfHound, Вы писали:

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


Допустим есть библиотеки Math, Strings, Dates, Net, Printers, Graphics, и т.д. В оберонистой модульной системе будет загружен 1 модуль Math, 1 модуль Strings, 1 модуль Dates, и т.п. и все остальные модули будут их использовать (импортировать). В Singularity библиотеки Math, Strings, Dates, Net, Printers,... должны значит быть вкомпилированы внутрь каждого процесса который хочет ими воспользоваться. То есть одновременно в системе будет загружено двадцать Math, тридцать Strings, десять Net и т.п... Каменный век, однако. Для встраиваемых систем, по крайней мере, такие расходы памяти неприемлемы.
Re[19]: Еще раз об управляемых ОС
От: WolfHound  
Дата: 03.02.06 12:43
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Допустим есть библиотеки Math, Strings, Dates, Net, Printers, Graphics, и т.д. В оберонистой модульной системе будет загружен 1 модуль Math, 1 модуль Strings, 1 модуль Dates, и т.п. и все остальные модули будут их использовать (импортировать). В Singularity библиотеки Math, Strings, Dates, Net, Printers,... должны значит быть вкомпилированы внутрь каждого процесса который хочет ими воспользоваться. То есть одновременно в системе будет загружено двадцать Math, тридцать Strings, десять Net и т.п... Каменный век, однако. Для встраиваемых систем, по крайней мере, такие расходы памяти неприемлемы.

Еще один который ничего не знает о Singularity и пытается критиковать.

In Singularity, we hope to share read-only pages containing the run-time system among similar processes, to reduce memory utilization and accelerate process creation times. In this example, approximately 280KB of the 408KB runtime originates in the executable and is not heap allocated. Of this, 137KB is code, 26KB is read-only data, and 72KB is read-write data (22KB VTables, 28KB immutable strings, and 15KB System.Type objects). With some
changes—e.g., moving locks out of immutable objects—read-write items might be shared as well.
In that case, 58% of the address space would be sharable

Те все что можно будет расшарить будет расшарено. Болие того функции из модуля Math с большой вероятностью будут полностью заинлайнены и в место call с параметрами в обероне будет непосредственное обращение к железу которое будет точно быстрее чем вызов и с очень большой вероятностью съест меньше памяти.
А в тех местах где напряженка с памятью среды с ГЦ вобще говоря под большим вопросом.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[22]: Еще раз об управляемых ОС
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.02.06 12:52
Оценка:
Здравствуйте, WolfHound, Вы писали:

ANS>>Прошу прояснить поподробнее. Откуда могут взяться агресивные оптимизации и система безопасности если выполняются непосредственно коды процессора, а не IL? Чтобы получить это всё понадобиться перекомпилировать всю систему и все приложения.

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

Там не сказано, как, можно проапгрейдить ось не перекомпилируя агрессивнооптимизированные приложения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[20]: Еще раз об управляемых ОС
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 03.02.06 13:16
Оценка: +1 -1
Здравствуйте, WolfHound, Вы писали:

WH> Еще один который ничего не знает о Singularity и пытается критиковать.


Нет уж позвольте...
Библиотеки можно либо вкомпилировать в одну монолитную исполняемую единицу (так что вследствии агрессивной оптимизации от них и следа не останется), либо не вкомпилировать в неё их вовсе, а подключать динамически.
Либо так — либо сяк, но не одновременно оба варианта...
Re[23]: Еще раз об управляемых ОС
От: WolfHound  
Дата: 03.02.06 13:25
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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

Что значить проадейтить ось? Например как вобще можно проапдейтить HAL без рестарта и перекомпиляции всей операционки? Даже если там все буден на сквозь динамическое то всеравно придется решать кучу проблем, а это ну никак не способствует надежности.
А заменить драйвер в Singularity можно на лету.
Вобщем я не вижу тут какихто недостатков ибо если меняешь фундамент то и все остальное тоже придется построить по новой.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: Еще раз об управляемых ОС
От: WolfHound  
Дата: 03.02.06 13:36
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Нет уж позвольте...

Нет уж не позволю.
СГ>Библиотеки можно либо вкомпилировать в одну монолитную исполняемую единицу (так что вследствии агрессивной оптимизации от них и следа не останется), либо не вкомпилировать в неё их вовсе, а подключать динамически.
СГ>Либо так — либо сяк, но не одновременно оба варианта...
Узко мыслите товарищ
Например мы имеем модуль в котором есть две функции что-то типа
public class Foo
{
    public static int Add(int a, int b)
    {
        return a+b;
    }
    public statin int GetHashCode(byte[] bytes)
    {
        //Тут очень хитрый алгоритм возвращающий криптографический хеш последовательности байт
    }
}

Так вот оптимизитор видя эти две функции без проблем может понять что функцию Add выгодно инлайнить как по скорости так и по объему кода, а вот функцию GetHashCode инлайнить безполезно ибо никакого выигрыша не будет.
Далие все просто как не учить уроки...
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: Еще раз об управляемых ОС
От: Lloyd Россия  
Дата: 03.02.06 13:41
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Нет уж позвольте...

СГ>Библиотеки можно либо вкомпилировать в одну монолитную исполняемую единицу (так что вследствии агрессивной оптимизации от них и следа не останется), либо не вкомпилировать в неё их вовсе, а подключать динамически.
СГ>Либо так — либо сяк, но не одновременно оба варианта...

JIT
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[22]: Еще раз об управляемых ОС
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.02.06 14:12
Оценка:
Здравствуйте, Lloyd, Вы писали:

СГ>>Нет уж позвольте...

СГ>>Библиотеки можно либо вкомпилировать в одну монолитную исполняемую единицу (так что вследствии агрессивной оптимизации от них и следа не останется), либо не вкомпилировать в неё их вовсе, а подключать динамически.
СГ>>Либо так — либо сяк, но не одновременно оба варианта...

L>JIT


Но его то как раз и нет!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[21]: Еще раз об управляемых ОС
От: Left2 Украина  
Дата: 03.02.06 14:27
Оценка:
СГ>Библиотеки можно либо вкомпилировать в одну монолитную исполняемую единицу (так что вследствии агрессивной оптимизации от них и следа не останется), либо не вкомпилировать в неё их вовсе, а подключать динамически.

насколько я понял из приведённой цитаты — runtime library будет расшарена на уровне виртуальных страниц, т.е. так как современные Windows шарят память между Dll-ками.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.