…ершающие работу операции, после чего ресурсы процессу больше не предоставляются.

Концепция ресурса

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

Ресурс вычислительной системы - средство вычислительной системы, которое может быть выделено процессу обработки данных на определенный интервал времени.

Основными ресурсами вычислительной системы являются: процессоры; области основной памяти; наборы данных; периферийные устройства; программы.

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

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

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

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

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

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

Концепция прерывания

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

Прерывание - временное прекращение процесса, такого как выполнение программы вычислительной машины, вызванное событием, внешним по отношению к этому процессу, и совершенное таким образом, что процесс может быть продолжен (СТ ИСО 2382/10-79).

Приведенное определение исчерпывающе характеризует суть понятия прерывания, оставляя за рамками рассмотрения физическую природу аппаратного средства, где возникает это прерывание. Существует другое определение, в котором конкретизируется устройство, в котором происходит прерывание [1,2]:

Прерывание - операция процессора, состоящее в регистрации состояния процессора, предшествующего прерыванию, и установлении нового состояния.

В вычислительной машине прерывание - это событие, при котором меняется нормальная последовательность команд, выполняемых процессором. Сигнал “прерывание” сначала отрабатывается аппаратурой вычислительной машины - системой прерываний. Если произошло прерывание, то в вычислительной системе выполняются последовательно следующие действия (рис.2.5):

  • управление передается операционной системе;

  • операционная система запоминает состояние прерванного процесса;

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

  • программа обработки прерывания выполняет предписанные действия и передает управление операционной системе;

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

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

Количество источников сигналов прерывания достигает в современных вычислительных системах нескольких сотен и даже тысяч. Все возможные в системе прерывания можно классифицировать по месту (причине) их возникновения. Различают шесть основных классов прерываний: прерывания от схем контроля ЭВМ; прерывания по рестарту (повторному пуску); прерывания ввода/вывода; внешние прерывания; прерывания по вызову супервизора; программные прерывания.

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

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

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

Система ввода-вывода

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

Драйвер устройства (Device driver) - программа, обеспечивающая взаимодействие операционной системы с физическим устройством.

Система ввода-вывода (Input-Output System) - часть операционной системы, обеспечивающая управление внешними устройствами, подключенными к ЭВМ.

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

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

Базовая система ввода-вывода (BIOS - Basic Input Output System) - часть программного обеспечения ЭВМ, поддерживающая управление адаптерами внешних устройств и представляющая стандартный интерфейс для обеспечения переносимости операционных систем между ЭВМ с одинаковым процессором. Базовая система ввода-вывода, как правило, разрабатывается изготовителем ЭВМ, хранится в постоянном запоминающем устройстве и рассматривается как часть ЭВМ.

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

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

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

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

Для сглаживания эффекта несоответствия скоростей между внутренними и внешними процессами в системах управления вводом-выводом применяют три основных метода: синхронизация по прерываниям ввода-вывода; буферизация ввода-вывода; блокирование данных.

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

Супервизор ввода-вывода - часть системы управления вводом-выводом, предназначенный для планирования и организации процессов ввода-вывода.

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

Буфер является критическим ресурсом для связанных с ним внутренних и внешних процессов (рис.5.10). Введение буферов как средства информационного взаимодействия выдвинуло задачу управления буферами, которая решается средствами супервизора ввода-вывода. На супервизор ввода-вывода возлагаются функции по выделению и уничтожению буферов в первичной памяти, синхронизации обращения к буферам внутренних и внешних процессов, устранения одновременного обращения к буферу этих процессов и т.п.

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

 

27.__Машинно-независимые свойства операционных систем

  • работа с файлами

  • управление заданиями

  • распределение ресурсов

  • защита

Организация управления задачами

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

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

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

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

  • данные для идентификации пользователя;

  • общую управляющую информацию пакета заданий (например, максимально необходимый объем ОЗУ, приоритет, вид выдачи сообщений ОС и т.п.);

  • одно или несколько заданий на обработку.

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

  • программы заданий (или их имена) и параметры запуска программ;

  • управляющую информацию задания;

  • требования на аппаратные и информационные ресурсы (ОЗУ, внешние устройства, библиотеки программ и т.д.);

  • исходные данные обработки.

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

