Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС_ответы.doc
Скачиваний:
35
Добавлен:
27.10.2018
Размер:
21.59 Mб
Скачать

3. Процеси, потоки та їх взаємодія

Концепция процесса объединяет 2-е независимые концепции: 1-ая - владение ресурсасами (resource ownership), 2 -ая – планирование/выполнение (scheduling/execution) процессов.

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

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

В современных ОС эти 2 характеристики рассматриваются независимо. Поток (thread)- это единица диспетчеризации, а единица владения ресурсами – процесс (process).

Многопоточностью (multithreading) называется способность ОС поддерживать в рамках одного процесса выполнение нескольких потоков.

Однопоточная и многотопоточная модели процесса

Две левые части рис.  1 иллюстрируют однопоточные подходы.

Рис.  1. Потоки и процессы

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

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

Основные преимущества использования потоков с точки зрения производительности:

  1. создание нового потока в уже существующем процессе занимает намного меньше времени, чем создание совершенно нового процесса. Например скорость создания процессов по сравнению с такой же скоростью в UNIX-совместимых приложениях, в которых не используются потоки, возрастает в 10 раз;

  2. завершение поток более быстрое, чем процесса;

  3. более быстрое переключение потоков в рамках одного и того же процесса;

4) при использовании потоков повышается эффективность обмена информацией между двумя выполняющимися программами

Рис. 2. Однопоточная и многопоточная модели процесса

4. Стани процесів

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

На рис.1 представлена диаграмма состояний, показывающая три возможных состояния процесса:

  1. Выполнение (процесс использует процессор).

  2. Готовность (процесс временно приостановлен, чтобы позволить выполняться другому процессу).

  3. Блокировка (процесс не может быть запущен прежде, чем произойдет некое внешнее событие).

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

  1. Процесс блокируется, ожидая входных данных

  2. Планировщик выбирает другой процесс

  3. Планировщик выбирает этот процесс

  4. Доступны входные данные

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

Как показано на рисунке, между этими тремя состояниями допустимы четыре перехода. Переход 1 происходит, когда процесс обнаруживает, что продолжение работы невозможно. В некоторых системах процесс должен выполнить систем­ный запрос, например block или pause, чтобы оказаться в состоянии блоки­ровки. В других системах процесс автоматически блоки­руется, если при считывании из канала или специального файла (предположим, терминала) входные данные не обнаружены.

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

Переход 4 происходит с появлением внешнего события, ожидавшегося процес­сом (например, поступления входных данных). Если в этот момент не запущен какой-либо другой процесс, происходит переход 3, и процесс запускается. В противном случае процессу придется некоторое время находиться в состоянии готовности, пока не освободится процессор.

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

Рассмотренный подход описывается моделью, представленной на рис. 2. Нижний уровень операционной системы – это планировщик, выше него — все множество процессов. За обработку прерывании и детали, связанные с остановкой и запуском процессов, отвечает планировщик, который является, по сути, совсем небольшой программой. Вся остальная часть операционной системы упорядочена в виде набора процессов. Разумеется, нижний уровень состоит не только из планировщика: он также обеспечивает обработку прерываний и взаимодействие между процессами. Тем не менее представленная модель «в первом приближении», адекватно демонстрирует основную структуру.