Мегаобучалка Главная | О нас | Обратная связь  


Управление процессами и потоками




Механизм многопоточной обработки.

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

Средством распараллеливания вычислений в современных ОС является механизм многопоточной обработки. При этом вводится новая единица работы – поток выполнения.

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

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

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



Таким образом, мультипрограммирование более эффективно на уровне потоков, а не задач. Каждый поток имеет в процессоре собственный счетчик команд и стек. Задача, оформленная в виде нескольких потоков в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорных системах) выполнения ее отдельных частей. Особенно эффективна многопоточность в мультипроцессорных системах.

Создание процессов и потоков.

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

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

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

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

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

При выполнении этих действий подсистема управления процессами тесно взаимодействует с подсистемой управления памятью и файловой системой.

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

В исходном состоянии поток (или процесс – для систем без многопоточности) находится в приостановленном состоянии. Момент выборки потока на выполнение осуществляется в соответствии с принятым в данной системе правилом предоставления процессорного времени и с учетом всех существующих в системе процессов и потоков.

Планирование и диспетчеризация потоков.

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

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

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

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

При планировании потоков, как правило, применяются смешанные алгоритмы планирования, основанные как на квантовании (выделении потоку кванта времени использования процессора), так и на приоритетах.

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

Операционная система планирует выполнение потоков независимо от того, принадлежат ли они одному процессу или разным.

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

Диспетчеризация сводится к следующему:

· сохранение контекста текущего потока, который требуется сменить;

· загрузка контекста нового потока, выбранного в результате планирования;

· запуск нового потока на выполнение.

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

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

· выполнение – активное состояние потока, когда он выполняется процессором;

· ожидание – пассивное состояние потока, когда он заблокирован по своим внутренним причинам (ждет осуществления некоторого события или освобождения необходимого ресурса, кроме процессора);

· готовность– пассивное состояние потока, когда он заблокирован внешними обстоятельствами, то есть готов использовать процессор, но ему его не дают.

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




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



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1658)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)