Процессы и потоки_1.pptx
- Количество слайдов: 44
Процессы и потоки
Многозадачность ОС • Многозадачность (мультипрограммирование) – способ организации вычислительного процесса, при котором на одном (или нескольких) процессоре (-ах) выполняется несколько задач. • Данные задачи совместно используют не только ресурсы процессора, но также оперативную и внешнюю память, устройства ввода-вывода и т. д.
Многозадачность ОС • Организация вычислительного процесса характеризуется несколькими критериями эффективности: – Пропускная способность – количество выполняемых задач в единицу времени; – Удобство работы пользователя – Реактивность системы – способность системы выдерживать промежутки времени между запуском программы и получением результата.
Классификация многозадачных операционных систем • Операционные системы по типу организации многозадачности делятся на: – Системы пакетной обработки – Системы разделения времени (интерактивные системы) – Системы реального времени.
Системы пакетной обработки • Для повышения пропускной способности вычислительной системы и минимизации простоев центрального процессора, вызванных ожиданием приложением ввода данных или другими причинами, используется организация вычислительного процесса в виде очереди (пакета) исполняемых приложений. • Область применения систем пакетной обработки – системы с интенсивными вычислениями (например, научные и технические расчеты).
Системы пакетной обработки • Схема работы системы имеет следующий вид: – В начале работы формируется пакет заданий, причем каждое задание содержит требования к системным ресурсам. – Из пакета формируется мультипрограммная смесь, то есть множество одновременно выполняемых задач (как правило, выбираются наборы задач, предъявляющие разные требования к ресурсам).
Системы разделения времени • В данных системах пользователю (или пользователям) предоставляется возможность интерактивной работы сразу с несколькими приложениями. • Для решения данной задачи ОС должна принудительно приостанавливать работу приложений и переключать работу процессора на обработку другого приложения.
Системы разделения времени • Всем приложениям попеременно выделяется некоторый квант процессорного времени. • Пользователь получает возможность поддерживать диалог с запущенным приложением. • Достоинство данных систем – удобство работы пользователя. Каждый пользователь получает терминал для управления работой приложений. • Недостаток – меньшая пропускная способность операционных систем.
Системы реального времени • Системы реального времени представляют собой вариант систем с разделением времени выполнения в случае, если задача обработки информации должна быть выполнена в течение некоторого предельно допустимого времени. • Мультипрограммная смесь в системах реального времени – фиксированный набор заранее разработанных программ. • Выбор задачи осуществляется по прерываниям или в соответствии с расписанием плановых работ. • Способность ОС к быстрому ответу зависит от скорости переключения с одной задачи на другую, в частности, от скорости обработки прерываний.
Системы реального времени • В системах реального времени при планировании загрузки устройств устанавливается некоторый запас вычислительной мощности системы, для того, чтобы, в случае пиковой нагрузки, система могла осуществить прерывание работы приложения. • Примеры систем – управление техническими объектами или технологическими процессами. В таких системах критерий эффективности – способность выдержать заданные интервалы времени.
Мультипроцессорная обработка • Мультипроцессорная обработка – способ организации вычислительного процесса в системах с несколькими процессорами (разделение процедуры обработки на разных процессорах). • Современные серверные ОС включают поддержку мультипроцессорной обработки – Sun Solaris, IBM OS/2, Novell Net. Ware, Microsoft Windows.
Мультипроцессорная обработка • При мультипроцессорной обработке усложняется задача управления ресурсами – планирование процессов для нескольких процессоров, использующих общую оперативную и внешнюю память, другие устройства. • Необходимо планировать средства блокировки при доступе к разделяемым информационным структурам ядра.
Способы мультипроцессорной обработки • Симметричная архитектура мультипроцессорной системы – система включает набор однородных процессоров (как правило, 2 -4 -8 -16 и т. д. ), единообразно включенных в общую схему. • Симметричные мультипроцессорные системы разделяют общую оперативную память между всеми процессорами. • Масштабирование в симметричных системах ограничено.
Способы мультипроцессорной обработки • Асимметричная архитектура – система включающая разные типы процессоров (как по характеристикам, так и функциональной роли). • Функциональная неоднородность асимметричных систем приводит к структурным отличиям во фрагментах системы. • Масштабирование ассиметричных систем выполняется по горизонтали. • Каждое устройство называется кластером, а система – кластерной.
ПОТОКИ И ПРОЦЕССЫ
ПРОЦЕССЫ
Понятие процесса • Основная задача ОС – распределение ресурсов между процессами и потоками • Процесс, связан с программным кодом исполняемого модуля и рассматривается ОС как заявка на потребление всех видов ресурсов, кроме процессорного времени. • Для изоляции процессов друг от друга ОС обеспечивает каждый процесс отдельным виртуальным адресным пространством. • Один процесс не может получить прямого доступа к командам и данным другого процесса.
Понятие процесса • С каждым процессом связывается: – его адресное пространство, из которого он может читать и в которое он может писать данные. – набор регистров • Адресное пространство содержит: – саму программу – данные к программе – стек программы • Набор регистров: – счетчика команд (в процессоре). – указатель стека – и д. р.
Состояния процесса • Для мультипрограммных вычислительных систем псевдопараллельная обработка нескольких процессов достигается с помощью переключения процессора с одного процесса на другой. • Процесс может находится в трех состояниях: исполнения, ожидания, готовность. • Процесс не может перейти из одного состояния в другое самостоятельно. Изменением состояния процессов занимается ОС, совершая операции над ними.
Состояния процесса Рождение Ожидание Событие произошло Допуск к планированию Готовность Прерывание Ожидание события Исполнение Выбран для исполнения Завершение работы Закончил исполнение
Набор операций над процессами • Операции можно объединить в три пары: – одноразовые операции одноразовые 1. создание процесса – завершение процесса; – многоразовые операции: ногоразовые 2. приостановка процесса (перевод из состояния исполнение в состояние готовность) – запуск процесса (перевод из состояния готовность в состояние исполнение); 3. блокирование процесса (перевод из состояния исполнение в состояние ожидание) – разблокирование процесса (перевод из состояния ожидание в состояние готовность).
Управление процессами • Для того чтобы операционная система могла выполнять операции над процессами, каждый процесс представляется в ней некоторой структурой данных. • Во многих операционных системах вся информация о каждом процессе, дополнительная к содержимому его собственного адресного пространства, хранится в таблице процессов операционной системы.
Управление процессами • Примерная информация таблицы процессов: – состояние процесса; – программный счетчик процесса или, другими словами, адрес команды, которая должна быть выполнена для него следующей; – содержимое регистров процессора; – данные, необходимые для планирования использования процессора и управления памятью (приоритет процесса, размер и расположение адресного пространства и т. д. ); – учетные данные (идентификатор процесса, идентификатор пользователя, общее время использования процессора данным процессом и др. ); – сведения об устройствах ввода-вывода процесса (например, какие устройства закреплены за процессом, таблицу открытых файлов).
Контекст процесса • В любой момент времени процесс полностью характеризуется своим контекстом. • Контекст процесса можно подразделить на три части: – Регистровый контекст процесса (содержимое всех регистров процессора) – Пользовательский контекст (код и данные, находящиеся в адресном пространстве процесса) – Системный контекст процесса (вся остальная информация по процессу)
Одноразовые операции. Рождение процессов • Любая ОС, поддерживающая концепцию процессов, обладает средствами для их создания. • В очень простых системах все процессы могут быть порождены на этапе старта системы, более сложные ОС создают процессы динамически, по мере необходимости. • Инициатором рождения нового процесса после старта ОС может выступить: – процесс пользователя, совершивший специальный системный вызов, – сама операционная система, то есть, в конечном итоге, тоже некоторый процесс.
Одноразовые операции. Рождение процессов • Процесс, инициировавший создание нового процесса, принято называть процессомродителем (parent process), а вновь созданный процесс – процессом-ребенком (child process). • Процессы-дети могут в свою очередь порождать новых детей и т. д. , образуя иерархию. • В UNIX-системах заложена жесткая иерархия процессов, прародителем всех процессов является процесс init. • В Windows понятия иерархии процессов не существует.
Одноразовые операции. Завершение процессов • После того как процесс завершил свою работу, ОС переводит его в состояние закончил исполнение и освобождает все ассоциированные с ним ресурсы, делая соответствующие записи в блоке управления процессом. • При этом сам блок управления процессом не уничтожается, а остается в системе еще некоторое время. • В ряде ОС (например, в VAX/VMS) гибель процессародителя приводит к завершению работы всех его «детей» . • В других ОС процессы-дети продолжают свое существование и после окончания работы процессародителя.
Многоразовые операции. Приостановка процесса. • Процесс может быть приостановлен в результате какого-либо прерывания. • Процессор автоматически сохраняет счетчик команд и, возможно, один или несколько регистров в стеке исполняемого процесса, а затем передает управление по специальному адресу обработки данного прерывания. • ОС сохраняет динамическую часть системного и регистрового контекстов процесса в его блоке управления, переводит процесс в состояние готовность и приступает к обработке прерывания.
Многоразовые операции. Блокирование процесса • Процесс блокируется, когда он не может продолжать работу, не дождавшись возникновения какого-либо события в ВС. • Для этого он обращается к ОС с помощью определенного системного вызова. • ОС обрабатывает соответствующий системный вызов: – инициализирует операцию ввода-вывода – добавляет процесс в очередь процессов, дожидающихся освобождения устройства или возникновения события, – переводит процесс из состояния исполнение в состояние ожидание.
Многоразовые операции. Разблокирование процесса • После возникновения в системе какого-либо события ОС нужно точно определить, какое именно событие произошло. • Затем ОС проверяет, находился ли некоторый процесс в состоянии ожидания для данного события, и если находился, переводит его в состояние готовность, выполняя необходимые действия, связанные с наступлением события (инициализация операции ввода-вывода для очередного ожидающего процесса и т. п. ).
Переключение контекста • Для корректного переключения процессора с одного процесса на другой ОС должна сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. • Такая процедура сохранения/ восстановления работоспособности процессов называется переключением контекста.
Переключение контекста • Время, затраченное на переключение контекста представляет собой накладные расходы, снижающие производительность системы (обычно колеблется от 1 до 1000 мкс). • Существенно сократить накладные расходы в современных ОС позволяет расширенная модель процессов, включающая в себя понятие threads of execution (нити исполнения или просто нити).
ПОТОКИ
Потоки Поток выполнения (англ. thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса.
Потоки Несколько потоков выполнения могут существовать в рамках одного и того же процесса и совместно использовать ресурсы, такие как память, тогда как процессы не разделяют этих ресурсов. В частности, потоки выполнения разделяют: • инструкции процесса (его код) • контекст процесса (значения переменных, которые они имеют в любой момент времени)
Потоки
Модель потока С каждым потоком связывается: – Счетчик выполнения команд – Регистры для текущих переменных – Стек – Состояние Потоки делят между собой элементы своего процесса: § Адресное пространство § Глобальные переменные § Открытые файлы § Таймеры § Семафоры § Статистическую информацию
Преимущества использования потоков • Упрощение программы в некоторых случаях, за счет использования общего адресного пространства. • Быстрота создания потока, по сравнению с процессом, примерно в 100 раз • Повышение производительности самой программы
Реализация потоков
Реализация потоков в пространстве пользователя Преимущества: • Такую многопоточность можно реализовать на ядре, неподдерживающем многопоточность • Более быстрое переключение, создание и завершение потоков • Процесс может иметь собственный алгоритм планирования.
Реализация потоков в пространстве пользователя Недостатки : • Отсутствие прерывания по таймеру внутри одного процесса • При использовании блокирующего (процесс переводится в режим ожидания, например: чтение с клавиатуры, а данные не поступают) системного запроса все остальные потоки блокируются. • Сложность реализации
Реализация потоков в пространстве ядра Преимущества: • Управление потоками в ядре не требует новых неблокирующих системных запросов. • При блокировке потока, ядро запускает другой поток в состоянии готовности из этого же процесса. Основной недостаток - существенная цена системных запросов
Смешанная реализация