Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Судаков / Лекции / lec8_parall.ppt
Скачиваний:
29
Добавлен:
20.03.2015
Размер:
200.19 Кб
Скачать

Создание параллельных программ в модели с общей

памятьюAPI операционной системы (стандарт POSIX)

Порождение процессов

Сигналы

Конвейеры

Общая память System V

Семафоры, блокировки

Очереди сообщений

Потоки

Сокеты

Стандарт OpenMP

Создание параллельных программ с обменом

сообщениямиAPI операционных систем

Сокеты

Стандарты

MPI

PVM

Linda

Языки программирования с поддержкой параллелизма

Поддержка автопараллелизма

Pg[C, C++, Fortran] (Portland Group)

Adaptor - Fortran

Absoft – Fortran preprocessor

Без поддержки автопараллелизма

mpC

HPF

Erlang

Процессы

Процесс – код выполняющийся в отдельном адресном пространстве

Множество процессов может выполняться на одной машине параллельно или псевдопараллельно

Каждый процесс имеет доступ к ресурсам

Защищенные ресурсы

ресурсы совместно используемые с другими процессами

средства взаимодействия между процессами

Составные части процесса

Память

Сегменты кода

Сегменты данных

Сегменты стека

Стек задачи

Стек ядра

Другие сегменты

Общая память

Дескриптор процесса

Информация о выполняющемся процессе

Доступ к файловой системе

Файловые дескрипторы

Файлы

Каналы

Сокеты

Память

Физическая память разбита на страницы (обычно фиксированного размера)

Страницы объединяются в виртуальные области (сегменты)

Каждый процесс содержит ссылку на свои сегменты

Файловая система

Системные вызовы

open

close

read

write

Операционная система транслирует эти вызовы в специфические вызовы конкретных файловых систем

fat

ext3

pipe

socket

Порождение процессов

Один процесс может создать другой процесс

Оба процесса будут выполняться параллельно

fork+exec

spawn

Процесс А

spawn(программа B)

Процесс А

i=fork()

Процесс А

 

 

 

Процесс A

i!=0

 

 

i==0

 

 

 

 

 

Процесс А

 

 

 

 

exec(программа B)

 

 

 

 

 

 

 

 

 

 

 

 

 

Процесс B

 

 

 

 

 

 

Процесс А

 

Процесс B

 

 

 

 

 

 

 

 

 

 

 

Особенности fork+exec и spawn

fork

Порожденный процесс наследует все ресурсы родителя!

Порожденный процесс начинает выполняться с того мести, где был выполнен вызов

Перед вызовом exec порожденный процесс может создать новые ресурсы

eхес

Порожденная программа наследует часть ресурсов родителя

Порожденная программа начинает выполняться сначала

spawn

Порожденная программа наследует часть ресурсов родителя

Порожденная программа начинает выполняться сначала

Доступ к файловой системе

В UNIX системах по возможности все реализовано как файл

Обычные файлы

open

read

Write

Каналы (конвейер, pipe)

Аналог файла, но данные поступают не на диск, а другому процессу

Сокеты

Аналог файла, но данные уходят/приходят в/из сети

Соседние файлы в папке Лекции