Вычислительный процесс и обслуживание прерываний


Министерство образования и науки


Российской Федерации

Пензенский Государственный Университет

 

 

 

Кафедра «Автоматика и телемеханика»

Реферат на тему

«Вычислительный процесс и обслуживание прерываний»

 

 

 

 

Выполнил ст.гр.07ПА1 Гаврик П.В.

Проверил к.т.н. Берестень М.П.

 

 

 

 

Пенза, 2011

 

Содержание

 

 

Введение

 

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

 

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

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

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

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

 

 

 

2.Состояния процесса

 

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

 

Рисунок 1

 

Все управляющие процессы подразделяются на три вида:

1) управляющие процессы  супервизора ОС 

2) системные обрабатывающие  процессы.

3) процессы пользователя.

 

Управление супервизора ОС организуется на основе запросов задач, т.е. задача является инициатором ресурса. Для системных процессов ресурсы назначаются изначально и вполне определенно. Эти процессы управляют ресурсами системы, за использование которых идёт конкуренция между всеми остальными процессами. Пользовательские процессы ассоциируются с таким понятием, как задача. Процесс может находиться в активном и пассивном состояниях. В активном состоянии процесс участвует в конкуренции за ресурсы. Кроме того, он может находиться в следующих подсостояниях изображенных на рисунке 2.

Рисунок 2

Состояние процесса:

1) Выполнение – это обладание всеми необходимыми ресурсами и их использование для решения задачи.

2) Готовность к выполнению – это наличие всех ресурсов кроме процессорного времени. После получения процессорного времени процесс переходит в подсостояние выполнения.

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

4) В пассивном состоянии процесс известен системе, но не участвует в конкуренции. Процесс, находящийся в подсостоянии готовности, обладает всеми ресурсами и ждет только освобождения процессора.

Переход процесса из пассивного состояния в состояние готовности возможен:

1) по команде оператора;

2) при выборе ее  планировщиком из очереди;

3) по вызову другой  задачей посредством супервизора;

4) по прерыванию от  внешнего устройства;

5) по наступлению запланированного  времени запуска программы.

Из подсостояния выполнения процесс может выйти по причинам:

1) завершения (при этом  супервизор переводит процесс  в пассивное состояние до следующего  вызова или уничтожает его как завершившийся;

2) перевода супервизором в состояние готовности, в связи с появлением более приоритетной заявки на обслуживание либо окончанием выделенного кванта времени;

3) блокировки (перевод  в состояние ожидания) из-за невозможности  предоставления ресурса, либо  необходимости ввода-вывода информации, либо по команде оператора.

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

1) идентификация процесса

2) тип процесса, определяющий  правила предоставления ресурсов;

3) приоритет процесса;

4) переменную состояния;

5) защищенная область  памяти с контекстом задач  (это текущее значения ресурсов  процессора на момент прерывания  работы процесса);

6) информация о ресурсах (указатели  на открытые файлы, информация  о незавершенных операциях ввода-вывода);

7) область памяти общения с другими процессами;

8) параметры времени запуска  (момент времени активации, периодичность  запуска).

Дескрипторы располагаются в ОП, супервизор из них формирует списки или очереди и отображает изменение состояния процесса перемещением его дескриптора из одной очереди в другую. В некоторых ОС количество дескрипторов определено жестко (OS/2), в других – может меняться (Windows NT). Для аппаратной поддержки работы ОС с дескрипторами задач в процессорах реализуются соответствующие механизмы.

Как мы говорили ранее для того чтобы операционная система могла выполнять операции над процессами, каждый процесс представляется в ней некоторой структурой данных. Эта структура содержит информацию, специфическую для данного процесса, а именно: состояние, в котором находится процесс; содержимое регистров процессора; данные, необходимые для планирования использования процессора и управления памятью и т.д. Конкретный состав и строение зависят, конечно, от конкретной операционной системы. Во многих операционных системах информация, характеризующая процесс, хранится не в одной, а в нескольких связанных структурах данных, называемой PCB (Process Control Block) или блоком управления процессом. Блок управления процессом является моделью процесса для операционной системы. Любая операция, производимая операционной системой над процессом, вызывает определенные изменения в PCB. В рамках принятой модели состояний процессов содержимое PCB между операциями остается постоянным.

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

 

 

 

3.Рождение процесса

 

Любая операционная система, поддерживающая концепцию процессов, должна обладать средствами для их создания. В очень простых системах (например, в системах, спроектированных для работы только одного конкретного  приложения) все процессы могут быть порождены на этапе старта системы. Более сложные операционные системы создают процессы динамически, по мере необходимости. Инициатором рождения нового процесса после старта операционной системы может выступить либо процесс пользователя, совершивший специальный системный вызов, либо сама операционная система, то есть, в конечном итоге, тоже некоторый процесс. Процесс, инициировавший создание нового процесса, принято называть процессом-родителем (parent process), а вновь созданный процесс - процессом-ребенком (child process). Процессы-дети могут, в свою очередь, порождать новых детей и т. д.

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

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

После наделения процесса-ребенка  ресурсами необходимо занести в  его адресное пространство программный код, значения данных, установить программный счетчик. Здесь также возможны два решения. В первом случае процесс-ребенок становится дубликатом процесса-родителя по регистровому и пользовательскому контекстам, при этом должен существовать способ определения кто для кого из процессов-двойников является родителем. Во втором случае процесс-ребенок загружается новой программой из какого-либо файла.  Операционная система UNIX разрешает порождение процесса только первым способом; для запуска новой программы необходимо сначала создать копию процесса-родителя, а затем процесс-ребенок должен заменить свой пользовательский контекст с помощью специального системного вызова. Операционные системы VAX/VMS и WINDOWS NT допускают только второе решение.

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

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

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

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

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

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

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

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

 

 

4.Ресурс

 

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

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

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

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

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

Операционная система поддерживает мультипрограммирование и старается эффективно использовать ресурсы путём организации к ним очередей запросов, составляемых тем или иным способом. Это требование достигается поддерживанием в памяти более одного процесса, ожидающего процессор, и более одного процесса, готового использовать другие ресурсы, как только последние станут доступными. Общая схема выделения ресурсов такова. При необходимости использовать какой-либо ресурс (оперативную память, устройство ввода/вывода, массив данных и т. п.) задача обращается к супервизору операционной системы - её центральному управляющему модулю, который может состоять из нескольких модулей, например: супервизор ввода/вывода, супервизор прерываний, супервизор программ, диспетчер задач и т. д. - посредством специальных вызовов (команд, директив) и сообщает о своём требовании. При этом указывается вид ресурса и, если надо, его объём (например, количество адресуемых ячеек оперативной памяти, количество дорожек или секторов на системном диске, устройство печати и объём выводимых данных и т. п.).

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

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

  1. он свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;
  2. текущий запрос и ранее выданные запросы допускают совместное использование ресурсов;
  3. ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс).

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

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

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

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

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

 

 

5.Понятие прерываний

 

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

 Основными причинами  появления системы прерывания  являются:

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

2) Желание разработчиков загрузить полезной работой процессор, во время, когда он ожидает сигнал от управляемого объекта, т.е. желание реализовать фоновую работу ЭВМ.

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

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

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

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

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

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

Вычислительный процесс и обслуживание прерываний