Главная » Все файлы » Просмотр файлов из архивов » Документы » Н.В. Вдовикина, А.В. Казунин, И.В. Машечкин, А.Н. Терехин - Системное программное обеспечение - взаимодействие процессов (2002)

Н.В. Вдовикина, А.В. Казунин, И.В. Машечкин, А.Н. Терехин - Системное программное обеспечение - взаимодействие процессов (2002)

2019-05-08СтудИзба

Описание файла

Документ из архива "Н.В. Вдовикина, А.В. Казунин, И.В. Машечкин, А.Н. Терехин - Системное программное обеспечение - взаимодействие процессов (2002)", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Н.В. Вдовикина, А.В. Казунин, И.В. Машечкин, А.Н. Терехин - Системное программное обеспечение - взаимодействие процессов (2002)"

Текст из документа "Н.В. Вдовикина, А.В. Казунин, И.В. Машечкин, А.Н. Терехин - Системное программное обеспечение - взаимодействие процессов (2002)"

Московский Государственный Университет им. М.В. Ломоносова

Факультет вычислительной математики и кибернетики

Н.В.Вдовикина, А.В.Казунин, И.В.Машечкин, А.Н.Терехин

Системное программное обеспечение: взаимодействие процессов.

(учебно-методическое пособие)

Москва

2002

УДК 681.3.06

ББК 32.973-018.2

C40

В пособии рассматриваются основные аспекты управления процессами в операционной системе и организации межпроцессного взаимодействия на примере операционной системы UNIX. Изложение проиллюстрировано большим количеством программных примеров. Пособие рекомендуется для студентов, аспирантов и преподавателей в поддержку курсов лекций «Системное программное обеспечение» и «Операционные системы».

Авторы выражают благодарность Е.М.Шляховой, Ю.О.Нестеровой, А.Н.Розинкину, О.И.Вдовикину за помощь в подготовке пособия.

УДК 681.3.06

ББК 32.973-018.2

Рецензенты:

чл.-корр. РАН Л.Н.Королев

доцент Е.А.Кузьменкова

Вдовикина Н.В., Казунин А.В., Машечкин И.В., Терехин А.Н.

С40 Системное программное обеспечение: взаимодействие процессов: учебно-методическое пособие.

Издательский отдел факультета ВМиК МГУ

(лицензия ИД № 05899 от 24.09.2001), 2002, - 183 c.

Печатается по решению Редакционно-издательского Совета факультета вычислительной математики и кибернетики МГУ им. М.В. Ломоносова

ISBN 5-89407-139-9

© Издательский отдел факультета вычислительной математики и кибернетики МГУ им. М.В. Ломоносова, 2002

ОГЛАВЛЕНИЕ

Часть I. Теоретические основы. 5

1 Введение. 5

2 Понятие процесса. 5

2.1 Некоторые типы процессов. 6

2.1.1 «Полновесные процессы» 6

2.1.2 «Легковесные процессы» 7

2.2 Жизненный цикл процесса. 8

3 Синхронизация параллельных процессов. 12

3.1 Способы реализации взаимного исключения. 16

3.1.1 Запрещение прерываний и специальные инструкции. 16

3.1.2 Алгоритм Петерсона. 17

3.1.3 Активное ожидание. 18

3.1.4 Семафоры. 19

3.1.5 Мониторы. 20

3.1.6 Обмен сообщениями. 22

3.2 Классические задачи синхронизации процессов. 25

3.2.1 «Обедающие философы» 25

3.2.2 Задача «читателей и писателей» 28

3.2.3 Задача о «спящем парикмахере» 31

Часть II. реализация процессов. 34

4 Реализация процессов в ОС UNIX 34

4.1 Понятие процесса в UNIX. 34

4.1.1 Контекст процесса. 34

4.1.2 Тело процесса. 35

4.1.3 Аппаратный контекст. 36

4.1.4 Системный контекст. 37

4.2 Аппарат системных вызов в OC UNIX. 38

4.3 Порождение новых процессов. 41

