Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ОС.docx
Скачиваний:
44
Добавлен:
22.09.2019
Размер:
3.18 Mб
Скачать

6. Процессы и потоки (определения). Отличия методов klt и ult. (Лекция 2)

Процесс (process) – выполняющаяся программа, объект-контейнер, обеспечивающий исполнение набора команд (программы) в среде с параллельным выполнением. Процесс – контейнер для набора ресурсов, используемых потоками. Фактически состоит из адресного пространства процесса, набора потоков и служебных данных (контекста выполнения – execution context, process state). Процесс – управление ресурсами: управление памятью (виртуальная память потоков); управление файлами; управление вводом-выводом; состояние процесса.

Поток (thread) – сущность внутри процесса, получающая процессорное время для выполнения. Поток: набор команд ЦПУ (центрального процессорного устройства), стек, состояние и уникальный идентификатор. Поток – исполняемые команды: счетчики команд; регистры ЦПУ; стек; состояние потока.

ULT (user-level threads) - потоки на уровне пользователя.

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

- Состояния выполнения потока.

- Сохраненный контекст не выполняющегося потока.

- Стек выполнения.

- Статическая память, выделяемая потоку для локальных переменных.

- Доступ к памяти и ресурсам процесса, для всех потоков процесса.

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

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

В программе, полностью состоящей из ULT-потоков, все действия по управлению потоками выполняются самим приложением; ядро не подозревает о существовании потоков.

Преимущества ULT: нет переключений режимов; учет специфики при переключении; не требует поддержки в ядре.

Недостатки: проблема блокирующих вызовов и многопроцессорных систем.

KLT (kernel-level threads) - потоки на уровне ядра (потоки, поддерживаемые ядром или облегченные процессы).

Наряду с таблицей процессов в пространстве ядра имеется таблица потоков. В программе, работа которой полностью основана на потоках, работающих на уровне ядра, все действия по управлению потоками выполняются ядром. В области приложений отсутствует код, предназначенный для управления потоками. Вместо него используется интерфейс прикладного программирования (application programming interface, API) средств ядра, управляющих потоками. Примерами такого подхода являются операционные системы OS/2, Linux и W2K.

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

Преимущества KLT: надежность; нет проблем блокировки потока и многопроцессорности.

Недостатки: затраты времени на переключение.