Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Необходимость и принципы организации синхронизации в вычислительных системах



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

Какие же вопросы рассматривает синхронизации, в чем заключается синхронизация задач?

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

 Например, могут быть следующие ситуации:

- сообщение одному потоку о завершении работы другого;

- блокировка потока при обращении его к данным, если с этими данными работает другой поток;

- наложение ограничений на количество потоков, работающих с одним ресурсом.

Синхронизация процессов и связанных с ними потоков основана на двух моментах.

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

- критические секции;

- мьютексы;

- события;

- семафоры.

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

2. Анализ состояния объекта осуществляется в операционных системах с помощью функций:

- Wait() для операционной системы Unix

- WaitForSingleObject() и WaitForMultipleObject() для Windows

Результат работы этих функций одинаков. Они останавливают работу потока (блокируют, переводят в состояние ожидания) из которого они были вызваны, если анализируемый объект синхронизации находился в занятом состоянии, и разрешают потоку дальнейшее выполнение, как только объект освобождается. Функция WaitForSingleObject() анализирует состояние одного объекта синхронизации, а функция WaitForMultipleObject() анализирует состояние группы объектов.

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


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 400; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.007 с.)
Главная | Случайная страница | Обратная связь