0

Основные понятия, концепции ОС

В процессе эволюции возникло несколько важных концепций, кото­рые стали неотъемлемой частью теории и практики ОС. Рассмотрим и опишем некоторые из них.

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

Функции ядра:

­   Обработка прерываний.

­   Создание/уничтожение процесса.

­   Переключение процесса из состояния в состояние.

­   Диспетчеризация (регулировка).

­   Приостановка и активизация.

­   Синхронизация процесса.

­   Организация взаимодействия между процессами.

­   Манипулирование БУП.

­   Поддержка операций ввода/вывода.

­   Поддержка распределения и перераспределения памяти.

­   Поддержка работы файловой системы.

Системные вызовы

В любой операционной системе поддерживается механизм, который позволяет пользовательским программам обращаться к услугам ядра ОС. В операционных системах наиболее известной советской вычислительной машины БЭСМ-6 соответствующие средства «общения» с ядром назывались экстракодами, в операционных системах IBM они назывались сис­темными макрокомандами и т. д. В ОС Unix такие средства называют си­стемными вызовами.

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

Основное отличие состоит в том, что при системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode). По­этому системные вызовы иногда еще называют программными прерыва­ниями, в отличие от аппаратных прерываний, которые чаще называют просто прерываниями.

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

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

Прерывания

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

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

Механизм обработки прерываний подразумевает за собой независимо от архитектуры вычислительной системы выполнение некоторой последовательности шагов:

­   установление факта прерывания (прием сигнала запроса на прерывание) и идентификация прерывания;

­   запоминание состояния прерванного процесса вычислений;

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

­   сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью аппаратуры;

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

­   восстановление информации, относящейся к прерванному процессу;

­   возврат на прерванную программу.

Шаги 1-3 реализуются аппаратно, шаги 4-7 – программно.

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

—          прерывания от таймера;

—          прерывания от внешних устройств;

—          прерывания по нарушению питания;

—          прерывания с пульта оператора вычислительной системы.

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

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

—          при делении на ноль;

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

Таблица  1. Основные классы прерываний

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

 

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

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

Прерывания в основном предназначены для повышения эффективности работы компьютерной системы.

Цикл исполнения программы с прерываниями

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *