Что может быть причиной появления внутреннего прерывания
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
Прерывание (Операционные Системы)
Каждое прерывание имеет свой собственный обработчик прерываний. Количество аппаратных прерываний ограничено числом строк запроса прерывания (IRQ) для процессора, но могут быть сотни различных программных прерываний. Прерывания — это широко используемая техника многозадачности компьютеров, в первую очередь в реальном времени. Такая система называется управляемой прерываниями.
Содержание
История
Первое фактическое использование прерываний приписывают компьютеру UNIVAC 1103 в 1953 году. [2] На IBM 650 (1954) было применено впервые прерывание путём маскировки. Национальное бюро стандартов DYSEAC (1954) первым использовало прерывания для ввода / вывода. IBM 704 был первым компьютером, использующим прерывания для отладки с «передаточной ловушкой», которая может ссылаться на специальную процедуру, когда команда ветвления была имеет столкновение. Система TX-2 (1957) была первой, обеспечивающей несколько уровней приоритетных прерываний. [3]
Типы прерываний
Прерывания могут быть разделены на следующие типы:
Процессоры обычно имеют внутреннюю маску прерываний, которая позволяет программному обеспечению игнорировать все внешние аппаратные прерывания, пока она установлена. Установка или очистка этой маски может быть быстрее, чем доступ к регистру маски прерываний (IMR) в PIC или отключение прерываний в самом устройстве. В некоторых случаях, например в случае архитектуры x86, отключение и включение прерываний на самом процессоре действует как барьер памяти.
Прерывание, которое оставляет машину в четко определенном состоянии, называется точным прерыванием. Такое прерывание имеет четыре свойства:
Прерывание, которое не соответствует указанным выше требованиям, называется неточным прерыванием.
Аппаратные прерывания
Аппаратные прерывания используются устройствами для передачи информации о том, что они требуют внимания со стороны операционной системы. [4] Внутренние аппаратные прерывания реализуются с использованием электронных сигналов оповещения, которые отправляются процессору от внешнего устройства, которое является частью самого компьютера, например контроллер диска, или внешнее периферийное устройство. К слову, нажатие клавиши на клавиатуре или перемещение мыши вызывают аппаратные прерывания, которые заставляют процессор считывать нажатие клавиши или положение мыши. В отличие от типа программного обеспечения, аппаратные прерывания являются асинхронными и могут произойти в середине выполнения инструкции, что требует дополнительного внимания при программировании. Акт инициирования аппаратного прерывания называется запросом прерывания (IRQ). [1]
Программные прерывания
Программное прерывание вызвано либо исключительным состоянием в самом процессоре, либо специальной инструкцией в наборе команд, которая вызывает прерывание, когда инструкция выполняется (см. рисунок 1). Первую часто называют ловушкой или исключением и используют для ошибок или событий, происходящих во время выполнения программы, которые настолько исключительны, что не могут быть обработаны в самой программе. Например, исключение деления на ноль будет выдано, если арифметическо-логическому блоку процессора приказано будет делить число на ноль, поскольку эта инструкция является ошибкой и невозможной. Операционная система поймает это исключение и сможет решить, что с этим делать: как правило, прерывать процесс и отображать соответствующее сообщение об ошибке. Инструкции программного прерывания могут функционировать аналогично вызовам подпрограмм и используются для различных целей, таких как запрос служб от драйверов устройств, например прерывания, отправляемые на контроллер диска и с контролера диска для запроса чтения или записи данных на диск и с диска. [1]
Сложность с разделением линий прерывания
Несколько устройств, совместно использующих линию прерывания (любого стиля запуска), действуют как источники паразитных прерываний по отношению друг к другу. При наличии множества устройств в одной линии рабочая нагрузка при обслуживании прерываний увеличивается пропорционально квадрату количества устройств. Поэтому предпочтительно распределять устройства равномерно по доступным линиям прерывания. Нехватка линий прерывания является проблемой в старых конструкциях системы, где линии прерывания являются различными физическими проводниками. Прерывания с сигналом сообщения, где линия прерывания является виртуальной, предпочтительны в новых системных архитектурах (таких как PCI Express) и в значительной степени решают эту проблему.
Проблемы с производительностью
С многоядерными процессорами, дополнительные улучшения производительности в обработке прерываний могут быть достигнуты с помощью масштабирования на стороне приема (RSS), когда используются сетевые адаптеры с несколькими очередями. Такие NIC предоставляют несколько очередей приема, связанных с отдельными прерываниями; путем маршрутизации каждого из этих прерываний на разные ядра обработка запросов на прерывание, запускаемых сетевым трафиком, полученным одним NIC, может быть распределена между несколькими ядрами. Распределение прерываний между ядрами может выполняться операционной системой автоматически, либо маршрутизация прерываний (обычно называемая привязкой IRQ) может быть настроена вручную.
Чисто программная реализация распределения принимаемого трафика, известная как управление приемными пакетами (RPS), распределяет принятый трафик между ядрами позже в тракте данных как часть функциональности обработчика прерываний. Преимущества RPS по RSS не включают требований к конкретному оборудованию, более продвинутым фильтрам распределения трафика и уменьшенной частоте прерываний, создаваемых NIC. Как недостаток, RPS увеличивает частоту межпроцессорных прерываний (IPI). Управление потоком приема (RFS) расширяет программный подход, учитывая локальность приложений; Дальнейшее улучшение производительности достигается за счет обработки запросов на прерывание теми же ядрами, на которых конкретные сетевые пакеты будут использоваться целевым приложением. [1]
Типичное использование
Типичное использование прерываний включает в себя следующее: системные таймеры, дисковый ввод / вывод, сигналы-выключение и ловушки. Существуют прерывания для передачи байтов данных с использованием UART или Ethernet; для чувствительных нажатий клавиш, управления двигателями и т.д.
Другое типичное использование состоит в том, чтобы генерировать периодические прерывания путем деления выходного сигнала кварцевого генератора и с помощью обработчика прерываний подсчитывать прерывания, чтобы процессор мог сохранять время. Эти периодические прерывания часто используются планировщиком задач ОС для перепланирования приоритетов запущенных процессов. Некоторые старые компьютеры генерировали периодические прерывания от частоты линии электропередачи, потому что она контролировалась коммунальными службами, чтобы исключить длительный дрейф электрических часов.
Прерывания используются для эмуляции инструкций, которые не реализованы на определенных моделях в компьютерной линии. Например, инструкции с плавающей запятой могут быть реализованы в аппаратных средствах в некоторых системах и эмулироваться в более дешевых системах. Выполнение невыполненной инструкции вызовет прерывание. Обработчик прерываний операционной системы распознает возникновение невыполненной инструкции, интерпретирует инструкцию в программной подпрограмме и затем вернется к программе прерывания, как если бы инструкция была выполнена. Это обеспечивает переносимость прикладного программного обеспечения по всей линии. [1]
Прерывания и особые случаи
Прерывания и особые случаи
Механизм прерывания обеспечивается соответствующими аппаратно-программными средствами компьютера.
Классификация прерываний представлена на рис. 7.1.
Запросы аппаратных прерываний возникают асинхронно по отношению к работе микропроцессора и связаны с работой внешних устройств.
Запрос от немаскируемых прерываний поступает на вход NMI микропроцессора и не может быть программно заблокирован. Обычно этот вход используется для запросов прерываний от схем контроля питания или неустранимых ошибок ввода/вывода.
Для запросов маскируемых прерываний используется вход INT микропроцессора. Обработка запроса прерывания по данному входу может быть заблокирована сбросом бита IF в регистре флагов микропроцессора.
Программные прерывания делятся на следующие типы.
Порядок обработки прерываний
Прерывания и особые случаи распознаются на границах команд, и программист может не заботиться о состоянии внутренних рабочих регистров и устройств конвейера.
Обработка запросов прерываний состоит из:
Для того чтобы микропроцессор мог идентифицировать источник прерывания и найти обработчик, соответствующий полученному запросу, каждому запросу прерывания присвоен свой номер ( тип прерывания ).
Всего микропроцессор различает 256 типов прерываний. Таким образом, все они могут быть закодированы в 1 байте.
«Рефлекторные» действия микропроцессора по обработке запроса прерывания выполняются аппаратными средствами МП и включают в себя:
В IDT могут храниться только дескрипторы следующих типов:
Шлюзы ловушки и прерывания сходны со шлюзом вызова, только в них отсутствует поле счетчика WC (рис. 7.4). Так как прерывание является неожиданным событием и не связано с текущей программой, говорить о передаче параметров их обработчику не приходится.
Бит присутствия P может быть равен как 0, так и 1.
При входе в обработчик через шлюз ловушки флаг IF не меняется.
Сохранить любой ценой: причины прерывания беременности
По данным Википедии, самопроизвольным абортом заканчиваются 15-20 % клинически установленных случаев беременности. Эти цифры являются нижней оценочной границей, так как во многих случаях выкидыш происходит на ранних стадиях — до того, как женщина поймет, что она забеременела. Ведь часто клинические признаки выкидыша ошибочно принимают за обильные месячные или за их задержку.
Каковы причины прерывания беременности на разных сроках? Как подготовиться к беременности после неудачного опыта, завершившегося выкидышем? На эти вопросы ответил врач акушер-гинеколог высшей категории МЦ «Bullfinch» АЛЕКСАНДР ГИЛЬ.
— Александр Вадимович, большинство выкидышей случается в начале беременности, и многие женщины недоумевают: отчего это могло произойти?
— Главная причина выкидышей на сроке до 6 недель — это естественный отбор. Идет закладка беременности с врожденными пороками эмбриона, который уже не жизнеспособен — таким образом, осуществляется естественный отбор, в который мы не можем вмешаться.
Вы никогда не узнаете точную причину выкидыша на этом сроке, даже если после абразии (выскабливания слизистой оболочки матки), содержимое отправят на исследование. Как правило, приходит ответ: «беременность на малом сроке» и больше ничего.
Есть еще одна причина прерывания беременности, особенно если она не первая, — резус-конфликт (когда у женщины кровь резус-отрицательная, а мужчины — резус-положительная). Но в нашей стране применяется эффективная профилактика резус-конфликта, так что неприятностей можно избежать на этапе планирования беременности.
В структуре раннего прерывания беременности никто не исключает инфекции и проблемы, связанные с гормонами. На сроке 6-8 недель перспективные беременности часто прерываются в связи с нехваткой гормонов. При нормальной беременности у женщины в одном из яичников есть так называемое желтое тело, которое вырабатывает эндогенный прогестерон.
К сожалению, функционирование желтого тела заканчивается примерно к 7 неделям беременности, и если изначально не хватало эндогенного прогестерона, беременность перестает развиваться: происходит отслойка плодного яйца и наступает так называемая замершая беременность.
В некоторых случаях при отслойке плодного яйца, беременность можно сохранить, главное: обратиться вовремя к специалисту. Если по результатам УЗИ-исследования врач видит, что эмбрион ещё живой, беременным женщинам назначают экзогенный прогестерон в таблетках или в свечах. Также существует этот гормон в виде инъекций, — используется, чтобы быстрее насытить организм и предотвратить выкидыш.
— Согласитесь, когда женщина забеременела, она не может подозревать, что у неё в организме не хватает прогестерона. Что должно её насторожить? Какие признаки на это указывают?
— Любые выделения от скудных тёмно-коричневых до более обильных кровянистых — плохой признак. Стоит, не медля, обратиться к гинекологу.
При появлении мажущих кровянистых выделений показано ультразвуковое исследование, анализ крови на прогестерон.
Хочу сказать, что нехватка прогестерона может быть причиной выкидыша до 15 недель. В 15-16 недель окончательно формируется плацента, которая будет выделять (продуцировать) этот гормон.
— Александр Вадимович, а какие проблемы могут возникнуть с плацентой во время беременности?
— На ранних сроках хорион (несформировавшаяся плацента) может перекрывать внутренний зев, может быть краевое его расположение — это большой риск прерывания беременности. В таком случае женщину кладут в больницу и наблюдают до 16 недель — к этому сроку хорион, как правило, поднимается. Но остается процент беременных, у которых плацента перекрывает зев матки — это называется «центральное расположение плаценты». Для сохранения беременности такие женщины, как правило, все время должны находиться в клинике и под наблюдением.
— Какова тактика лечения инфекций, появившихся на фоне беременности?
— Инфекции могут появиться даже у тех женщин, которые до беременности тщательно обследовались. Нередко такая проблема возникает из-за кровянистых выделений — это благоприятная среда для развития инфекций.
Эктопия (эрозия) шейки матки — это тоже инфекция, которая является явной угрозой для беременности. Поэтому так важно перед зачатием пройти кольпоскопию и пролечиться от эктопии, если её обнаружат.
Инфекция восходящим путём может проникать внутриутробно и негативным образом отражаться на здоровье плода. Есть такое осложнение, как внутриутробная пневмония плода, которая лечится очень плохо и занимает большой процент в структуре младенческой смертности.
И мы лечим инфекции по возможности любым способом, который прописан в протоколе. Есть такая тактика, которая заключается в приёме антибиотиков. Бояться их не нужно, так как врач назначит только разрешенные для беременных лекарства. Иногда приходится использовать те препараты, польза от которых больше, чем риск появления побочных реакций.
— Какие угрозы могут повлиять на беременность в середине срока?
— Среди многих причин, которые приводят к самопроизвольным выкидышам — истмико-цервикальная недостаточность. Это состояние, при котором перешеек и шейка матки не справляются с возрастающей нагрузкой (растущий плод, околоплодные воды), начинают раскрываться — и ребенок рождается преждевременно.
Есть показания для профилактики этого состояния — наложение кругового подслизистого шва на шейку матки. Самый лучший срок — 16-17 недель. Можно сделать данную процедуру и после 20 недель, но эффект будет меньше.
В середине беременности у женщины может произойти отслойка плаценты. В части случаев беременность можно сохранить при помощи препаратов, влияющих на свёртываемость крови. Но нередко врачи вынуждены прибегать к операции малое кесарево сечение. Как правило, роды до 22 недель заканчиваются гибелью плода, и здесь уже идет речь о спасении жизни матери.
Я призываю женщин в положении воздержаться от перелётов на самолете. В моей врачебной практике было несколько случаев, когда отслойка плаценты у пациенток случилась во время полета. Кто вам окажет квалифицированную помощь в таком случае? Советую не рисковать.
В Беларуси, как и в других европейских странах, роды начинаются со срока 22 недель, но они считаются преждевременными. Врачи делают всё возможное, чтобы любыми способами сохранить перспективную беременность. Главное, всегда быть под наблюдением у специалиста и соблюдать все его рекомендации.
— Александр Вадимович, самовольное прерывание желаемой беременности — всегда большая психологическая травма для женщины. Пережить такое повторно никому не хочется. Каковы особенности подготовки к следующей беременности после выкидыша?
— Прежде, чем задумываться о повторной беременности, женщинам, которые испытывают душевные муки, целесообразно пройти курс психотерапии. Это очень важно, потому как проблемы психического характера могут быть очень серьезными, особенно у женщин после неудачного экстракорпорального оплодотворения (ЭКО).
Главное правило: не беременеть после выкидыша 6 месяцев. Предохраняться в это время лучше всего оральными контрацептивами, которые назначит врач. Это нужно для того, чтобы восстановить нормальную детородную функцию.
Набор обследований для женщин, у которых был выкидыш, назначается индивидуально. Но общие рекомендации такие:
1. Диагностика инфекций, передающихся половым путем: микоплазмоз, уреаплазмоз, хламидиоз, вирус простого герпеса, папилломавирус человека (ВПЧ).
Также нужно обследоваться на те инфекции, которые были возможной причиной выкидыша при предыдущей беременности.
2. Анализ на половые гормоны — если назначит врач.
3. Гормоны щитовидной железы (ТТГ, Т4 свободный, АТПО), УЗИ щитовидной железы, консультация эндокринолога.
4. По необходимости, консультация терапевта и других специалистов, анализ крови на сахар, на сифилис, ВИЧ.
5. УЗИ брюшной полости и почек. При беременности многие хронические заболевания обостряются, в т.ч. и заболевания почек. Нужно пролечиться до зачатия.
6. Кольпоскопия (осмотр шейки матки под микроскопом).
7. Анализ спермограммы партнера.
Обследование у врача-генетика показано, если при планировании беременности женщине 36 лет, а мужчине 45 лет и выше. Также данного доктора нужно посетить паре, у которой были подряд две неразвивающиеся беременности на раннем сроке.
— Когда женщина забеременела после выкидыша, должна ли она более тщательно наблюдаться у врача?
— Конечно, ведь эта женщина уже входит в группу риска по какой-то определенной группе (невынашивание, инфицирование, преждевременная отслойка и т.д.).
Врачи рекомендуют в такой ситуации женщинам вести более размеренный и спокойный образ жизни, т.е. беречься. Важно оградить беременную от переживаний, не давать ей впечатляться «страшилками» по поводу беременности. Надо четко настроиться, что в этот раз всё будет хорошо.
Еще один совет из практики. Многие женщины, едва забеременев, спешат подтвердить это на УЗИ. Конечно, нет прямых доказательств того, что подобное исследование приносит вред плоду, однако нет и обратных доказательств, что оно абсолютно безвредно. Раз вы так желаете эту беременность, рисковать не стоит и грамотный доктор обязательно предостережет женщину от того, чтобы делать УЗИ на раннем сроке без особых к тому показаний.
Определить беременность и её перспективность можно при помощи анализа крови на ХГЧ (хорионический гонадотропин человека), а проще — гормон беременности. Это абсолютно безвредно для беременности. Целесообразно сдать кровь в начале задержки, через неделю — ещё раз. Если прибавка по ХГЧ нормальная, значит, беременность перспективная, не внематочная — и показаний к УЗИ нет.
Первый раз на УЗИ-диагностику женщина должна прийти на сроке беременности — 11-12 недель.
Интервью давал врач акушер-гинеколог высшей гкатегории/врач УЗИ МЦ «Bullfinch» Гиль Александр Вадимович
Внешние, внутренние и программные прерывания
2. Внешние, внутренние и программные прерывания.
Прерывания возникающие при работе выч. системы можно разделить на внешние и внутренние. Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса. Пример – прерывание от таймера, прерывание от внешних устройств, прерывание по вводу/выводу, прерывание по нарушению питания, прерывание с пульта оператора, прерывание от другого процессора или другой ОС.
Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями. Например: при нарушении адресации (когда указан запрещенный или несуществующий адрес) либо обращение к отсутствующему сегменту или странице при организации виртуальной памяти; при наличии в поле кода операции незадействованной 2ичной комбинации; при делении на 0; при переполнении или исчезновения порядка; при обнаружении ошибок четности, ошибок в работе различных устройств аппаратуры средствами контроля.
Программные прерывания. Эти прерывания происходят по соответствующей команде прерывания т. е. по этой команде процессор осуществляет те же действия, что и при обычных внутренних прерываниях. Данный механизм был специально введен для того, чтобы переключение на системные программные модули происходило не просто как переход на подпрограмму, а точно таким же образом как и в обычных прерываниях. Этим обеспечивается автоматическое переключения процессора в привилегированный режим с возможностью исполнения любых команд. Сигналы, вызывающие прерывания, формируются вне процессора или в самом процессоре, при этом возникать они могут одновременно. Выбор одного из них для обработки осуществляется на основе приоритета, приписанных к каждому типу прерывания. Учет приоритета прерывания может быть встроен в технические средства, а также определяться ОС.
Распределение прерываний по уровням приоритета:
Средства контроля CPU | Высший приоритете |
Системный таймер | |
Магнитные диски | |
Сетевое оборудование | |
Терминалы | |
Программные прерывания | Низший приоритете |
3. Изобразить диаграмму состояния процесса. Пояснить все возможные переходы из одного состояния в другое.
За время своего существования процесс может осуществить переход из одного состояния в другое. Это обусловлено обращениями к ОС с запросами ресурсов и выполнением системных функций, которые предоставляют ОС взаимодействие с другими процессами, появлением сигналов прерывания от таймера и устройств ввода/вывода. Процесс из состояния бездействия может перейти в состояние готовности в следующем случае:
1 По команде оператора или пользователя, ОС где программа может иметь статус задачи и при этом являться пассивной, а не просто быть исполняемой файлами и только на время исполнения получать статус задачи это характерно для большинства современных ОС.
2 При выборе из очереди на выполнение процесс может перейти от бездействия к готовности. Это характерно для ОС работающих в постоянном режиме.
3 По вызову из другой задачи. По вызову супервизора один процесс может создать, инициировать, приостановить, остановить и уничтожить любой процесс. От прерывания от внешнего устройства. устройства называют инициатором, если по сигналу на прерывание от него должна запустится акая-то задача.
Переход в готовность при поступлении запланированного запроса программы. процесс, который может исполняться или только ему будет предоставлен процессор находится в состоянии готовности. Уже выделены все необходимые ресурсы за исключением процессора.
Из состояния выполнения процесс может выйти по одной из следующих причин:
1 Процесс завершается, при этом он посредством обращения к супервизору передает управление ОС и сообщает ей о своем завершении. В результате их действий супервизор либо переводит его в список бездействующих процессов либо уничтожает. В состояние бездействия процесс может быть переведен принудительно по команде оператора. Действие этой команды реализуется системными процессами. которые транслируют запрос супервизору с требованием перевести соотв. процесс в состояние бездействия.
Из состояния выполнения процесс переводится в состояние готовности к выполнению в связи с появлением более приоритетной задачи или в связи с окончанием выделенного этому процессу кванта времени. Либо вследствие запроса операции ввода/вывода, который должен быть выполнен прежде чем процесс может продолжить исполнение либо в силу невозможности предоставить ему ресурс запрошенный в настоящий момент. При поступлении соответствующего сигнала о завершении операции ввода/вывода, освобождающем требуемый ресурс, в оперативную память загружается необходимая страница виртуальной памяти. Процесс деблокируется и переводится из состояния готовности к исполнению. Итак, движущей силой, меняющей состояния процессов, является механизм прерываний.