Операционные системы распределенных вычислительных систем


Процессы и нити


Процесс -   это   выполнение  программы.  Компоненты  процесса  - выполняющаяся программа,  ее данные,  ее ресурсы (например, память),  и состояние выполнения.

Традиционно, процесс  имеет  собственное  адресное пространство и его состояние характеризуется следующей информацией:

· таблицы страниц (или сегментов);

·      дескрипторы файлов;

·      заказы на ввод-вывод;

·      регистры;

·      и т.п.

Большой объем этой информации делает дорогими  операции  создания процессов, их переключение.

Потребность в легковесных процессах,  нитях (threads) возникла еще на однопроцессорных  ЭВМ  (физические  процессы  или их моделирование, совмещение обменов  и  счета),   но   для   использования   достоинств многопроцессорных ЭВМ с общей памятью они просто необходимы.

Процессы могут  быть независимыми,  которые не требуют какой-либо синхронизации и обмена информацией (но могут конкурировать за ресурсы), либо взаимодействующими.

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

Если приложение  реализовано  в  виде  множества  процессов  (или нитей), то эти процессы (нити) могут взаимодействовать двумя основными способами:

·      посредством разделения памяти (оперативной или внешней)

·      посредством передачи сообщений

 

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

Различают два вида синхронизации - взаимное исключение критических интервалов и координация процессов.

Критические секции. Недетерминизм, race condition (условия гонок).

 

Процесс p1 выполняет оператор  I = I+J,

а процесс p2  -  оператор  I = I-K

машинные коды выглядят так:

     Load  R1,I             Load  R1,I

     Load  R2,J             Load  R2,K

     Add   R1,R2                     Sub   R1,R2

     Store R1,I              Store R1,I

Результат зависит от порядка выполнения этих команд.

     Требуется взаимное   исключение   критических   интервалов




Начало  Назад  Вперед



Книжный магазин