Суббота, 20.04.2024
VSSIT
Меню сайта
Мини-чат
К списку вопросов

Концепция потоков

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

 Порождение – подготавливаются условия для первого выполнения на процессоре
 Активное состояние – программа выполняется
 Ожидание – программа не выполняется на процессоре по причине занятости какого-либо ресурса
 Готовность – программа не выполняется, но для ее исполнения представлены все ресурсы, кроме времени процессора
 Окончание – нормальное или аварийное завершение программы

 С каждым процессом связывается его адресное пространство, содержащее саму программу. Всё функционирующее на компьютере ПО, включая ОС, можно представить набором процессов. Наибольшие сложности в управлении ресурсами компьютера возникают в мультипрограмме.
 Мультипрограммирование (многозадачность) – такой способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняется несколько программ. Для того чтобы поддерживать мультипрограммирование, ОС должна определить внутренние единицы работы, которыми будет разделяться процессор и другие ресурсы компьютера.
 В настоящее время в большинстве ОС существуют 3 типа единиц работы:

  • Крупные (процесс или задача)
  • Менее крупные (поток или нить) (процесс выполняется в виде одного или нескольких потоков)
  • Более крупные (задание или набор из одного или нескольких процессов, управляемых как единое целое)
 С каждым заданием связаны квоты и лимиты ресурсов:
  1. максимальное количество процессов в задании
  2. суммарное время центрального процессора для каждого процесса и всего задания
  3. максимальное количество используемой памяти для каждого процесса и всего задания

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

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

Задание. Набор процессов с общими квотами и лимитами.
Процесс. Контейнер для ресурсов и потоков.
Поток. Исполнение кода в процессе.
Волокно. Облегченный поток, полностью управляемый в пространстве пользователя.
 Работа вычислительной системы заключается в выполнении некоторой программы, поэтому и с процессом, и с потоком связывается некоторый программный код. Он оформляется в виде исполнительного модуля.
 Процессы общаются между собой через ОС.
 Необходимо распараллеливать работу в рамках одного приложения (одной задачи). Тогда для одного приложения придется создавать несколько процессов. Однако в этом случае при использовании стандартных средств ОС не учитывается следующее:
  1. процессы решают общую задачу
  2. процессы работают с одними и теми же данными
  3. процессы используют одно и то же право доступа к ресурсам
 Но при этом ОС рассматривает такие связанные процессы, как обыкновенные, и изолирует их друг от друга. Это затрудняет обмен. На создание каждого процесса ОС тратит системные ресурсы, которые неоправданно дублируются. У каждого процесса своя физическая память, свои устройства ввода-вывода, своё виртуальное пространство. Вывод: необходимо применять многопоточную обработку. Это механизм другой по сравнению с многопрограммным. Это механизм учитывает тесные связи между отдельными ветвями вычислений одного и того же приложения.
Форма входа
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024
Создать бесплатный сайт с uCoz