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...
Пока на собственное сообщение не было ответов, его можно удалить.