WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |   ...   | 9 |

Являющаяся основным предметом рассмотрения данного доклада библиотека InteLib [3] реализует качественно иной подход к решению проблемы интеграции разнородных языковых выразительных средств.

Благодаря поддержке в языке C++ концепции абстрактных типов данных и возможности переопределения символов стандартных операций для объектов пользовательских типов язык C++ может рассматриваться как язык моделирования алгебр. С другой стороны, семантика языка Lisp может рассматриваться как алгебра S-выражений, одной из операций которой является вычисление Sвыражения.

Чтобы представить конструкции языка Lisp средствами C++, достаточно описать класс, способный хранить (инкапсулировать) S-выражение любого поддерживаемого типа и дать набор операций для построения точечных пар и списков из атомарных S-выражений. Используя свойство полиморфности объектов, можно построить иерархию классов с общим предком для хранения различных типов S-выражений, что позволит вводить новые типы S-выражений.

В результате получаем возможность записи в языке C++ выражений, семантически эквивалентных и синтаксически близких конструкциям языка Lisp (или другого моделируемого языка).

(defun isomorphic (tree1 tree2) (cond ((atom tree1) (atom tree2)) ((atom tree2) NIL) (t (and (isomorphic (car tree1) (car tree2)) (isomorphic (cdr tree1) (cdr tree2)))))) Рисунок 1: Код функции ISOMORPHIC на языке Лисп LSymbol ISOMORPHIC("ISOMORPHIC");

void LispInit_isomorphic() { static LSymbol TREE1("TREE1");

static LSymbol TREE2("TREE2");

(L|DEFUN, ISOMORPHIC, (L|TREE1, TREE2), (L|COND, (L|(L|ATOM, TREE1), (L|ATOM, TREE2)), (L|(L|ATOM, TREE2), NIL), (L|T, (L|AND, (L|ISOMORPHIC, (L|CAR, TREE1), (L|CAR, TREE2)), (L|ISOMORPHIC, (L|CDR, TREE1), (L|CDR, TREE2)))))).Evaluate();

} Рисунок 2: Код функции ISOMORPHIC на языке Си++ Сказанное можно проиллюстрировать на примере функции, исходный код которой в синтаксисе языка Lisp приведен на рис.1.

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

Трансляция этого кода производится обычным компилятором C++; никакого предварительного преобразования кода не требуется.

Библиотека состоит из двух слоёв. На первом из них вводятся S-выражения как структуры данных, на втором на базе введенных S-выражений строятся вычислители, моделирующие семантику соответствующих языков программирования (в настоящее время - языков Lisp и Refal). Первый слой позволяет, помимо прочего, использовать концепцию S-выражений для построения универсальных гетерогенных контейнеров [3].

Ссылки [1] T. A. Budd. Multy-Paradigm Programming in LEDA. Addison-Wesley, Reading, Massachusets, 1995.

[2] А. Столяров. Интеграция разнородных языковых механизмов в рамках одного языка программирования. Диссертация на соискание степени канд. физ.-мат. наук, Москва, 2002.

[3] Stolyarov, A. V. A framework of heterogenous dynamic data structures for object-oriented environment: the S-expression model In Knowledge-Based Software Engineering.

Proceedings of the 6th JCKBSE, vol. 108 of Frontiers in Artificial Intelligence and Applications, pages 75–82, Protvino, Russia, August 2004. IOS Press.

[4] Официальный сайт проекта InteLib.

http://www.intelib.org 15.35 – 16.Дмитрий Левин Москва, ALT Linux Проект: Sisyphus Hasher: технология безопасного выполнения приложений Аннотация Рассматривается одно из относительно новых применений hasher’а как инструмента быстрого развёртывания среды для изолированного выполнения приложений. Приводятся примеры ситуаций, в которых такое применение оказывается востребованным.

Изолированное выполнение приложений.

Разнообразные популярные средства виртуализации, в том числе виртуальные машины (такие как VMware и QEMU), модифицированные ядра Linux (такие как Linux Virtual Server и Virtuozzo) и User Mode Linux, можно рассматривать как различные формы изолированного выполнения приложений. Эти средства отличаются друг от друга предоставляемыми возможностями, потребляемыми ресурсами, сложностью реализации и удобством в использовании для решения тех или иных задач.

