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

Содержание

Слайд 2

Содержание курса

Процессы
Модель процесса
Создание, завершение процесса
Иерархии, состояния, реализации процессов
Потоки
Применение потоков
Классическая модель потоков
Реализации потоков
Взаимодействие

Содержание курса Процессы Модель процесса Создание, завершение процесса Иерархии, состояния, реализации процессов
процессов
Планирование
Задачи взаимодействия процессов

Слайд 3

Процесс

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

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

Слайд 4

Модель процесса

Все ПО исполняемое на компьютере, а иногда и операционная система, организовано

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

Слайд 5

Модель процесса (2)

Концептуальная
модель четырех независимых друг от друга последовательных процессов.

Четыре

Модель процесса (2) Концептуальная модель четырех независимых друг от друга последовательных процессов.
программы, работающие в многозадачном режиме.

В отдельно взятый
момент времени активна только одна программа.

Слайд 6

Модель процесса (3)

Центральный процессор переключается между процессами, следовательно, скорость вычислений процесса всегда

Модель процесса (3) Центральный процессор переключается между процессами, следовательно, скорость вычислений процесса
будет разной.
Процессы не должны программироваться с жестко заданным временем выполнения.
Планирование процессов.
Программа и процесс понятия схожие, но разные!
Если программа запущенная дважды, то ею заняты два процесса.

Слайд 7

Создание процесса

В универсальных системах определенные способы создания и прекращения процессов по мере

Создание процесса В универсальных системах определенные способы создания и прекращения процессов по
необходимости.
Способы создания процессов:
Инициализация системы
Выполнение работающим процессом системного запроса на создание процесса
Запрос пользователя на создание процесса
Инициализация пакетного задания

Слайд 8

Создание процесса. Инициализация операционной системы.

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

Создание процесса. Инициализация операционной системы. При загрузке ОС создается несколько процессов. Процессы,
с пользователями и выполнение заданий, являются высокоприоритетными процессами.
Процессы, не связанные с конкретными пользователями, но выполняющими ряд специфических функций, являются фоновыми процессами (демонами).
Пример:
Получение электронной почты, web-новости, вывод на принтер.

Слайд 9

Создание процесса (системный вызов)

Новый процесс формируется на основании системного запроса от текущего

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

Слайд 10

Создание процесса (системный вызов)

В UNIX существует только один системный запрос: fork (ветвление).

Создание процесса (системный вызов) В UNIX существует только один системный запрос: fork
Этот запрос создает дубликат вызываемого процесса.
В Windows же вызов всего одной функции CreateProcess интерфейса Win32 управляет и созданием процесса, и запуском в нем нужной программы.
Кроме CreateProcess в Win32 есть около 100 функций для управления процессами и их синхронизации.

Слайд 11

Завершение процесса

Завершение процесса:
Обычный выход (преднамеренно);
Выход по ошибке (преднамеренно);
Выход по неисправимой ошибке (непреднамеренно);
Уничтожение

Завершение процесса Завершение процесса: Обычный выход (преднамеренно); Выход по ошибке (преднамеренно); Выход
другим процессом (непреднамеренно).
После окончания работы процесс генерирует системный запрос на завершение работы. В UNIX этот системный запрос – exit, а в Windows – ExitProcess.
Программы, рассчитанные на работу с экраном, также поддерживают преднамеренное завершение работы.

Слайд 12

Иерархия процессов

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

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

Слайд 13

Иерархия процессов (2). Пример.

В образе загрузки присутствует специальный процесс init. При запуске

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

Слайд 14

Иерархия процессов (3). Пример.

В Windows не существует понятия иерархии процессов, и все

Иерархия процессов (3). Пример. В Windows не существует понятия иерархии процессов, и
процессы равноправны.
Единственное, в чем проявляется что-то вроде иерархии процессов - создание процесса, в котором родительский процесс получает специальный маркер (так называемый дескриптор), позволяющий контролировать дочерний процесс.
Но маркер можно передать другому процессу, нарушая иерархию.
В UNIX это невозможно.

