- •Введение
- •1. Основные понятия в операционных системах
- •1.1. Классификация и функции операционных систем
- •1.2. Ос общего назначения и реального времени
- •1.3. Выполнение команд в вычислительной системе
- •1.4. Прерывания
- •1.5 Архитектуры операционных систем
- •1.6. Управление оперативной памятью вычислительной системы
- •1.7. Общие сведения о процессах и потоках
- •2. Операционная система windows
- •2.1. Версии операционной системы Windows
- •2.2. Архитектура операционной системы windows
- •2.3. Процессы и потоки в Windows
- •2.4. Взаимодействие процессов
- •2.5. Управление потоками в Windows
- •2.6. Файловые системы Windows
- •2.7. Установка и последовательность загрузки Windows
- •Последовательность загрузки Windows xp
- •2.8. Интерпретатор команд и пакетные файлы
- •2.9. Конфигурирование Windows
- •3. Операционная система qnx neutrino
- •3.1. Версии операционной системы qnx Neutrino
- •3.2. Архитектура операционной системы qnx Neutrino
- •3.3. Процессы в qnx6
- •Завершение процесса
- •3.4. Потоки в qnx6
- •Завершение потока
- •3.5. Управление потоками и процессами в qnx6
- •Механизмы ipc
- •Средства синхронизации в qnx
- •3.6. Файловые системы qnx
- •Типы файлов
- •3.7. Инсталляция и последовательность загрузки qnx
- •3.8. Интерпретаторы команд и пакетные файлы в qnx
- •3.9. Конфигурирование qnx
- •4. Виртуальные машины
- •4.1. Общие сведения о виртуальных машинах
- •4.2. Работа с виртуальной машиной VmWare
- •5. Защита от сбоев и несанкционированного доступа
- •5.1. Принципы построения систем безопасности
- •5.2. Безопасность операционной системы windows
- •6. Сетевые возможности операционных систем
- •6.1. Аппратаное обеспечение локальных сетей
- •6.2. Сети Windows
- •6.3. Локальная сеть на основе qnet
- •6.4. Глобальные сети
- •7. Многопроцессорные системы
- •7.1. Архитектуры многопроцессорных операционных систем
- •7.2. Принципы функционирования smp
- •7.3. Принципы функционирования кластеров
- •Список использованной литературы
- •Компилятор
1.4. Прерывания
Прерывание представляет собой механизм, позволяющий координировать параллельное функционирование отдельных устройств ВС и реагировать на особые состояния, возникающие при работе процессора, таким образом, прерывание – это принудительная передача управления от выполняемой программы к системе, происходящее при возникновении определённого события.
Механизм прерывания реализуется аппаратно-программными средствами и включает в себя следующие этапы:
установка факта прерывания и его идентификация;
запоминание контекста (состояния) прерванного процесса; состояние процесса определяют: счетчик команд (PС), содержимое регистров процессора (АС), а также может включать спецификацию режима (пользовательский или привилегированный) и др. информацию хранящуюся в регистре флага;
управление аппаратно передаётся подпрограмме обработки идентифицированного прерывания, в простейшем случае в регистр счетчика команд заносится начальный адрес обработки, а в соответствующие регистры - информация словосостояния;
сохраняется информация о прерванной программе, если это не было сделано аппаратно;
обработка прерывания может быть выполнена обработчиком аппаратного прерывания, но чаще используется обработчик ОС;
восстанавливается информация, относящаяся к прерванному процессу;
возврат управления прерванной программы.
При этом этапы 1-3 реализуются аппаратно, а 4-7 программно.
При возникновении запроса на прерывание естественный ход вычислений нарушается, и управление передаётся программе обработчика возникшего прерывания. При этом средствами аппаратуры (с помощью механизмов стековой памяти) сохраняется адрес той команды, с которой следует продолжить выполнение прерванной программы. После выполнения программы обработки прерывания управление возвращается прерванной ранее программе посредством занесения в указатель команд сохранённого адреса команды из стека (рис.9). Такая схема используется для простейших ОС, для более сложных ОС при обработке прерываний используется супервизор прерываний [3].
В данном случае нет непосредственного возврата в прерванную ранее программу, прямо из подпрограммы обработки прерываний. Такая схема используется для многозадачных и многопользовательских ОС. Таким образом, главными функциями механизма прерываний являются:
распознавание или классификация прерываний;
передача управления соответствующему обработчику прерываний;
корректное возвращение к прерванной программе.
Рис.9 . Исполнение процессором команд с прерыванием
Прерывание, возникающее при работе ВС можно разделить: на внешние (асинхронные), внутренние (синхронные) и программные.
Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса (программы) (например, прерывание таймера, внешних устройств, по нарушению питания, с пульта оператора ВС, от другого процессора или ВС).
Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями (например, при нарушении адресации (в адресной части выполняемой команды указан запрещённый или несуществующий адрес, обращение к отсутствующей странице или сегменту при организации механизма витруальной памяти), при наличии в поле кода операции не используемой двоичной комбинации, при делении на 0, при переполнении или исчезновении порядка, при обнаружении ошибки чётности и ошибок в работе различных устройств аппаратуры средствами контроля.
Существуют программные прерывания, которые возникают при выполнении процессором соответствующей команды (INT). По этой команде процессор осуществляет те же действия, что и при обработке внутренних прерываний (рис.10). Этот механизм введён для переключения на системные программные модули по правилам прерываний, а не подпрограмм, это обеспечивает автоматическое переключение процессора в привилегированный режим с возможностью выполнения любых команд [3].
Рис.10. Схема обработки прерывания
В многопользовательских и многозадачных ОС применяется концепция реентерабельности. Реентерабельной называется процедура, последовательность команд которой может одновременно использоваться несколькими приложениями. Для обеспечения этой концепции необходимо, чтобы программный код не был самомодифицирующимся, а локальные данные каждого пользователя должны храниться отдельно друг от друга. Исполнение реентерабельной процедуры может быть приостановлено с помощью прерывания, а после возврата из него корректно продолжиться. В многопользовательских и многозадачных ОС реентерабельность позволяет более эффективно использовать ОП. В ней хранится только одна копия программного кода процедуры, даже если к ней обращаются несколько различных приложений.
Стек — это специальным образом организованный участок памяти, используемый для временного хранения переменных, для передачи параметров вызываемым подпрограммам и для сохранения адреса возврата при вызове процедур и прерываний. Легче всего представить стек в виде стопки листов бумаги (это одно из значений слова «stack» в английском языке) — вы можете класть и забирать листы бумаги только с вершины стопки. Таким образом, если записать в стек числа 1, 2, 3, то при чтении они будут получаться в обратном порядке — 3, 2, 1.
Для процессоров Intel x86 стек располагается в сегменте памяти, описываемом регистром SS, а текущее смещение вершины стека записано в регистре ESP, причем при записи в стек значение этого смещения уменьшается, то есть стек растет вниз от максимально возможного адреса.
Такое расположение стека «вверх ногами» необходимо в бессегментной модели памяти, когда все сегменты, включая сегмент стека и сегмент кода, занимают одну и ту же область — всю память. Тогда программа исполняется в нижней области памяти, в области малых адресов, и EIP растет, а стек располагается в верхней области памяти, и ESP уменьшается.