Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Взаимодействие процессов. Совместно выполняемые про­цессы могут быть либо независимыми, либо взаимодействующими




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

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

Для взаимодействия процесса-производителя и процесса-потре­бителя создается совместный буфер, заполняемый процессом-про­изводителем и потребляемым процессом-потребителем.

Буфер имеет фиксированные размеры и, следовательно, процес­сы могут находиться в состоянии ожидания, когда:

• буфер заполнен — ожидает процесс-производитель;

• буфер пуст — ожидает процесс-потребитель.

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

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

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

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

• создание очереди;

• просмотр очереди;

• чтение очереди;

• закрытие очереди.

Записывающий процесс осуществляет действия:

• открыть очередь;

• записать в очередь;

• закрыть очередь.

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

• определение количества элементов в очереди в текущий мо­мент;

• очистка очереди создавшим ее процессом.

Преимущества очереди: передача данных по указателю без ко­пирования, гибкое изменение порядка передачи и доступа, возмож­ность просмотра элементов очереди без их удаления.

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

Семафоры. Являются механизмами передачи сообщений от од­ного потока к другому о наступлении некоторого события. Различа­ют семафоры системные и оперативной памяти. Семафоры опера­тивной памяти — двойное слово в памяти системы, его описатель - адрес места в памяти. Такие семафоры не создаются и не открыва­ются, а устанавливаются в определенное состояние. Процессы, ис­пользующие семафоры оперативной памяти, должны иметь доступ к соответствующему сегменту памяти. Операционная система такие семафоры не обслуживает и не сообщает об их освобождении или захвате. При создании семафора или его открытии возвращается описатель семафора, включающий его имя. Операционная система контролирует завершение каждого процесса, владеющего систем­ным семафором, и освобождает его для процессов.

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

Управление семафором реализуется с помощью функций:

• установки семафора с целью сигнализации;

• ожидания вызывающим потоком, пока семафор не будет вы­ключен;

• ожидания потоком выключения одного из нескольких сема­форов.

Операционные системы используют разные термины для опре­деления способов межпроцессного взаимодействия.

В операционных системах OS/2 и Microsoft Windows существует специальный механизм для взаимодействия процессов в реальном масштабе времени. Этот механизм называется DDE (Dynamic Data Exchange -- динамический обмен данными). Он стандартизирует процесс обмена командами, сообщениями и объектами для обра­ботки между задачами. Наиболее распространенным процессом, для которого используется DDE, является печать.

Другим интерфейсом для обмена данными является OLE (Object Linking and Embedding — связывание и встраивание объектов). Этот интерфейс позволяет хранить объекты, созданные одной програм­мой, в объектах, созданных другой программой, а также редактиро­вать (печатать) их без нарушения целостности информации и свя­зей.

Одним из наиболее простых, удобных и интуитивных интерфей­сов межпрограммного взаимодействия является буфер обмена — Clipboard. Буфер обмена может содержать в себе один информаци­онный объект — фрагмент текста, рисунок и т. д. С помощью сис­темного вызова процесс может получить копию информации, со­держащейся в буфере обмена, или сам поместить объект в буфер, при этом старое содержимое буфера теряется. Таким образом, про­граммы получают простой, но эффективный способ обмена инфор­мацией в процессе своей работы.




Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 1475; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.