Слайд 15

Состояние процессов

Состояние процессов

Слайд 16

Состояние процессов

Несмотря на самостоятельность каждого процесса, наличие собственного счетчика команд и внутреннего

Состояние процессов Несмотря на самостоятельность каждого процесса, наличие собственного счетчика команд и
состояния, процессам зачастую необходимо взаимодействовать с другими процессами.
Один процесс может генерировать выходную информацию, используемую другими процессами в качестве входной информации.
Пример:
Выходные данные процесса cat могут служить входными данными для процесса grep.
Cat chapter.txt chapter2.txt | grep tree

Слайд 17

Состояние процессов (2)

Возможны два вида блокировки процесса:
Процесс блокируется с точки зрения логики

Состояние процессов (2) Возможны два вида блокировки процесса: Процесс блокируется с точки
приложения (из-за отсутствия входных данных)
Процесс блокируется операционной системой (из-за отсутствия ресурсов)

Слайд 18

Состояние процессов (диаграмма состояния)

Три возможных состояния процесса:
Работающий
Готовый к работе
Заблокированный

Состояние процессов (диаграмма состояния) Три возможных состояния процесса: Работающий Готовый к работе Заблокированный

Слайд 19

Переходы 2 и 3 вызываются
планировщиком процессов

Состояние процессов (диаграмма состояния)

Переходы 2 и 3 вызываются планировщиком процессов Состояние процессов (диаграмма состояния)

Слайд 20

Реализация процессов

Для реализации модели процессов операционная система содержит таблицу процессов.
В таблице

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

Слайд 21

Реализация процессов (таблица процессов)

Реализация процессов (таблица процессов)

Слайд 22

Реализация процессов (работа с внешними устройствами)

С каждым классом устройств ввода-вывода связана область

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

Слайд 23

Реализация процессов (схема обработки прерываний)

Аппаратное обеспечение сохраняет в стеке счетчик команд и

Реализация процессов (схема обработки прерываний) Аппаратное обеспечение сохраняет в стеке счетчик команд
т. п.
Аппаратное обеспечение загружает новый счетчик команд из вектора прерываний
Процедура на ассемблере сохраняет регистры
Процедура на ассемблере устанавливает новый стек
Запускается программа обработки прерываний на С
Планировщик выбирает следующий процесс
Программа на С передает управление процедуре на ассемблере
Процедура на ассемблере запускает новый процесс

Слайд 24

Моделирование многозадачности

При использовании многозадачности повышается эффективность загрузки центрального процессора. Грубо говоря,

Моделирование многозадачности При использовании многозадачности повышается эффективность загрузки центрального процессора. Грубо говоря,
если средний процесс выполняет вычисления только 20 % от того времени, которое он находится в памяти, то при присутствии в памяти одновременно пяти процессов центральный процессор должен быть занят все время.
Более совершенная модель рассматривает эксплуатацию центрального процессора с точки зрения теории вероятности. Предположим, что процесс проводит часть р своего времени в ожидании завершения операции ввода-вывода. Если в памяти находится одновременно n процессов, вероятность того, что все n процессов ждут ввод-вывод, равна рn. Тогда степень загрузки центрального процессора будет выражаться формулой:
Степень загрузки центрального процессора = 1 - рn.

Слайд 25

Моделирование многозадачности

Моделирование многозадачности

Слайд 26

Моделирование многозадачности (пример)

Предположим, что компьютер имеет 2 Гб памяти, 1 Гб отдано

Моделирование многозадачности (пример) Предположим, что компьютер имеет 2 Гб памяти, 1 Гб
операционной системе, а каждая программа пользователя занимает по 256 Мбайт.
При таких заданных размерах одновременно можно загрузить в память четыре пользовательские программы. При 80 % времени на ожидание ввода-вывода в среднем мы получим загруженность процессора равной 1-0,84, или около 60 %.
Добавление еще 1 Гб памяти позволит системе повысить степень многозадачности от четырех до восьми и таким образом повысить степень загрузки процессора до 83 %. Другими словами, дополнительные 1 Гб увеличат производительность на 33 %.
Еще 1 Гб могли бы повысить загрузку процессора с 83 до 93 %, таким образом, увеличив производительность всего лишь на 10 %. С помощью этой модели владелец компьютера может решить, что первые 1 Гб оперативной это хорошее вложение капитала, а вторые - нет.