Оказывается, что hasher, который разрабатывался первоначально для сборки пакетов, тоже можно рассматривать как средство виртуализации, удобное для решения некоторых классов задач, связанных с изолированным выполнением приложений.

Основы архитектуры hasher’а.

hasher базируется на принципе создания новой среды выполнения для каждой задачи.

В основе архитектуры hasher’а лежит трёхпользовательская модель: вызывающий непривилегированный пользователь (C) и два непривилегированных вспомогательных псевдопользователя; первый (R) играет роль root в порождаемой среде выполнения (далее псевдоroot), второй (U) - обычного пользователя, выполняющего программы (далее псевдосборщик).

Архитектура hasher’а призвана исключить атаки вида UR, UC, RC, а также все виды атак на root.

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

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



Более подробное описание архитектуры hasher’а можно найти в [1].

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

Механизм кэширования существенно ускоряет процесс формирования этой среды, и при неизменности множества пакетов, используемых для создания среды выполнения, доводит скорость формирования до скорости распаковки архива.

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

С помощью hasher’а можно в любой момент обеспечить завершение всех процессов, работающих в среде выполнения.

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

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

Средствами hasher’а для запускаемого процесса может быть специально создан и предоставлен управляющий терминал вне зависимости от того, смонтирован ли /dev/pts в среду выполнения или нет.

Кроме того, средствами hasher’а для запускаемого процесса может быть специально создан и предоставлен канал для X11 forwarding (как trusted, так и untrusted) вне зависимости от того, какие ограничения для вспомогательных пользователей установлены правилами iptables.

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

Требуемые ресурсы Для создания среды выполнения hasher’у требуется репозиторий пакетов, совместимый с Sisyphus, на базе которого и будет порождаться среда выполнения.

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

Из других средств виртуализации такими показателями обладают только модифицированные ядра Linux.

Работоспособность hasher’а проверена на ядрах Linux 2.2.x, 2.4.x и 2.6.x. Для монтирования файловых систем средствами hasher’а требуется ядро Linux не старее 2.4.x.

Сложность реализации hasher реализован с помощью shell-скриптов общим объёмом менее 75Кб, и вспомогательной программы, написанной на C, объёмом исходного кода менее 75Кб, из которых объём кода, выполняемого с правами root, составляет менее 50Кб.

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

Примеры использования Вот наиболее очевидные примеры использования hasher’а в качестве средства изолированного выполнения приложений:

Тестирование программ в эталонной среде.

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

Отладка программ.

Непривилегированные программы удобно отлаживать в изолированной среде, создаваемой hasher’ом, особенно когда отладка в хост-системе невозможна по тем или иным причинам.

Запуск приложений, требующих изолированной среды выполнения по соображениям безопасности.

Если политика безопасности не допускает установки программы (со всем, что ей необходимо для работы) в хост-систему, то запуск такой программы в среде, создаваемой hasher’ом, может быть приемлемым решением.

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

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

Ссылки [1] Dmitry V. Levin, hasher: технология безопасной сборки дистрибутива, тезисы докладов 1-ой международной конференции разработчиков свободных программ на Протве, 2004.

16.00 – 16.Алфекс Кейнокенн, Иван Тарасов Franklin Electronic Publishers Разработка opensource ПО для распознавания языков, частых ошибок на базе AI-like алгоритмов - Алгоритмы определения принадлежности слов к языку без словаря В области встраиваемых устройств на базе opensource решений периодически возникает проблема создания эффективных безсловарных алгоритмов определения принадлежности набранных слов к тому или иному языку. Помимо этого к сожалению многие люди не обладают методом "слепой" печати, в связи с вышеописанными проблемами требуется эффективные решения их.

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

- Сбор весовых характеристик к сочетаниям символов Для работы так называемых алгоритмов основанных на основе прототипов языков требуется эффективные и наиболее оптимальные алгоритмы для автоматизированного анализа языка и словарей для выведения наиболее точных весовых характеристик для сочетания символов того или иного языка.





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

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

