🗊Презентация Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library

Нажмите для полного просмотра!
Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №1Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №2Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №3Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №4Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №5Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №6Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №7Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №8Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №9Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №10Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №11Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №12Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №13Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №14Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №15Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №16Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №17Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №18Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №19Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №20Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №21Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №22Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library, слайд №23

Содержание

Вы можете ознакомиться и скачать презентацию на тему Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library. Доклад-сообщение содержит 23 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Событийно-ориентированные архитектуры
Программирование с использованием POSIX thread library
2006-2007 Иртегов Д.В.
Учебное пособие подготовлено по заказу и при поддержке 
ООО «Сан Майкросистемс СПБ»
Описание слайда:
Событийно-ориентированные архитектуры Программирование с использованием POSIX thread library 2006-2007 Иртегов Д.В. Учебное пособие подготовлено по заказу и при поддержке ООО «Сан Майкросистемс СПБ»

Слайд 2





Событийно-ориентированные архитектуры
Графические пользовательские интерфейсы
Сетевые серверные приложения
Веб-приложения
Ядра операционных систем
Приложения жесткого реального времени
Описание слайда:
Событийно-ориентированные архитектуры Графические пользовательские интерфейсы Сетевые серверные приложения Веб-приложения Ядра операционных систем Приложения жесткого реального времени

Слайд 3





Что такое событийно-ориентированная архитектура
S. Ferg
http://eventdrivenpgm.sourceforge.net/
Event-Driven Programming:
Introduction, Tutorial, History
Описание слайда:
Что такое событийно-ориентированная архитектура S. Ferg http://eventdrivenpgm.sourceforge.net/ Event-Driven Programming: Introduction, Tutorial, History

Слайд 4





Голливудский принцип
Don’t call us, we will call you
(не звоните нам, мы сами вам позвоним)
Среда (framework) вызывает ваши компоненты, а не вы вызываете библиотеку.
Вы регистрируете обработчики, framework вызывает их.
Каждый обработчик – конечный автомат (обработка события приводит к изменению переменных состояния)
Описание слайда:
Голливудский принцип Don’t call us, we will call you (не звоните нам, мы сами вам позвоним) Среда (framework) вызывает ваши компоненты, а не вы вызываете библиотеку. Вы регистрируете обработчики, framework вызывает их. Каждый обработчик – конечный автомат (обработка события приводит к изменению переменных состояния)

Слайд 5





Графические пользовательские интерфейсы
Описание слайда:
Графические пользовательские интерфейсы

Слайд 6





Драйверы устройств
Описание слайда:
Драйверы устройств

Слайд 7





Обработка запросов блочным или STREAMS устройством
Описание слайда:
Обработка запросов блочным или STREAMS устройством

Слайд 8





Диаграмма активностей
Описание слайда:
Диаграмма активностей

Слайд 9





Обработка событий и потоки
Потоки
При ожидании события сохраняется контекст потока
Поток не знает, что его прерывали
Обработка событий
Обработчик завершается после обработки каждого события
Обработчик знает, что он прерывается
Нет необходимости сохранять контекст
Контекст можно переиспользовать для других обработчиков
Описание слайда:
Обработка событий и потоки Потоки При ожидании события сохраняется контекст потока Поток не знает, что его прерывали Обработка событий Обработчик завершается после обработки каждого события Обработчик знает, что он прерывается Нет необходимости сохранять контекст Контекст можно переиспользовать для других обработчиков

Слайд 10





Менеджер событий
Часть framework
Это он вызывает обработчики
Он может блокироваться, ожидая событий
Или может устанавливать события в очередь
Может быть однопоточным (синхронная очередь событий)
Или многопоточным (асинхронная очередь событий)
Описание слайда:
Менеджер событий Часть framework Это он вызывает обработчики Он может блокироваться, ожидая событий Или может устанавливать события в очередь Может быть однопоточным (синхронная очередь событий) Или многопоточным (асинхронная очередь событий)

Слайд 11





Преимущества событийно-ориентированной архитектуры
Можно обрабатывать много событий в одном потоке
Потоки создавать дорого (мегабайт стека + LWP в ядре + системные структуры данных …)
Можно получить значительную часть преимуществ многопоточности в однопоточной программе
Описание слайда:
Преимущества событийно-ориентированной архитектуры Можно обрабатывать много событий в одном потоке Потоки создавать дорого (мегабайт стека + LWP в ядре + системные структуры данных …) Можно получить значительную часть преимуществ многопоточности в однопоточной программе

