Операционная система
Структура программного обеспечения ЭВМ. Программные компоненты операционных систем (ОС). Управление вычислительным процессом ОС. Набор программ управления данными. Ядро графического режима Windows. Обработка прерываний в мультипрограммной системе.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 26.12.2011 |
Размер файла | 81,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Основные теоретические положения
Центральное место в структуре программного обеспечения ЭВМ занимает операционная система (ОС). Она представляет собой «систему программ, предназначенную для обеспечения определенного уровня эффективности цифровой вычислительной системы за счет автоматизированного управления ее работой и предоставляемого пользователям набора услуг».
Программные компоненты ОС обеспечивают управление вычислительными процессами и реализуют такие функции, как планирование и распределение ресурсов, управление потоками и их нитями, вводом-выводом информации и данными. Объем ОС и число составляющих ее программ в значительной степени определяются типом используемых ЭВМ, сложностью режимов работы ЭВМ и вычислительных комплексов.
Применение ОС имеет следующие цели:
* увеличение общего объема работы ЭВМ в единицу времени;
* сокращение интервала времени между моментами запуска задач в ЭВМ и моментами получения результатов;
* контроль работоспособности технических и программных средств;
* помощь пользователям и операторам систем при использовании ими технических и программных средств;
* управление программами и данными в ходе вычислений;
* обеспечение адаптации ЭВМ, ее структурной гибкости, заключающейся в способности изменяться, пополняться новыми техническими и программными средствами.
Назначение набора услуг, которыми могут пользоваться операторы систем и пользователи, осуществляется различными методами. В больших ЭВМ формирование конкретной конфигурации ОС осуществляется на нескольких уровнях. Предварительно этот состав определяется при генерации ОС. «Генерация системы -- это процесс выделения отдельных частей операционной системы и построения частных операционных систем, отвечающих требованиям системы обработки данных». Из полного набора программных модулей ОС (дистрибутива) формируется специальный набор этих средств, в наибольшей степени отвечающий запросам пользователей. Коррекция же состава используемых услуг может быть выполнена непосредственно перед решением задач системными операторами или опытными пользователями. Оперативное обращение к средствам ОС возможно со стороны пользователей путем включения в их программы специальных директив ОС.
Вычислительный процесс в ОС представляется в виде последовательности, как правило, ветвящейся, простых процессов (потоков) -- одноразовых работ. В современных ЭВМ условно или реально, в зависимости от количества процессоров, могут выполняться несколько процессов, что обозначается как многозадачность. Она бывает двух видов: многопроцессорной или многопоточной. Любой процесс или поток требует от вычислительной системы (ВС) выделения средств, к их числу в первую очередь относят машинное время ЭВМ (процессоров), объемы внешней и особенно оперативной памяти, любые внешние устройства, подключаемые к ВС, и виртуальные устройства. Ресурсами являются и программные средства как общего, так и специального ПО, например, библиотеки функций, базы данных и т.д.
Функции управления ресурсами осуществляет ОС путем построения специальных управляющих таблиц, отражающих наличие и состояние ресурсов. Связь процессов в цепочки осуществляется по событиям, где событие -- это изменение состояние ресурса, т.е. его характеристик. Именно по событиям ОС включается в работу и адекватно реагирует на сложившуюся ситуацию.
Управление вычислительным процессом ОС практически не может быть оптимизировано, за исключением случая, когда ОС в своей структуре имеет специальную стратегию на подобную оптимизацию.
Основу любой ОС составляет управляющая программа, основными функциями которой являются: управление задачами, т.е. управление ходом выполнения отдельных программ (процессов), и управление данными.
Отдельные модули или функции ОС также позволяют выполнять предварительное планирование (ПП) работы ЭВМ пользователем (формирование заданий) и оперативную связь с машиной во время работы, а именно: ввод пакетов или одиночных заданий, формирование очередей заданий в соответствии с их приоритетами, активизацию (запуск) и завершение заданий. Управление задачами со стороны ОС требует распределения и назначения ресурсов (управления временем работы процессора, распределения оперативной памяти для программ пользователей и программ ПО, синхронизации выполнения задач и организации связей между ними, управления очередностью задач, внешними устройствами, защиты задач от взаимных помех). Ведущей программой управления задачами является управляющая программа-диспетчер: супервизор, базовый модуль ОС или др. Часто используемые модули образуют ядро ОС, которое постоянно находится в оперативной памяти (ОП) и быстро реагирует на изменяющиеся условия функционирования. Остальные программы ОС вызываются c внешних носителей (ВН) в оперативную память ЭВМ по мере их надобности в вычислительном процессе.
Набор программ управления данными, которые могут обрабатываться в ЭВМ, обеспечивает процессы организации, идентификации, размещения в ОП и на ВН, хранения, построения библиотек и выборки всех данных. Современные ПЭВМ комплектуются удобными и эффективно использующими аппаратные ресурсысложными ОС. Это WindowsNT/2000/XP и созданные на основе Unix современные Linux и BSD. Последние, кроме разных Windows типа NT, генерируемых как Server, обычно служат для комплектования серверов вычислительных сетей.
Windows (начиная с W95/98) использует расширенный режим работы процессора, благодаря чему реализована “подлинно” вытесняющая многозадачность, следующего порядка: каждой программе системой выделяется квант времени, в течение которого программа обрабатывает поступившие в ее адрес сообщения. Вне зависимости от состояния задачи OC забирает управление одной задачи и передает его другой. Если задача “зависла”, то система от этого не пострадает. Управление в любом случае будет передано другой программе. Кроме того, задача может распараллелить работу и запустить несколько программ, одновременно выполняемых под ее управлением, т.е. может создать поток. Все это говорит о том, что в Windows реализованы оба типа многозадачности - процессный и потоковый. На однопроцессорном компьютере в каждый конкретный момент времени выполняется одна задача. Если при запуске двух-трех маленьких программ временная задержка субъективно не заметна, то при запуске нескольких программ, требующих колоссальных ресурсов, задержка при выполнении программ становится достаточно заметной. На многопроцессорных системах за каждым процессором может быть закреплен свой поток, поэтому на таких системах выполнение программ осуществляется действительно в многозадачном режиме.
Системная виртуальная машина (ВМ) Windows, основой которой является изолированное ядро, обслуживает 32-разрядные (Win32) и 16-разрядные задачи (Win16), используя отдельные очереди сообщений. Каждой Win32 задаче выделяется отдельное адресное пространство, а для Win16 задач - одно общее. Windows имеет три значительных архитектурных компонента: диспетчер виртуальных машин (Virtual Machine Manager, VMM), диспетчер настраиваемой файловой системы (IFS Manager) и диспетчер конфигурации (Configuration Manager). Диспетчер виртуальных машин инициализируется файлом WIN.COM.
Ядро графического режима Windows состоит из трех компонентов -- Kernel, User и GDI (интерфейс графических устройств), каждый из которых имеет два взаимодействующих модуля - в форме .EXE и .DLL-файлов. При помощи дополнительных DLL-файлов (динамически загружаемых библиотек) поддерживаются: отображение стандартных диалоговых окон, протоколы DDE (динамического связывания данных) и OLE (связывания и встраивания объектов), взаимодействие с драйверами устройств ввода-вывода и другие черты Windows. Запуск ядра начинается с инициализации 32-разрядного файла KERNEL32.DLL в результате исполнения 16-разрядного файла KRNL386.EXE, 16-разрядные функции которого написаны преимущественно на ассемблере.
Понятие «процесс» является одним из основных при рассмотрении операционных систем. Как понятие процесс является определенным видом абстракции. Последовательный процесс (иногда называемый задачей) - это выполнение отдельной программы с ее данными на последовательном процессоре.
В концепции, получившей наибольшее распространение в 70-е годы, термин «задача» означал совокупность связанных между собой и образующих единое целое программных модулей и данных, требующих ресурсов вычислительной системы для своей реализации. В последующие годы задачей стали называть единицу работы, для выполнения которой предоставляется центральный процессор, т.е. вычислительный процесс может включать в себя несколько задач. В современной терминологии существуют различные трактовки этих терминов. Примеры процессов: прикладные программы пользователей; утилиты и другие системные обрабатывающие программы; редактирование какого-либо текста; трансляция исходной программы, ее компоновка, исполнение. Причем трансляция какой-либо программы является одним процессом, а трансляция следующей программы - уже другим процессом, поскольку, хотя транслятор как объединение программных модулей и выступает как одна и та же программа, но данные, которые он обрабатывает, являются разными.
Существуют разные трактовки понятия «процесс». Мы будем пользоваться следующей.
В настоящее время в большинстве ОС выделены 2 типа единиц работы - это процессы и потоки. Более крупная единица работы носит название процесса (или задачи), и требует для своего выполнения нескольких более мелких работ, называемых потоками (или нитями, тредами). Процесс можно определить как программу в стадии выполнения.
Процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов, кроме одного - процессорного времени. Процессорное время ОС распределяет между потоками. Потоки возникли в ОС как средство распараллеливания вычислений в рамках одного приложения. Понятию «поток» соответствует последовательный переход процессора от одной команды программы к другой. Каждому процессу ОС назначает отдельное адресное пространство и набор ресурсов, которые совместно используются всеми его потоками. Тем самым осуществляется обособление одного процесса от другого и взаимодействие его потоков.
Мультипрограммная ОС вместе с выполняемыми на ней задачами пользователя может быть логически описана как набор процессов, которые взаимодействуют между собой путём пересылки сообщений и синхронизирующих сигналов и состязаются за использование ресурсов. Об этих процессах говорят, что они протекают параллельно. При этом параллелизм может быть:
· аппаратным (физическим) - параллельная работа нескольких обрабатывающих устройств;
· только логическим (концептуальным), введенным независимо от того, происходит обработка последовательно или параллельно.
Эффект псевдопараллельной работы процессора достигается за счет выделения задачам квантов процессорного времени.
Термин «ресурс» обычно применяется по отношению к повторно используемым, относительно стабильным и часто недостающим объектам, которые запрашиваются, используются и освобождаются процессами в период их активности. Другими словами, ресурсом называется всякий объект, который может распределяться внутри системы.
Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно (в один и тот же момент времени) или параллельно (в течение некоторого интервала времени процессы используют ресурс попеременно), а могут быть и неделимыми.
При разработке первых систем ресурсами считались процессорное время, память, каналы ввода/вывода и периферийные устройства. Однако очень скоро понятие ресурса стало более универсальным и общим. Различного рода программные и информационные ресурсы также могут быть определены для системы как объекты, которые могут разделяться, распределяться и доступ к которым необходимо соответствующим образом контролировать. В настоящее время понятие ресурса превратилось в абстрактную структуру с целым рядом атрибутов, характеризующих способы доступа к этой структуре и ее физическое представление в системе. Помимо системных ресурсов, к ресурсам относят также такие объекты, как сообщения и синхросигналы, которыми обмениваются задачи.
Как уже говорилось, в первых вычислительных системах программы могли выполняться только последовательно, одна после завершения другой. Все подсистемы и устройства компьютера управлялись центральным процессором, поэтому процессор не мог выполнять вычислений, пока осуществлялся обмен данными между оперативной памятью и внешними устройствами. Введение в состав машины специальных контроллеров внешних устройств позволило распараллелить операции ввода/вывода данных с вычислениями на центральном процессоре. Но все равно процессор продолжал простаивать, дожидаясь окончания очередной операции ввода/вывода. Поэтому и было предложено организовать т.н. мультипрограммный (мультизадачный) режим работы вычислительной системы, при котором, пока одна программа (вычислительный процесс) ожидает завершения очередной операции ввода/вывода, другая задача может быть поставлена на решение. В таком случае общее время решения двух задач может оказаться меньшим, чем если бы они решались последовательно. Таким образом, при мультипрограммировании повышается пропускная способность системы.
Современные ОС поддерживают мультипрограммирование и стараются эффективно использовать ресурсы путем организации к ним очередей запросов, составляемых тем или иным способом.
Общая схема выделения ресурсов такова.
· При необходимости использовать какой-то ресурс (оперативную память, устройство ввода/вывода, массив данных и т.п.) задача обращается к супервизору ОС и сообщает о своем требовании. При этом указывается вид ресурса и, если надо, его объем (например, количество адресуемых ячеек оперативной памяти, количество дорожек или секторов на системном диске, устройство печати и объем выводимых данных и т.п.).
· Директива обращения к ОС передает ей управление, переводя процессор в привилегированный режим работы, если таковой существует (не все вычислительные комплексы имеют два и более режима работы).
· Ресурс может быть выделен задаче, обратившейся к супервизору с соответствующим запросом, если: он свободен и в системе нет запросов к этому же ресурсу от задач более высокого приоритета; текущий запрос и ранее выданные запросы допускают совместное использование ресурсов; ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс).
· Получив запрос, операционная система либо удовлетворяет его и возвращает управление задаче, выдавшей данный запрос, либо, если ресурс занят, ставит задачу в очередь к ресурсу, переводя ее в состояние ожидания (блокируя). Очередь к ресурсу может быть организована несколькими способами, но чаще всего осуществляется с помощью списковой структуры.
· После окончания работы с ресурсом задача с помощью специального вызова супервизора (посредством соответствующей директивы) сообщает операционной системе об отказе от ресурса, или ОС забирает ресурс сама, если управление возвращается супервизору после выполнения какой-либо системной функции.
· Супервизор ОС, получив управление по этому обращению, освобождает ресурс и проверяет, имеется ли очередь к освободившемуся ресурсу. Если очередь есть, то в зависимости от принятой дисциплины обслуживания и приоритетов заявок он выводит из состояния ожидания задачу, ждущую ресурс, и переводит ее в состояние готовности к выполнению. После этого управление либо передается данной задаче, либо возвращается к той, которая только что освободила ресурс.
· При выдаче запроса на ресурс задача может указать, нужен ей ресурс монопольно или допускается его совместное использование. Например, с файлом можно работать монопольно, а можно и совместно с другими задачами.
Если в системе имеется некоторая совокупность ресурсов, то управляют их использованием на основе определенной стратегии. Стратегия подразумевает четкую формулировку целей, следуя которым можно добиться эффективного распределения ресурсов.
При организации управления ресурсами всегда требуется принять решение о том, что в данной ситуации выгоднее: быстро обслуживать отдельные наиболее важные запросы, предоставлять всем процессам равные возможности или обслуживать максимально возможное количество процессов и наиболее полно использовать все ресурсы.
Рассмотрим основные виды ресурсов и способы их разделения.
Одним из важнейших ресурсов является сам процессор, точнее, процессорное время. Процессорное время делится попеременно (параллельно). Существует множество методов разделения процессорного времени. Второй вид ресурсов вычислительной системы - оперативная память, которая может быть разделена и одновременным способом (в памяти одновременно может располагаться несколько потоков), и попеременно (в разные моменты времени память может предоставляться для разных вычислительных процессов).
Внешняя память (например, память на магнитных дисках) и доступ к ней считаются разными видами ресурса, каждый из которых может предоставляться независимо от другого. Но для полной работы с внешней памятью необходимо иметь оба этих ресурса. Собственно внешняя память может разделяться одновременно, а доступ к ней - попеременно.
Внешние устройства, которые, как известно, также являются ресурсами, могут разделяться параллельно в случае, если используются механизмы прямого доступа. Если же устройство работает с последовательным доступом, то оно не может считаться разделяемым ресурсом. Например, принтером или накопителем на магнитной ленте невозможно воспользоваться попеременно двум параллельно выполняющимся потокам.
Важным видом ресурсов являются программные модули, и прежде всего - системные программные модули.
Однократно используемые модули правильно выполняются только один раз (выполняются на этапе загрузки ОС) и являются неделимым ресурсом. Они обычно вообще не распределяются как ресурс системы.
Повторно используемые программные модули могут быть непривилегированными, привилегированными, реентерабельными и повторно входимыми.
Привилегированные программные модули работают при отключенной системе прерываний, т.ч. никакие внешние события не могут нарушить естественный порядок вычислений. После окончания своей работы данный модуль может быть вызван снова из другой задачи. Такой модуль выступает как попеременно разделяемый ресурс. В первой его секции выключается система прерываний, а в последней - снова включается.
Непривилегированные программные модули - обычные модули, которые могут быть прерваны во время своей работы. Их нельзя считать разделяемыми, поскольку после прерывания такого модуля его нельзя запустить еще раз из другого вычислительного процесса, т.к. промежуточные результаты для прерванных вычислений могут быть потеряны.
Реентерабельные (reenterable) программные модули допускают многократное прерывание своего исполнения и повторный их запуск из других задач. Они создаются таким образом, чтобы было обеспечено сохранение промежуточных вычислений в случае прерывания и возврат к сохраненным результатам при возобновлении процесса с прерванной ранее точки. Для этого могут использоваться статический или динамический способы выделения памяти под сохраняемые значения.
Повторновходимые (re-entrance) модули также допускают многократное параллельное использование, но, в отличие от реентерабельных, их нельзя прерывать. Они состоят из критических секций (в которых запрещены прерывания) и имеют четко определенные точки входа. Они встречаются чаще реентерабельных.
Информационные ресурсы, т.е. в качестве ресурсов могут выступать данные. Они могут существовать как в виде переменных, так и в виде файлов. Если потоки используют данные только для чтения, то такие информационные ресурсы можно разделять. Если же потоки могут изменять данные, то необходимо организовывать работу с ними особым образом.
Необходимо различать системные управляющие процессы, представляющие работу супервизора ОС, от всех других процессов: системных обрабатывающих процессов, которые не входят в ядро ОС, и процессов пользователя. Для системных управляющих процессов в большинстве операционных систем ресурсы распределяются изначально и однозначно. Эти процессы управляют ресурсами системы, за использование которых конкурируют все остальные задачи. Поэтому исполнение системных управляющих программ не принято называть процессами, этот термин применим к задачам пользователей и к системным обрабатывающим процессам. Но это справедливо не для всех ОС. В микроядерных ОС (например, в системе реального времени QNX) управляющие программные модули и драйверы ОС имеют статус высокоприоритетных процессов, которым выделяются соответствующие ресурсы.
ОС выполняет планирование потоков, принимая во внимание их состояние. В мультипрограммной системе поток может находиться в одном из трех основных состояний:
· выполнение - активное состояние, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором (в однопроцессорной вычислительной системе в этом состоянии в каждый момент времени может находиться только один поток);
· ожидание или блокирование - пассивное состояние, в котором поток заблокирован по своим внутренним причинам (ждет выполнения какого-либо события, например, завершения операции ввода-вывода или предоставления необходимого ресурса);
· готовность - тоже пассивное состояние, в котором поток заблокирован по внешним причинам - процессор занят другой задачей.
Первые два состояния возможны и в однопрограммном режиме, а третье - только в мультипрограммном.
В состоянии выполнения в однопроцессорной системе может находиться одновременно не более одного потока, а в состоянии готовности или ожидания - несколько потоков, образующих очередь. Очереди потоков образуются путем объединения в списки описателей отдельных потоков.
Существуют разные точки зрения на статус указанных состояний. Если рассматривать понятие ОС обобщенно (включая сюда и ОСРВ), в активном состоянии поток участвует в конкуренции за использование ресурсов вычислительной системы, а в пассивном он только известен системе, но в конкуренции не участвует (хотя его существование в системе и связано с предоставлением ему оперативной и/или внешней памяти). С этой точки зрения, все названные состояния являются активными. Тогда пассивное состояние (состояние бездействия) может существовать только в ОС реального времени, где расписание задач для выполнения известно, поэтому для них заранее заводят дескрипторы задач.
Согласно другой точке зрения, которой мы и будем придерживаться, только выполнение является активным состоянием потока, а блокирование и готовность - его пассивными состояниями.
Для управления процессами ОС должна располагать информацией о них. На каждый процесс при его создании заводится специальная информационная структура, содержащая все сведения о нем и называемая дескриптором процесса (описателем задачи, блоком управления задачей).
Примером описателя процесса является объект-процесс (object-process) в Windows NT.
В общем случае дескриптор процесса содержит следующую информацию:
· идентификатор процесса (т.н. PID - process identificator);
· тип (или класс) процесса, который определяет для супервизора некоторые правила предоставления ресурсов;
· приоритет процесса, в соответствии с которым супервизор предоставляет ресурсы. В рамках одного класса в первую очередь обслуживаются более приоритетные процессы;
· переменную состояния, которая определяет, в каком состоянии находится процесс (готовности, выполнения, ожидания);
· защищенную область памяти (или адрес такой зоны), в которой хранятся текущие значения регистров процессора, если процесс прерывается, не закончив работы. Эта информация называется контекстом задачи;
· информацию о ресурсах, которыми процесс владеет и/или имеет право пользоваться (указатели на открытые файлы и т.п.);
· место (или его адрес) для организации общения с другими процессами;
· параметры времени запуска (момент времени, когда процесс должен активизироваться, и периодичность этой процедуры).
Описатели задач, как правило, располагаются в оперативной памяти с целью ускорить работу супервизора, который организует их в списки (очереди) и отображает изменение состояния процесса перемещением соответствующего описателя из одного списка в другой. Для каждого состояния (кроме состояния выполнения в однопроцессорной системе) ОС ведет список задач, находящихся в этом состоянии. Для состояния ожидания может существовать столько очередей, сколько различных видов ресурсов могут вызывать состояние ожидания.
В некоторых ОС количество описателей определяется жестко и заранее (на этапе генерации ОС или в конфигурационном файле, который используется при загрузке ОС), в других система может по мере необходимости выделять участки памяти под новые описатели. Например, в OS/2 максимально допустимое количество описателей задач определяется в конфигурационном файле CONFIG.SYS (например, THREADS=1024), а в Windows NT оно в явном виде не задается. Заметим, что здесь речь идет о количестве задач, под которыми понимают как собственно процессы, так и потоки этого процесса
По режиму обработки различают ОС, поддерживающие однопрограммный и мультипрограммный режимы работы. Мультипрограммирование, или многозадачность - такой способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Эти программы совместно используют процессор, оперативную и внешнюю память, устройства ввода-вывода, данные.
При мультипрограммировании на однопроцессорной вычислительной системе создается видимость одновременного выполнения нескольких задач. Любая задержка в ходе работы процессора используется для выполнения других программ.
Прерывания представляют собой механизм, позволяющий согласовывать параллельную работу отдельных устройств вычислительной системы и реагировать на особые состояния, возникающие при работе процессора. Т.о., прерывание - это принудительная передача управления от выполняемой программы к системе (и далее - к соответствующей процедуре обработки прерывания), происходящая при возникновении определенного события.
Механизм обработки прерываний реализуется аппаратно-программными средствами. Структуры систем прерываний зависят от архитектуры процессора и могут быть самыми разными, но они все имеют общую сущность - прерывание влечет за собой изменение порядка выполнения команд.
Рассмотрим механизм обработки прерываний. Независимо от конкретной реализации он включает в себя следующие элементы:
Прием сигнала на прерывание и его идентификация.
Запоминание состояния прерванного процесса. Состояние процесса определяется прежде всего значением счетчика команд (адресом следующей команды), содержимым регистров процессора и может включать также спецификацию режима (пользовательский или привилегированный) и другую информацию.
Управление аппаратно передается программе обработки прерывания.
Сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью действий аппаратуры.
Обработка прерывания. Чаще реализуется посредством вызова соответствующей подпрограммы, хотя может быть выполнена и той же подпрограммой, которой было передано управление на шаге 3.
Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).
Возврат в прерванную программу.
Шаги 1-3 реализуются аппаратно, а шаги 4-7 - программно.
Прерывания могут быть разделены на два основных класса: внешние (асинхронные) и внутренние (синхронные). Внешние прерывания являются аппаратными и представляют собой асинхронные события, которые возникают независимо от того, какой код исполняется процессором в данный момент.
Примеры: прерывания от таймера, прерывания от внешних устройств (прерывания по вводу/выводу), прерывания по нарушению питания, прерывания с пульта оператора вычислительной системы и прерывания от другого процессора.
Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями. Они, в свою очередь, подразделяются на программные прерывания и исключительные ситуации.
Основные три типа прерываний:
· Аппаратное прерывание - событие, генерируемое внешним по отношению к процессору устройством. Посредством него аппаратура информирует процессор о том, что произошло событие, требующее немедленной реакции, например: пользователь нажал клавишу, или закончено чтение данных с диска в основную память, или поступил сигнал от таймера. Прерывания таймера используются операционной системой при планировании процессов. Каждое аппаратное прерывание имеет свой собственный номер, в соответствии с которым и выполняется его обработка.
· Программное прерывание возникает в результате выполнения программой команды прерывания (INT), т.е. это синхронное событие. Программные прерывания имеют собственные номера, задаваемые параметром команды INT, и используются для вызова функций ядра ОС. Программные прерывания используются для выполнения ограниченного количества вызовов функций ядра ОС, т.е. системных вызовов.
· Исключительная ситуация (ИС) - событие, возникающее в результате выполнения программой недопустимой команды, например, доступа к ресурсу при отсутствии достаточных привилегий. Это также синхронное событие, возникающее в контексте текущей задачи. Исключительные ситуации можно разделить на исправимые и неисправимые. Исправимая ИС - явление при работе обычное, и после устранения причины, ее вызвавшей (например, подкачка страниц памяти), программа продолжает работу. Неисправимые ИС являются, как правило, следствием ошибок в процессоре. ОС обычно реагирует на них завершением процесса, их вызвавшего.
Примеры исключительных ситуаций
· Исправимые исключительные ситуации:
- нарушение адресации - происходит обращение к отсутствующей странице при организации механизмов памяти;
- происходит обращение к ресурсу, занятому в данный момент другим процессом.
· Неисправимые исключительные ситуации:
- нарушение адресации - обращение к запрещенному или несуществующему адресу;
- деление на нуль;
- переполнение или исчезновение порядка;
- обнаружение ошибок в работе различных устройств аппаратуры средствами контроля.
Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств, исключения - специальными модулями ядра ОС, программные прерывания - процедурами ОС, обслуживающими системные вызовы. Кроме названных средств, в ОС существует диспетчер прерываний, который координирует работу отдельных обработчиков.
Механизм прерываний поддерживается аппаратными средствами компьютера и программными средствами ОС. Особенности аппаратной поддержки зависят от типа процессора и других аппаратных компонентов, передающих сигнал запроса прерывания от внешнего устройства процессору (это контроллер внешнего устройства, шины подключения внешних устройств, контроллер прерываний). Особенности аппаратной реализации оказывают влияние на средства программной поддержки прерываний, реализованные операционной системой.
Существует два основных способа, с помощью которых шины выполняют прерывания: векторный (vectored) и опрашиваемый (polled). В обоих случаях информация об уровне приоритета прерывания предоставляется процессору на шине подключения внешнего устройства. В случае векторных прерываний передается еще и информация о начальном адресе программы - обработчика данного прерывания.
Векторный способ. Устройствам назначается вектор прерываний, представляющий собой электрический сигнал, выставляемый на шине процессора и содержащий информацию о номере устройства для идентификации прерывания. Этот вектор может быть фиксированным, конфигурируемым (например, посредством переключателей) или программируемым. Вектор прерывания содержит также начальный адрес обработчика данного прерывания. ОС может предусматривать процедуру регистрации вектора обработки прерываний для определенного устройства, которая связывает некоторую подпрограмму обработки прерываний с определенным вектором. При получении сигнала запроса прерывания процессор выполняет специальный цикл подтверждения прерывания, в котором устройство должно идентифицировать себя. В течение этого цикла устройство отвечает, выставляя на шину вектор прерываний, и затем процессор использует этот вектор для нахождения соответствующего обработчика. (Пример - шина VMEbus)
Опрашиваемое прерывание. При использовании механизма опрашиваемого прерывания запрос прерывания содержит только информацию об уровне приоритета. С каждым уровнем может быть связано несколько устройств, следовательно, несколько программ-обработчиков. Процессор должен определить, какой именно из обработчиков связан с этим прерыванием. Для этого он выполняет опрос всех устройств, имеющих данный уровень приоритета, пока одно из них не ответит, выставив на шину сигнал. Тогда уже диспетчер прерываний вызывает конкретный обработчик. Если же с каждым уровнем прерываний связано только одно устройство, то определение нужного обработчика происходит немедленно, как при векторном способе (шины ISA, EISA, MCA, PCI).
Существуют варианты смешанного типа обработки. Пример. Платформа компьютеров на основе процессоров Intel Pentium: процессор использует векторный механизм, а шины подключения внешних устройств (PCI, ISA, EISA, MCA) имеют опрашиваемый механизм прерываний. Контроллеры внешних устройств выставляют на шину не вектор, а сигнал некоторого уровня приоритета прерывания. Контроллер прерываний после взаимодействия с внешним устройством отображает этот сигнал на определенный номер вектора прерывания. Вектор прерываний состоит из 4 байт и задает новые значения регистров IP и CS. Таблица векторов прерываний занимает 1024 байта, следовательно, в ней может быть задано 256 векторов прерываний.
Контроллер прерываний поддерживает 8 уровней (линий) приоритета. Компьютеры на базе процессора Intel используют два контроллера и поддерживают 15 линий запросов на прерывание.
Линии IRQ(interrupt Request - запрос на прерывание):
системный таймер;
контроллер клавиатуры;
сигнал возврата по кадру (соединен с IRQ9);
обычно COM2/COM4 (последовательный порт);
обычно COM1/COM3 (последовательный порт);
обычно свободен или используется звуковой картой;
контроллер FDD;
параллельный порт LPT1;
часы реального времени;
линия параллельна IRQ2;
свободно;
свободно;
обычно контроллер мыши типа PS/2;
математический сопроцессор;
обычно контроллер IDE0 (первый канал);
обычно контроллер IDE1 (второй канал).
Наличие сигнала прерывания не обязательно должно вызывать прерывание выполняющейся программы. Процессор обладает средствами защиты от прерываний: отключение системы прерываний или маскирование (запрет) отдельных сигналов прерывания. Программное управление этими средствами позволяет операционной системе регулировать обработку сигналов прерывания: обрабатывать их сразу по приходу, откладывать обработку на некоторое время или полностью игнорировать. Обычно операция прерывания выполняется после завершения выполнения текущей команды. Поскольку сигналы прерываний возникают в произвольные моменты времени, то на момент прерывания может существовать несколько сигналов прерывания, которые могут быть обработаны только последовательно. Чтобы обработать сигналы прерываний в разумном порядке, им присваиваются приоритеты.
Все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание. Сигнал с более высоким приоритетом обрабатывается в первую очередь, обработка остальных сигналов откладывается.
Упорядоченное обслуживание запросов прерываний наряду со схемами приоритетной обработки может выполняться механизмом маскирования запросов. Программное управление регистрами маски - маскирование сигналов прерывания независимо от уровня приоритета - позволяет реализовать различные дисциплины обслуживания:
· с относительными приоритетами, т.е. обслуживание не прерывается даже при поступлении запросов с более высокими приоритетами. Только после окончания обслуживания данного запроса обслуживается новый запрос с наивысшим приоритетом. Для организации такой дисциплины необходимо в программе обслуживания данного запроса наложить маски (запрет) на все остальные сигналы прерываний, или просто отключить систему прерываний;
· с абсолютными приоритетами - всегда обслуживается прерывание с наивысшим приоритетом. Для реализации этого режима необходимо на время обработки прерывания замаскировать все запросы с более низким приоритетом. При этом возможно многоуровневое прерывание, т.е. прерывание программ обработки прерываний. Число уровней прерывания в этом режиме изменяется и зависит от приоритета запроса. Если процессор работает по такой схеме, то в одном из своих внутренних регистров он поддерживает переменную, фиксирующую уровень приоритета обслуживаемого в данный момент прерывания.
· по принципу стека (по дисциплине LCFS - last come first served)- запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Для реализации такой дисциплины необходимо не накладывать маски ни на один сигнал прерывания и не выключать систему прерываний.
Отметим, что для правильной реализации последних двух дисциплин нужно обеспечить полное маскирование системы прерываний при выполнении шагов 1-4 и 6-7, чтобы не потерять запрос и правильно его обслужить. При этом многоуровневое прерывание должно происходить на этапе собственно обработки прерывания, а не на этапе перехода с одного процесса на другой.
Диспетчеризация прерываний является важной функцией ОС, которая реализована во всех мультипрограммных ОС. Можно заметить, что в общем случае в ОС реализуется двухуровневый механизм планирования работ. Верхний уровень планирования выполняется диспетчером прерываний, который распределяет процессорное время между потоком поступающих прерываний различных типов. Оставшееся процессорное время распределяется другим диспетчером - диспетчером потоков, на основании различных дисциплин, которые будут рассмотрены ниже.
На первом этапе при появлении запроса на прерывание идентификация сигнала выполняется специальным системным программным модулем, который называется супервизором (или диспетчером) прерываний. Он ненадолго запрещает все прерывания, сохраняет контекст прерываемого процесса и выясняет причину прерывания.
После этого диспетчер сравнивает назначенный данному источнику прерывания приоритет с текущим приоритетом потока команд, выполняемого процессором. В этот момент процессор уже может выполнять инструкции другого обработчика прерываний, также имеющего некоторый приоритет. В зависимости от приоритета нового запроса, его обработчик или помещается в очередь обработчиков, или (если его приоритет выше) он начинает работу, а выполнявшийся до этого обработчик приостанавливается и помещается в очередь (второй этап).
Замечание. Обработчик прерываний (независимо от его приоритета) всегда имеет приоритет более высокий, чем поток, выполняемый в обычной последовательности, определяемой планировщиком потоков.
После выполнения программы обработки прерывания управление снова передается супервизору (третий этап), на этот раз уже на тот модуль, который занимается диспетчеризацией задач. И уже диспетчер задач в соответствии с принятым режимом распределения процессорного времени восстановит контекст той задачи, которой решено будет выделить процессор.
Схема обработки прерываний в мультипрограммной системе приведена ниже.
Размещено на http://www.allbest.ru/
Рис. 2.1. Схема обработки прерываний.
Как видно, здесь нет возврата в прерванную ранее программу непосредственно из самой подпрограммы обработки прерывания.
В конкретных процессорах и конкретных ОС могут существовать некоторые отклонения от рассмотренной схемы или дополнения к ней.
Одной из важнейших функций ОС является организация рационального использования ресурсов компьютера (процессоры, память, внешние устройства, данные и программы). Одна и та же вычислительная система может работать по-разному под управлением разных ОС. Главные сложности при управлении ресурсами возникают в мультипрограммных системах. Способы распределения времени центрального процессора сильно влияют как на скорость выполнения отдельных вычислений, так и на эффективность вычислительной системы в целом.
При рассмотрении вопросов данной главы не будем разграничивать понятия "процесс" и "поток", используя обобщающий термин "задача".
Операционная система выполняет следующие основные функции, связанные с управлением задачами:
· создание и удаление задач;
· планирование процессов и диспетчеризация задач;
· синхронизация задач, обеспечение их средствами коммуникации.
Система управления задачами обеспечивает их прохождение через компьютер. В зависимости от состояния процесса ему необходимо выделить тот или иной ресурс. Например, новый процесс нужно разместить в памяти, выделив ему адресное пространство; включить в список задач, конкурирующих за процессорное время.
Одной из основных подсистем мультипрограммной ОС, непосредственно влияющей на функционирование вычислительной машины, является подсистема управления процессами и потоками. Она занимается их созданием и уничтожением, а также распределяет процессорное время между одновременно существующими в системе процессами и потоками.
При одновременном выполнении в системе нескольких задач, хотя потоки возникают и выполняются асинхронно, у них может возникнуть необходимость во взаимодействии, например, при обмене данными. Поэтому синхронизация потоков является одной из важных функций подсистемы управления процессами и потоками.
Взаимодействие между процессами осуществляется с помощью общих переменных и специальных базовых операций, называемых примитивами.
Подсистема управления процессами и потоками имеет возможность выполнять над процессами следующие операции:
· создание (порождение)/уничтожение процесса;
· приостановка/возобновление процесса;
· блокирование/пробуждение процесса;
· запуск процесса;
· изменение приоритета процесса;
Подсистема управления процессами и потоками ответственна за обеспечение процессов необходимыми ресурсами. ОС поддерживает в памяти специальные информационные структуры, в которые записывает, какие ресурсы выделены каждому процессу. Ресурс может назначаться процессу в единоличное пользование или в совместное пользование с другими процессами. Некоторые из ресурсов выделяются процессу при его создании, а некоторые - динамически по запросам во время выполнения. Ресурсы могут быть приписаны процессу на все время его жизни или только на определенный период. При выполнении этих функций подсистема управления процессами взаимодействует с другими подсистемами ОС, ответственными за управление ресурсами, такими, как подсистема управления памятью, подсистема ввода-вывода, файловая система.
Создание процесса включает загрузку кодов и данных исполняемой программы данного процесса с диска в оперативную память. При этом подсистема управления процессами взаимодействует с подсистемой управления памятью и файловой системой. В многопоточной системе при создании процесса ОС создает для каждого процесса как минимум один поток выполнения. При создании потока так же, как при создании процесса, ОС генерирует специальную информационную структуру - описатель потока, который содержит идентификатор потока, данные о правах доступа и приоритете, о состоянии потока и т.п. После создания поток (или процесс) находится в состоянии готовности к выполнению (или в состоянии бездействия, если речь идет об ОС специального назначения).
Создание и удаление задач осуществляется по соответствующим запросам от пользователей или от других задач. Задача может породить новую задачу - во многих системах поток может обратиться к ОС с запросом на создание т.н. потоков-потомков. Порождающая задача называется "предком", "родителем", а порожденная - "потомком" или "дочерней задачей". "Предок" может приостановить или удалить свою дочернюю задачу, в то время как "потомок" не может управлять "предком".
В разных ОС по-разному строятся отношения между потоками-потомками и их родителями. В одних ОС их выполнение синхронизируется (после завершения родительского потока с выполнения снимаются все его потомки), в других потомки выполняются асинхронно по отношению к родительскому потоку.
После завершения процесса ОС "зачищает следы" его пребывания в системе - закрывает все файлы, с которыми работал процесс, освобождает области оперативной памяти, отведенные под коды, данные и системные информационные структуры процесса. Выполняется коррекция очередей ОС и списков ресурсов, в которых имелись ссылки на завершаемый процесс.
Стратегия планирования определяет, какие процессы выбираются на выполнение для достижения поставленной цели. Стратегии могут быть различными, например:
· по возможности заканчивать вычисления в том же самом порядке, в каком они были начаты;
· отдавать предпочтение более коротким процессам;
· предоставлять всем пользователям (задачам пользователей) одинаковые услуги, в том числе и одинаковое время ожидания.
На протяжении существования процесса выполнение его потоков может быть многократно прервано и продолжено.
Переход от выполнения одного потока к другому осуществляется в результате планирования и диспетчеризации.
Планирование потоков осуществляется на основе информации, хранящейся в описателях процессов и потоков. При планировании могут приниматься во внимание приоритет потоков, время их ожидания в очереди, накопленное время выполнения, интенсивность обращения к вводу-выводу и др. факторы. ОС планирует выполнение потоков независимо от того, принадлежат ли они одному или разным процессам. Под планированием понимают задачу подбора такого множества процессов, чтобы они как можно меньше конфликтовали при выполнении и как можно эффективнее использовали вычислительную систему.
В различных информационных источниках существуют различные трактовки понятий "планирование" и "диспетчеризация". Так, некоторые авторы планирование подразделяют на долгосрочное (глобальное) и краткосрочное (динамическое, т.е. текущее наиболее эффективное распределение), и последнее называют диспетчеризацией. Согласно другим источникам, под диспетчеризацией понимают реализацию принятого на этапе планирования решения. Мы будем придерживаться этого варианта. Планирование включает в себя решение двух задач:
· определение момента времени для смены активного потока;
· выбор для выполнения потока из очереди готовых потоков.
Существует множество алгоритмов планирования, по-разному решающих эти задачи. Именно особенности планирования определяют специфику операционной системы.
В большинстве ОС планирование осуществляется динамически, т.е. решения принимаются во время работы на основании анализа текущей ситуации. Потоки и процессы появляются в случайные моменты времени и непредсказуемо завершаются.
Статический тип планирования может быть использован в специализированных системах, в которых весь набор одновременно выполняемых заданий определен заранее (системы реального времени). Планировщик составляет расписание на основании знаний о характеристиках набора задач. Затем это расписание используется операционной системой для диспетчеризации.
Диспетчеризация заключается в реализации найденного в результате планирования решения, т.е. в переключении одного процесса на другой. Диспетчеризация сводится к следующему:
· сохранение контекста текущего потока, который требуется сменить;
· загрузка контекста нового потока, выбранного в результате планирования;
· запуск нового потока на выполнение.
В контексте потока отражены, во-первых, состояние аппаратуры компьютера в момент прерывания (значение счетчика команд, содержимое регистров общего назначения, режим работы процессора, флаги, маски прерываний и др. параметры), во-вторых, параметры операционной среды (ссылки на открытые файлы, данные о незавершенных операциях ввода-вывода, коды ошибок выполняемых данным потоком системных вызовов и т.п.).
В контексте потока можно выделить часть, общую для всех потоков данного процесса (ссылки на открытые файлы), и часть, относящуюся только к данному потоку (содержимое регистров, счетчик команд, режим процессора).
С точки зрения решения задачи планирования (выбор момента времени для смены активного потока) алгоритмы планирования делятся на два больших класса - вытесняющие и невытесняющие алгоритмы:
невытесняющие - активный поток может выполняться до тех пор, пока он сам не передаст управление системе, чтобы та выбрала из очереди другой готовый поток;
вытесняющие - операционная система принимает решение о смене выполняемого задания и переключает процессор на другой поток.
Основным различием между названными алгоритмами планирования является степень централизации механизма планирования потоков.
Невытесняющие алгоритмы. Прикладная программа, получив управление от ОС, сама определяет момент завершения очередного цикла своего выполнения и только затем передает управление ОС с помощью какого-либо системного вызова. Следовательно, управление приложением со стороны пользователя теряется на произвольный период времени. Разработчикам необходимо учитывать это и создавать приложения так, чтобы они работали как бы "частями", периодически прерываясь и передавая управление системе, т.е. при разработке выполняются еще и функции планировщика.
Достоинства данного подхода:
исключено прерывание потока в неудобный для него момент;
решается проблема одновременного использования данных, т.к. во время каждого цикла выполнения задача использует их монопольно и уверена, что никто другой не сможет их изменить;
более высокая скорость переключения с потока на поток.
Недостатками являются затрудненная разработка программ и повышенные требования к квалификации программиста, а также возможность захвата процессора одним потоком при его случайном или преднамеренном зацикливании.
Вытесняющие алгоритмы - циклический, или круговой тип планирования, при котором операционная система сама решает вопрос о прерывании активного приложения и переключает процессор с одной задачи на другую в соответствии с тем или иным критерием. В системе с такими алгоритмами программисту не надо заботиться о том, что его приложение будет выполняться одновременно с другими задачами. В качестве примеров можно назвать операционные системы UNIX, Windows NT/2000, OS/2. Алгоритмы этого класса ориентированы на высокопроизводительное выполнение приложений.
Вытесняющие алгоритмы могут быть основаны на концепции квантования или на механизме приоритетов.
Алгоритмы, основанные на квантовании. Каждому потоку предоставляется ограниченный непрерывный квант процессорного времени (его величина не должна быть меньше 1 мс - как правило, несколько десятков мс). Поток переводится из состояния выполнения в состояние готовности в случае, если квант исчерпан. Кванты могут быть одинаковыми для всех потоков или различными.
Подобные документы
Операционная система как посредник в работе с устройствами компьютера: ДрайверЫ и 32-разрядность Windows 95 и программ. VFAT, DLL, DLE. Технические и программные средства для доступа и работы в Internet. TCP/IP, FTP, WWW. База данных в Excel.
реферат [55,0 K], добавлен 28.06.2008Назначение операционных систем. Windows ХР - операционная система Microsoft с настраиваемым интерфейсом. Функции стандартных прикладных программ: блокнота, графического редактора Paint, текстового процессора WordPad. Команды "меню" и их использование.
курсовая работа [119,9 K], добавлен 23.05.2009Особенности операционных систем Linux. Аппаратно-программные требования для работы с лабораторным практикумом. Настройка виртуальной машины. Аналоги программ WINDOWS в Mandriva. Разграничение прав доступа. Настройка безопасности и политика паролей.
курсовая работа [1,8 M], добавлен 06.11.2014Операционная система – набор программ, обеспечивающий организацию вычислительного процесса на ЭВМ, ее значение, структура, функции, история развития. Альтернативы Windows: UNIX, Linux, OS/2, MacOS, главные их достоинства и недостатки, сферы использования.
реферат [41,4 K], добавлен 28.03.2010Изучение технических возможностей операционной системы Windows XP – ОС семейства Windows NT корпорации Microsoft. Особенности интегрированного программного обеспечения. Дополнительные аплеты в панели управления Windows. Графический интерфейс пользователя.
презентация [7,4 M], добавлен 23.05.2010Операционная система Windows NT, её особенности. Windows 95 как первая полноценная графическая операционная система корпорации Microsoft. Основные преимущества Windows XP перед другими системами. Варианты Windows Vista для различных сегментов рынка.
реферат [26,9 K], добавлен 12.07.2011История развития операционных систем семейства Windows и основные понятия системного администрирования. Определение востребованности операционных систем Windows, сравнительная характеристика их функции и возможностей, особенности применения на практике.
курсовая работа [38,5 K], добавлен 08.05.2011Задачи подсистемы безопасности операционной системы Microsoft Windows. Предохранение систем ОС Windows от проникновения вредоносных программ, изоляцию этих программ в случае вторжения. Минимизация ущерба при заражении. Центр обеспечения безопасности.
презентация [1,2 M], добавлен 20.12.2013Классификация служебных программных средств. Файловая структура операционных систем. Основы графического интерфейса пользователя Windows XX. Анализ алгоритмов решения задач. Описание процесса разработки программного обеспечения и результатов работы.
курсовая работа [2,4 M], добавлен 14.11.2016Основные выпуски (редакции) операционных систем Windows Vista и Windows Seven, их недостатки и преимущества. История создания, совместимость приложений с операционными системами. Новшества, которые принесла в мир компьютерных технологий каждая из систем.
реферат [66,3 K], добавлен 17.02.2011