- •34)Функции операционной системы по управлению оперативной памятью
- •35)Функции операционной системы по управлению файлами
- •36)Функции операционной системы по управлению внешней памятью и распределенными системами.
- •37)Система защиты и система поддержки командного интерпретатора операционной системы.
- •38)Сервисы и дополнительные функции операционной системы.
- •39)Системные вызовы, их основные виды.
- •40)Понятие процесса.
- •41)Состояния процесса.
- •42)Диспетчеризация процессов. Планировщики процессов.
- •43) Создание и уничтожение процесса.
- •44)Управление процессами.
- •45)Методы взаимодействия процессов.
- •46)Коммуникация процессов.
- •47)Клиент-серверная взаимосвязь как один из видов коммуникации процессов.
- •48)Потоки и многопоточное выполнение программ.
- •49)Тупики, методы их обнаружения и предотвращения. Граф распределения ресурсов.
45)Методы взаимодействия процессов.
Взаимодействие процессов – основа для распараллеленного, эффективного решения задач с помощью группы процессов, координирующих свои действия друг с другом. В лекции рассмотрены некоторые классические схемы взаимодействия процессов при решении типовых задач (например, схема производитель – потребитель), а также виды взаимодействия процессов между собой с помощью передачи сообщений, сокетов, удаленных вызовов процедур и методов.
Независимые и взаимодействующие процессы
С точки зрения взаимосвязи, процессы подразделяются на независимые и взаимодействующие.
Независимый процесс – процесс, никак не связанный с другими процессами, который не может влиять на исполнение других процессов или испытывать их влияние.
Взаимодействующий (совместный) процесс – процесс, который может влиять на исполнение других процессов или испытывать их влияние.
Преимущества взаимодействующих процессов очевидны:
-
Совместное использование данных ; процессы могут работать с общими данными, при условии их синхронизации (рассматриваемой в следующих лекциях);
-
Ускорение вычислений ;
-
Модульность: организация взаимодействующих процессов – это метод параллельного решения задачи, декомпозируемой на относительно независимые части, части, каждую из которых решает один из взаимодействующих процессов
-
Удобство.
Виды организации взаимосвязи процессов
С точки зрения видов взаимосвязи родительского и дочернего процессов, процессы подразделяются на независимые, подчиненные и сопроцессы.
Подчиненный процесс – процесс, зависящий от процесса-родителя. Подчиненный процесс уничтожается при уничтожении родительского процесса, как в системе UNIX. Процесс-родитель перед своим завершением должен ожидать завершения всех своих подчиненных процессов.
Независимый процесс – дочерний процесс, выполняемый независимо от процесса-родителя. Типичные примеры: процессы-демоны в UNIX, запускаемые начальным процессом init. Например, cron – процесс-демон, организующий вызов заданных в специальной таблице crontab действий с заданной периодичностью (автоматическое резервное копирование всех файловых систем на ленту в полночь); smbd – процесс-демон, управляющий серверным программным обеспечением SAMBA для сетевого доступа с Windows-машин к файлам UNIX-машины.
Сопроцесс (coprocess, coroutine) – процесс, равноправно взаимодействующий с другими такими же процессами; хранит свое текущее локальное управление (program counter); взаимодействует с другим сопроцессом Q с помощью операций resume (Q).Взаимодействие нескольких сопроцессов друг с другом операторами resume полностью равноправно. Данный механизм взаимодействия принципиально отличается от вызова процедуры. Операция detach ( открепить ) переводит сопроцесс в пассивное состояние, в котором могут быть доступны только его глобальные данные, но его программа уже завершена и не подлежит повторному запуску. Сопрограммное взаимодействие реализовано в языке СИМУЛА-67, который, как известно, стал родоначальником и объектно-ориентированного подхода.
Парадигма (шаблон) взаимодействия процессов: производитель – потребитель
Реализация взаимодействия процессов может быть основана на одной из классических парадигм (шаблонов), сложившейся за десятилетия развития программирования. В данном разделе рассмотрим одну из наиболее распространенных из парадигм взаимодействия процессов - производитель – потребитель: процесс-производитель (producer ) генерирует в некотором буфере информацию, которая используется процессом-потребителем (consumer).
При реализации данной парадигмы возможны схемы с неограниченным и ограниченным буфером, используемым для связи двух процессов.
-
Схема с неограниченным буфером (unbounded buffer) подразумевает, что на размер используемого буфера теоретически нет ограничений.
-
Схема с ограниченным буфером (bounded buffer) предполагается определенное ограничение размера буфера, например, константой BUFFER_SIZE.
При реализации следует учесть, что схема с ограниченным буфером, с точки зрения принципов надежных и безопасных вычислений, представляет опасность атаки "переполнение буфера"(buffer overrun) – ошибочного или преднамеренного превышения размера буфера. Чтобы избежать этой уязвимости, при заполнении буфера необходимо проверять его размер.