Слайд 12





Недостатки событийно-ориентированной архитектуры
Код обработчика событий не должен 
делать длинных вычислений
вызывать блокирующиеся системные вызовы
Код, рассчитанный на друге архитектуры, нуждается в переделке
либо его надо запускать в отдельных нитях
Описание слайда:
Недостатки событийно-ориентированной архитектуры Код обработчика событий не должен делать длинных вычислений вызывать блокирующиеся системные вызовы Код, рассчитанный на друге архитектуры, нуждается в переделке либо его надо запускать в отдельных нитях

Слайд 13





Событийно-ориентированная архитектура сетевого сервера
Приложение ориентированное на ввод/вывод
Менеджер событий на select/poll
Событие – готовность дескриптора к чтению или записи
Менеджер событий на aio
Событие – завершение предыдущей операции чтеня или записи
Solaris ports можно использовать для диспетчеризации событий обоих типов
Описание слайда:
Событийно-ориентированная архитектура сетевого сервера Приложение ориентированное на ввод/вывод Менеджер событий на select/poll Событие – готовность дескриптора к чтению или записи Менеджер событий на aio Событие – завершение предыдущей операции чтеня или записи Solaris ports можно использовать для диспетчеризации событий обоих типов

Слайд 14





Реализация кэширующего прокси
Очень простой прокси
Кэш в ОЗУ (теряется при рестарте)
Поддерживает только GET и HEAD
Кэширует все подряд
Предполагается, что вы знаете HTTP
Рассмотрим диаграмму активностей по обработке одного запроса
Будем реализовать обработку запроса двумя обработчиками – клиентского соединения и серверного соединения
Описание слайда:
Реализация кэширующего прокси Очень простой прокси Кэш в ОЗУ (теряется при рестарте) Поддерживает только GET и HEAD Кэширует все подряд Предполагается, что вы знаете HTTP Рассмотрим диаграмму активностей по обработке одного запроса Будем реализовать обработку запроса двумя обработчиками – клиентского соединения и серверного соединения

Слайд 15





Клиентское соединение (последовательность событий)
Ждем входящего соединения
Получаем его
Получаем строку запроса
GET http://www.lenta.ru HTTP/1.0
Поддерживается ли тип запроса?
Есть ли страница в кэше? (если нет – надо создать)
Докачана ли страница в кэше или нет?
Передать страницу из кэша клиенту
Если страница не докачана, надо подождать, пока не появятся еще данные.
Описание слайда:
Клиентское соединение (последовательность событий) Ждем входящего соединения Получаем его Получаем строку запроса GET http://www.lenta.ru HTTP/1.0 Поддерживается ли тип запроса? Есть ли страница в кэше? (если нет – надо создать) Докачана ли страница в кэше или нет? Передать страницу из кэша клиенту Если страница не докачана, надо подождать, пока не появятся еще данные.

Слайд 16





Картинка
Описание слайда:
Картинка

Слайд 17





Серверное соединение
(последовательность событий)
Создается по запросу клиентского соединения
Найти IP-адрес веб-сервера
Установить соединение
Вернуть ошибку, если предыдущие два шага не получились
Переслать запрос
Принимать данные
Оповещать клиентов, когда приходят новые данные
По закрытию соединения, пометить страницу в кэше как докачанную
Описание слайда:
Серверное соединение (последовательность событий) Создается по запросу клиентского соединения Найти IP-адрес веб-сервера Установить соединение Вернуть ошибку, если предыдущие два шага не получились Переслать запрос Принимать данные Оповещать клиентов, когда приходят новые данные По закрытию соединения, пометить страницу в кэше как докачанную

Слайд 18





Надо ли анализировать заголовок?
Настоящий прокси должен анализировать запрос 
Cache-control: no-cache
И ответ 
Pragma: No-cache
Expires
Наш игрушечный прокси будет кэшировать все подряд
Описание слайда:
Надо ли анализировать заголовок? Настоящий прокси должен анализировать запрос Cache-control: no-cache И ответ Pragma: No-cache Expires Наш игрушечный прокси будет кэшировать все подряд