4.4 Механизм замены тела процесса. 45

4.5 Завершение процесса. 50

4.6 Жизненный цикл процесса в ОС UNIX. 55

4.7 Начальная загрузка. Формирование О и 1 процессов. 56

4.8 Планирование процессов в ОС UNIX. 58

4.9 Принципы организация свопинга. 60

Часть III. реализация взаимодействия процессов. 62

5 Элементарные средства межпроцессного взаимодействия. 65

5.1 Сигналы. 65

5.2 Надежные сигналы. 73

5.3 Программные каналы 79

5.4 Именованные каналы (FIFO) 87

5.5 Нелокальные переходы. 90

5.6 Трассировка процессов. 93

6 Средства межпроцессного взаимодействия System V. 99

6.1 Организация доступа и именования в разделяемых ресурсах. 99

6.1.1 Именование разделяемых объектов. 99

6.1.2 Генерация ключей: функция ftok(). 100

6.1.3 Общие принципы работы с разделяемыми ресурсами. 101

6.2 Очередь сообщений. 103

6.2.1 Доступ к очереди сообщений. 104

6.2.2 Отправка сообщения. 104

6.2.3 Получение сообщения. 105

6.2.4 Управление очередью сообщений. 106

6.3 Разделяемая память 112

6.3.1 Создание общей памяти. 113

6.3.2 Доступ к разделяемой памяти. 113

6.3.3 Открепление разделяемой памяти. 114

6.3.4 Управление разделяемой памятью. 115

6.4 Семафоры. 116

6.4.1 Доступ к семафору 117

6.4.2 Операции над семафором 118

6.4.3 Управление массивом семафоров. 120

7 Взаимодействие процессов в сети. 126

7.1 Механизм сокетов. 126

7.1.1 Типы сокетов. Коммуникационный домен. 127

7.1.2 Создание и конфигурирование сокета. 128

7.1.3 Предварительное установление соединения. 131

7.1.4 Прием и передача данных. 133

7.1.5 Завершение работы с сокетом. 135

7.1.6 Резюме: общая схема работы с сокетами. 136

7.2 Среда параллельного программирования MPI 145

7.2.1 Краткий обзор параллельных архитектур. 145

7.2.2 Модель программирования MPI. 150

7.2.3 Функции общего назначения. Общая структура программы. 152

7.2.4 Прием и передача данных. Общие замечания. 156

7.2.5 Коммуникации «точка-точка». Блокирующий режим. 158

7.2.6 Коммуникации «точка-точка». Неблокирующий режим. 164

7.2.7 Коллективные коммуникации. 171

8 Алфавитный указатель упоминаемых библиотечных функций и системных вызовов. 181

9 Список литературы 183

Часть I. Теоретические основы.

1ВВЕДЕНИЕ.

Вычислительная система (ВС) есть совокупность аппаратных и программных средств, функционирующих как единое целое и предназначенных для решения задач определенного класса. Любая вычислительная система обладает некоторым набором ресурсов. Эти ресурсы включают в себя как реально существующие физические ресурсы (устройства) с их реальными характеристиками, так и устройства, эксплутационные характеристики которых полностью или частично реализованы программным образом – виртуальные (логические) ресурсы (устройства). Под операционной системой (ОС) понимают комплекс программ осуществляющий управление, распределение и контроль за использованием ресурсов вычислительной системы.

Любая операционная система оперирует некоторыми сущностями (понятиями), которые во многом характеризуют свойства этой операционной системы. К таким сущностям могут относиться понятия – задача, процесс, объект, файл, набор данных и т.д.. Одним из важнейших таких понятий является понятие процесса. В общем случае процесс можно определить как совокупность данных и машинных команд, исполняющуюся в рамках ВС и обладающую правами на владение некоторым набором ресурсов. Эти права могут носить эксклюзивный характер, когда ресурс принадлежит только одному процессу, либо ресурс может одновременно принадлежать нескольким процессам – в этом случае ресурс называется разделяемым.

