В мультипрограммной системе поток может находиться в одном из трех основных состояний:
• выполнение — активное состояние потока, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;
• ожидание — пассивное состояние потока, находясь в котором, поток заблокирован по своим внутренним причинам (ждет осуществления некоторого события, например завершения операции ввода-вывода, получения сообщения от другого потока или освобождения какого-либо необходимого ему ресурса);
• готовность — также пассивное состояние потока, но в этом случае поток заблокирован в связи с внешним по отношению к нему обстоятельством (имеет все требуемые для него ресурсы, готов выполняться, однако процессор занят выполнением другого потока).
В течение своей жизни каждый поток переходит из одного состояния в другое в соответствии с алгоритмом планирования потоков, принятым в данной операционной системе.
Рассмотрим типичный граф состояния потока (рис.1). Только что созданный поток находится в состоянии готовности, он готов к выполнению и стоит в очереди к процессору. Когда в результате планирования подсистема управления потоками принимает решение об активизации данного потока, он переходит в состояние выполнения и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ожидания какого-нибудь события, либо будет принудительно «вытеснен» из процессора, например вследствие исчерпания отведенного данному потоку кванта процессорного времени. В последнем случае поток возвращается в состояние готовности. В это же состояние поток переходит из состояния ожидания, после того как ожидаемое событие произойдет.
Вот она — правда! Реакция холестерина на сливочное масло вас удивит!
Рис. 1. Граф состояний потока в многозадачной среде.
В состоянии выполнения в однопроцессорной системе может находиться не более одного потока, а в каждом из состояний ожидания и готовности — несколько потоков. Эти потоки образуют очереди соответственно ожидающих и готовых потоков. Очереди потоков организуются путем объединения в списки описателей отдельных потоков. Таким образом, каждый описатель потока, кроме всего прочего, содержит по крайней мере один указатель на другой описатель, соседствующий с ним в очереди. Такая организация очередей позволяет легко их переупорядочивать, включать и исключать потоки, переводить потоки из одного состояния в другое. Если предположить, что на рис.2 показана очередь готовых потоков, то запланированный порядок выполнения выглядит так: А, В, Е, D, С.
Рис. 2. Очередь потоков.
3.4 Вытесняющие и невытесняющие алгоритмы планирование
С самых общих позиций все множество алгоритмов планирования можно разделить на два класса: вытесняющие и невытесняющие алгоритмы планирования.
• Невытесняющие (non-preemptive) алгоритмы основаны на том, что активному потоку позволяется выполняться, пока он сам, по собственной инициативе,не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению поток.
Есть ли копии тебя во Вселенной, если она бесконечна? Мультивселенная
• Вытесняющие (preemptive) алгоритмы — это такие способы планирования потоков, в которых решение о переключении процессора с выполнения одного потока на выполнение другого потока принимается операционной системой, а не активной задачей.
Основным различием между вытесняющими и невытесняющими алгоритмами является степень централизации механизма планирования потоков.
При вытесняющем мультипрограммировании функции планирования потоков целиком сосредоточены в операционной системе и программист пишет свое приложение, не заботясь о том, что оно будет выполняться одновременно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения активного потока, запоминает его контекст, выбирает из очереди готовых потоков следующий, запускает новый поток на выполнение, загружая его контекст.
При невытесняющеммультипрограммировании механизм планирования распределен между операционной системой и прикладными программами. Прикладная программа, получив управление от операционной системы, сама определяет момент завершения очередного цикла своего выполнения и только затем передает управление ОС с помощью какого-либо системного вызова.
ОС формирует очереди потоков и выбирает в соответствии с некоторым правилом (например, с учетом приоритетов) следующий поток на выполнение. Такой механизм создает проблемы как для пользователей, так и для разработчиков приложений. Разработчики приложений для операционной среды с невытесняющей многозадачностью вынуждены, возлагая на себя часть функций планировщика, создавать приложения так, чтобы они выполняли свои задачи небольшими частями. Подобный метод разделения времени между задачами работает, но он существенно затрудняет разработку программ и предъявляет повышенные требования к квалификации программиста.
Однако распределение функций планирования потоков между системой и приложениями не всегда является недостатком, а при определенных условиях может быть и преимуществом, потому что дает возможность разработчику приложений самому проектировать алгоритм планирования, наиболее подходящий для данного фиксированного набора задач. Так как разработчик сам определяет в программе момент возвращения управления, то при этом исключаются нерациональные прерывания программ в «неудобные» для них моменты времени. Кроме того, легко разрешаются проблемы совместного использования данных: задача во время каждого цикла выполнения использует их монопольно и уверена, что на протяжении этого периода никто другой не изменит данные. Существенным преимуществом невытесняющего планирования является более высокая скорость переключения с потока на поток.
Почти во всех современных операционных системах, ориентированных на высокопроизводительное выполнение приложений (UNIX, Windows NT/2000, OS/2, VAX/VMS), реализованы вытесняющие алгоритмы планирования потоков (процессов).
Источник: studfile.net
Мультипрограммирование и мультипроцессирование
Мультипрограммирование – одновременное выполнение нескольких процессов на вычислительной машине с одним процессором. В этом случае распараллеливание процессов осуществляется за счет того, что пока для одного процесса выполняется операция ввода-вывода, другой процесс использует время ЦП.
Мультипроцессирование – одновременное выполнение нескольких процессов на вычислительной машине, имеющих несколько процессоров; если количество одновременно выполняемых процессов не превышает количества процессоров, то все процессы будут реально выполняться по времени, каждый на своем процессоре. Если больше, то на некоторых процессорах будет выполняться мультипрограммирование. (рис)
При рассмотрении вопросов мультипроцессирования часто используют такие термины, как симметричный и ассиметричный мультипроцесс (применительно к аппаратуре и к организации вычислительного процесса). Симметричная мультипроцессорная архитектура представляет из себя мультипроцессорную систему с несколькими одинаковыми м/п. Обычно такие м/п организованы в одном корпусе. В случае ассиметричной мультипроцессорной архитектуры вычислительная система содержит несколько различных процессоров, выполняющих различные функции. В таких системах 1 из процессоров управляет работой остальных и называется ведущим, все остальные – ведомыми.
При симметричной организации вычислительного процесса модули ОС могут выполняться на любом из процессоров. (рис) При ассиметричной организации вычислительного процесса модули могут выполняться только на 1м или на нескольких определенных процессорах. При ассиметричной архитектуре возможно только ассиметричная организация вычислительного процесса, а при симметричной архитектуре – как симметричная, так и ассиметричная организация вычислительного процесса.
Структуры ОС
За 10летия развития ОС наибольшую популярность получили следующие структуры:
1. Монолитные системы
Монолитная система представляет из себя набор модулей, которые в процессе функционирования могут вызывать друг друга. Интерфейс всех модулей строго определен. Монолитные системы строятся путем компоновки входящих в них модулей в 1 или несколько исполняемых файлов. Например MS-DOS представляет собой 2 выполняемых монолитных файла: IO.com, DOS.com.
1й определяет в себе модули физических операций ввода-вывода, а 2й объединяет логические функции ввода-вывода, те функции работы на уровне файлов. Несмотря на то, что монолитные системы представляют из себя просто набор модулей, эти модули все же несколько структурированы. Например, все модули MS-DOS структурированы в следующую структуру: (рис)
Системные сервисы реализуют функции, вызываемые пользователем (считать сектор диска, записать), а системные утилиты представляют из себя модули, реализующие элементарные операции, используемые системными сервисами.
Вызов функции в MS-DOS выполняется следующим образом:
— в регистр AL записывается код (номер) вызываемой функции
— в другие регистры заносятся параметры передаваемые этой функцией
— после этого вызывается программа прерывания Int 21h
— у этого прерывания управление получает главная процедура – она анализирует регистр AL и вызывает соответствующую функцию или системный сервис, передавая ей параметры указанные в регистрах.
В некоторых других монолитных системах параметры могут передаваться не через регистры, а через стек. В остальном принцип такой же.
Достоинства монолитной системы: простота реализации
Недостатки: сложность модификации (все модули связаны – придется заново производить перекомпоновку системы), очень сложная реализация контроля доступа (защиты)
2. Многоуровневая система
В многоуровневых системах все модули ОС сгруппированы в несколько иерархических уровней, причем модули более высоких уровней могут вызывать модули более низких уровней только по строго определенным правилам. Нижележащие уровни считаются более привилегированными, а вышележащие – менее.
1я многоуровневая система была разработана в 1968г и называлась THE. В этой системе было реализовано 6 уровней:
5) системный оператор
4) прикладные процессы
3) управление вводом-выводом
1) управление памятью
0) управление процессами
На самом низком привилегированном уровне выполнялось управление процессами и обработка прерываний. На 1м более высоком уровне для процессов выделялась память, на 2м уровне обеспечивался доступ к терминалу, 3й уровень управлял операциями ввода-вывода, 4й – выполнением прикладных программ, 5й обеспечивал управление системой. Все эти 6 уровней ОС были реализованы программно, поэтому не обеспечивали полную защиту уровней друг от друга. А в MULTICS и Unix уровни реализованы программно-аппаратно, поэтому там защита и управление доступом хорошо развиты.
3. Системы виртуальных машин
1я машина была разработана IBM VM/370 (рис)
На аппаратуре работает управляющая программа СР, выполняющая действия:
1) выполнение операций ввода-вывода на устройства
2) обработка прерываний
3) моделирование нескольких виртуальных машин, являющихся точной копией реальной аппаратуры
4) периодическое выделение виртуальным машинам квантов времени ЦП, при этом сама СР работает в привилегированном режиме (может выполнять все операции), а виртуальные машины работают в пользовательском режиме. На каждой виртуальной машине работает либо пользовательская (однозадачная). либо более мощная.
Как только ОС, работающая на виртуальной машине, попытается выполнить операцию ввода-вывода или какую-либо другую привилегированную операцию, то произойдет прерывание по защите (т к они работают в пользовательском режиме). СР перехватит прерывание, определит, что нужно сделать, выполнит требуемую операцию и возвратит результат виртуальной машине.
Несколько другой подход будет применен Intel в своих м/п. м/п Intel начиная с 80386 поддерживают режим так называемого 8086. Это означает, что они могут создавать в защищенном режиме несколько параллельно работающих виртуальных машин, моделирующих м/п 8086.
4. Системы с экзоядром
Эти системы являются частным случаем виртуальных машин, в которых все физические ресурсы вычислительной системы частями закрепляются за разными виртуальными машинами. (рис)
Это позволяет еще больше функций перевести из привилегированного режима в пользовательский. Реализация становится намного сложнее, следовательно системы с экзоядром особого распространения не получили.
5. Система «клиент-сервер»
В системах «клиент-сервер» большинство выполняемых процессов как пользовательских, так и системных подразделяется на 2 группы – клиенты и серверы. Серверы – процессы, которые предоставляют в использование некоторые ресурсы или выполняют запрашиваемые клиентами функции, а клиенты – процессы, которые либо потребляют ресурсы, либо посылают запросы к серверу. И клиенты, и серверы выполняются в пользовательском режиме в соответствующих адресных пространствах, и поэтому защищены друг от друга. (рис)
Клиенты не взаимодействует непосредственно с серверами, а посылают свои запросы ОС, а ОС перенаправляет запрос соответствующему серверу. Выполнив запрос, сервер пересылает ответ также ОС, а она перенаправляет его к соответствующему клиенту. За счет того, что часть модулей по работе с ресурсами перенесены на более высокий уровень, ядро стало более компактным.
Поэтому в системах «клиент-сервер» его часто называют микроядром. Повышается надежность. Еще одним преимуществом системы «клиент-сервер» является возможность легкого переноса этой архитектура на сетевую среду (может выполняться на разных компьютерах сети, также использует соответствующие вызовы ядра).
Процессы и потоки
Любая операционная система должна учитывать используемые ресурсы и проделанную работу. Особенно это касается мультипрограммных вычислительных систем. В качестве единицы работы практически во всех ОС используется процесс. Процесс- это загруженная в память и выполняющаяся программа. Одна и та же программа может одновременно выполняться в рамках нескольких процессов.
Каждый процесс при создании получает своё собственное адресное пространство. Ему выделяются такие ресурсы как файлы, устройства, различные системные объекты. Каждому процессу присваивается уникальный идентификатор, называемый process ID. С помощью этого идентификатора система различает процессы.
С каждым процессом связываются различные управляющие структуры, с помощью которых ОС учитывает состояние самого процесса и связанные с ним устройства. Совокупность всех управляющих структур, связанных с процессом, называют контекстом процесса. Когда ОС переходит с выполнения одного процесса на другой, она сохраняет контекст текущего процесса и восстанавливает контекст следующего нового процесса. Поэтому очень часто переключение процессора с выполнения одного процесса на другой называют переключением контекста. Переключение контекста может быть 2х типов:
1) Принудительное переключение контекста, при котором ОС сама прекращает выполнение процесса
2) Добровольное переключение контекста. Происходит когда выполняющийся процесс сам перешёл в ожидание.
Во многих ОС существуют специальные команды и функции, с помощью которых либо пользователи, либо сами процессоры во время своей работы могут запускать новые процессы. В некоторых ОС, например Unix, между запущенными таким образом процессами устанавливаются родственные отношения, при этом запускающий процесс принято считать родительским процессом, а запускаемый -дочерним. Родители могут поправлять выполнением своих дочерних процессов. А дочерние процессы могут наследовать от своих родителей такие ресурсы, как открытые файлы и устройства. В каждый конкретный момент времени процесс может находиться в следующем состоянии.
В состоянии ГОТОВ, объект полностью готов к выполнению и ждёт, когда ОС ему выделит время процессора. В качестве претендента на следующее выполнение ОС просматривает только готовые процессы. Сразу после его создания процесс…….
После того как процесс выбран для выполнения (на ЦП), его контекст восстанавливается, и он переводится в состояние АКТИВЕН. В активном состоянии процесс находится до тех пор, пока не произойдёт оно из следующих событий:
1) Истёк квант времени, выделенный процессу для выполнения. ОС приостанавливает выполнение процесса, его контекст сохраняется и он переводится назад в очередь, а на его место запускается следующий процесс.
2) За время работы процесса в очереди готовых появился процесс с более высоким приоритетом. ОС приостановит активный процесс, сохранит его контекст и опять по переходу 2 переведёт его в состояние ГОТОВ, а на место него запустит более приоритетный процесс.
3) За время своего выполнения, активный процесс перешел в ожидание какого-либо ресурса или события. В этом случае его контекст также сохраняется и он по переходу 3 переводится в состояние БЛОКИРОВАН, а на место него запускается следующий процесс. Переход 3- добровольное переключение контекста (процесса).
4) Во время своего выполнения процесс завершился (5й переход). После этого процесс уничтожается. В состоянии БЛОКИРОВАН процесс находится до тех пор, пока не освободится ожидаемый ресурс или не произойдёт ожидаемое им событие. В этом случае процесс из состояния БЛОКИРОВАН переводится в состояние ГОТОВ и снова может конкурировать с другими процессами за время ЦП.
Мультипрограммирование или многозадачность, критерии организации
Мультипрограммирование (многозадачность) – способ организации вычислительного процесса при к-ром на одном процессоре попеременно выполняется сразу несколько программ. Эти программы совместно используют оперативную и внешнюю память, процессор, устр-ва вводавывода. Призвана повысить выполнение задач.
- пропускная способность – кол-во задач, вып ОС в единицу времени
- доступ раб пользователей – возможность интерактивно работать с неск программами на одной машине
- реактивность с-мы – способность с-мы выдерживать заранее заданные интервалы времени между запуском программы и получение рез-тов.
Многозадачные ОС подразделяются на три типа в соответствии с использованными при их разработке критериями эффективности:
- системы пакетной обработки (например, OC EC),
- системы разделения времени (UNIX, VMS),
- системы реального времени (QNX, RT/11).
Системы пакетной обработки предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов. Главной целью и критерием эффективности систем пакетной обработки является максимальная пропускная способность, то есть решение максимального числа задач в единицу времени.
Для достижения этой цели в системах пакетной обработки используются следующая схема функционирования: в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам; из этого пакета заданий формируется мультипрограммная смесь, то есть множество одновременно выполняемых задач. Для одновременного выполнения выбираются задачи, предъявляющие отличающиеся требования к ресурсам, так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной машины; так, например, в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом.
Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в системе, то есть выбирается «выгодное» задание. Следовательно, в таких ОС невозможно гарантировать выполнение того или иного задания в течение определенного периода времени.
В системах пакетной обработки переключение процессора с выполнения одной задачи на выполнение другой происходит только в случае, если активная задача сама отказывается от процессора, например, из-за необходимости выполнить операцию ввода-вывода. Поэтому одна задача может надолго занять процессор, что делает невозможным выполнение интерактивных задач. Таким образом, взаимодействие пользователя с вычислительной машиной, на которой установлена система пакетной обработки, сводится к тому, что он приносит задание, отдает его диспетчеру-оператору, а в конце дня после выполнения всего пакета заданий получает результат. Очевидно, что такой порядок снижает эффективность работы пользователя.
Системы разделения времени призваны исправить основной недостаток систем пакетной обработки — изоляцию пользователя-программиста от процесса выполнения его задач. Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой.
Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину. Ясно, что системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как на выполнение принимается каждая запущенная пользователем задача, а не та, которая «выгодна» системе, и, кроме того, имеются накладные расходы вычислительной мощности на более частое переключение процессора с задачи на задачу. Критерием эффективности систем разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя.
Системы реального времени применяются для управления различными техническими объектами, такими, например, как станок, спутник, научная экспериментальная установка или технологическими процессами, такими, как гальваническая линия, доменный процесс и т.п. Во всех этих случаях существует предельно допустимое время, в течение которого должна быть выполнена та или иная программа, управляющая объектом, в противном случае может произойти авария: спутник выйдет из зоны видимости, экспериментальные данные, поступающие с датчиков, будут потеряны, толщина гальванического покрытия не будет соответствовать норме. Таким образом, критерием эффективности для систем реального времени является их способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы — реактивностью. Для этих систем мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется исходя из текущего состояния объекта или в соответствии с расписанием плановых работ.
Некоторые операционные системы могут совмещать в себе свойства систем разных типов, например, часть задач может выполняться в режиме пакетной обработки, а часть — в режиме реального времени или в режиме разделения времени. В таких случаях режим пакетной обработки часто называют фоновым режимом.
17. Мультипроцессорность: сложность планирования загрузки процессоров, конфликты доступа к общим ресурсам
Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки — мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.
В наши дни становится общепринятым введение в ОС функций поддержки многопроцессорной обработки данных. Такие функции имеются в операционных системах Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell.
Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами.
Выше были рассмотрены характеристики ОС, связанные с управлением только одним типом ресурсов — процессором. Важное влияние на облик операционной системы в целом, на возможности ее использования в той или иной области оказывают особенности и других подсистем управления локальными ресурсами — подсистем управления памятью, файлами, устройствами ввода-вывода.
Специфика ОС проявляется и в том, каким образом она реализует сетевые функции: распознавание и перенаправление в сеть запросов к удаленным ресурсам, передача сообщений по сети, выполнение удаленных запросов. При реализации сетевых функций возникает комплекс задач, связанных с распределенным характером хранения и обработки данных в сети: ведение справочной информации о всех доступных в сети ресурсах и серверах, адресация взаимодействующих процессов, обеспечение прозрачности доступа, тиражирование данных, согласование копий, поддержка безопасности данных.
Процессы. Основные понятия, состояния процессов
Процесс (задача) — абстракция, описывающая выполняющуюся программу. Для операционной системы процесс представляет собой единицу работы, заявку на потребление системных ресурсов.
Состояние процессов
В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний:
ВЫПОЛНЕНИЕ — активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;
ОЖИДАНИЕ — пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;
ГОТОВНОСТЬ — также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса.
В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной операционной системе.
В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ — несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно «вытеснен» из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет.
Источник: cyberpedia.su