Все о моделировании в Компас-3D LT
   Главная Статьи Файлы Форум Ссылки Категории новостей
Август 24 2019 10:46:33   
Навигация
Главная
Статьи
Файлы
FAQ
Форум
Ссылки
Категории новостей
Обратная связь
Фото галерея
Поиск
Разное
Карта Сайта
Популярные статьи
Что необходимо ... 65535
Учимся удалять!... 23664
4.12.1 Професси... 22372
Примеры, синони... 21286
FAST (методика ... 19243
Просмотр готовы... 18959
Декартовы коорд... 17359
Просмотр готовы... 15802
Работа с инстру... 11938
Что такое САПР 11344
Сейчас на сайте
Гостей: 2
На сайте нет зарегистрированных пользователей

Пользователей: 9,955
новичок: Logyattella
Друзья сайта
Ramblers Top100
Рейтинг@Mail.ru

Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ по Delphi
Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog
6.4.1 Прерывания и особые ситуации
Система отвечает за обработку всех прерываний, поступили ли они от аппаратуры (например, от таймера или от периферийных устройств), от программ (в связи с выполнением инструкций, вызывающих возникновение «программных прерываний») или явились результатом особых ситуаций (таких как обращение к отсутствующей странице). Если центральный процессор ведет обработку на более низком уровне по сравнению с уровнем поступившего прерывания, то перед выполнением следующей инструкции его работа прерывается, а уровень прерывания процессора повышается, чтобы другие прерывания с тем же (или более низким) уровнем не могли иметь места до тех пор, пока ядро не обработает текущее прерывание, благодаря чему обеспечивается сохранение целостности структур данных ядра. В процессе обработки прерывания ядро выполняет следующую последовательность действий:
1. Сохраняет текущий регистровый контекст выполняющегося процесса и создает в стеке (помещает в стек) новый контекстный уровень.
2. Устанавливает «источник» прерывания, идентифицируя тип прерывания (например, прерывание по таймеру или от диска) и номер устройства, вызвавшего прерывание (например, если прерывание вызвано дисковым запоминающим устройством). При возникновении прерывания система получает от машины число, которое использует в качестве смещения в таблице векторов прерывания. Содержимое векторов прерывания в разных машинах различно, но, как правило, в них хранится адрес программы обработки прерывания, соответствующей источнику прерывания, и указывается путь поиска параметра для программы. В качестве примера рассмотрим таблицу векторов прерывания, приведенную на Рисунке 6.9. Если источником прерывания явился терминал, ядро получает от аппаратуры номер прерывания, равный 2, и вызывает программу обработки прерываний от терминала, именуемую ttyintr.

Номер прерывания Программа обработки прерывания
0 clockintr
1 diskintr
2 ttyintr
3 devintr
4 softintr
5 otherintr

Рисунок 6.9. Пример векторов прерывания
3. Вызов программы обработки прерывания. Стек ядра для нового контекстного уровня, если рассуждать логически, должен отличаться от стека ядра предыдущего контекстного уровня. В некоторых разработках стек ядра текущего процесса используется для хранения элементов, соответствующих программам обработки прерываний, в других разработках эти элементы хранятся в глобальном стеке прерываний, благодаря чему обеспечивается возврат из программы без переключения контекста.
4. Программа завершает свою работу и возвращает управление ядру. Ядро исполняет набор машинных команд по сохранению регистрового контекста и стека ядра предыдущего контекстного уровня в том виде, который они имели в момент прерывания, после чего возобновляет выполнение восстановленного контекстного уровня. Программа обработки прерываний может повлиять на поведение процесса, поскольку она может внести изменения в глобальные структуры данных ядра и возобновить выполнение приостановленных процессов. Однако, обычно процесс продолжает выполняться так, как если бы прерывание никогда не происходило.
алгоритм inthand /* обработка прерываний */
входная информация: отсутствует
выходная информация: отсутствует
{
сохранить (поместить в стек) текущий контекстный уровень;
установить источник прерывания;
найти вектор прерывания;
вызвать программу обработки прерывания;
восстановить (извлечь из стека) предыдущий контекстный уровень;
}
Рисунок 6.10. Алгоритм обработки прерываний
На Рисунке 6.10 кратко изложено, каким образом ядро обрабатывает прерывания. С помощью использования в отдельных случаях последовательности машинных операций или микрокоманд на некоторых машинах достигается больший эффект по сравнению с тем, когда все операции выполняются программным обеспечением, однако имеются узкие места, связанные с числом сохраняемых контекстных уровней и скоростью выполнения машинных команд, реализующих сохранение контекста. По этой причине определенные операции, выполнения которых требует реализация системы UNIX, являются машинно-зависимыми.
На Рисунке 6.11 показан пример, в котором процесс запрашивает выполнение системной функции (см. следующий раздел) и получает прерывание от диска при ее выполнении. Запустив программу обработки прерывания от диска, система получает прерывание по таймеру и вызывает уже программу обработки прерывания по таймеру. Каждый раз, когда система получает прерывание (или вызывает системную функцию), она создает в стеке новый контекстный уровень и сохраняет регистровый контекст предыдущего уровня.
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Случайные статьи
Глава 8. HUMMINBIR...
Цена до 500 долларов
Анализ результатов...
Линия передачи данных
3.11 Особенности ...
1.1. Основные понятия
2.4.7.1 Идея цикли...
6.3 КОНТЕКСТ ПРОЦЕССА
6.5.7 Отсоединение...
3.2.3. Технология ...
Решение проблемы с...
Глава 9. Как «это»...
СИСТЕМНЫЕ ОПЕРАЦИИ...
Иерархические сети
4. Разработка инфо...
3. Переосмысление ...
9.6. Межгрупповая ...
4.7 ВЫДЕЛЕНИЕ ДИС...
9. Продукции типа...
6.4.3 Переключение...
3. Выделение в орг...
Патч-антенна
Какова дальность р...
Терминология
Creative MegaWorks...
10.1.2.5 Ioctl
Перепроектирование...
Карты и программно...
Microlab SOLO-2
Wi-Fi vs. GPS
7.4 ОЖИДАНИЕ ЗАВЕР...
Независимость данных
5.4. Заключение
Глава 7. Основные ...
3.4. Организация р...
Преимущества испол...
5.2 READ
Администра...
3.2.1. Компоненты ЛВС
Рекламная эйфория
Мини-чат
Вам необходимо залогиниться.

Нет присланных сообщений.
Copyright © 2009