Hello, Cyberax!
You wrote on Thu, 20 Jan 2005 15:13:13 GMT:
C> Ах... Как все просто в теории. А теперь к суровой реальности: C> Как в Обероне борются с ресурсожорами? Начнет какой-нибудь поток C> бесконечно жрать память — упадет ВСЯ система. Значит нужны квоты. Но на C> ЧТО ставить квоты, явных процессов ведь нет?
На модули, наверное. Винде, кстати, если выжрать всю память, тоже фигово
будет.
C> Точно так же — нужно обеспечить учет дефецитных ресурсов (сетевых C> соединений, открытых файлов и т.п.),
С чего бы вдруг сетевым соединениям и открытых файлам быть дефицитными
ресурсами?
C> изоляцию приложений, работающих с разными привиллегиями,
Прям щас пишу поддержку привелегий на уровне объектов для RPC. На С++.
Сложности конечно есть, но непринципиальные.
C> механизмы обхода защиты и т.п.
Нафига нужны механизмы обхода защиты?
C> В итоге получится тоже самое, что и в C> Юниксе/Винде.
Да ну. Как напишешь, так получится. Может и QNX получиться, может и BeOS
PS: я не защитник оберона, но, блин, аргументы-то и по толковей найти
можно...
With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Sergey пишет:
> C> Ах... Как все просто в теории. А теперь к суровой реальности: > C> Как в Обероне борются с ресурсожорами? Начнет какой-нибудь поток > C> бесконечно жрать память — упадет ВСЯ система. Значит нужны квоты. Но на > C> ЧТО ставить квоты, явных процессов ведь нет? > На модули, наверное. Винде, кстати, если выжрать всю память, тоже фигово > будет.
В винде и юниксах я могу не дать приложению выжрать всю память. А в
Обероне, видимо, нужно будет ставить квоты на System.Writeln
> C> Точно так же — нужно обеспечить учет дефецитных ресурсов (сетевых > C> соединений, открытых файлов и т.п.), > С чего бы вдруг сетевым соединениям и открытых файлам быть дефицитными > ресурсами?
А с того, что их количество ограничено. Еще примеры: открытые соединения
к БД, курсоры в БД, графические описатели...
> C> изоляцию приложений, работающих с разными привиллегиями, > Прям щас пишу поддержку привелегий на уровне объектов для RPC. На С++. > Сложности конечно есть, но непринципиальные.
Ага, принципиальных сложностей нигде нет. А вот реализовать толковый
механизм разделения привилегий для ОС — ВЕСЬМА непросто.
> C> механизмы обхода защиты и т.п. > Нафига нужны механизмы обхода защиты?
Hint: su, sudo
> C> В итоге получится тоже самое, что и в > C> Юниксе/Винде. > Да ну. Как напишешь, так получится. Может и QNX получиться, может и BeOS
Но уж никак не ОС в 50Кб кода
> PS: я не защитник оберона, но, блин, аргументы-то и по толковей найти > можно...
Hello, Cyberax!
You wrote on Thu, 20 Jan 2005 17:52:53 GMT:
C> В винде и юниксах я могу не дать приложению выжрать всю память. А в C> Обероне, видимо, нужно будет ставить квоты на System.Writeln
Каким образом можно не дать приложению выжрать всю память в винде, если не
секрет?
C>>> Точно так же — нужно обеспечить учет дефецитных ресурсов (сетевых C>>> соединений, открытых файлов и т.п.),
??>> С чего бы вдруг сетевым соединениям и открытых файлам быть дефицитными
??>> ресурсами?
C> А с того, что их количество ограничено.
Чем ограничено? Имеющейся памятью?
C> Еще примеры: открытые соединения к БД, курсоры в БД, графические C> описатели...
Ну не стоит экстраполировать свойства ОС, с которым ты знаком, на ОС новые.
Я, например, не вижу ни одной причины, по которым количество "графических
описателей" (кстати, что это такое и обязательно ли их присутствие в
оберонистой ОС?) должно быть ограничено чем-либо, кроме памяти.
C> Ага, принципиальных сложностей нигде нет. А вот реализовать толковый C> механизм разделения привилегий для ОС — ВЕСЬМА непросто.
А никто и не обещает, что это просто. Но я вот в упор не вижу, почему замена
концепции процесса на концепцию модуля должна как-то повлиять на сложность
реализации системы безопасности.
C>>> механизмы обхода защиты и т.п.
??>> Нафига нужны механизмы обхода защиты?
C> Hint: su, sudo
Это, насколько я понимаю, не обход, а просто делегирование части полномочий.
C>>> В итоге получится тоже самое, что и в C>>> Юниксе/Винде.
??>> Да ну. Как напишешь, так получится. Может и QNX получиться, может и
??>> BeOS
C> Но уж никак не ОС в 50Кб кода
Ну в 50Кб кода я тоже не верю А вот дискета-другая — вполне реально.
With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Sergey пишет:
> C> В винде и юниксах я могу не дать приложению выжрать всю память. А в > C> Обероне, видимо, нужно будет ставить квоты на System.Writeln > Каким образом можно не дать приложению выжрать всю память в винде, > если не > секрет?
Пишем скрипт, который смотрит, чтобы никто не зажирался — нарушителей
прибиваем.
> C>>> Точно так же — нужно обеспечить учет дефецитных ресурсов (сетевых > C>>> соединений, открытых файлов и т.п.), > ??>> С чего бы вдруг сетевым соединениям и открытых файлам быть > дефицитными > ??>> ресурсами? > C> А с того, что их количество ограничено. > Чем ограничено? Имеющейся памятью?
Ограничением архитектуры.
> C> Еще примеры: открытые соединения к БД, курсоры в БД, графические > C> описатели... > Ну не стоит экстраполировать свойства ОС, с которым ты знаком, на ОС > новые. > Я, например, не вижу ни одной причины, по которым количество "графических > описателей" (кстати, что это такое и обязательно ли их присутствие в > оберонистой ОС?) должно быть ограничено чем-либо, кроме памяти.
А я вижу. Например, каждый графический объект будет отжирать один
аппаратный описатель графического ускорителя.
> C> Ага, принципиальных сложностей нигде нет. А вот реализовать толковый > C> механизм разделения привилегий для ОС — ВЕСЬМА непросто. > А никто и не обещает, что это просто. Но я вот в упор не вижу, почему > замена > концепции процесса на концепцию модуля должна как-то повлиять на > сложность > реализации системы безопасности.
Потому что модуль — еденица деления КОДА, а процесс — это совокупность
ПОТОКОВ исполнения кода.
> C>>> механизмы обхода защиты и т.п. > ??>> Нафига нужны механизмы обхода защиты? > C> Hint: su, sudo > Это, насколько я понимаю, не обход, а просто делегирование части > полномочий.
Это способ обойти защиту для некоторых случаев.
> C>>> В итоге получится тоже самое, что и в > C>>> Юниксе/Винде. > ??>> Да ну. Как напишешь, так получится. Может и QNX получиться, может и > ??>> BeOS > C> Но уж никак не ОС в 50Кб кода > Ну в 50Кб кода я тоже не верю А вот дискета-другая — вполне реально.
Ну так Линукс с несколькими утилитами вполне помещается на дискету.
Hello, Cyberax!
You wrote on Fri, 21 Jan 2005 08:42:18 GMT:
C> Пишем скрипт, который смотрит, чтобы никто не зажирался — нарушителей C> прибиваем.
Что мешает написать подобный скрипт для Оберона? Есть какие-то
принципиальные отличия винды от оберона в данном вопросе?
??>>>> С чего бы вдруг сетевым соединениям и открытых файлам быть
??>> дефицитными
??>>>> ресурсами? C>>> А с того, что их количество ограничено.
??>> Чем ограничено? Имеющейся памятью?
C> Ограничением архитектуры.
Архитектуры чего? И каким именно ограничением?
??>> Я, например, не вижу ни одной причины, по которым количество
??>> "графических описателей" (кстати, что это такое и обязательно ли их
??>> присутствие в оберонистой ОС?) должно быть ограничено чем-либо, кроме
??>> памяти.
C> А я вижу. Например, каждый графический объект будет отжирать один C> аппаратный описатель графического ускорителя.
Это плохой, негодный дизайн. Не надо писать операционку подобным образом,
только и всего.
C>>> Ага, принципиальных сложностей нигде нет. А вот реализовать толковый C>>> механизм разделения привилегий для ОС — ВЕСЬМА непросто.
??>> А никто и не обещает, что это просто. Но я вот в упор не вижу, почему
??>> замена
??>> концепции процесса на концепцию модуля должна как-то повлиять на
??>> сложность
??>> реализации системы безопасности.
C> Потому что модуль — еденица деления КОДА, а процесс — это совокупность C> ПОТОКОВ исполнения кода.
И что с того? Как это влияет на безопасность?
Есть модуль, загруженный Васей, у него права рута. Есть модуль, загруженный
Клавой, у него права гостя.
Есть процесс, запущенный Васей, у него права рута. Есть процесс, запущенный
Клавой, у него права гостя.
В чем разница?
C>>>>> механизмы обхода защиты и т.п.
??>>>> Нафига нужны механизмы обхода защиты? C>>> Hint: su, sudo
??>> Это, насколько я понимаю, не обход, а просто делегирование части
??>> полномочий.
C> Это способ обойти защиту для некоторых случаев.
Ну да, тогда назначение юзеру Клава прав на конфигурирование принтера — тоже
способ обойти защиту для некоторых случаев
C>>> Но уж никак не ОС в 50Кб кода
??>> Ну в 50Кб кода я тоже не верю А вот дискета-другая — вполне реально.
C> Ну так Линукс с несколькими утилитами вполне помещается на дискету.
Ну и что? Выводы-то какие?
With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, AVC, Вы писали:
P>>Кстати, это было известно задолго до появления защищенного режима (в Intel 80286), например, OS/360 ни разу не зависла из-за некорректно написанной пользоветельской программы.
AVC>Я что-то не понял. Своими интересными аргументами Вы меня в конец запутали. AVC>Когда это OS/360 на 80286 работала?
Privalov и не говорил, что OS/360 работала на 80286 — не надо видеть того чего нет.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>У меня тоже есть программа (сам написал на Delphi) использует графику GDI+ и DirectDraw7. Так вот, на всех компьютерах работает замечательно, но на ноутбуке шефа при попытке перерисовки мгновенно вываливается в синий экран смерти Windows XP SP2.
Даже с закрытыми глазами можно сказать, что это драйвер.
>Вот Вам и виртуальные адресные пространства... Чего я только ни делал пытаясь понять где ошибка. Даже каждую процедуру программы обернул дополнительным блоком try except — бесполезно, ни каких исключений не возникает, моя программа работает корректно, но просто вызывает мгновенную смерть виндос на том злосчастном ноутбуке.
Нечего мудрить. Когда система падает, нужно memory dump создавать, потом с ним в отладчик и !analyze. Честное слово, это базовые знания.
Здравствуйте, alexeiz, Вы писали:
A>Даже с закрытыми глазами можно сказать, что это драйвер.
Спасибо.
A>Нечего мудрить. Когда система падает, нужно memory dump создавать, потом с ним в отладчик и !analyze.
Как? Виндос мгновенно грохается, компьютер уходит в перезагрузку. Как вообще что-либо создать если не то что моя программа больше не работает, а сам комп ушел в перезапуск...
Hello, Сергей!
You wrote on Fri, 21 Jan 2005 10:35:21 GMT:
СГ> Как? Виндос мгновенно грохается, компьютер уходит в перезагрузку. Как СГ> вообще что-либо создать если не то что моя программа больше не СГ> работает, а сам комп ушел в перезапуск...
Винда сама крэшдамп создает, если это настроено. "System
properties->Advanced->Startup and recovery".
With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Сергей Губанов пишет:
> A>Даже с закрытыми глазами можно сказать, что это драйвер. > Спасибо. > > A>Нечего мудрить. Когда система падает, нужно memory dump создавать, > потом с ним в отладчик и !analyze. > Как? Виндос мгновенно грохается, компьютер уходит в перезагрузку. Как > вообще что-либо создать если не то что моя программа больше не > работает, а сам комп ушел в перезапуск...
Вероятно, надо настроить, чтобы система писала дамп памяти при аварийной
перезагрузке.
Здравствуйте, Sergey, Вы писали:
S>Каким образом можно не дать приложению выжрать всю память в винде, если не S>секрет?
В винде секретов нет. RTFMSDN "SetInformationJobObject"
Остальные вопросы по управлению ресурсами я поскипаю.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Дарней, Вы писали:
AVC>>В Обероне нет "висячих" указателей и возможности нарушить систему безопасности типов (type safety). Д>ОН вернулся... трепещите, несчастные грешники!!! :lol:
У-у, горе вам, поклонники Си++...
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Cyberax, Вы писали:
C>AVC пишет: >> Четвертые (и их, кажется, большинство) не могут себе представить >> создание нового процесса без UNIX-овского примитива *fork()*. (При >> этом они спокойно пишут многопоточные приложения и вопросов у них не >> возникает.) В Модуле-2 и Обероне-2 каждый процесс безраздельно владеет >> своими локальными (стековыми) переменными, а для разделяемых >> переменных существуют мониторы и семафоры. C>Ах... Как все просто в теории. А теперь к суровой реальности: C>Как в Обероне борются с ресурсожорами? Начнет какой-нибудь поток C>бесконечно жрать память — упадет ВСЯ система. Значит нужны квоты. Но на C>ЧТО ставить квоты, явных процессов ведь нет?
Как это нет явных процессов?
Или Вы опять об отдельных "адресных пространствах"?
Процессы (=задачи и т.п.) в Обероне есть, также как они были в Модуле-2.
Если происходит исключение, то процесс убивается, выдается соответствующий дамп.
Это так даже в ETH Oberon, не говоря уже о более развитых Оберон-системах.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
AVC пишет:
> C>Ах... Как все просто в теории. А теперь к суровой реальности: > C>Как в Обероне борются с ресурсожорами? Начнет какой-нибудь поток > C>бесконечно жрать память — упадет ВСЯ система. Значит нужны квоты. Но на > C>ЧТО ставить квоты, явных процессов ведь нет? > Как это нет явных процессов? > Или Вы опять об отдельных "адресных пространствах"? > Процессы (=задачи и т.п.) в Обероне есть, также как они были в Модуле-2. > Если происходит исключение, то процесс убивается, выдается > соответствующий дамп.
Ага. Представим, что содержащиеся в процессе объекты используются в
другом процессе (у нас ведь одно адресное пространство), что с ними
произойдет?
Или что произойдет со статическими переменными? А как насчет открытых
сетевых соединений?
Sergey,
> Есть модуль, загруженный Васей, у него права рута. Есть модуль, загруженный Клавой, у него права гостя.
Насколько я понял, в Обероне каждый модуль может быть загружен только один раз. Соответственно, мне кажется, что будут проблемы из разряда того, что Вася, загрузивший модуль Photoshop, тем самым отобрал эту возможность у всех остальных пользователей...
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Cyberax, Вы писали:
C>Или что произойдет со статическими переменными? А как насчет открытых C>сетевых соединений?
Фигню какую-то говоришь. Разделяемая память — это разделяемая память. Экспорт объекта через границы модуля — отдельная серьезная задача (а не просто отдать 0x001e24fa).
По поводу открытых файлов, соединений и пр — те же самые проблемы возникают и в обычной ОС. Вообще не нужно думать, что изоляция адресного пространства решает какие-то глобальные проблемы: по прежнему приходится отслеживать каждый "пук".
Poudy пишет:
> C>Или что произойдет со статическими переменными? А как насчет открытых > C>сетевых соединений? > Фигню какую-то говоришь. Разделяемая память — это разделяемая память. > Экспорт объекта через границы модуля — отдельная серьезная задача (а > не просто отдать 0x001e24fa).
То есть мне еще и нужно думать как "экспортировать" объекты между
модулями, выполняющимися в одном треде? Если так, то В МОРГ.
Да еще учитывая, что повсюду используются глобальные переменные...
Короче говоря: BlueBottle — игрушка, без защиты памяти, разделения
процессов, без нормальной поддержки потоков, исключений,
многопользовательской работы. В качестве учебного примера или для
специальных целей — сойдет, но на что-то большее — не потянет.
> По поводу открытых файлов, соединений и пр — те же самые проблемы > возникают и в обычной ОС.
Где проблемы? При закрытии процесса прибиваются все открытые им handle'ы.
> Вообще не нужно думать, что изоляция адресного пространства решает > какие-то глобальные проблемы: по прежнему приходится отслеживать > каждый "пук".
Чего отслеживать? В нормальных ОС если одна программа сделает GPF, то
это не скажется на работе остальных.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>У меня тоже есть программа (сам написал на Delphi) использует графику GDI+ и DirectDraw7. Так вот, на всех компьютерах работает замечательно, но на ноутбуке шефа при попытке перерисовки мгновенно вываливается в синий экран смерти Windows XP SP2. Вот Вам и виртуальные адресные пространства... Чего я только ни делал пытаясь понять где ошибка. Даже каждую процедуру программы обернул дополнительным блоком try except — бесполезно, ни каких исключений не возникает, моя программа работает корректно, но просто вызывает мгновенную смерть виндос на том злосчастном ноутбуке.
WH>Думаешь если бы оно было на обероне было бучше
Однозначно.
В настоящей Оберон-системе не было бы ни GDI+, ни DirectDraw7, ни Windows XP SP2.
Ибо нельзя испортить то, что не портится.