Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Активное ожидание неэффективно!!!





Алгоритмы активного ожидания корректны, но: Вызывают прерывания и занимают процессорное время, Возможно появление «инверсии приоритета».

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

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

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

• Семафоры. Специальные системные переменные, которые обслуживаются примитивами UP и DOWN (аналоги Sleep и WakeUp). Примитивы работают как элементарное действие. Все операции проверки значения семафора, его изменения и перевода процесса в состояние ожидания выполняются как единое и неделимое элементарное действие. Тем самым гарантируется, что после начала операции ни один процесс не получит доступа к семафору до окончания или блокирования операции. Атомарность операции чрезвычайно важна для разрешения проблемы синхронизации и предотвращения состояния состязания.

• Мьютексы. Двоичный семафор – заблокирован или нет. Если заблокирован, то доступа в критическую область нет.

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

• Передача сообщений. Для решения проблемы согласованности процессов при передаче информации, существуют специальные механизмы обмена данными, основанные на мьютексах. Это системные вызовы send() и recieve(). Первый посылает сообщение заданному адресату, второй получает сообщение от указанного источника. Если сообщения нет, второй запрос блокируется до поступления сообщения либо немедленно возвращает код ошибки.

o Первый посылает сообщение адресату

o Второй получает сообщение от источника.

o Возможно использование дополнительной структуры данных «почтового ящика»

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

Механизмы работы Windows 2000. Реализация процессов и потоков. Планирование. Управление памятью.

В операционной системе Windows 2000 поддерживаются традиционные процессы, способные общаться и синхронизироваться друг с другом. Каждый процесс содержит, по крайней мере, один поток, содержащий, в свою очередь, одно волокно (облегченный поток). Более того, для управления ресурсами процессы могут объединяться в задания. Все вместе – процессы, задания, потоки и волокна – образуют общий набор инструментов для управления ресурсами и реализации параллелизма, как на однопроцессорных, так и многопроцессорных машинах.

Задание в Windows 2000 представляет собой набор одного или нескольких процессов, управляемых как единое целое. С каждым заданием ассоциированы квоты и лимиты ресурсов, хранящиеся в соответствующем объекте задания. Квоты включают такие пункты, как максимальное количество процессов (не позволяющее процессам задания создавать бесконтрольное количество дочерних процессов), суммарное время центрального процессора, доступное для каждого процесса в отдельности и для всех вместе, а также максимальное количество используемой памяти для процесса для всего задания. Задания могут ограничивать свои процессы в вопросах безопасности, например, запрещать или получать права администратора даже при наличии правильного пароля.

Процессы являются более интересными, чем задания, а также более важными. Процессы представляют собой контейнеры для ресурсов. У каждого процесса есть свое 4-гигабайтное пространство, в котором пользователь занимает нижние два Гбайта, а операционная система занимает остальную его часть. Каждый процесс начинается с одного потока, но новые потоки могут формироваться динамически.


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

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







Date: 2016-06-06; view: 611; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию