Скачать презентацию 2 Потоки и процессы 2 1 Поток Скачать презентацию 2 Потоки и процессы 2 1 Поток

28. Планирование процессов -- Потоки и процессы.ppt

  • Количество слайдов: 52

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

2. 1. Поток управления 2. 1. Поток управления

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

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

Пример программы • Например, рассмотрим следующую программу: int a, b, с; cin >> a Пример программы • Например, рассмотрим следующую программу: int a, b, с; cin >> a >> b; if (a < b) с = b - a; else c = a - b; cout << c << endl;

Пример потока • Предположим, что пользователь ввел следующие данные: 1 2. • Тогда при Пример потока • Предположим, что пользователь ввел следующие данные: 1 2. • Тогда при работе программы будут выполняться следующие инструкции: cin >> a >> b; if (a < b) с = b - a; cout << c << endl;

Пример потока • Теперь предположим, что пользователь ввел следующие данные: 2 1. • Тогда Пример потока • Теперь предположим, что пользователь ввел следующие данные: 2 1. • Тогда при работе программы будут исполняться следующие инструкции: cin >> a >> b; if (a < b) else c = a - b; cout << c << endl;

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

cin>>a cin>>b no yes a<b ? c=b-a c=a-b cout<<c cin>>a cin>>b no yes a

Многопоточные и однопоточные программы • Если в программе могут одновременно существовать несколько потоков управления, Многопоточные и однопоточные программы • Если в программе могут одновременно существовать несколько потоков управления, то программа называется многопоточной. • А сами потоки в этом случае называются параллельными. • Если в программе одновременно может существовать только один поток, то такая программа называется однопоточной.

2. 2. Состояния потока 2. 2. Состояния потока

Определение потока как пары • Потоки управления определяют динамическое поведение программы. • Для простоты Определение потока как пары • Потоки управления определяют динамическое поведение программы. • Для простоты изложения предположим, что программа является однопоточной. • Программы исполняются процессором. • Поэтому поток можно рассматривать как пару поток = (процессор, программа)

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

Состояния процессора и программы • Для формального описания условий готовности программы к исполнению вводятся Состояния процессора и программы • Для формального описания условий готовности программы к исполнению вводятся понятия: – состояние процессора, – состояние программы.

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

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

Краткие обозначения состояний процессора и программы • Для краткости записи, введем для этих состояний Краткие обозначения состояний процессора и программы • Для краткости записи, введем для этих состояний следующие названия: – состояния процессора: • «не выделен» ; • «выделен» ; – состояния программы: • «не готова» ; • «готова» .

Состояния потока • Тогда состояние потока можно определить как пару состояний: состояние потока = Состояния потока • Тогда состояние потока можно определить как пару состояний: состояние потока = (состояние процессора, состояние программы) • Перечислив различные комбинации состояний процессора и программы, можно описать всевозможные состояния потока.

Возможные состояния потока • Введем для состояний потока следующие названия: – поток блокирован = Возможные состояния потока • Введем для состояний потока следующие названия: – поток блокирован = (не выделен, не готова); – поток готов к выполнению = (не выделен, готова); – поток выполняется = (выделен, готова). • Будем считать, что состояние (выделен, не готова) является недостижимым для потока. • Т. е. процессор не выделяется программе, не готовой к исполнению.

Краткие обозначения состояний потока • Более кратко эти состояния потока будем обозначать словами: – Краткие обозначения состояний потока • Более кратко эти состояния потока будем обозначать словами: – «блокирован» , – «готов» , – «выполняется» .

Начальное и конечное состояния потока • Кроме того, введем для потоков состояния, которые обозначают: Начальное и конечное состояния потока • Кроме того, введем для потоков состояния, которые обозначают: – существование программного кода для создания потока; – завершение исполнения потока. • Назовем эти состояния соответственно: – «новый» ; – «завершен» .

Диаграмма состояний потока Диаграмма состояний потока

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

Операции над потоками, которые выполняются самими потоками • Create – создание нового потока. – Операции над потоками, которые выполняются самими потоками • Create – создание нового потока. – Выполняется потоком, который создает новый поток из функции. • Exit – завершение исполнения потока. – Выполняется самим исполняемым потоком и завершает его.

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

Операции над потоками, которые выполняются операционной системой • Block – блокирует исполнение потока. – Операции над потоками, которые выполняются операционной системой • Block – блокирует исполнение потока. – Выполняется над потоком в том случае, если он ждет наступления некоторого события, например, завершения операции ввода-вывода или освобождения ресурса. • Unblock – разблокирует поток. – Выполняется над потоком в том случае, если событие, ожидаемое потоком, наступило.

2. 3. Процессы 2. 3. Процессы

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

Контекст процесса • Все ресурсы, необходимые для исполнения процесса, называются контекстом процесса. Контекст процесса • Все ресурсы, необходимые для исполнения процесса, называются контекстом процесса.

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

Адресное пространство процесса • Адресное пространство – это виртуальная память, выделенная процессу для запуска Адресное пространство процесса • Адресное пространство – это виртуальная память, выделенная процессу для запуска программ. • Адресные пространства разных процессов не пересекаются. • Процесс не имеет непосредственного доступа в адресное пространство другого процесса. • Это позволяет избежать влияния ошибок, произошедших в каком-либо процессе, на исполнение других процессов, что повышает надежность системы в целом.

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

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

