Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб пособие по КР, СПО.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.72 Mб
Скачать

5. Организация параллельных

ВЫЧИСЛЕНИЙ СРЕДСТВАМИ

ОПЕРАЦИОННОЙ СИСТЕМЫ

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

Мультипрограммирование – это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Эти программы совместно используют не только процессор, но и другие ресурсы компьютера: оперативную и внешнюю память, устройства ввода-вывода, данные. [4]

Мультипроцессорная обработка – это способ организации вычислительного процесса в системах с несколькими процессорами, при котором несколько задач (процессов, потоков) могут одновременно выполняться на разных процессорах системы. [4]

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

В настоящее время большинство операционных систем (ОС) поддерживают режим мультипрограммирования. Однако только современные ОС реализуют мультипроцессорную обработку (Sun Solaris 2.x, Santa Crus Operations Open Server 3.x, IBM OS/2, Microsoft Windows NT и Novell Net Ware, начиная с 4.1).

Для организации мультипрограммирования в ОС различают следующие виды элементарных работ: процесс и поток.

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

Процесс обладает несколькими объектами: адресное пространство, выполняемый модуль (модули) и все, что эти модули создают или открывают. Как минимум, процесс должен состоять из выполняющегося модуля, личного адресного пространства и ветви. У каждого процесса, по крайней мере, одна ветвь. Фактически, ветвь – это выполняющаяся очередь. Например, когда ОС Windows впервые создает процесс, она создает только одну ветвь на процесс. Эта ветвь обычно начинает выполнение с первой инструкции в модуле. Если в дальнейшем понадобится больше ветвей, то ОС может сама создать их. Эти ветви называются потоками или тредами. Тред – это цепь инструкций.

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

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

Создание тредов при программировании осуществляется при помощи интерфейса прикладного программирования API (Application Programming Interface).

Наибольший эффект от введения многопоточной обработки достигается в мультипроцессорных системах, в которых потоки, в том числе и принадлежащие одному процессу, могут выполняться на разных процессорах действительно параллельно (а не псевдопараллельно). [4]