Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОС в формате doc / 2008-03-21-01-52-Елена- заочники.doc
Скачиваний:
203
Добавлен:
01.05.2014
Размер:
325.12 Кб
Скачать
      1. Различные способы организации вычислительного процесса с использованием нитей

Рис. 3.10. Три способа организации нитей в процессе: а - модель диспетчер/рабочие нити; б - модель "команда"; в - модель конвейера

      1. Вопросы реализации нитей

Существует два подхода к управлению нитями: статический и динамический.

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

Каждой нити назначается фиксированный стек.

Этот подход простой, но негибкий.

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

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

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

Завершаться нитимогут одним из двух способов: по своей инициативе, когда завершается работа, и извне.

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

Нити могут быть реализованы как в пользовательском пространстве (на базе сущ ОС, кот может их не поддерживать), так и впространстве ядра (управл основной ОС).

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

ОС прикладная среда, управляющая нитями, кажется одним процессом. Все вызовы (ПРИОСТАНОВИТЬ, ПРОВЕРИТЬ СЕМАФОР и т. д.) обрабатываются как вызовы функций этой прикладной среды. Она сохраняет регистры и переключает указатели счетчика команд и стека. В этом случае переключение происходит быстрее, чем с помощью ядра.

«+» Такая реализация имеет еще одно преимущество - для каждого процесса можно организовать свою схему планирования.

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

Такой проблемы не существует при реализации нитей в пространстве ядра.

«+» Преимущество заключается также и в том, что ядро может при диспетчеризации выбирать нить из другого процесса.

«-» Однако хотя механизм управления нитями аналогичен первому случаю, временные затраты на переключение нитей выше, так как тратится время на переключение изрежима пользователя в режим ядра.

29