Слайд 27

Анализ производительности многозадачных систем

Анализ производительности многозадачных систем

Слайд 28

Поток

Поток

Слайд 29

Потоки

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

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

Слайд 30

Использование потоков

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

Использование потоков Основной причиной использование потоков является выполнение большинством приложений существенного числа

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

Слайд 31

Использование потоков (пример)

Пользователь пишет книгу.
С точки зрения автора проще всего хранить

Использование потоков (пример) Пользователь пишет книгу. С точки зрения автора проще всего
книгу в одном файле, чтобы легче было искать отдельные разделы, выполнять глобальную замену и т. п. С другой стороны, можно хранить каждую главу в отдельном файле. Но было бы крайне неудобно хранить каждый раздел и параграф в своем файле - в случае глобальных изменений пришлось бы редактировать сотни файлов.
Например, если предполагаемый стандарт ххх был утвержден только перед отправкой книги в печать, придется заменять «Черновой стандарт ххх» на «Стандарт ххх» в последнюю минуту. Эта операция делается одной командой в случае одного файла и, напротив, займет очень много времени, если придется редактировать каждый из 300 файлов, на которые разбита книга.
Теперь представьте себе, что произойдет, если пользователь удалит одно предложение на первой странице документа, в котором 800 страниц. Пользователь перечитал эту страницу и решил исправить предложение на 600-й странице. Он дает команду текстовому редактору перейти на страницу с номером 600 (например, задав поиск фразы, встречающейся только на этой странице). Текстовому редактору придется переформатировать весь документ вплоть до 600 страницы, поскольку до форматирования он не будет знать, где начинается эта страница. Это может занять довольно много времени и вряд ли обрадует пользователя.

Слайд 32

Использование потоков (пример) (2)

Использование потоков (пример) (2)

Слайд 33

Использование потоков. Пример. WEB-сервер.

Способ организации web-сервера:
Один поток, называемый диспетчером, считывает приходящие по

Использование потоков. Пример. WEB-сервер. Способ организации web-сервера: Один поток, называемый диспетчером, считывает
сети запросы;
После этого он находит свободный (то есть блокированный) рабочий поток и передает ему запрос, скажем, записывая указатель сообщения в специальное слово, связанное с каждым потоком;
Затем диспетчер активизирует ждущий поток, переводя его из состояния блокировки в состояние готовности.

Слайд 34

Использование потоков. Пример. WEB-сервер.

Использование потоков. Пример. WEB-сервер.

Слайд 35

Использование потоков. WEB-сервер. Модель сервера.

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

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

Слайд 36

Использование потоков. Пример (3) Сервер обработки данных.

Способы конструирования сервера:

Использование потоков. Пример (3) Сервер обработки данных. Способы конструирования сервера:

Слайд 37

Классическая модель потоков

Классическая модель потоков

Слайд 38

Модель потока

Модель процесса, базируется на двух независимых концепциях:
группирование ресурсов;
выполнение программы.

Модель потока Модель процесса, базируется на двух независимых концепциях: группирование ресурсов; выполнение программы.

Слайд 39

Модель потока. Группировка ресурсов.

Процесс можно рассматривать как способ объединения родственных ресурсов в одну

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

Слайд 40

Модель потока. Выполнение программы.

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

Модель потока. Выполнение программы. Процесс можно рассматривать как поток исполняемых команд или

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

Слайд 41

Модель потока (2)

Модель потока (2)

Слайд 42

Модель потока (3)

Различные потоки в одном процессе не так независимы, как различные