Средства управления ресурсами

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

В ОС, как правило, отсутствует отдельный супервизор ресурсов, поскольку функции распределения ресурсов реализуются как на уровне внешнего планирования, так и на уровне внутреннего планирования.

Основными функциями управления ресурсами являются:

  • учет наличия и состояния ресурсов;

  • прием и учет заявок на ресурсы от задач и процессов;

  • распределение ресурсов между задачами и процессами;

  • организация использования ресурсов, выделенных каждой задаче или процессу;

  • возврат ресурса в систему по мере его освобождения потребителем.

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

для ресурсов:

  • учетная информация о ресурсе (идентификатор, класс, количество каналов и т.п.);

  • код состояния ресурса;

  • идентификатор процесса-владельца и т.п

для заявок на ресурсы:

  • идентификатор процесса-заявителя;

  • приоритет процесса;

  • идентификатор и требуемый объем ресурса и т.п.

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

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

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

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

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

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

28__Динамические, последовательные и параллельные структуры программ;

Последовательная структура программ

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

Параллельная структура программ

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

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

-Мультипрограммные (multi-programming) операционные системы дают возможность одновременно использовать компьютер нескольким пользователям. Системы разделения времени, реализованные на обычных больших машинах и миникомпьютерах, в течение многих лет были единственным способом сделать доступными вычислительные средства для таких больших коллективов, как университеты.

-Многозадачные (multi-tasking) операционные системы дают возможность одновременно выполнять несколько компонентов одной программы (или программ одного пользователя). С появлением персональных компьютеров мультипрограммные компьютеры стали менее распространенными, но даже одному человеку часто необходим многозадачный режим для одновременного выполнения разных задач, как, например, фоновая печать при диалоговом режиме работы с документом.

-Встроенные системы (embedded systems) на заводах, транспортных системах и в медицинской аппаратуре управляют наборами датчиков и приводов в «реальном масштабе времени». Для этих систем характерно требование, чтобы они выполняли относительно небольшие по объему вычисления через очень короткие промежутки времени: каждый датчик должен быть считан и проинтерпретирован, затем программа должна выбрать соответствующее действие, и, наконец, данные в определенном формате должны быть переданы к приводам. Для реализации встроенных систем используются многозадачные операционные системы, позволяющие координировать десятки обособленных вычислений.

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

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

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

Самая простая модель параллельного программирования — это модель с общей памятью (рис.5). Два или несколько процессов могут обращаться к одной и той же области памяти, хотя они также могут иметь свою собственную частную, или приватную, (private) память.

[image]Рис.5. Модель с общей памятью

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

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

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

Истинно параллельные структуры могут быть реализованы только в многопроцессорных системах.

 

29__Способы построения операционных систем

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

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

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

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

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

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

Безопасность. ОС должна обладать средствами защиты ресурсов одних пользователей от других.

Производительность. Система должна обладать настолько хорошим быстродействием и временем реакции, насколько это позволяет аппаратная платформа.

Тенденции в структурном построении ОС

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

Монолитные системы

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

 

Рис. 4.1. Монолитная структура ОС

Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика (примерами могут служить ранние версии ядра UNIX или Novell NetWare). Каждая процедура видит любую другую процедуру (в отличие от структуры, содержащей модули, в которой большая часть информации является локальной для модуля, и процедуры модуля можно вызвать только через специально определенные точки входа).

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

1. Главная программа, которая вызывает требуемые сервисные процедуры.

2. Набор сервисных процедур, реализующих системные вызовы.

3. Набор утилит, обслуживающих сервисные процедуры.

В этой модели для каждого системного вызова имеется одна сервисная процедура. Утилиты выполняют функции, которые нужны нескольким сервисным процедурам. Это деление процедур на три слоя показано на рисунке 4.2.

 

[image]

 

Рис. 4.2. Простая структуризация монолитной ОС

Многоуровневые системы

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

Первой системой, построенной таким образом была простая пакетная система THE, которую построил Дейкстра и его студенты в 1968 году.

Продолжение »

Сделать бесплатный сайт с uCoz