Re[53]: А если подумать?
От: prVovik Россия  
Дата: 27.01.05 15:15
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Рантайм система не видит разницы между объектами операционки и объектами приложений.

Хм, и о какой надежности после этого можно говорить?

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

Кольца защиты, кстати, придумали не от нечего делать ...
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[53]: Эксперимент
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 27.01.05 15:19
Оценка: -3
Здравствуйте, Сергей Губанов, Вы писали:

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


S>> К примеру, это DeskTop. Я передаю ему ссылку на свое окно, поскольку именно десктоп берет на себя управление окнами. Вот меня надо убить. Ясно, что мое окно входит в компоненту связности — у меня есть ссылка на него, да и окно ссылается на своего автора. Угу. А DeskTop ссылается на окно. Какую из ссылок ты будешь обнулять?


СГ>А что если я отвечу на этот вопрос? Вы свою шляпу обещаете съесть?


Давайте-ка, например, поиздеваемся над старым добрым BlackBox.... (Ваш модуль DeskTop = Views из BlackBox)

Мой модуль содержит опредение типа MyView расширения типа Views.View. Я создаю объект MyView с помощью процедуры NewMyView() затем регистрирую его в системе и прошу показать с помощью Views.OpenView(). Вот код:
PROCEDURE OpenNewView*();
BEGIN 
  Views.OpenView( NewMyView() )
END OpenNewView;

Стало быть модуль Views запомнил мой объект. Появляется новое окно в котором отображается моя видимость (MyView).


В модуле Kernel, который самый что ни на есть системный, и простым смертным запрещается его использовать, есть вот такая процедура-убийца-модулей:
PROCEDURE UnloadMod (mod: Module);

Поступим с ней вот так:
VAR mod: Kernel.Module;
BEGIN
  mod := Kernel.ThisLoadedMod("имя моего модуля");
  Kernel.UnloadMod(mod);