Модель потока (3) Различные потоки в одном процессе не так независимы, как
процессы. У всех потоков одно и то же адресное пространство, что означает совместное использование глобальных переменных.
Любой поток имеет доступ к любому адресу ячейки памяти в адресном пространстве процесса, один поток может считывать, записывать или даже стирать информацию из стека другого потока.
Защиты не существует, поскольку: - это невозможно и - это ненужно. В отличие от различных процессов, которые инициированы различными пользователями, один процесс всегда запущен одним пользователем, и потоки созданы, чтобы работать совместно.

Слайд 43

Модель потока (4)

Модель потока (4)

Слайд 44

Модель потока (5)

Каждый поток обладает собственным стеком

Модель потока (5) Каждый поток обладает собственным стеком

Слайд 45

Потоки в POSIX

IEEE standard 1003.1с — стандарт создания переносимых многопоточных программ.
Пакет Pthreads,

Потоки в POSIX IEEE standard 1003.1с — стандарт создания переносимых многопоточных программ.
реализует работу с потоками, поддерживается большинством UNIX-систем.
В стандарте определено более 60 вызовов функций.
Все потоки Pthreads имеют определенные свойства.
У каждого потока есть свой идентификатор, набор регистров (включая счетчик команд) и набор атрибутов, которые сохраняются в определенной структуре. Атрибуты включают размер стека, параметры планирования и другие элементы, необходимые при использовании потока.

Слайд 46

Потоки в POSIX

Функции пакета Ptheads

Потоки в POSIX Функции пакета Ptheads

Слайд 47

Реализация потоков

Есть два основных способа реализации пакета потоков: в пространстве пользователя и

Реализация потоков Есть два основных способа реализации пакета потоков: в пространстве пользователя и ядре.
ядре.

Слайд 48

Реализация потоков (смешанная реализация)

Реализация потоков (смешанная реализация)

Слайд 49

Активация планировщика

Цель активации планировщика заключается в имитации функциональных возможностей потоков на уровне

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

Слайд 50

Активация планировщика

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

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

ЯДРО
ВП №1

ЯДРО
ВП №2

ЯДРО
ВП №3

ЯДРО
ВП №4

Поток
№1

Поток
№2

Поток
№3

Поток
№4

Процесс

Центральный процессор

Виртуальные процессора

Слайд 51

Всплывающие потоки

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

Всплывающие потоки Потоки часто используются в распределенных системах. Пример: обработка входящих сообщений.
сообщения система создает новый поток для его обработки, называется всплывающий поток.
Основное преимущество всплывающих потоков заключается в том, что они создаются заново и не имеют прошлого — никаких регистров, стека и всего остального, что должно быть восстановлено. Каждый такой поток начинается с чистого листа, и каждый их них идентичен всем остальным.
Это позволяет создавать такие потоки довольно быстро.
Новый поток получает сообщение для последующей обработки.
В результате использования всплывающих потоков задержку между поступлением и началом обработки сообщения можно свести к минимуму.

Слайд 52

Всплывающие потоки

Создание нового потока при поступлении сообщения

Всплывающие потоки Создание нового потока при поступлении сообщения

Слайд 53

Межпроцессорное взаимодействие

Межпроцессорное взаимодействие

Слайд 54

Межпроцессорное взаимодействие

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

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

Слайд 55

Состояние состязания

В некоторых операционных системах процессы, работающие совместно, могут сообща использовать некое

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

Слайд 56

Состояние состязания (2)

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

Пример №2.
Студент в столовой.

Состояние состязания (2) Процессы находятся в состязательной ситуации. Пример №2. Студент в столовой.

Слайд 57

Критические области. Состязания между процессами.

Основным способом предотвращения любой ситуации, связанной с совместным использованием

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

Слайд 58

Критические области. Состязания между процессами.

Формулировка состояния состязания:
Некоторый промежуток времени процесс занят внутренними

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

Слайд 59

Критические области

Для правильной совместной работы параллельных процессов и эффективного использования общих данных

Критические области Для правильной совместной работы параллельных процессов и эффективного использования общих
необходимо выполнение четырех условий:
1. Два процесса не должны одновременно находиться в критических областях.
2. В программе не должно быть предположений о скорости или количестве процессоров.
3. Процесс, находящийся вне критической области, не может блокировать другие процессы.
4. Невозможна ситуация, в которой процесс вечно ждет попадания в критическую область.

