Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22700_62_OSBD_Lektsii.doc
Скачиваний:
54
Добавлен:
11.02.2015
Размер:
1.11 Mб
Скачать

Тема 3. Организация многопрограммной работы. Процессы и потоки Лекция №3. Организация многопрограммной работы

В рамках данной лекции рассматриваются нижеследующие вопросы:

  • Иерархия процессов;

  • Процессы и потоки;

  • Атрибуты процессов и потоков;

  • Средства взаимодействия процессов;

  • Модели взаимодействия процессов. Производители-потребители. Клиент-сервер. Читатели-писатели. Обедающие философы;

  • Буферизация при приеме/передаче информации;

  • Обмен сообщениями.

Иерархия процессов: процесс (родительский) может порождать другой процесс (дочерний), и эти эта связь процессов сохраняется в системе в течение жизни процессов. Дочерний процесс также может создавать процессы.

Процессы и потоки

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

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

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

В любой системе понятие "процесс" включает в себя следующее:

  • исполняемый код,

  • собственное адресное пространство, которым является совокупность виртуальных адресов, которые может использовать процесс,

  • ресурсы системы, такие как файлы, семафоры и т.п., которые назначены процессу операционной системой,

  • хотя бы один поток выполнения.

Адресное пространство каждого процесса защищено от вмешательства в него любого другого процесса.

Поток является выполняемой единицей, которая находится в адресном пространстве процесса и использует ресурсы, выделенные процессу.

Обычно поток имеет следующие атрибуты:

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

  • Динамический приоритет - значение приоритета потока в данный момент.

  • Базовый приоритет - нижний предел динамического приоритета потока.

  • Время выполнения потока - суммарное время выполнения потока за период существования потока.

  • Счетчик приостановок - текущее количество приостановок выполнения потока.

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

Параллельные процессы могут быть либо независимыми (independed processes), либо взаимодействующими (cooperating processes).

Процессы могут взаимодействовать посредством обмена информацией. По объему передаваемой информации и возможному воздействию на поведение другого процесса все средства такого обмена можно разделить на категории:

  • Сигнал (signal) - передается минимум информации: один бит, “да” или “нет”. Используется для извещения процесса о наступлении какого-либо события. Примитив signal извещает о наступлении события, примитив wait выдает процесс, ожидающий этого события;

  • Сообщение (message) - передается блок данных вместе с управляющей информацией, определяющей тип сообщения;

  • Разделяемая память (shared memory). Два или более процессов могут совместно использовать некоторую область адресного пространства;

  • Канал (pipe) - средство межпроцессного взаимодействия в многозадачных системах, доступ к каналу осуществляется на его конец (end), канал может быть однонаправленным или двунаправленным.

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

Здесь можно выделить три принципиальных варианта:

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

  • Буфер ограниченной емкости. Размер буфера равен n, то есть, линия связи не может хранить до момента получения более чем n единиц информации. Если в момент передачи данных в буфере хватает места, то передающий процесс не должен ничего ожидать. Информация просто копируется в буфер. Если же в момент передачи данных буфер заполнен или места не достаточно, то необходимо задержать работу процесса отправителя до появления в буфере свободного пространства.

  • Буфер неограниченной емкости. Теоретически это возможно, но практически вряд ли реализуемо. Процесс, посылающий информацию, никогда не ждет окончания ее передачи и приема другим процессом.

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

Первая причина буферизации– это различныескорости приема и передачиинформации, которые имеют участники обмена.

Вторая причина буферизации– это различныеобъемыданных, которые могут быть приняты или получены участниками обмена единовременно.

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

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

Следует различать кэшибуфер. Кэш - область быстрой памяти, содержащая копию данных из медленной памяти. Буфер обычно содержит единственный набор данных, существующий в системе, тогда как кэш, по своему определению, содержит копию данных, существующих где-то еще.

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

  • выполнение совместной работы двумя процессами, где один является «производителем», а другой – «потребителем» (producer - consumer);

  • клиент-сервер;

  • «обедающие философы»;

  • «читатали-писатели».

Схема producer – consumer подразумевает использование буфера. Если буфер заполнен, то процесс «производитель» должен ожидать его освобождения «потребителем», если буфер пуст, то должен ожидать процесс «потребитель».

В схеме клиент-сервер клиент обращается к серверу за услугой и ожидает завершения ее исполнения.

«Обедающие философы». Пять философов сидят за круглым столом и у каждого есть тарелка спагетти. Есть можно только двумя вилками. Между каждыми двумя тарелками лежит одна вилка. Философ либо принимает пищу, либо размышляет. Если философ становится голоден, он старается поочередно в любом порядке завладеть правой и левой вилкой. Если ему удастся взять две вилки, он на некоторое время приступает к еде, затем кладет обе вилки на стол и продолжает размышлять. Задача обедающих философов моделирует конкуренцию за доступ к ограниченному количеству ресурсов, например к устройствам ввода-вывода.

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

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

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

Кроме того, может использоваться структура, называемая почтовым ящиком. Ящик являет собой буфер на некоторое количество сообщений, которое обычно указывается при его создании. При использовании почтовых ящиков в качестве параметров адреса в вызовах send и receive указываются почтовые ящики, а не процессы. Когда процесс пытается послать сообщение заполненному почтовому ящику, он приостанавливается до тех пор, пока из этого почтового ящика не будет извлечено сообщение, освобождая пространство для нового сообщения.

Системе передачи сообщений приходится также решать вопрос о том, как именовать процессы, чтобы однозначно указывать процесс в вызовах посылки send или приема receive.

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

Основная литература

Учебник / Учебное пособие

Раздел

Страницы

Таненбаум Э. Современные операционные системы. 3-е изд. - СПб.: Питер, 2010. - 1120 е.: ил.

2.3.1-2.3.5

150-164

Соседние файлы в предмете Операционные системы