Лекция 2
.docx19.11.2021
Безусловный переход = go to. Команда процессора.
Есть условный переход. Переход, который происходит при условии на флагах.
Ядро ОС – некий реакционный механизм (реагирует только на запросы, иначе находится в бездействии)
Запросы оборудования – прерывания.
Запросы делают пользовательские приложения.
Ядро ОС по сути и есть ОС.
2 основных вида ядра: микроядро и монолитное ядро. Монолитное ядро по сути единая программа, все функции ОС выполняет она.
В микроядре реализуется лишь минимум функций: обработка прерываний, межпроцессорное взаимодействие и т.д., остальные функции (управление приложениями, управление паматью, организация взаимодействия между внешними устройствами) реализуются в виде отдельных модулей в виде отдельных приложений вне ядра.
Большинство Ос имеют гибридные ядра: где-то между монолитом и микроядром.
Пример монолита: ms dos, free bsd, чистый линукс
Микроядра: match, minix. Больше для встраиваемых систем они (проекторы, автомобили).
Гибридные: виндовс, мак ос, Linux mint (любой расширенный линукс).
Гибрид: есть монолитное ядро, и куча дополнительных программ-приложений, Которые входят в пакет ОС.
Привилегированный и пользовательский режим работы процессора (не ОС, есть ещё и такой): в пользовательском недоступны часть команд. Иногда можно перевести в привилегированный режим. Даются доп команды ассемблера.
ОС создаётся под каждую архитектуру в отдельности.
Часть компонентов ОС работает в пользовательском, часть в привилегированном режиме процессора. ОС может обращаться к привилегированному режиму. Она также защищает, чтобы пользователь не мог получить доступ к этому режиму.
О прерываниях.
Их обеспечивает наша ОС.
Нужны, чтобы обеспечить взаимодействие и доступ к ресурсам для тех или иных программ или устройств. Если бы не было прерываний, то необходимо бы было ждать завершения каждой запущенной программы. Что, возможно, привело бы к зависаниям. И худшему отклику пользователю. Прерывания позволяют работать части программ в фоновом режиме.
Чтобы не было потерь данных (например, при работе с сетью) данные программы сохраняются в озу или типа того.
Аппаратные вызываются аппаратным обеспечением. Например, сетевая карта сообщает о том, что её память заполнена – нужно прерывание. Если человек нажимает на кнопку W, то клавиатура вызывает прерывание, сообщая о нажатии кнопки. Клавиатура тоже прерывается, так как иначе бы на время зажатия кнопки программа бы зависла.
Программные прерывания вызываются самой ОС.
Прерывания таймера. В ОС встроен внутренний таймер, считающий такты процессора и синхронизирующий их со временем. На материнской плате есть аппаратные часты, работающие даже при выключенном ПК.
Исключения. Ошибки. Возникла ошибка, конфликт 2х подпрограмм, возникла ошибка, что программа попала в зацикливание. Ошибки нужно выявлять и делается прерывание, чтобы завершить программу.
Ещё про прерывания по таймеру.
Если программа заканчивается нормально, счётчик сбрасывается. Если происходит так, что таймер не сбросил числа и достиг определённого значения – сторожевой таймер делает прерывание и завершает программу, а также сбрасывает счётчик. Так ОС отслеживает бесконечные циклы. После прерывания сторожевой таймер может заново вызвать программу, возможно она включится на том же месте.
Фризы, тормоза пк – знак, что какая-то программа непрерывно входит в рекурсию, она прерывается, потом опять запускается и т.д.
Без этого механизма ПК бы просто зависал.
Прерывания нужны не только для обработки ошибок, работе с клавиатурой, они ещё также ускоряют работу системы и процессора.
Наш процессор работает намного быстрее, чем ОЗУ и SSD, поэтому узкое место при вычислениях – обращение процессора к памяти. Ему приходится ждать.
Для исправления ситуации бездействия процессора используются прерывания, чтобы процессор выполнял полезные вычисления почти всё время.
В итоге общее время работы выглядит так:
Этим тоже занимается ОС. Для организации всего этого. Для прерывания используется программное прерывание.
Бывает маскируемое прерывание и не маскируемое. Маскируемое можно спрятать и отменить. Относится больше к прерыванию программному. Немаскируемое – явное прерывание, которое ОС или процессор игнорировать не может.