Слайд 60

Критические области

Взаимное исключение использования критических областей

Критические области Взаимное исключение использования критических областей

Слайд 61

Взаимное исключение с активным ожиданием

Запрещение прерываний
Переменные блокировки
Строгое чередование
Алгоритм Петерсона
Команда TSL
Семафоры
Мьютексы
Мониторы
Передача сообщений
Барьеры

Взаимное исключение с активным ожиданием Запрещение прерываний Переменные блокировки Строгое чередование Алгоритм

Слайд 62

Взаимное исключение с активным ожиданием

способы реализации

Взаимное исключение с активным ожиданием способы реализации

Слайд 63

Запрещение прерываний

Запрет всех прерываний при входе процесса в критическую область и разрешение

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

Слайд 64

Запрещение прерываний (пример)

Пример: процесс пользователя отключил все прерывания и в результате какого-либо

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

Слайд 65

Переменные блокировки

Рассмотрим одну совместно используемую переменную блокировки, изначально равную 0.
Если процесс

Переменные блокировки Рассмотрим одну совместно используемую переменную блокировки, изначально равную 0. Если
хочет попасть в критическую область, он предварительно считывает значение переменной блокировки.
Если переменная равна 0, процесс изменяет ее на 1 и входит в критическую область.
Если же переменная равна 1, то процесс ждет, пока ее значение сменится на 0.

Слайд 66

Переменные блокировки (недостатки)

Один процесс считывает переменную блокировки, обнаруживает, что она равна 0,

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

Слайд 67

Строгое чередование

Третий метод реализации взаимного исключения.

Строгое чередование Третий метод реализации взаимного исключения.

Слайд 68

Строгое чередование

Переменная turn=0 отслеживает, чья очередь входить в критическую область.
Вначале процесс

Строгое чередование Переменная turn=0 отслеживает, чья очередь входить в критическую область. Вначале
0 проверяет значение turn, считывает 0 и входит в критическую область.
Процесс 1 также проверяет значение turn, считывает 0 и после этого входит в цикл, непрерывно проверяя, когда же значение turn будет равно 1.
Постоянная проверка значения переменной в ожидании некоторого значения называется активным ожиданием. Активное ожидание используется только в случае, когда есть уверенность в небольшом времени ожидания.
Блокировка, использующая активное ожидание, называется спин-блокировкой.

Слайд 69

Алгоритм Петерсона

Алгоритм Петерсона

Слайд 70

Команда TSL

Рассмотрим решение, требующее участия аппаратного обеспечения. Многие компьютеры, особенно разработанные с

Команда TSL Рассмотрим решение, требующее участия аппаратного обеспечения. Многие компьютеры, особенно разработанные
расчетом на несколько процессоров, имеют команду
TSL RX.LOCK (Test and Set Lock - проверить и заблокировать), которая действует следующим образом.
В регистр RX считывается содержимое слова памяти lock, а в ячейке памяти lock сохраняется некоторое ненулевое значение. Гарантируется, что операция считывания слова и сохранения неделима - другой процесс не может обратиться к слову в памяти, пока команда не выполнена.

Слайд 71

Команда TSL

Команда TSL

Слайд 72

Примитивы межпроцессного взаимодействия

Оба решения - Петерсона и с использованием команды TSL

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

Слайд 73

Примитивы межпроцессного взаимодействия. Пример.

Этот алгоритм не только бесцельно расходует время процессора, но,

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

Слайд 74

Примитивы межпроцессного взаимодействия

Теперь рассмотрим некоторые примитивы межпроцессного взаимодействия, применяющиеся вместо циклов

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

Слайд 75

Семафоры

В 1965 году Дейкстра (Е. W. Dijkstra) предложил использовать целую переменную для

