Процесс – это действия системы, связанные с выполнением программы и собственно выполнение этой программы.
Процесс – это сущность, рассматриваемая как единица работы.
Задачи подсистемы управления процессами:
— планировать выполнение процессов
— распределять процессорное время
— создавать и уничтожать процессы
— обеспечивать их ресурсами
— обеспечивать взаимодействие между процессами
— обеспечивать защиту данных
Многозадачность (мультипрограммирование) – способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняется несколько программ.
Эти программы совместно используют не только процессор, но и другие ресурсы компьютера: оперативную и внешнюю память, устройства ввода-вывода и тд.
Мультипрограммирование призвано повысить эффективность использования вычислительной системы в соответствии с заданными критериями.
Критерии эффективности работы вычислительных систем:
— пропускная способность (к-во задач / единицу времени);
Урок 9. Компоненты вычислительной системы
— удобство работы пользователей (интерактивная работа с несколькими приложениями);
— реактивность системы (способность выдерживать заданные интервалы между запуском приложения и получением результата)
В зависимости от критерия эффективности, системы делятся на:
— системы пакетной обработки (пропускная способность);
— системы разделения времени (удобство пользователя);
— системы реального времени (реактивность системы);
Многозадачность в системах пакетной обработки, разделения времени и реального времени.
Системы пакетной обработки.
Главная цель – максимальная загрузка ЦП, минимизация простоев. Максимальная пропускная способность – к-во задач / единицу времени.
Перед началом работы формируется пакет заданий, каждое из которых содержит требования к системным ресурсам. Из этого пакета на одновременное выполнение выбираются задачи, предъявляющие разные требования к ресурсам, что обеспечивает сбалансированную загрузку ЦП.
Выбирается самое выгодное задание – невозможно гарантировать выполнение задания за какой-то определенный промежуток времени.
Способы совмещения работы ЦП и ввода-вывода:
1) Канальный – у компа есть свой проц ввода-вывода (канал). Он умеет выполнять свои операции. ЦП дает ему параметры и указывает, какую именно инструкцию надо выполнить, после чего они работают параллельно.
2) На основе контроллеров. Внешние устройства управляются собственными контроллерами. Контроллер отрабатывает команды, поступившие от ЦП, но делает это медленнее, чем ЦП (т.к. устройства внешние — электромеханические). За счет этого достигается параллелизм.
Переключение с задачи на задачу в системах пакетной обработки – невытесняющее, по инициативе самой задачи, которая добровольно отказывается от процессора, когда ей нужно устройство ввода – вывода.
Лекция 1. Многопроцессорные вычислительные системы
Задача может надолго занять процессор – это снижает эффективность работы пользователя, но повышает эффективность использования аппаратуры.
Системы разделения времени
Цель – удобство работы пользователя.
Одному или нескольким юзерам предоставляется возможность работать сразу с несколькими приложениями. Поэтому время работы каждого приложения ограничивается – ОС приостанавливает его выполнение по истечении кванта процессорного времени.
Т.о. ни одна задача не занимает ЦП надолго, и время ответа приложения остается приемлемым для юзера, который общается с системой через терминал. У всех пользователей складывается впечатление, что они используют систему единолично.
Такие системы обладают меньшей пропускной способностью, производительность системы снижается из-за более частых переключений процессора.
Системы реального времени
Предназначены для управления разными техническими объектами (спутники, станки, и тд). Существует предельно допустимое время, в течение которого должна быть выполнена та или иная задача. Иначе возникнет сбой с тяжелыми последствиями.
Критерий эффективности – способность выдерживать заранее заданные интервалы между запуском программы и получением результата – реактивность системы.
В системах реального времени мультипрограммная смесь состоит из фиксированного набора заранее разработанных программ (с известным временем их выполнения).
Запуск задач на выполнение осуществляется по прерываниям:
— либо исходя из текущего состояния объекта
— либо по плановому расписанию
Скорость ответа системы зависит от скорости обработки прерываний (опрос тысячи потенциальных устройств не подойдет). Это главный критерий выбора процессора для такой системы.
Загружать процессор по максимуму в этих системах нельзя, нужно оставлять запас вычислительной мощности на случай непредвиденной пиковой нагрузки. То, что вероятность ее возникновения крайне мала – здесь не аргумент, т.к. именно в этот момент больше всего понадобится адекватная реакция системы, от которой будет зависеть слишком многое (пример – зашкаливание датчиков при аварии на АЭС).
12. Понятия процесса и потока. Состояния потока. Планирование и диспетчеризация потоков в многопоточных системах (с использованием не вытесняющих алгоритмов, на основе квантования, на основе приоритетов, смешанные алгоритмы планирования).
Понятие процесса и потока
Процесс – деятельность ОС, связанная с выполнением программы и собственно выполнение этой программы.
Процесс – сущность, рассматриваемая как единица работы ОС.
Процесс – это динамичное понятие. Одна программа, запущенная дважды – это два процесса. Программа – понятие статичное.
Поток – это поток команд, выполняемый процессором.
Это сущность, которая используется системой для распределения процессорного времени.
Все ресурсы в системе, кроме процессорного времени, выделяются для процесса:
— возможность доступа к файлам тд
Процессорное время выделяется потоку. Т.о мультипрограммирование реализовывается на уровне потоков, а не процессов.
Для создания процесса система создает ОПИСАТЕЛЬ ПРОЦЕССА – информационную структуру, содержащую все сведения о процессе: его id, приоритет, права доступа, данные о расположении в памяти его кода и данных.
После того, как создан новый описатель процесса, система принимает вновь появившийся процесс при планировании распределения своих ресурсов.
Для того, чтобы создать процесс, нужно загрузить коды и данные исполняемой программы в оперативную память (при использовании витруальной памяти в оперативную память загружается только часть процесса, остальные подкачиваются при необходимости.)
При создании процесса ОС создает для него как минимум 1 поток выполнения, для чего генерируется специальная структура – ОПИСАТЕЛЬ ПОТОКА. Сюда записывается информация о id потока, его приоритете, правах доступа и состоянии и тд. Вновь созданный поток находится в приостановленном состоянии и становится в очередь на выполнение в соответствии с определенными правилами системы.
При работе с процессами система использует понятия ДЕСКРИПТОР ПРОЦЕССА (он же описатель, см. выше) и КОНТЕКСТ ПРОЦЕССА.
· Дескриптор процесса содержит информацию, необходимую ядру в течение всего жизненного цикла процесса (не важно, в памяти он сейчас или выгружен из нее).
Дескрипторы объединяются в ТАБЛИЦУ ПРОЦЕССОВ, которая хранится в ядре. На основании информации из таблицы процессов осуществляется планирование и синхронизация процессов.
· Контекст процесса содержит более объемную и не такую важную информацию: содержимое регистров, указатели на открытые файлы и тд и тп.Контекст не хранится в области ядра, а выгружается на диск при необходимости (транзитный).
Состояния потока
ОС осуществляет планирование потоков в соответствии с их состоянием
Поток может находиться в одном из 3 основных состояний (есть еще и промежуточные)
1) Выполнение ( поток юзает процессор)
2) Готовность ( поток мог бы выполняться, но проц занят)
3) Ожидание или блокировка (потоку что-то надо: ждет данные, операцию ввода вывода или еще чего);
Переход из одного состояния в другое осуществляется в соотсветствии с алгоритмом планирования конкретной ОС.
— Поток создан – в состоянии готовности, ждет очереди на выполнение.
— Поток выбран на выполнение – выполняется, пока сам не отдаст проц, или пока квант времени не истечет
— Потом – снова в готовность.
— Потоку понадобилась инфа – он идет в ожидание.
— Поток получил нужную инфу – он идет в готовность и в очередь.
Существует переходное состояние ПЕРВООЧЕРЕДНОЙ ГОТОВНОСТИ – когда поток готов получить ресурсы (между блокировкой и готовностью).
В состоянии выполнения может находиться только 1 поток (в однопроцессорной системе);
В ожидании и готовности – много. Тут процессы образуют очереди, организованные в виде однонаправленного списка. Это позволяет легко их переупорядочивать при необходимости.
Планирование и диспетчеризация потоков
От планирования потоков зависит эффективность работы системы. Критерии эффективности бывают разные (см. выше).
В самом общем случае алгоритмы планирования можно разделить
По степени централизации механизма планирования на:
— вытесняющие (preemptive) – поток выполняется, пока сам не решит отдать процессор другому
— исключаются нерациональные прерывания программ в неудобное время
— нет проблем совместного использования данных
— более высокая скорость работы (не надо переключаться туда-сюда)
Но больше минусов
— неудобно для пользователя
— головная боль для программиста (ему нужно решать вопросы планирования, он должен быть очень высококвалифицированным)
Пример – файл-серверы NetWare
— невытесняющие (non-preeemptive) – решение о переключении процессора принимает ОС. Так работает большинство современных ОС, особенно пользовательских.
Невытесняющие алгоритмы планирования:
А) FIFO (First in first out) || FCFS (First come first served);
Но есть convoy effect – короткие процессы, выполняемые после длинных, увеличивают общее время ожидания.
Б) SJFS – shortest job first served – короткая задача обслуживается первой.
— без опережения (процесс не прерывается если уж пошел на исполнение)
— с опережением (прерывается, если появляется поток с еще более минимальным временем исполнения)
В) SRTF – shortest remaining time first – первым идет поток, которому меньше осталось.
— оптимален в системах реального времени
Оценка длины среднего периода активности вычисляется по формуле:
T – текущее значение энного CPU burst
T (n + 1) – следующее его значение, которое мы предсказываем
А – коэффициент старения информации (от 0 до 1);
Вытесняющие алгоритмы планирования бывают разные:
— на основе квантования
— на основе приоритетов
1) Квантование – каждому потоку последовательно выделяется квант процессорного времени.
Смена потоков происходит при:
— поток завершился и покинул систему
— поток перешел в заблокированное состояние
— поток исчерпал свой квант (переходит в состояние готовности)
Кванты бывают:
— одинаковые для всех потоков.
— разные
Длина кванта – q. Количество потоков – n. Поток ждет (n-1)*q времени. Чем больше потоков, тем больше ждет, но если квант достаточно маленький – это время ожидания все равно не заметно для пользователя. Обычно оно составляет десятки миллисекунд.
Но чем больше квант – тем больше вероятность, что поток все сделает в первом же цикле, и зависимость времени ожидания потока от времени выполения снижается. Если квант совсем большой – то система превращается в систему линейной обработки.
Кванты для одного потока бывают:
— фиксированной величины
— изменяться в течение жизни потока. (Например, сначала дают большой квант, а потом все меньше и меньше. Короткие задачи выполняются сразу, а длинные вычисления идут в фоновом режиме.)
Система может формировать несколько очередей готовых к выполнению потоков, в зависимости от того, сам ли поток отдал квант или его у него забрали (использован квант до конца или нет), и первыми брать на выполнение из очереди, где собрались потоки, недоиспользовавшие свои кванты.
При алгоритмах, основанных на квантовании, совершенно не учитывается предварительная инфа о задачах (длинные или короткие, важные или нет, сколько они будут использовать процессор, а сколько – устройства ввода-вывода).
2) Алгоритмы планирования, основанные на приоритетах
При приоритетном обслуживании каждый поток обладает изначально известной характеристикой – приоритетом.
Приоритет – число, характеризующее степень привилегированности потока при использовании процессорного времени. Чем выше приоритет – тем выше привилегии, тем меньше поток стоит в очередях.
Приоритет может быть целым, дробным, положительным, отрицаетельным, чем меньше – тем больше, чем больше – тем меньше и тд, в разных системах.
Приоритет потока непосредственно связан с приоритетом процесса, который назначался ему системой при его создании. Система при создании процесса, анализирует, системный он или пользовательский, каковы права пользователя, создавшего его, были ли явные указания на повышение приоритета – и на основании этого назначает потоку определнный приоритет.
Приоритеты бывают:
— фиксированные (один раз назначен – и до конца процесса не меняется)
— динамические (меняются в течение жизни потока)
— по инициативе юзера (он выполняет нужную команду) – в современных системах этого стараются избегать, повышать приоритеты потока могут только админы, и то в определенных пределах.
— по инициативе самого потока (обращается с вызовом к ОСи);
— по инициативе ОС в зависимости от ситуации в системе.
Приоритетное обслуживание бывает:
— с относительными приоритетами
Поток выбран и исполняется, хот гром греми.
Подходит для систем пакетной обработки
— с абсолютными приоритетами
Поток исполняется, пока в очереди не появится процесс с более высоким приоритетом.
Подходит для систем, где нужна быстрая реакция на событие.
3) Смешанные алгоритмы планирования
Используется как система квантования, так и система приоритетов. Например, в основе лежит квантование, но величина кванта и порядок выбора потока на исполнение определяется его приоритетами. Большинство ОС работают так.
13. Приоритеты и концепции планирования потоков в Windows 2000, ОС Unix System V и OS/2.
Источник: cyberpedia.su
2.3. Понятия вычислительного процесса и ресурса
Понятие «вычислительный процесс» (или просто – «процесс») является одним из основных при рассмотрении операционных систем. Последовательный процесс (иногда называемый «задачей») – это выполнение отдельной программы с ее данными на последовательном процессоре.
Под последовательным понимается такой процессор, в котором текущая команда выполняется после завершения предыдущей. В современных процессорах можно столкнуться с ситуациями, когда возможно параллельное выполнение нескольких команд. В этих процессорах параллелизм достигается двумя основными способами — организацией конвейерного механизма выполнения команды и созданием нескольких конвейеров. Однако в подобных процессорах аппаратными решениями обязательно достигается логическая последовательность в выполнении команд, предусмотренная программой.
Концептуально процесс рассматривается в двух аспектах: во-первых, он является носителем данных и, во-вторых, он (одновременно) выполняет операции, связанные с их обработкой.
В качестве примеров можно назвать следующие процессы (задачи): прикладные программы пользователей, утилиты и другие системные обрабатывающие программы. Процессами могут быть редактирование какого-либо текста, трансляция исходной программы, ее компоновка, исполнение. Причем трансляция какой-нибудь исходной программы является одним процессом, а трансляция следующей исходной программы – другим процессом, поскольку, хотя транслятор как объединение программных модулей здесь выступает как одна и та же программа, но данные, которые он обрабатывает, являются разными.
Концепция процесса преследует цель выработать механизмы распределения и управления ресурсами. Понятие ресурса, так же как и понятие процесса, является, пожалуй, основным при рассмотрении операционных систем. Термин ресурс обычно применяется по отношению к повторно используемым, относительно стабильным и часто недостающим объектам, которые запрашиваются, используются и освобождаются процессами в период их активности. Другими словами, ресурсом называется всякий объект, который может распределяться внутри системы.
Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно (в один и тот же момент времени) или параллельно (в течение некоторого интервала времени процессы используют ресурс попеременно), а могут быть и неделимыми (рис. 7).
При разработке первых систем ресурсами считались процессорное время, память, каналы ввода/вывода и периферийные устройства. Однако очень скоро понятие ресурса стало гораздо более универсальным и общим. Различного рода программные и информационные ресурсы также могут быть определены для системы как объекты, которые могут разделяться и распределяться, и доступ к которым необходимо соответствующим образом контролировать. В настоящее время понятие ресурса превратилось в абстрактную структуру с целым рядом атрибутов, характеризующих способы доступа к этой структуре и ее физическое представление в системе. Более того, помимо системных ресурсов, о которых мы сейчас говорили, как ресурс стали толковать и такие объекты, как сообщения и синхросигналы, которыми обмениваются задачи.
Рис. 7. Классификация ресурсов
В первых вычислительных системах любая программа могла выполняться только после полного завершения предыдущей. Поскольку эти первые вычислительные системы были построены в соответствии с принципами, изложенными в известной работе Яноша Джон фон Неймана, все подсистемы и устройства компьютера управлялись исключительно центральным процессором.
Центральный процессор осуществлял и выполнение вычислений, и управление операциями ввода/вывода данных. Соответственно, пока осуществлялся обмен данными между оперативной памятью и внешними устройствами, процессор не мог выполнять вычисления. Введение в состав вычислительной машины специальных контроллеров позволило совместить во времени (распараллелить) операции вывода полученных данных и последующие вычисления на центральном процессоре. Однако все равно процессор продолжал часто и долго простаивать, дожидаясь завершения очередной операции ввода/вывода.
Поэтому было предложено организовать так называемый мультипрограммный (мультизадачный) режим работы вычислительной системы. Суть его заключается в том, что пока одна программа (один вычислительный процесс или задача) ожидает завершения очередной операции ввода/вывода, другая программа (а точнее, другая задача) может быть поставлена на решение (рис.8). Это позволяет более полно использовать имеющиеся ресурсы (например, центральный процессор начинает меньше простаивать) и уменьшить общее (суммарное) время, необходимое для решения некоторого множества задач.
Рис. 8. Пример выполнения двух программ в мультипрограммном режиме
Из рис. 8, на котором в качестве примера изображена такая гипотетическая ситуация, видно, что благодаря совмещению во времени выполнения двух программ общее время выполнения двух задач получается меньше, чем если бы мы выполняли их по очереди (запуск одной только после полного завершения другой). Из этого же рисунка видно, что время выполнения каждой задачи в общем случае становится больше, чем если бы мы выполняли каждую из них как единственную.
При мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме (всякое разделение ресурсов замедляет работу одного из участников за счет дополнительных затрат времени на ожидание освобождения ресурса).
Как уже было отмечено, операционная система поддерживает мультипрограммирование (многопроцессностъ) и старается эффективно использовать ресурсы путем организации к ним очередей запросов, составляемых тем или иным способом. Это требование достигается поддерживанием в памяти более одного процесса, ожидающего процессор, и более одного процесса, готового использовать другие ресурсы, как только последние станут доступными.
Общая схема выделения ресурсов такова. При необходимости использовать какой-либо ресурс (оперативную память, устройство ввода/вывода, массив данных и т. п.) задача обращается к супервизору операционной системы – ее центральному управляющему модулю, который может состоять из нескольких модулей, например: супервизор ввода/вывода, супервизор прерываний, супервизор программ, диспетчер задач и т. д. – посредством специальных вызовов (команд, директив) и сообщает о своем требовании. При этом указывается вид ресурса и, если надо, его объем (например, количество адресуемых ячеек оперативной памяти, количество дорожек или секторов на системном диске, устройство печати и объем выводимых данных и т. п.). Директива обращения к операционной системе передает ей управление, переводя процессор в привилегированный режим работы, если такой существует. Не все вычислительные комплексы имеют два (и более) режима работы: привилегированный (режим супервизора), пользовательский, режим эмуляции какого-нибудь другого компьютера и т. д.
Ресурс может быть выделен задаче, обратившейся к супервизору с соответствующим запросом, если:
– ресурс свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;
– текущий запрос и ранее выданные запросы допускают совместное использование ресурсов;
– ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс).
Получив запрос, операционная система либо удовлетворяет его и возвращает управление задаче, выдавшей данный запрос, либо, если ресурс занят, ставит задачу в очередь к ресурсу, переводя ее в состояние ожидания (блокируя). Очередь к ресурсу может быть организована несколькими способами, но чаще всего это осуществляется с помощью списковой структуры.
После окончания работы с ресурсом задача опять с помощью специального вызова супервизора (посредством соответствующей директивы) сообщает операционной системе об отказе от ресурса, или операционная система забирает ресурс сама, если управление возвращается супервизору после выполнения какой-либо системной функции. Супервизор операционной системы, получив управление по этому обращению, освобождает ресурс и проверяет, имеется ли очередь к освободившемуся ресурсу. Если очередь есть – в зависимости от принятой дисциплины обслуживания (правила обслуживания) и приоритетов заявок он выводит из состояния ожидания задачу, ждущую ресурс, и переводит ее в состояние готовности к выполнению. После этого управление либо передается данной задаче, либо возвращается той, которая только что освободила ресурс.
При выдаче запроса на ресурс задача может указать, хочет ли она владеть ресурсом монопольно или допускает совместное использование с другими задачами. Например, с файлом можно работать монопольно, а можно и совместно с другими задачами.
Если в системе имеется некоторая совокупность ресурсов, то управлять их использованием можно на основе определенной стратегии. Стратегия подразумевает четкую формулировку целей, следуя которым можно добиться эффективного распределения ресурсов.
При организации управления ресурсами всегда требуется принять решение о том, что в данной ситуации выгоднее: быстро обслуживать отдельные наиболее важные запросы, предоставлять всем процессам равные возможности либо обслуживать максимально возможное количество процессов и наиболее полно использовать ресурсы.
Источник: studfile.net
Организация вычислительного процесса
Аннотация: Концепция процессов и потоков. Задание, процессы, потоки (нити), волокна. Мультипрограммирование. Формы многопрограммной работы. Управление процессами и потоками. Создание процессов и потоков. Модели процессов и потоков. Планирование заданий, процессов и потоков. Взаимодействие и синхронизация процессов и потоков.
Методы взаимоисключений. Семафоры и мониторы. Взаимоблокировки (тупики). Синхронизирующие объекты ОС. Аппаратно-программные средства поддержки мультипрограммирования.
Системные вызовы.
5.1. Концепция процессов и потоков. Задание, процессы, потоки (нити), волокна
Одним из основных понятий, связанных с операционными системами, является процесс – абстрактное понятие, описывающее работу программы [10]. Все функционирующее на компьютере программное обеспечение , включая и операционную систему, можно представить набором процессов.
Задачей ОС является управление процессами и ресурсами компьютера или, точнее, организация рационального использования ресурсов в интересах наиболее эффективного выполнения процессов. Для решения этой задачи операционная система должна располагать информацией о текущем состоянии каждого процесса и ресурса. Универсальный подход к предоставлению такой информации заключается в создании и поддержке таблиц с информацией по каждому объекту управления.
Общее представление об этом можно получить из рис. 5.1, на котором показаны таблицы, поддерживаемые операционной системой: для памяти, устройств ввода-вывода, файлов (программ и данных) и процессов. Хотя детали таких таблиц в разных ОС могут отличаться, по сути, все они поддерживают информацию по этим четырем категориям. Располагающий одними и теми же аппаратными ресурсами, но управляемый различными ОС, компьютер может работать с разной степенью эффективности. Наибольшие сложности в управлении ресурсами компьютера возникают в мультипрограммных ОС.
Рис. 5.1. Таблицы ОС
Мультипрограммирование ( многозадачность , multitasking ) – это такой способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ. Чтобы поддерживать мультипрограммирование , ОС должна определить для себя внутренние единицы работы, между которыми будут разделяться процессор и другие ресурсы компьютера. В ОС пакетной обработки, распространенных в компьютерах второго и сначала и третьего поколения, такой единицей работы было задание. В настоящее время в большинстве операционных систем определены два типа единиц работы: более крупная единица – процесс, или задача, и менее крупная – поток, или нить. Причем процесс выполняется в форме одного или нескольких потоков.
Вместе с тем, в некоторых современных ОС вновь вернулись к такой единице работы, как задание ( Job ), например, в Windows . Задание в Windows представляет собой набор из одного или нескольких процессов, управляемых как единое целое. В частности, с каждым заданием ассоциированы квоты и лимиты ресурсов, хранящиеся в соответствующем объекте задания. Квоты включают такие пункты, как максимальное количество процессов (это не позволяет процессам задания создавать бесконтрольное количество дочерних процессов), суммарное время центрального процессора, доступное для каждого процесса в отдельности и для всех процессов вместе, а также максимальное количество используемой памяти для процесса и всего задания. Задания также могут ограничивать свои процессы в вопросах безопасности, например, получать или запрещать права администратора (даже при наличии правильного пароля).
Процессы рассматриваются операционной системой как заявки или контейнеры для всех видов ресурсов, кроме одного – процессорного времени. Это важнейший ресурс распределяется операционной системой между другими единицами работы – потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд. Каждый процесс начинается с одного потока, но новые потоки могут создаваться (порождаться) процессом динамически. В простейшем случае процесс состоит из одного потока, и именно таким образом трактовалось понятие «процесс» до середины 80-х годов (например, в ранних версиях UNIX ). В некоторых современных ОС такое положение сохранилось, т.е. понятие » поток » полностью поглощается понятием «процесс».
Как правило, поток работает в пользовательском режиме, но когда он обращается к системному вызову, то переключается в режим ядра. После завершения системного вызова поток продолжает выполняться в режиме пользователя. У каждого потока есть два стека, один используется в режиме ядра, другой – в режиме пользователя. Помимо состояния (текущие значения всех объектов потока) идентификатора и двух стеков, у каждого потока есть контекст (в котором сохраняются его регистры, когда он не работает), приватная область для его локальных переменных, а также может быть собственный маркер доступа ( информация о защите). Когда поток завершает работу, он может прекратить свое существование. Процесс завершается, когда прекратит существование последний активный поток .
Взаимосвязь между заданиями, процессами и потоками показана на рис. 5.2.
Рис. 5.2. Задания, процессы, потоки
Переключение потоков в ОС занимает довольно много времени, так как для этого необходимы переключение в режим ядра, а затем возврат в режим пользователя . Достаточно велики затраты процессорного времени на планирование и диспетчеризацию потоков. Для предоставления сильно облегченного псевдопараллелизма в Windows 2000 (и последующих версиях) используются волокна ( Fiber ), подобные потокам, но планируемые в пространстве пользователя создавшей их программой. У каждого потока может быть несколько волокон, с той разницей, что когда волокно логически блокируется, оно помещается в очередь блокированных волокон, после чего для работы выбирается другое волокно в контексте того же потока. При этом ОС «не знает» о смене волокон, так как все тот же поток продолжает работу.
Таким образом, существует иерархия рабочих единиц операционной системы, которая применительно к Windows выглядит следующим образом (рис. 5.3).
Возникает вопрос: зачем нужна такая сложная организация работ , выполняемых операционной системой? Ответ нужно искать в развитии теории и практики мультипрограммирования, цель которой – в обеспечении максимально эффективного использования главного ресурса вычислительной системы – центрального процессора (нескольких центральных процессоров).
Поэтому прежде чем переходить к рассмотрению современных принципов управления процессором, процессами и потоками, следует остановиться на основных принципах мультипрограммирования.
Рис. 5.3. Иерархия рабочих единиц ОС
5.2. Мультипрограммирование. Формы многопрограммной работы
Мультипрограммирование призвано повысить эффективность использования вычислительной системы [10, 17]. Однако эффективность может пониматься по -разному. Наиболее характерными показателями эффективности вычислительных систем являются:
- пропускная способность – количество задач, выполняемых системой в единицу времени;
- удобство работы пользователей, заключающихся, в частности, в том, что они могут одновременно работать в интерактивном режиме с несколькими приложениями на одной машине;
- реактивность системы – способность выдерживать заранее заданные (возможно, очень короткие) интервалы времени между запуском программы и получением конечного результата.
В зависимости от выбора одного из этих показателей эффективности ОС делятся на системы пакетной обработки , системы разделения времени и системы реального времени (некоторые ОС могут поддерживать одновременно несколько режимов).
Системы пакетной обработки предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов [11]. Максимальная пропускная способность компьютера достигается в этом случае минимизацией простоев его устройств и прежде всего процессора. Для достижения этой цели пакет заданий формируется так, чтобы получающаяся мультипрограммная смесь сбалансированно загружала все устройства машины. Например, в такой смеси желательно присутствие задач вычислительного характера и с интенсивным вводом-выводом. Однако в этом случае трудно гарантировать сроки выполнения того или иного задания.
В благоприятных случаях общее время выполнения смеси задач меньше, чем суммарное время их последовательного выполнения. При этом времени выполнения отдельной задачи может быть затрачено больше, чем при монопольном ее выполнении (рис. 5.4).
В системах разделения времени пользователям (в частном случае – одному) предоставляется возможность интерактивной работы сразу с несколькими приложениями. Для этого каждое приложение должно регулярно получать возможность «общения» с пользователем. Эта проблема решается за счет того, что ОС принудительно периодически приостанавливает приложения, не дожидаясь, когда они «добровольно» освободят процессор .
Рис. 5.4. Иллюстрация эффекта мультипрограммирования
Всем приложениям попеременно выделяются кванты времени процессора, таким образом, пользователи, запустившие программы на выполнение, получают возможность поддерживать с ними диалог (рис. 5.5) со своего терминала. Если время кванта выбрано достаточно небольшим, то у всех пользователей складывается впечатление единоличной работы на машине.
Рис. 5.5. Система разделения времени
Системы реального времени предназначены для управления техническими объектами (спутник, ракета, атомные электростанции, станок, научная установка и др.), технологическими процессами (гальваническая линия, доменный процесс и т.п.), системами обслуживания разного рода (резервирование авиабилетов, оплата покупок и счетов и др.). Во всех этих случаях существует предельно допустимое время, в течение которого должна быть выполнена та или иная программа управления объектом. В противном случае возможны нежелательные последствия вплоть до аварии.
Критерием эффективности ОС в этом случае является способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата. Это время называется временем реакции системы, а соответствующее свойство – реактивностью. Требования ко времени реакции зависят от специфики управляемого объекта или процесса. В системах реального времени мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ решения функциональных задач управления объектом или процессом. Выбор программы на выполнение осуществляется по прерываниям (исходя из текущего состояния объекта) или в соответствии с расписанием плановых работ .
В системе реального времени обычно закладывается запас вычислительной мощности на случай пиковой нагрузки, а также принимаются меры обеспечения высокой надежности работы системы (резервирование, дублирование, троирование с мажоритарным элементом и др.).
Интересная форма мультипрограммной работы связана с мультипроцессорной обработкой. Мультипроцессорная обработка – это способ организации вычислительного процесса в системе с несколькими процессорами, при котором несколько задач (процессов, потоков) могут одновременно выполняться на разных процессорах системы. Концепция мультипроцессирования не нова, она известна с 70-х годов, однако стала доступной в широком масштабе лишь в последнее десятилетие, особенно с появлением многопроцессорных ПК (часто в качестве серверов ЛВС ).
В отличие от мультипрограммной обработки, в мультипроцессорных системах несколько задач выполняется одновременно, т.к. имеется несколько процессоров. Однако это не исключает мультипрограммной обработки на каждом процессоре. При этом резко усложняются все алгоритмы управления ресурсами, т.е. операционная система . Современные ОС, как правило, поддерживают мультипроцессирование ( Sun Solaris 2.x, Santa Cruz Operation Open Server 3.x, OS/2 , Windows NT/2000/2003/XP, NetWare, начиная с версии 4.1 и др.).
Мультипроцессорные системы часто характеризуют как симметричные и как несимметричные. Эти термины относятся, с одной стороны, к архитектуре вычислительной системы, а с другой – к способу организации вычислительного процесса.
Симметричная архитектура мультипроцессорной системы предполагает однотипность и единообразие включения процессоров и большую разделяемую между этими процессорами память . Масштабируемость, т.е. возможность наращивания числа процессоров, в данном случае ограничена, т.к. все они используют одну и ту же оперативную память и, следовательно, должны располагаться в одном корпусе. В симметричных архитектурах вычислительных систем легко реализуется симметричное мультипроцессирование общей для всех процессоров операционной системой. При этом все процессоры равноправно участвуют и в управлении вычислительным процессом, и в выполнении прикладных задач. Разные процессоры могут в какой-то момент времени одновременно обслуживать как разные, так и одинаковые модули общей ОС. Для этого программы ОС должны быть реентерабельными (повторновходимыми).
Операционная система полностью децентрализована . Ее модули выполняются на любом доступном процессоре. Как только процессор завершает выполнение очередной задачи, он передает управление планировщику задач. Последний выбирает из общей для всех процессоров системной очереди задачу, которая будет выполняться на данном процессоре следующей.
В вычислительных системах с асимметричной архитектурой процессоры могут быть различными как по характеристикам ( производительность , система команд ), так и по функциональной роли в работе системы. Например, могут быть выделены процессоры для вычислений, ввода-вывода и др. Эта неоднородность ведет к структурным отличиям во фрагментах системы, содержащих разные процессоры (разные схемы подключения, наборы периферийных устройств, способы взаимодействия процессоров с устройствами и др.).
Масштабирование в таких системах реализуется иначе, поскольку отсутствует требование единого корпуса. Система может состоять из нескольких устройств, каждое из которых содержит один или несколько процессоров. Масштабирование в данном случае называют горизонтальным, а мультипроцессорную систему – кластерной.
В кластерной системе может быть реализовано только асимметричное мультипроцессирование с организацией вычислительного процесса по принципу «ведущий – ведомый». Этот наиболее простой способ может быть использован и в вычислительных системах с симметричной архитектурой. В таких системах ОС работает на одном процессоре, который называется ведущим и организует централизованное управление вычислительным процессом и распределением всех ресурсов системы.
Источник: intuit.ru