2. 4. Потоки в Windows 2. 4. Потоки в Windows

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

Идентификация потока в Windows • С каждым потоком в Windows связаны: – уникальный дескриптор Идентификация потока в Windows • С каждым потоком в Windows связаны: – уникальный дескриптор (HANDLE); – уникальный идентификатор. • Дескрипторы используются программами пользователя для управления потоками. • Идентификаторы используются служебными программами, которые позволяют пользователям системы отслеживать работу потоков.

Контекст потока в Windows • Каждому потоку в Windows принадлежат следующие ресурсы: – код Контекст потока в Windows • Каждому потоку в Windows принадлежат следующие ресурсы: – код исполняемой функции; – – набор регистров процессора; стек для работы приложения; стек для работы операционной системы; маркер доступа, который содержит информацию для системы безопасности. • Все эти ресурсы образуют контекст потока в Windows.

Типы потоков в Windows • В Windows различаются потоки двух типов: – системные потоки; Типы потоков в Windows • В Windows различаются потоки двух типов: – системные потоки; – пользовательские потоки. • Системные потоки выполняют различные сервисы операционной системы и запускаются ядром операционной системы. • Пользовательские потоки служат для решения задач пользователя и запускаются приложением.

Типы потоков в приложении • В приложении различаются потоки двух типов: – рабочие потоки Типы потоков в приложении • В приложении различаются потоки двух типов: – рабочие потоки (working threads); – потоки интерфейса пользователя (user interface threads). • Рабочие потоки выполняют различные задачи в приложении. • Потоки интерфейса пользователя выполняют обработку сообщений к окнам, с которыми они связаны.

Первичный поток приложения • Каждое приложение имеет, по крайней мере, один поток, который называется Первичный поток приложения • Каждое приложение имеет, по крайней мере, один поток, который называется первичным (primary) или главным (main) потоком. • В консольных приложениях это поток, который исполняет функцию main. • В приложениях с графическим интерфейсом это поток, который исполняет функцию Win. Main.

Функции управления потоками в Windows Create. Thread – один поток создает другой поток; Exit. Функции управления потоками в Windows Create. Thread – один поток создает другой поток; Exit. Thread – поток завершает свою работу; Get. Exit. Code. Thread – получить код завершения потока; Terminate. Thread – один поток завершает работу другого потока; Suspend. Thread – один поток приостанавливает исполнение другого потока; • Resume. Thread – один поток возобновляет исполнение другого потока; • Sleep – поток приостанавливает свое исполнение на заданный интервал времени. • • •

2. 5. Процессы в Windows 2. 5. Процессы в Windows

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

Идентификация процесса в Windows • С каждым процессом в Windows связаны: – уникальный дескриптор Идентификация процесса в Windows • С каждым процессом в Windows связаны: – уникальный дескриптор (HANDLE); – уникальный идентификатор. • Дескрипторы используются программами пользователя для управления процессами. • Идентификаторы используются служебными программами, которые позволяют пользователям системы отслеживать работу процессов.

Ресурсы процесса в Windows • Каждый процесс в Windows владеет следующими ресурсами: виртуальным адресным Ресурсы процесса в Windows • Каждый процесс в Windows владеет следующими ресурсами: виртуальным адресным пространством; рабочим множеством страниц в реальной памяти; первичным потоком; маркером доступа, содержащим информацию для системы безопасности; – таблицей для хранения дескрипторов объектов ядра, которые используются процессом. – –

Начало и завершение процесса в Windows • Выполнение каждого процесса начинается с первичного потока. Начало и завершение процесса в Windows • Выполнение каждого процесса начинается с первичного потока. • В процессе своего исполнения процесс может создавать другие потоки. • Исполнение процесса заканчивается при завершении работы всех его потоков.

Функции для управления процессами в Windows • Create. Process – один процесс создает другой Функции для управления процессами в Windows • Create. Process – один процесс создает другой процесс; • Exit. Process – процесс завершает свою работу; • Get. Exit. Code. Process – получить код завершения процесса; • Terminate. Process – один процесс завершает работу другого процесса.

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

2. 6. Наследование дескрипторов объектов в ОС Windows 2. 6. Наследование дескрипторов объектов в ОС Windows

Определение наследуемого объекта в Windows • Объект называется наследуемым, если дочерний процесс имеет доступ Определение наследуемого объекта в Windows • Объект называется наследуемым, если дочерний процесс имеет доступ к этому объекту через дескриптор, который получен в родительском процессе при создании этого объекта. • Для того чтобы сделать объект наследуемым дочерними процессами, нужно в родительском процессе установить свойство наследования в дескрипторе этого объекта. • Причем это свойство должно быть установлено до создания дочернего процесса, который должен получить доступ к наследуемому объекту.

Установка свойства наследования дескриптора объекта • В Windows свойство наследования объекта устанавливается двумя способами: Установка свойства наследования дескриптора объекта • В Windows свойство наследования объекта устанавливается двумя способами: – функцией Create при создании объекта; – функцией Set. Handle. Information. • Для того чтобы узнать, является ли дескриптор наследуемым, нужно использовать: – функцию Get. Handle. Information.

Решение проблемы уникального именования объектов • Использование свойства наследования дескрипторов объектов позволяет избежать решения Решение проблемы уникального именования объектов • Использование свойства наследования дескрипторов объектов позволяет избежать решения задачи уникального именования объектов, используемых в родительских и дочерних процессах.