Семафоры В 1965 году Дейкстра (Е. W. Dijkstra) предложил использовать целую переменную
подсчета сигналов запуска, сохраненных на будущее.
Им был предложен новый тип переменных, так называемые семафоры, значение которых может быть нулем (в случае отсутствия сохраненных сигналов активизации) или некоторым положительным числом, соответствующим количеству отложенных активизирующих сигналов.

Слайд 76

Семафоры. Операции: down и up.

Операция down сравнивает значение семафора с нулем.
Если значение

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

Слайд 77

Мьютексы

Иногда используется упрощенная версия семафора, называемая мьютексом (mutex, сокращение от mutual exclusion

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

Слайд 78

Мьютексы

Мьютекс - переменная, которая может находиться в одном из двух состояний: блокированном

Мьютексы Мьютекс - переменная, которая может находиться в одном из двух состояний:
или неблокированном.
Для описания мьютекса требуется всего один бит, хотя чаще используется целая переменная, у которой 0 означает неблокированное состояние, а все остальные значения соответствуют блокированному состоянию.
Значение мьютекса устанавливается двумя процедурами. Если поток собирается войти в критическую область, он вызывает процедуру mutex_lock. Если мьютекс не заблокирован, запрос выполняется и вызывающий поток может попасть в критическую область.

Слайд 79

Мониторы

В 1974 году Хоар (Ноаге) и Бринч Хансен (Brinch Hansen) предложили примитив

Мониторы В 1974 году Хоар (Ноаге) и Бринч Хансен (Brinch Hansen) предложили
синхронизации более высокого уровня, называемый монитором.
Монитор - набор процедур, переменных и других структур данных, объединенных в особый модуль или пакет. Процессы могут вызывать процедуры монитора, но у процедур, объявленных вне монитора, нет прямого доступа к внутренним структурам данных монитора.

Слайд 80

Передача сообщений

Этот метод межпроцессного взаимодействия использует два примитива: send и receive, которые

Передача сообщений Этот метод межпроцессного взаимодействия использует два примитива: send и receive,
скорее являются системными вызовами, чем структурными компонентами языка.
Например:
send(destination, Smessage);
receive(source, &message);
Первый запрос посылает сообщение заданному адресату, а второй получает сообщение от указанного источника. Если сообщения нет, второй запрос блокируется до поступления сообщения либо немедленно возвращает код ошибки.

Слайд 81

Барьеры

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

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

Слайд 82

Планирование

Планирование

Слайд 83

Поведение процесса

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

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

Слайд 84

Когда планировать ?

Ключевым вопросом планирования является выбор момента принятия решений. Оказывается, существует

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

Слайд 85

Когда планировать ? (2)

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

Когда планировать ? (2) Алгоритмы планирования можно разделить на две категории согласно
поведению после прерываний.
Алгоритмы планирования без переключений, иногда называемого также неприоритетным планированием.
Алгоритмы планирования с переключениями, называемого также приоритетным планированием, выбирают процесс и позволяют ему работать некоторое максимально возможное фиксированное время.

Слайд 86

Категории алгоритмов планирования

В различных средах требуются различные алгоритмы планирования. Это связано с

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

Слайд 87

Категории алгоритмов планирования

В системах пакетной обработки нет пользователей, сидящих за терминалами и

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

Слайд 88

Категории алгоритмов планирования

В интерактивных системах необходимы алгоритмы планирования с переключениями, чтобы предотвратить

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

Слайд 89

Категории алгоритмов планирования

В системах с ограничениями реального времени приоритетность, как это ни

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

Слайд 90

Задачи алгоритмов планирования

Все системы
Равнодоступность — предоставление каждому процессу справедливой доли

Задачи алгоритмов планирования Все системы Равнодоступность — предоставление каждому процессу справедливой доли
времени центрального процессора.
Принуждение к определенной политике — наблюдение за выполнением установленной политики.
Баланс — поддержка загруженности всех составных частей системы.
Пакетные системы
Производительность — выполнение максимального количества заданий в час.
Оборотное время — минимизация времени между представлением задачи и ее завершением.
Использование центрального процессора — поддержка постоянной загруженности процессора.
Интерактивные системы
Время отклика — быстрый ответ на запросы.
Пропорциональность — оправдание пользовательских надежд.
Системы реального времени
Соблюдение предельных сроков — предотвращение потери данных.
Предсказуемость — предотвращение ухудшения качества в мультимедийных системах.

Слайд 91

Планирование в системах пакетной обработки заданий

«Первым пришел – первым ушел»

Планирование в системах пакетной обработки заданий «Первым пришел – первым ушел»

Слайд 92

«Первым пришел – первым ушел»

Алгоритм без переключений «первым пришел - первым обслужен»

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

Слайд 93

«Кратчайшая задача - первая»

Рассмотрим еще один алгоритм без переключений для систем пакетной

«Кратчайшая задача - первая» Рассмотрим еще один алгоритм без переключений для систем
обработки, предполагающий, что временные отрезки работы известны заранее.
Например, работники страховой компании могут довольно точно предсказать, сколько времени займет обработка Пакета из 1000 исков, поскольку они делают это каждый день. Если в очереди есть несколько одинаково важных задач, планировщик выбирает первой самую короткую задачу.
Есть четыре задачи: А, В, С и D, со временем выполнения 8, 4, 4 и 4 мин соответственно.

Слайд 94

Наименьшее оставшееся время выполнения

Версией предыдущего алгоритма с переключениями является алгоритм наименьшего

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

Слайд 95

Трехуровневое планирование

Системы пакетной обработки позволяют реализовать трехуровневое планирование. По мере поступления в

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

Слайд 96

Трехуровневое планирование (2)

Трехуровневое планирование (2)

Слайд 97

Планирование в интерактивных системах

Циклическое планирование
Приоритетное планирование
Несколько очередей
«Самый короткий процесс – следующий»
Гарантированное планирование
Лотерейное

Планирование в интерактивных системах Циклическое планирование Приоритетное планирование Несколько очередей «Самый короткий
планирование
Справедливое планирование

Слайд 98

Циклическое планирование

Одним из наиболее старых, простых, справедливых и часто используемых является алгоритм

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

Слайд 99

Приоритетное планирование

Необходимость принимать во внимание подобные внешние факторы приводит к приоритетному планированию.

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

Слайд 100

Приоритетное планирование (2)

Приоритетное планирование (2)

Слайд 101

Несколько очередей

Один из первых приоритетных планировщиков был реализован в системе CTSS

Несколько очередей Один из первых приоритетных планировщиков был реализован в системе CTSS
(compatible time-shared system - совместимая система с разделением времени).
В результате было разработано решение с классами приоритетов. Процессам класса с высшим приоритетом выделялся один квант, процессам следующего класса - два кванта, следующего - четыре кванта и т. д. Когда процесс использовал все отведенное ему время, он перемещался на класс ниже. В качестве примера рассмотрим процесс, которому необходимо производить вычисления в течение 100 квантов. Вначале ему будет предоставлен один квант, затем он будет перекачан на диск. В следующий раз ему достанется 2 кванта, затем 4, 8,16, 32, 64, хотя из 64 он использует только 37.

Слайд 102

«Самый короткий процесс – следующий»

Поскольку алгоритм «Кратчайшая задача – первая» минимизирует среднее

«Самый короткий процесс – следующий» Поскольку алгоритм «Кратчайшая задача – первая» минимизирует
оборотное время в системах пакетной обработки, хотелось бы использовать его и в интерактивных системах. Интерактивные процессы чаще всего следуют схеме «ожидание команды, исполнение команды, ожидание команды, исполнение команды...» Если рассматривать выполнение каждой команды как отдельную задачу, можно минимизировать общее среднее время отклика, запуская первой самую короткую задачу.
Один из методов основывается на оценке длины процесса, базирующейся на предыдущем поведении процесса. При этом запускается процесс, у которого оцененное время самое маленькое. Допустим, что предполагаемое время исполнения команды равно Т0 и предполагаемое время следующего запуска равно Т1. Можно улучшить оценку времени, взяв взвешенную сумму этих времен аТ0 + (1 - а)Т1.
Метод оценки следующего значения серии через взвешенное среднее предыдущего значения и предыдущей оценки часто называют старением.

Слайд 103

Гарантированное планирование

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

Гарантированное планирование Принципиально другим подходом к планированию является предоставление пользователям реальных обещаний
затем их выполнение. Вот одно обещание, которое легко произнести и легко выполнить: если вместе с вами процессором пользуются п пользователей, вам будет предоставлено 1/n мощности процессора.
В системе с одним пользователем и n запущенными процессорами каждому достанется 1/n циклов процессора. Чтобы выполнить это обещание, система должна отслеживать распределение процессора между процессами с момента создания каждого процесса. Затем система рассчитывает количество ресурсов процессора, на которое процесс имеет право, например время с момента создания, деленное на n. Теперь можно сосчитать отношение времени, предоставленного процессу, к времени, на которое он имеет право. Полученное значение 0.5 означает, что процессу выделили только половину положенного, а 2.0 означает, что процессу досталось в два раза больше, чем положено. Затем запускается процесс, у которого это отношение наименьшее, пока оно не станет больше, чем у его ближайшего соседа.

Слайд 104

Лотерейное планирование

Хотя идея обещаний пользователям и их выполнения хороша, но ее трудно

Лотерейное планирование Хотя идея обещаний пользователям и их выполнения хороша, но ее
реализовать. Для более простой реализации предсказуемых результатов используется другой алгоритм, называемый лотерейным планированием.
В основе алгоритма лежит раздача процессам лотерейных билетов на доступ к различным ресурсам, в том числе и к процессору. Когда планировщику необходимо принять решение, выбирается случайным образом лотерейный билет, и его обладатель получает доступ к ресурсу. Что касается доступа к процессору, «лотерея» может происходить 50 раз в секунду, и победитель получает 20 мс времени процессора.

Слайд 105

Справедливое планирование

До сих пор мы предполагали, что каждый процесс управляется независимо от

Справедливое планирование До сих пор мы предполагали, что каждый процесс управляется независимо
того, кто его хозяин. Поэтому если пользователь 1 создаст 9 процессов, а пользователь 2 - 1 процесс, то с использованием циклического планирования или в случае равных приоритетов пользователю 1 достанется 90 % процессора, а пользователю 2 всего 10.
Чтобы избежать подобных ситуаций, некоторые системы обращают внимание на хозяина процесса перед планированием. В такой модели каждому пользователю достается некоторая доля процессора, и планировщик выбирает процесс в соответствии с этим фактом. Если в нашем примере каждому из пользователей было обещано по 50 % процессора, то им достанется по 50 % процессора, независимо от количества процессов.
В качестве примера рассмотрим систему и двух пользователей, каждому из которых отведено по 50 % процессора. У первого пользователя четыре процесса: А, В, С и D, у второго один процесс Е. Если используется циклическое планирование, цепочка процессов, удовлетворяющая всем требованиям, будет выглядеть следующим образом:
A E B E C E D E A E B E C E D E ...

Слайд 106

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

Системы реального времени делятся на жесткие системы реального

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

Слайд 107

Планирование в системах реального времени (2)

Внешние события, на которые система должна реагировать,

Планирование в системах реального времени (2) Внешние события, на которые система должна
можно разделить на:
периодические (возникающие через регулярные интервалы времени);
непериодические (возникающие непредсказуемо).
Возможно наличие нескольких периодических потоков событий, которые система должна обрабатывать. В зависимости от времени, затрачиваемого на обработку каждого из событий, может оказаться, что система не в состоянии своевременно обработать все события.
Если в систему поступает m периодических событий, событие с номером i поступает с периодом Рi и на его обработку уходит Сi, секунд работы процессора, все потоки могут быть своевременно обработаны только при выполнении условия

Системы реального времени, удовлетворяющие этому условию, называются планируемыми.

Имя файла: Процессы-и-потоки.pptx
Количество просмотров: 609
Количество скачиваний: 8