ВУЗ:
Составители:
63
Параллельность и псевдопараллельность
Параллельностью называется параллельное выполнение двух или более
процессов. Этот термин служит для описания общих принципов организации
одновременного выполнения процессов в вычислительных системах, в частности, в
мультипроцессорных системах.
Многопроцессорные системы
Вычислительные системы первого поколения предполагали использование
однопроцессорной архитектуры, состоящей из одного центрального процессора (ЦП),
памяти и периферийных устройств. Многопроцессорная архитектура, напротив,
включает в себя два и более ЦП, совместно использующих общую память и
периферийные устройства, располагая большими возможностями в увеличении
производительности системы, связанными с одновременным исполнением процессов на
разных ЦП. Каждый ЦП функционирует независимо от других, но все они работают с
одним и тем же ядром операционной системы. Поведение процессов в такой системе
ничем не отличается от поведения в однопроцессорной системе - с сохранением
семантики обращения к каждой системной функции - но при этом они могут открыто
перемещаться с одного процессора на другой.
Параллельная работа нескольких процессоров в режиме ядра по выполнению
различных процессов создает ряд проблем, связанных с сохранением целостности
данных и решаемых благодаря использованию соответствующих механизмов защиты.
Проблемы, связанные с многопроцессорными системами
Первой из проблем является проблема разделения ресурсов. Действительно,
представим себе две программы, пытающиеся печатать что-то на одном принтере. Если
они будут делать это произвольным образом,их вывод на бумаге будет перемешан и
скорее всего окажется совершенно нечитаемым. Одним из разумных решений может
быть монопольный захват принтера одной из программ. При этом другая программа
будет вынуждена ждать, пока принтер не освободится. Значит, нужны средства для
захвата ресурсов и ожидания их освобождения.
Другая проблема - это проблема реентерабельности (reenterability - повтоpной
входимости, от re-enter) разделяемых программ. Представим себе, что две задачи
используют общий программный модуль. Примером такого модуля может являться
само ядро ОС. Представим себе, что одна из программ вызвала процедуру из
разделяемого модуля. После этого произошло переключение задач, и вторая задача
обращается к тому же модулю.
Существует техника реализации этого модуля, при которой такой вызов не
создаст никаких проблем. Такая техника состоит в том, что все данные, с которыми
работает разделяемая программа, хранятся в ее локальных переменных. Для каждой
инкарнации программы создается собственная копия таких данных. Такое требование
легко выполняется для функций, не имеющих побочного эффекта, таких как
вычисление синуса или поиск символа в текстовой строке.
При других техниках программирования могут возникнуть серьезные
проблемы, вплоть до развала системы. Модули, которые можно вызывать многократно,
называются реентерабельными. Соответственно программы, которые так вызывать
нельзя, называются нереентерабельными.
Параллельность и псевдопараллельность Параллельностью называется параллельное выполнение двух или более процессов. Этот термин служит для описания общих принципов организации одновременного выполнения процессов в вычислительных системах, в частности, в мультипроцессорных системах. Многопроцессорные системы Вычислительные системы первого поколения предполагали использование однопроцессорной архитектуры, состоящей из одного центрального процессора (ЦП), памяти и периферийных устройств. Многопроцессорная архитектура, напротив, включает в себя два и более ЦП, совместно использующих общую память и периферийные устройства, располагая большими возможностями в увеличении производительности системы, связанными с одновременным исполнением процессов на разных ЦП. Каждый ЦП функционирует независимо от других, но все они работают с одним и тем же ядром операционной системы. Поведение процессов в такой системе ничем не отличается от поведения в однопроцессорной системе - с сохранением семантики обращения к каждой системной функции - но при этом они могут открыто перемещаться с одного процессора на другой. Параллельная работа нескольких процессоров в режиме ядра по выполнению различных процессов создает ряд проблем, связанных с сохранением целостности данных и решаемых благодаря использованию соответствующих механизмов защиты. Проблемы, связанные с многопроцессорными системами Первой из проблем является проблема разделения ресурсов. Действительно, представим себе две программы, пытающиеся печатать что-то на одном принтере. Если они будут делать это произвольным образом,их вывод на бумаге будет перемешан и скорее всего окажется совершенно нечитаемым. Одним из разумных решений может быть монопольный захват принтера одной из программ. При этом другая программа будет вынуждена ждать, пока принтер не освободится. Значит, нужны средства для захвата ресурсов и ожидания их освобождения. Другая проблема - это проблема реентерабельности (reenterability - повтоpной входимости, от re-enter) разделяемых программ. Представим себе, что две задачи используют общий программный модуль. Примером такого модуля может являться само ядро ОС. Представим себе, что одна из программ вызвала процедуру из разделяемого модуля. После этого произошло переключение задач, и вторая задача обращается к тому же модулю. Существует техника реализации этого модуля, при которой такой вызов не создаст никаких проблем. Такая техника состоит в том, что все данные, с которыми работает разделяемая программа, хранятся в ее локальных переменных. Для каждой инкарнации программы создается собственная копия таких данных. Такое требование легко выполняется для функций, не имеющих побочного эффекта, таких как вычисление синуса или поиск символа в текстовой строке. При других техниках программирования могут возникнуть серьезные проблемы, вплоть до развала системы. Модули, которые можно вызывать многократно, называются реентерабельными. Соответственно программы, которые так вызывать нельзя, называются нереентерабельными. 63
Страницы
- « первая
- ‹ предыдущая
- …
- 61
- 62
- 63
- 64
- 65
- …
- следующая ›
- последняя »