Во всех современных ВС поддерживается режим мультипрограммирования, поэтому одной из основных функций ОС является задача управления процессами в ВС. Эта задача включает в себя:

  • обеспечение жизненного цикла процессов (порождение, выполнение и уничтожение процессов);

  • распределение ресурсов ВС;

  • синхронизацию процессов;

  • организацию межпроцессного взаимодействия.

2Понятие процесса.

Нетрудно найти целый ряд “синонимов” понятия типа “процесс” – процесс, нить, задача, задание или программа, причем в различных ОС могут присутствовать только часть понятий из этого набора, и их интерпретация во многом будет зависеть от конкретной вычислительной среды, где они используются. Таким образом, разные операционные системы оперируют с разными понятиями относительно базовой сущности, с которой работает ОС . Более того эти понятия могут переплетаться, т.е. задача может состоять из нескольких процессов, а процесс имеет многонитевую структуру.

Для каждого процесса определена структура данных, фиксирующая текущее состояние процесса. Такую структуру называют контекстом процесса. Она существует с момента создания процесса и до момента завершения его работы. В зависимости от конкретной операционной системы, данная информационная структура может включать в себя содержимое пользовательского адресного пространства (т.е. содержимое сегментов программного кода, данных, стека, разделяемых сегментов и сегментов файлов, отображаемых в виртуальную память) – пользовательский контекст, содержимое аппаратных регистров (таких, как регистр счетчика команд, регистр состояния процессора, регистр указателя стека и регистров общего назначения) – регистровый контекст, а также структуры данных ядра ОС, связанные с этим процессом (контекст системного уровня). В общем случае данная информация может дополняться или меняться по ходу исполнения процесса в зависимости от того, чем в данный момент процесс занимался.

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

2.1Некоторые типы процессов.

2.1.1 «Полновесные процессы»

Существует понятие «полновесные процессы» - это процессы, выполняющиеся внутри защищенных участков памяти операционной системы, то есть имеющие собственные виртуальные адресные пространства для статических и динамических данных. Для «полновесных процессов» можно сказать, что операционная система поддерживает их обособленность: у каждого процесса имеется свое виртуальное адресное пространство, каждому процессу назначаются свои ресурсы - файлы, окна, семафоры и т.д. Такая обособленность нужна для того, чтобы защитить один процесс от другого, поскольку они, совместно используя все ресурсы ВС, конкурируют с друг другом. В общем случае процессы принадлежат разным пользователям, разделяющим один компьютер, и ОС берет на себя все функции, связанные с распределением ресурсов между конкурирующими процессами. В операционных системах управление такими процессами тесно связанно с управлением и защитой памяти, поэтому переключение процессора с выполнения одного процесса на выполнение другого является достаточно дорогой операцией по времени.

2.1.2«Легковесные процессы»

Наряду с «полновесными процессами» существуют и «легковесные процессы», они же нити, которые в той или иной степени присутствуют в различных операционных системах. При мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме. Однако задача, решаемая в рамках одного процесса, может обладать внутренним параллелизмом, который позволяет ускорить ее выполнение. Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой "ветви" процесса. Для этих целей современные ОС предлагают использовать механизм многонитевой обработки (multithreading). При этом вводится новое понятие "нить" (thread). Нити, относящиеся к одному процессу, не настолько изолированы друг от друга, как процессы в традиционной многозадачной системе, между ними легко организовать тесное взаимодействие. Нити, или «легковесные процессы», во многих отношениях схожи с процессами. Каждая нить выполняется строго последовательно и имеет свой собственный программный счетчик и стек. Нити, как и процессы, могут, например, порождать нити-потомки, могут переходить из состояния в состояние. Подобно традиционным процессам (то есть процессам, состоящим из одной нити), нити могут находится в одном из следующих состояний: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ и ГОТОВНОСТЬ. Пока одна нить заблокирована, другая нить того же процесса может выполняться. Нити разделяют процессор так, как это делают процессы, в соответствии с различными вариантами планирования.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
427
Средний доход
с одного платного файла
Обучение Подробнее