Слайд 19





Что делать, если клиент закроет соединение?
Оповещать серверное соединение
Но если есть еще клиенты, работающие с этой страницей, серверное соединение завершать не следует
Варианты: 
Серверное соединение должно считать, сколько клиентов работает с этой страницей
Серверное соединение в любом случае должно докачивать страницу до конца
Второй вариант явно проще
Описание слайда:
Что делать, если клиент закроет соединение? Оповещать серверное соединение Но если есть еще клиенты, работающие с этой страницей, серверное соединение завершать не следует Варианты: Серверное соединение должно считать, сколько клиентов работает с этой страницей Серверное соединение в любом случае должно докачивать страницу до конца Второй вариант явно проще

Слайд 20





Это еще не все
http://debian.nsu.ru/debian-cd/current/i386/iso-dvd/
Index of /debian-cd/current/i386/iso-dvd/
Name			Last Modified	Size	Type
Parent Directory/ 				-  	Directory
debian-40r0-i386-DVD-1.iso 	2007-Apr-23 10:07:09 	4.3G 	application/octet-stream
debian-40r0-i386-DVD-2.iso 	2007-Apr-23 10:10:47 	4.3G 	application/octet-stream
debian-40r0-i386-DVD-3.iso 	2007-Apr-23 10:14:35 	4.2G 	application/octet-stream
Под .iso на 32-разрядной платформе вам никогда не дадут памяти
На 64-разрядной платформе может не хватить swap-пространства или квоты памяти
Описание слайда:
Это еще не все http://debian.nsu.ru/debian-cd/current/i386/iso-dvd/ Index of /debian-cd/current/i386/iso-dvd/ Name Last Modified Size Type Parent Directory/  -   Directory debian-40r0-i386-DVD-1.iso 2007-Apr-23 10:07:09 4.3G application/octet-stream debian-40r0-i386-DVD-2.iso 2007-Apr-23 10:10:47 4.3G application/octet-stream debian-40r0-i386-DVD-3.iso 2007-Apr-23 10:14:35 4.2G application/octet-stream Под .iso на 32-разрядной платформе вам никогда не дадут памяти На 64-разрядной платформе может не хватить swap-пространства или квоты памяти

Слайд 21





Что делать, если не хватает памяти под страницу?
Надо прекращать кэширование и переходить в «сквозной» режим
Если сервер хороший, он передаст вам размер страницы в поле заголовка Content-Length
Но сервера HTTP/1.0 имеют право этого не делать
Надо уметь переключаться в «сквозной» режим на ходу
Но что делать, если с этой страницей работает несколько клиентов?
Описание слайда:
Что делать, если не хватает памяти под страницу? Надо прекращать кэширование и переходить в «сквозной» режим Если сервер хороший, он передаст вам размер страницы в поле заголовка Content-Length Но сервера HTTP/1.0 имеют право этого не делать Надо уметь переключаться в «сквозной» режим на ходу Но что делать, если с этой страницей работает несколько клиентов?

Слайд 22





Что делать, если не хватает памяти под страницу?
Первые три студента в группе, которые будут сдавать прокси, не будут тестироваться на сайтах с большими объектами
Описание слайда:
Что делать, если не хватает памяти под страницу? Первые три студента в группе, которые будут сдавать прокси, не будут тестироваться на сайтах с большими объектами

Слайд 23





Еще рекомендации
Стандартного API для асинхронных обращений к DNS нет
Допускается блокировка на gethostbyname
Существует стандартный API асинхронного connect(3SOCKET)
fcntl(socket, F_SETFL, O_NONBLOCK);
Для стресс-тестирования можно использовать wget(1)
Описание слайда:
Еще рекомендации Стандартного API для асинхронных обращений к DNS нет Допускается блокировка на gethostbyname Существует стандартный API асинхронного connect(3SOCKET) fcntl(socket, F_SETFL, O_NONBLOCK); Для стресс-тестирования можно использовать wget(1)



Похожие презентации
Mypresentation.ru
Загрузить презентацию