Ну и что же, насильно выгружаю мой модуль с определением типа MyView в то время как моя видимость с ним активно работает (то бишь отображается). Выскакивают два окошка с трапами — игнорирую их (close). Вот и все.
  • BlackBox не упал.
  • Графическая оконная подсистема не упала.
  • В остальных окнах все отображается как и раньше, можно писать тексты; открывать/закрывать и т.д...
  • В том окне, в котором раньше отображалась моя видимость (MyView) сейчас нарисована аккуратная сеточка — дескать отображать более нечего — видимость скоропостижно сдохла.



    Ну, что, съели? Еще возникать будете? Может еще какой-нибудь эксперимент поставим?
  • Re[54]: Перейдем от слов к делу?
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 27.01.05 15:23
    Оценка:
    Здравствуйте, prVovik, Вы писали:

    V>Здравствуйте, Сергей Губанов, Вы писали:


    СГ>>Рантайм система не видит разницы между объектами операционки и объектами приложений.

    V>Хм, и о какой надежности после этого можно говорить?

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


    V>Кольца защиты, кстати, придумали не от нечего делать ...


    Предлагаю перейти от слов к делу. Установите какой-нибудь оберон и попробуйте его уронить.


    Эксперимент:
    http://www.rsdn.ru/Forum/Message.aspx?mid=1008117&amp;only=1
    Автор: Сергей Губанов
    Дата: 27.01.05
    Re[55]: Нужна ли Оберон-ОС защита памяти?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 27.01.05 15:25
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:
    СГ>Каким макаром вдруг адресные пространства связаны с владельцами ресурсов?
    А очень простым. Каждый указатель живет в некотором адресном пространстве. В принципе невозможно ссылаться на объект, живущий в одном адресном пространстве, из другого. Поэтому мы всегда можем ткнуть пальцем в хозяина каждого объекта. Ну вот к примеру открытый файл. В винде у процесса есть handle для этого файла. Этот handle имеет смысл только в адресном пространстве соответствующего процесса, и "отдать" его в другой процесс нельзя. Задачи типа "передать ссылку на открытый файл" решаются при помощи весьма специфического маршалинга (DuplicateHandle). Это приводит, в частности, к тому, что система умеет корректно очищать ресурсы при завершении процесса. Еще вопросы?

    СГ>Вот именно, что это он обладает ссылкой на нее, а не она обладает ссылко на него. Он ей безразличен. Компонента связности в точности равна аналогичному понятию ПРОЦЕССА в Windows/UNIX. Как Windows/UNIX процессы не знают друг о друге, так же и тут, одна компонента связности графа объектов не знает о других.

    Ок, давай тогда в студию определение "компоненты связности". Я-то дурень полагал, что ты используешь обычное определение из теории графов.
    ... << RSDN@Home 1.1.4 beta 3 rev. 185>>
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[54]: Эксперимент
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 27.01.05 15:28
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Ну, что, съели? Еще возникать будете? Может еще какой-нибудь эксперимент поставим?


    Товарищи модераторы, за такое банить надо, однако
    Re[33]: Нужна ли Оберон-ОС защита памяти?
    От: prVovik Россия  
    Дата: 27.01.05 15:35
    Оценка: +1 -1 :)
    Здравствуйте, AVC, Вы писали:


    AVC>(С достоинством, тщательно выговаривая каждый слог ) Я стараюсь не дезинформировать общественность.

    AVC>Действительно, некоторые страны (мне известно о Канаде и UK) ограничивают применение Си/Си++ в критических областях, прежде всего в области ПО для атомной энергетики.

    Неужели, они ситсемы реального времени пишут на Обероне?


    Представляю себе сообщение информационного агентва:

    Как выяснила коммиссия, взрыв на такой-то АЭС произошел из-за нелепой случайности. В самый неподходящий момент в крмпьютерной системе началась "сборка мусора", из-за которой не были вовремя обработаны датчики, информировавшие о критических параметрах работы атомного реактора. По предварителным оценкам, жертв...


    Короче, ГЦ и СРВ — это вещи несовместимые.
    ... << RSDN@Home 1.1.4 @@subversion >>
    лэт ми спик фром май харт
    Re[54]: Эксперимент
    От: Sergey Россия  
    Дата: 27.01.05 15:41
    Оценка: +7
    Hello, Сергей!
    You wrote on Thu, 27 Jan 2005 15:19:20 GMT:

    СГ> Ну, что, съели? Еще возникать будете? Может еще какой-нибудь

    СГ> эксперимент поставим?

    Отсюда следует только то, что Оберон выгружает модули совсем не так, как ты
    рассказывал, и одним GС там дело не ограничивается. Т.е., ты сам не знаешь,
    как он работает

    With best regards, Sergey.
    Posted via RSDN NNTP Server 1.9
    Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
    Re[56]: Нужна ли Оберон-ОС защита памяти?
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 27.01.05 15:54
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Здравствуйте, Сергей Губанов, Вы писали:

    СГ>>Каким макаром вдруг адресные пространства связаны с владельцами ресурсов?

    S>А очень простым. Каждый указатель живет в некотором адресном пространстве. В принципе невозможно ссылаться на объект, живущий в одном адресном пространстве, из другого. Поэтому мы всегда можем ткнуть пальцем в хозяина каждого объекта.


    Пальцем Вы тыкаете не на хозяина, а на все адресное пространство вместе взятое и удаляете его целиком в случае чего. Тем не менее, в случае safe системы, хозяина можно вычислить совершенно точно — ведь информация о связях между объектами известна. Поэтому убивать можно не все пространство, а лишь того кто провинился, а раз так, то множественность адресных пространств — всего лишь излишняя обуза.


    СГ>>Вот именно, что это он обладает ссылкой на нее, а не она обладает ссылко на него. Он ей безразличен. Компонента связности в точности равна аналогичному понятию ПРОЦЕССА в Windows/UNIX. Как Windows/UNIX процессы не знают друг о друге, так же и тут, одна компонента связности графа объектов не знает о других.


    S>Ок, давай тогда в студию определение "компоненты связности". Я-то дурень полагал, что ты используешь обычное определение из теории графов.


    Не валяете дурака. Если объект знает обо мне, но я о нем не знаю, то удалить его можно не удаляя меня.
    Re[57]: Нужна ли Оберон-ОС защита памяти?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 27.01.05 15:58
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Не валяете дурака. Если объект знает обо мне, но я о нем не знаю, то удалить его можно не удаляя меня.


    Ага, а как же пример с десктопом — он знает об окне, но десктоп не удаляется...
    Re[34]: Нужна ли Оберон-ОС защита памяти?
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 27.01.05 16:02
    Оценка:
    Здравствуйте, prVovik, Вы писали:

    V> Короче, ГЦ и СРВ — это вещи несовместимые.


    Не используйте. Язык это допускает (выделил жирным шрифтом):

    Приложение D: Обязательные требования к среде выполнения
    Определение Компонентного Паскаля опирается на три фундаментальных предположения.

    1) Во время исполнения программ доступна информация, позволяющая проверять динамический тип объекта. Это нужно для реализации проверок типов и охраны типов.

    2) Отсутствует процедура DISPOSE <освобождение памяти под более не используемые объекты>. Память <занимаемая объектом> не может быть освобождена по явной инструкции программиста, поскольку это создало бы проблемы безопасности, связанные с потерей памяти [memory leaks] <память, занимаемая объектами, недоступными ни через какие указатели, которую программист забыл освободить> и с висячими указателями [dangling pointers] <доступные указатели, продолжающие указывать на области памяти, по ошибке преждевременно освобожденные>. За исключением таких встроенных систем, где не используется динамическое управление памятью, или где ее можно разместить только однажды и никогда не нужно освобождать, требуется автоматический сбор мусора.

    3) Модули и по крайней мере их экспортированные процедуры (команды) и экспортированные типы должны быть доступны динамически. Если необходимо, это может вызывать загрузку модулей. Программный интерфейс, используемый для загрузки модулей или для доступа к указанной мета-информации, не определяется языком, но компилятор должен сохранять эту информацию при генерации кода.
    За исключением полностью слинкованных приложений, в которых при исполнения не нужно загружать никакие модули, для модулей требуется динамический загрузчик [linking loader]. Встроенные системы являются важными примерами приложений, которые могут быть полностью слинкованы.

    Реализация, которая не удовлетворяет этим требованиям к компилятору и среде выполнения, не считается удовлетворяющей определению Компонентного Паскаля.

    http://www.inr.ac.ru/~info21/cpascal/cp_report_1.4_rus.htm#D
    Re[58]: Нужна ли Оберон-ОС защита памяти?
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 27.01.05 16:04
    Оценка: :)))
    Здравствуйте, Курилка, Вы писали:

    К> Ага, а как же пример с десктопом — он знает об окне, но десктоп не удаляется...


    Значит сделано по умному.
    Re[59]: Нужна ли Оберон-ОС защита памяти?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 27.01.05 16:07
    Оценка: :)
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Здравствуйте, Курилка, Вы писали:


    К>> Ага, а как же пример с десктопом — он знает об окне, но десктоп не удаляется...


    СГ>Значит сделано по умному.


    Вот и давайте будем поклоняться умному Вирту!
    Мы не знаем как оно работает, но ведь великая вещь!
    Re[35]: Нужна ли Оберон-ОС защита памяти?
    От: prVovik Россия  
    Дата: 27.01.05 16:15
    Оценка: +1
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Не используйте. Язык это допускает (выделил жирным шрифтом):


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


    Мимо кассы. Если не используется динамическое управление памятью, то ГЦ просто не нужен. А если используется, то без него никак
    ... << RSDN@Home 1.1.4 @@subversion >>
    лэт ми спик фром май харт
    Re[57]: Нужна ли Оберон-ОС защита памяти?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 27.01.05 16:48
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Пальцем Вы тыкаете не на хозяина, а на все адресное пространство вместе взятое и удаляете его целиком в случае чего. Тем не менее, в случае safe системы, хозяина можно вычислить совершенно точно — ведь информация о связях между объектами известна.

    И вот в этом месте начинается гон. Потому, что в safe системе запросто можно иметь много указателей на одно и то же. Кто будет хозяином этого объекта?
    ... << RSDN@Home 1.1.4 beta 3 rev. 185>>
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[54]: Эксперимент
    От: Pazak Россия  
    Дата: 27.01.05 23:52
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Давайте-ка, например, поиздеваемся над старым добрым BlackBox.... (Ваш модуль DeskTop = Views из BlackBox)

    СГ>Мой модуль содержит опредение типа MyView расширения типа Views.View. Я создаю объект MyView с помощью процедуры NewMyView() затем регистрирую его в системе и прошу показать с помощью Views.OpenView(). Вот код:
    СГ>Ну и что же, насильно выгружаю мой модуль с определением типа MyView в то время как моя видимость с ним активно работает (то бишь отображается). Выскакивают два окошка с трапами — игнорирую их (close). Вот и все.
    СГ>
  • BlackBox не упал.

    Похоже я чего-то не понимаю. Давайте немного усложним задачу. Теперь у нас в системе несколько десктопов, и каждое View помнит, к какому дектопу принадлежит (то есть имеет ссылку на "свой" десктоп), например для того, чтоб делать ему Inalidate при ресайзе. Вместе с тем и десктопы тоже помнят о списке "своих" View (например для навигации Desktop.GoToNextView() по альт-таб). Имеем: MyView прибит по инвалидности. Вопрос: куда будет производиться GoToNextView() при его отутствии? Ссылка-то уже не валидна и собрана GC, а достаточной интелектуальности для того, чтоб поискать в списке ближайшую валидную у десктопа не заложено. Выходит надо грохать и десктоп тоже. Тогда вопрос №2: кому будут передавать свой Inalidate остальные View, если они ссылаются на грохнутый десктоп? Выходит, что в пустоту, а значит и их тоже надо грохать... Итого имеем: из-за ошибки в одном конкретном MyView приходится убить все View, принадлежащие данному десктопу, что есть кривь и нарушение защиты.

    СГ>Ну, что, съели? Еще возникать будете? Может еще какой-нибудь эксперимент поставим?


    BTW: я в принципе не против поэкспериментировать, но при одном уловии: если OberonOS без проблем встанет на VMWare. Не хочется, знаете ли пробовать на живом компе... Ну и естественно скорости выполнения эксперимента не гарантирую — как руки дойдут — так и займусь (может быть).
  • Ку...
    Re[33]: Нужна ли Оберон-ОС защита памяти?
    От: Шахтер Интернет  
    Дата: 28.01.05 01:07
    Оценка: 12 (1) +1
    Здравствуйте, AVC, Вы писали:

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


    AVC>>>Работает же.

    AVC>>>Честно говоря, "рука уже устала" писать одно и то же: Оберон используется в космической (NASA и т.д.), авиационной (Boeing и т.д.), сферах, сфере атомной энергетики, где ответственность весьма высока.
    AVC>>>Т.е. используется в тех сферах, где применение Си/Си++ зачастую просто запрещено.

    Ш>>Ну может быть, всё же не надо дезинформировать общественность. На Марс летал vxWorks, написанный на C.


    AVC>(С достоинством, тщательно выговаривая каждый слог ) Я стараюсь не дезинформировать общественность.


    AVC>Действительно, некоторые страны (мне известно о Канаде и UK) ограничивают применение Си/Си++ в критических областях, прежде всего в области ПО для атомной энергетики.


    Вот это утверждение гораздо больше похоже на правду.

    AVC>>>В принципе, Си++ — язык для детской песочницы. Персоналки, "поставщик кода отвтетственности не несет" и т.п.

    Ш>>Не понятно только, почему на С/C++ разрабатывются наиболее крупные и сложные проекты.

    AVC>И какие из них САМЫЕ КРУПНЫЕ?


    Боюсь, что у меня нет под рукой списка, из которого можно выбрать наиболее крупные.
    Но можно сходить на страничку Страуструпа за примерами.
    ... << RSDN@Home 1.1.0 stable >>
    В XXI век с CCore.
    Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
    Re[54]: А если подумать?
    От: Трурль  
    Дата: 28.01.05 05:53
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>Ну да, придём обратно к виндовз 95 или раньше, когда при почти любом движении надо было тачку перезагружать

    К>Это кайф
    А ведь и 95, 3.x использовали аппаратную защиту памяти. Не помогло.
    Re[55]: А если подумать?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 28.01.05 07:32
    Оценка:
    Здравствуйте, Трурль, Вы писали:

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


    К>>Ну да, придём обратно к виндовз 95 или раньше, когда при почти любом движении надо было тачку перезагружать

    К>>Это кайф
    Т>А ведь и 95, 3.x использовали аппаратную защиту памяти. Не помогло.

    Ну видимо коль 95 не помогло, то в Обероне решили вообще на неё забить — фигли мучаться и процессорное время сьедать?
    Re[55]: А если подумать?
    От: Sergey Россия  
    Дата: 28.01.05 08:12
    Оценка:
    Hello, Трурль!
    You wrote on Fri, 28 Jan 2005 05:53:15 GMT:

    К>> Ну да, придём обратно к виндовз 95 или раньше, когда при почти любом

    К>> движении надо было тачку перезагружать Это кайф
    Т> А ведь и 95, 3.x использовали аппаратную защиту памяти. Не помогло.

    В 3.х — насколько помню, не использовали.
    В 95 часть GDI и USER были 16-битные, то бишь нереентерабельные (Win16Mutex,
    ха-ха), схема CopyOnWrite поддерживалась программно, на уровне функции
    WriteProcessMemory. Были там и другие корки, но указанных уже достаточно для
    того, чтобы операционка была ненадежной — например, убиение задачи,
    захватившей Win16Mutex приводило догадайтесь сами к чему.

    With best regards, Sergey.
    Posted via RSDN NNTP Server 1.9
    Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
    Re[58]: Нужна ли Оберон-ОС защита памяти?
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 28.01.05 08:15
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Здравствуйте, Сергей Губанов, Вы писали:


    СГ>>Пальцем Вы тыкаете не на хозяина, а на все адресное пространство вместе взятое и удаляете его целиком в случае чего. Тем не менее, в случае safe системы, хозяина можно вычислить совершенно точно — ведь информация о связях между объектами известна.

    S>И вот в этом месте начинается гон. Потому, что в safe системе запросто можно иметь много указателей на одно и то же. Кто будет хозяином этого объекта?

    Каждый ровно на 1/N.
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.