Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
218
Добавлен:
24.05.2017
Размер:
525.82 Кб
Скачать

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

2.1 Понятия процесс и поток

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

2.3 Состояния потоков

2.4 Планирование процессов

2.4.1 Основные понятия планирования процессов

2.4.2 Алгоритмы планирования, основанные на квантовании

2.4.3 Алгоритмы планирования, основанные на приоритетах

2.4.4 Планирование в операционных системах пакетной обработки информации

2.4.4.1 Критерий эффективности

2.4.4.2 Алгоритмы планирования

2.4.5 Планирование в интерактивных системах (системах разделения времени)

2.4.5.1 Критерий эффективности

2.4.5.2 Алгоритмы планирования

Схема назначения приоритета потокам в Windows 2000

2.4.6 Планирование в системах реального времени

2.5 Взаимодействие между процессами

2.5.1 Виды взаимодействий между процессами

2.5.2 Синхронизация процессов и потоков

2.5.2.1 Состязания (гонки)

2.5.2.1.1 Ситуация состязания

2.5.2.1.2 Критические секции

2.5.2.1.3 Способы реализации взаимного исключения

2.5.2.2 Взаимные блокировки

2.5.2.2.1 Ситуация взаимной блокировки

2.5.2.2.2 Моделирование взаимоблокировок

2.5.2.3 Методы борьбы с тупиками

 2.5.2.3.1 Пренебрежением проблемой в целом (страусовый алгоритм)

 2.5.2.3.2 Обнаружение и устранение взаимоблокировок

 2.5.2.3.3 Обнаружение взаимоблокировки при наличии одного ресурса каждого типа

2.5.2.3.4 Обнаружение взаимоблокировки при наличии нескольких ресурсов каждого типа

2.5.2.3.5 Выход из взаимоблокировки

2.5.2.4 Динамическое избежание взаимоблокировок

2.5.2.4.1 Траектории ресурсов

2.5.2.4.2 Безопасные и небезопасные состояния

2.5.2.4.3 Алгоритм банкира для одного вида ресурсов

2.5.2.4.4 Алгоритм банкира для несколько видов ресурсов

 2.5.2.5 Предотвращение условий, необходимых для взаимоблокировок

2.5.2.6 Системные средства синхронизации процессов

2.5.2.6.1 Мьютексы

2.5.2.6.2 Системные семафоры

2.5.2.6.3 События

2.5.2.6.4 Ждущие таймеры

2.5.2.6.5 Сигналы

2.5.2.6.3 Мониторы Хоара

2.5.3 Обмен данными между процессами и потоками

2.5.3.1 Конвейеры (каналы)

2.5.3.2 Очереди сообщений

2.5.3.3 Разделяемая память

2.5.3.4 Почтовые ящики

2.5.3.5 Сокеты

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

2.1 Понятия процесс и поток

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

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

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

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

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

Преимущества использования потоков:

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

  2. Быстрота создания потока по сравнению с процессом.

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

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

Соседние файлы в папке учебник(см. лекции) Корольковой