Составные элементы процессов и потоков 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Составные элементы процессов и потоков



К элементам процесса принадлежат:

♦ защищенное адресное пространство;

♦ данные, общие для всего процесса (эти данные могут совместно использовать все его потоки);

♦ информация об использовании ресурсов (открытые файлы, сетевые соединения и т.п.);

♦ информация о потоках процесса.

Поток содержит такие элементы:

♦ состояние процессора (набор текущих данных из его регистров), в частности счетчик текущей инструкции процессора;

♦ стек потока (участок памяти, где находятся адреса возвращения функций потока, которые вызваны в его коде).

Многопотоковость и ее реализация

Понятие параллелизма

Использование нескольких потоков в приложении означает внесение у него параллелизма. Параллелизм - это одновременное (с точки зрения прикладного программиста) выполнение действий разными фрагментами кода приложения.

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

Виды параллелизма

♦ Можно выделить такие основные виды параллелизма:

♦ параллелизм многопроцесорних систем;

♦ параллелизм операций ввода-вывода;

♦ параллелизм взаимодействия с пользователем;

♦ параллелизм распределенных систем.

Параллелизм операций ввода-вывода

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

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

Параллелизм взаимодействия с пользователем

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

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

Параллелизм распределенных применений

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



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 147; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.10.246 (0.006 с.)