- Совместная работа безсловарных алгоритмов с словарями Совмещение безсловарных алгоритмов и словарных связана с потребностью наиболее верной проверки орфографии языка и его семантики. Данная часть доклада посвящена рассмотрению наиболее оптимальных алгоритмов для совмещения с словарями.

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

16.25 – 16.Денис Овсиенко Москва, ALTLinux Конфигурация современных сетей в среде Linux ALT Linux Sisyphus и современные сети 1 Факты Начиная с ноября 2004 года проводится ряд модификаций репозитория пакетов ALTLinux Sisyphus. Этот процесс направлен на повышение эффективности использования Sisyphus в сети.

Вносимые модификации можно разделить на две группы.

1.1 Новая роль: network-config-subsystem До этого пакет net-scripts был единственным штатным средством конфигурирования сети в ALTLinux. Вместо него была введена абстракция network-config-subsystem, которая представляет собой нечто, обеспечивающее конфигурацию сетевых ресурсов Linux-хоста. Сейчас network-configsubsystem предоставлется двумя пакетами: net-scripts и etcnet. net-scripts -- одна из бывших составных частей пакета initscripts, разрабатываемого в RedHat и используемого во многих других дистрибутивах.

/etc/net --- система конфигурации сети, которая разрабатывается с 2004 года и позиционируется как замена для той части, initscripts, которая обеспечивает конфигурацию сети. Эти два пакета взаимоисключают друг друга, но могут использоваться по очереди. В процессе внедрения / etc/net был адаптирован ряд пакетов, принимающих участие в процессе конфигурации, в результате чего система может работать корректно независимо от того, какая именно из двух реализаций установлена.

1.2 Постепенный отказ от net-tools Пакет net-tools в числе прочих содержит программы /sbin/ifconfig, /sbin/route и /sbin/arp. Эти программы когда-то были единственными утилитами для управления сетевыми интерфейсами, маршрутами и ARP-таблицей. С тех пор Linux три раза сменил версию стабильного ядра и два раза --- сетевой экран.

Сейчас для адекватного конфигурирования сети в Linux используются пакеты iproute2 и iptables.

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

Для улучшения ситуации было принято решение не устанавливать по умолчанию пакет net-tools. Так как некоторые другие пакеты его требуют, используя ifconfig или route в своих сценариях, их мантейнерами были внесены соответствующие правки для ликвидации этой зависимости.

2 Мотивы 2.1 Недостаточная гибкость Проект /etc/net разрабатывался, исходя из опыта использования initscripts в различных дистрибутивах и сопровождения net-scripts в рамках ALTLinux.

Практика показала, что дизайн net-scripts не приспособлен для расширения его функций и поддержки новых типов интерфейсов.

В то же время современные сети медленно, но верно меняют набор используемых протоколов; Linuxсистемы поддерживают всё больше аппаратного обеспечения, в том числе с горячим подключением;

растёт популярность нетривиальных конфигураций Linux-маршрутизаторов.

2.2 Громоздкая конфигурация В системе net-scripts для каждого IP-адреса на интерфейсе необходимо создавать отдельный файл. В результате для одного логического интерфейса будет создано несколько файлов, отличающихся только двумя переменными.

2.3 Чрезмерное использование переменных В net-scripts каждый параметр интерфейса должен быть определён в переменной. Во-первых, это приводит к большому количеству переменных, а вовторых, ограничивает набор параметров, которые можно передавать программам конфигурации, набором доступных переменных.

Например, при определении статических маршрутов net-scripts полагается на единожды определённый формат файла, а /etc/net просто передаёт строки утилите ip.

2.4 Дублирование информации Из-за того, что данные конфигурации, относящиеся к одному интерфейсу, в net-scripts находятся в разных местах, они связаны по имени интерфейса. При его изменении необходимо изменить это имя во всех файлах, в которых оно упоминается. Кроме того, имеет место и дублирование кода. Например, каждый из ifup-сценариев net-scripts кроме кода, относящегося к своему виду интерфейса, содержит вызов ifup-post, так как сценарий ifup не вызывает вспомогательные сценарии, а передаёт на них управление.

2.5 Решение В этом контексте был проведён долговременный анализ роли подсистемы конфигурации сети в работе Linux-системы и выделен ряд требований, выполнить которые можно было только в рамках новой разработки:

Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |   ...   | 9 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.