
- •Распределение памяти. Динамическое выделение памяти. Работа с динамической памятью с помощью операций new и delete
- •3 Динамически загружаемые библиотеки
- •4 Загрузка программ. Абсолютная загрузка.
- •5 Загрузка программ. Относительная загрузка.
- •7. Сборка программ. Объектный модуль
- •8. Сборка программ. Библиотеки объектных модулей.
- •9. Варианты построения загрузчиков
- •10. Управление памятью. Основные положения размещения процессов в памяти
- •11. Управление памятью. Многоэтапная обработка пользовательской программы
- •12. Управление памятью. Логическое и физическое адресное пространство
- •13. Управление памятью. Устройство управления памятью
- •14. Модели взаимодействия компонент распределенной системы.
- •15. Взаимодействия компонент распределенной системы. Обмен сообщениями
- •16. Взаимодействия компонент распределенной системы. Дальний вызов процедур
- •17. Взаимодействия компонент распределенной системы. Использование удаленных объектов
- •18. Взаимодействия компонент распределенной системы. Модель единственного вызова
- •19. Взаимодействия компонент распределенной системы. Модель единственного экземпляра
- •22. Взаимодействие компонент распределенной системы. Использование свойств удаленных объектов
- •23. Взаимодействие компонент распределенной системы. Распределенные события.
- •24. Взаимодействие компонент распределенной системы. Распределенные транзакции.
- •25. Взаимодействие компонент распределенной системы. Безопасность в распределенных системах.
- •26. Взаимодействие компонент распределенной системы. Промежуточные среды в Microsoft .Net Framework
- •27. Методы взаимодействия процессов. Независимые и взаимодействующие процессы. Виды организации взаимосвязи процессов.
- •28. Методы взаимодействия процессов. Парадигма (шаблон) взаимодействия процессов: производитель – потребитель.
- •29. Методы взаимодействия процессов. Коммуникация процессов.
- •30. Методы взаимодействия процессов. Непосредственная коммуникация процессов. Косвенная коммуникация процессов.
- •31. Методы взаимодействия процессов. Буферизация и очередь сообщений.
- •32. Методы взаимодействия процессов. Клиент-серверная взаимосвязь – один из наиболее распространенных видов коммуникации процессов.
- •33. Особенности ос для мобильных устройств
- •34. Рынок ос для мобильных устройств. Windows Mobile
- •35. Рынок ос для мобильных устройств. Symbian os
- •36. Рынок ос для мобильных устройств. Google Android
- •37. Рынок ос для мобильных устройств. BlackBerry os
- •38. Обзор инструментальных средств разработки приложений для мобильных устройств под управлением платформ Windows Mobile. Средства разработки приложений для мобильных устройств.
- •39. Обзор инструментальных средств разработки приложений для мобильных устройств под управлением платформ Windows Mobile. Базы данных.
- •40. Основы облачных вычислений. Виды облачных вычислений.
- •41. Основы облачных вычислений. Инфраструктура как сервис (IaaS).
- •42. Основы облачных вычислений. Платформа как сервис (PaaS).
- •43. Основы облачных вычислений. Программное обеспечение как сервис (SaaS).
- •44. Основы облачных вычислений. Варианты развёртывания облачных систем.
- •45. Основы облачных вычислений. Достоинства облачных вычислений.
- •46. Основы облачных вычислений. Недостатки и проблемы облачных вычислений.
- •47. Основы облачных вычислений. Распределенные вычисления (grid computing).
- •48. Особенности ос для персональных компьютеров.
- •49. Параллельные компьютерные системы и особенности их ос
- •50. Симметричные и асимметричные мультипроцессорные системы
- •51. Распределенные компьютерные системы и особенности их ос
- •52. Виды серверов в клиент-серверных компьютерных системах
- •53. Кластерные вычислительные системы и их ос
- •54. Системы и ос реального времени
- •55. Карманные компьютеры (handhelds) и их ос
- •56. Вычислительные среды
28. Методы взаимодействия процессов. Парадигма (шаблон) взаимодействия процессов: производитель – потребитель.
Реализация взаимодействия процессов может быть основана на одной из классических парадигм (шаблонов), сложившейся за десятилетия развития программирования. Процесс-производитель ( producer ) генерирует в некотором буфере информацию, которая используется процессом-потребителем ( consumer ).
При реализации данной парадигмы возможны схемы с неограниченным и ограниченным буфером, используемым для связи двух процессов.
1) Схема с неограниченным буфером (unbounded buffer) подразумевает, что на размер используемого буфера теоретически нет ограничений.
2) Схема с ограниченным буфером (bounded buffer) предполагается определенное ограничение размера буфера, например, константой BUFFER_SIZE.
При реализации следует учесть, что схема с ограниченным буфером, с точки зрения принципов надежных и безопасных вычислений, представляет опасность атаки "переполнение буфера"(buffer overrun) – ошибочного или преднамеренного превышения размера буфера. Чтобы избежать этой уязвимости, при заполнении буфера необходимо проверять его размер.
Реализация представления буфера на языке Си может иметь вид:
#define BUFFER_SIZE 1000 /* или другое конкретное значение */
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
Реализация схемы алгоритма процесса-производителя имеет вид:
item nextProduced; /* следующий генерируемый элемент */
while (1) { /* бесконечный цикл */
while (((in + 1) % BUFFER_SIZE) == out)
; /* ждать, пока буфер переполнен */
buffer[in] = nextProduced; /* генерация элемента */
in = (in + 1) % BUFFER_SIZE;
}
Реализация процесса-потребителя будет иметь вид:
item nextConsumed; /* следующий используемый элемент */
while (1) { /* бесконечный цикл */
while (in == out)
; /* ждать, пока буфер пуст */
nextConsumed = buffer[out]; /* использование элемента */
out = (out + 1) % BUFFER_SIZE;
}
29. Методы взаимодействия процессов. Коммуникация процессов.
Рассмотрим теперь возможные механизмы для непосредственной коммуникации процессов и синхронизации их действий.
Наиболее распространенный из них - система сообщений ; при этом процессы взаимодействуют между собой без обращений к общим переменным.
Средства коммуникации между процессами обеспечивают две операции вида:
1) send (message ) – отправка сообщения message ; размер сообщения может быть постоянным или переменным;
2) receive (message ) – получение сообщения в буфер message.
Если процессам P и Q требуется взаимодействовать между собой, им необходимо:
- Установить связь (communication link) друг с другом
- Обменяться сообщениями вида send/receive.
Реализация связи может быть физической (общая память, аппаратная шина) или логической (например, логические свойства).
При реализации коммуникационного механизма между процессами необходимо решить следующие вопросы:
Как устанавливается связь?
2) Можно ли установить связь более чем двух процессов?
3) Сколько связей может быть установлено между двумя заданными процессами?
4) Какова пропускная способность линии связи?
5) Является ли длина сообщения по линии связи постоянной или переменной?
6) Является ли связь ненаправленной или двунаправленной (дуплексной)?