- •Операционные системы (учебное пособие)
- •Введение
- •1. Операционная система: основные понятия
- •1.1. Понятие операционной системы, её роль и функции
- •1.2. Операционная и программная среды
- •1.3. Очередь и стек
- •1.4. Машинная команда, способы адресации, привилегированные команды
- •1.5.Система прерываний
- •1.6. Задачи, вычислительные процессы и ресурсы
- •Ресурс – это абстрактная структура, имеющая множество атрибутов, характеризующих способы доступа к ресурсу и его физическое представление в системе
- •1.7. Мультипрограммный, мультизадачный и многопользовательский режимы работы операционной системы. Режим разделения времени
- •2. Управление памятью в операционных системах
- •2.1. Память и отображения, виртуальное адресное пространство
- •2.2. Простое непрерывное распределение и распределение с перекрытием
- •2.3. Распределение памяти статическими разделами
- •2.4. Распределение памяти с динамическими разделами
- •2.5. Распределение памяти с фрагментацией задач
- •3. Управление процессами
- •3.1. Реализация последовательного процесса в операционной системе
- •3.2. Планирование и диспетчеризация процессов и задач
- •3.3. Управление параллельными процессами
- •3.3.1. Понятие параллельных процессов
- •3.3.2. Методы реализации взаимных исключений
- •3.3.3. Блокировка памяти
- •3.3.4. Применение специальных операций типа "проверка–установка"
- •3.3.5.Семафоры и их применение
- •3.3.6. Мониторы
- •3.3.7. Почтовые ящики, конвейеры и очереди сообщений
- •4. Проблема тупиков и её решение
- •4.1. Проблема тупиков, разделяемые ресурсы и модели параллельных процессов
- •4.2. Модель повторно используемых ресурсов Холта1
- •4.3. Сети Петри
- •4.4. Модель пространства состояний системы
- •4.5. Борьба с тупиками
- •4.5.1. Предотвращение тупиков
- •4.5.2. Обход тупиков
- •4.5.3. Обнаружение тупика
- •5. Жёсткий диск
- •5.1. Устройство накопителя жесткого диска (hdd) и адресация элементов дискового пространства
- •5.2. Логическая структура диска
- •5.3. Создание загрузочных дисков
- •6. Файловые системы
- •6.1. Файлы и каталоги
- •6.2. Понятие и функции файловой системы и системы управления файлами.
- •6.3. Обзор файловых систем
- •6.3.1. Файловая система fat16, fat32 и vfat
- •6.3.2. Файловая система ntfs
- •6.3.3. Файловые системы компакт-дисков
- •7. Средства защиты и восстановления операционных систем
- •7.1. Цифровая подпись драйверов и её верификация
- •7.2. Защита и проверка системных файлов
- •7.3. Откат драйверов
- •7.6. Безопасный режим загрузки
- •7.7. Мастер и точки восстановления системы
- •7.8. Резервное копирование и восстановление
- •7.9. Аварийное восстановление системы. Консоль восстановления.
- •8. Загрузчики операционных систем
- •8.1. Понятие загрузчика и виды его реализации
- •8.2. Решение проблемы четырех разделов в mbr
- •8.3. Установка загрузчиков ос
- •8.4. Настройка загрузчиков ос
- •8.5. Удаление загрузчиков ос
- •9. Системный реестр и системные службы
- •9.1. Назначение и структура реестра
- •9.2. Работа с реестром
- •9.3. Системные службы
- •10. Безопасность операционных систем
- •10.1. Угрозы, уязвимости, атаки
- •10.2. Политика безопасности
- •10.3. Защита от вторжений
- •10.4. Межсетевые экраны
- •10.5. Отключение ненужных служб
- •10.6. Защита от спама
- •10.7. Защита от вредоносных программ и вирусов средствами операционных систем
- •10.8. Защита конфиденциальной информации.
- •Список литературных источников
1.4. Машинная команда, способы адресации, привилегированные команды
Машинная команда – это последовательность битов длиной в 1,2 и более байтов, которая определяет выполняющуюся операцию и источники данных. В машинной команде можно выделить две части (поля): код операции и адресную часть. Код операции определяет операцию, подлежащую выполнению, а так же длину команды и способ адресации данных, т.е. способ задания адресов обрабатываемых данных.
Существуют следующие способы адресации:
непосредственная (данные указываются непосредственно в команде);
прямая (в адресной части указывается адрес ячейки памяти данных);
регистровая (адрес хранится в одном из регистров процессора);
несколько разновидностей косвенной адресации (адрес ячейки памяти данных хранится в регистре процессора, который называется индексным или вычисляется по содержимому одного из регистров процессора).
Существуют команды, которые могут выполняться только операционной системой, но не программами пользователя. Такие команды называются привилегированными.
1.5.Система прерываний
Любая программа выполняется процессором, который минимально состоит из арифметико-логического устройства АЛУ, устройства управления и нескольких регистров – устройств внутренней памяти процессора, которые помимо хранения данных позволяют выполнять различные действия над данными без помещения их в АЛУ, например команды сдвига. Среди этих регистров есть регистры РС (один или два), которые содержат адрес выполняемой команды. Совокупность данных, содержащихся в регистрах, и ряд других служебных данных называются состоянием процесса вычислений. Более полная информация, включающая в себя и состояние процесса вычислений, называется контекстом программы. Передача управления сводится к записи в регистры, определяющие адрес команды, адреса новой команды. Вместе с программой в памяти машины существует служебная информация, которая называется дескриптором процесса.
Во время работы программы могут возникать различные ситуации, на которые она или операционная система должна отреагировать должным образом. Такими событиями могут быть нажатие: клавиши, запрос внешнего устройства на обслуживание, или ошибка при выполнении какой-либо операции.
Реакция программы или операционной системы в любом случае сводится к останову основной программы, вызову программы, обрабатывающей это событие, и передаче управления на продолжение выполнявшейся программы или на выполнение другой. Временный останов программы в целях обработки какого-либо события называется прерыванием. Механизм прерываний реализуется аппаратно-программными средствами. Но все прерывания неизбежно влекут за собой изменение порядка выполнения команд процессором.
В простых системах проблемы запоминания и использования служебных данных, необходимых для обслуживания прерывания решены на аппаратном уровне или возлагаются на программу обработки прерываний. В сложных системах помимо этого решения существует специальная программа работы с прерываниями – супервизор прерываний. Схемы обслуживания прерываний в простых и сложных системах показаны на рис. 1.3, на котором жирными стрелками показана запись и чтение адресов, а тонкими – передача управления. Пунктирная стрелка показывает, что выполнение операции вызывает передачу управления. Аббревиатурой ПОП обозначена программа обработки прерывания.
В простых системах запрос на прерывание вызывает следующие действия:
адрес возврата, т.е. адрес команды, продолжающей выполнение программы, записывается в специальный стек;
адрес программы обрабатывающей прерывание (вектор прерывания), записывается в регистр адреса команд РС, тем самым управление передаётся программе обработки прерывания;
выполняется программа, обрабатывающая прерывание;
адрес возврата из стека возвращается в регистр адреса команд РС, тем самым передаётся управление ранее выполняющейся программы.
а) |
б) |
Рис. 1.3. Схема обслуживания прерывания в простых (а) и сложных (б) системах
Программа, обрабатывающая прерывание, состоит из трёх блоков:
отключение прерывания и сохранения в памяти контекста программы, установка временного режима работы прерываний;
выполнение обработки прерывания;
восстановление контекста прерванной программы, восстановление исходного режима прерываний, передача управления прерванной программе.
В сложных системах существует режим мультипрограммирования, т.е. обслуживания нескольких задач. Поэтому в обслуживании прерывания участвуют специальные элементы операционной системы – супервизор прерываний и диспетчер задач. Адрес возврата передаётся супервизору прерываний, состоящему из двух блоков:
1_С – отключение прерываний, сохранение контекста прерванной программы в её дескрипторе, установка временного режима работы прерываний, сохранение адреса возврата;
2_С – определение вектора прерывания и передача ему управления посредством записи вектора прерывания в регистр РС.
Программа обслуживания прерывания ПОП выполняет только обработку прерывания, не несёт никакой ответственности за дальнейшие действия вычислительной машины и передаёт управление диспетчеру задач. Диспетчер задач состоит также из двух блоков, которые выполняют следующие действия:
1_Д – отыскивает программу, готовую к выполнению, ею может быть или прерванная программа или друга в соответствии с дисциплиной обслуживания программ;
2_Д – если обслуживанию подлежит прерванная программа, то восстанавливает контекст программы, устанавливает контекст программы и переписывает адрес возврата из стека в регистр РС, передавая тем самым управление прерванной программе.
Если по дисциплине обслуживания программ управление должно передаваться другой программе, то выполняются другие готовые к выполнению программы до тех пор, пока не будет на очереди прерванная программа. В этом случае процесс обслуживания прерывания завершается описанным выше способом.
Таким образом, главные функции системы прерывания:
фиксация и распознавание прерываний;
передача управления программе обработки прерывания;
корректное возвращение управления выполняемой программе.
В зависимости от причины возникновения прерывания можно разделить на два класса: внешние (асинхронные), внутренние (синхронные) и программные. Внутренние прерывания связаны с работой процессора и называются также событиями.
Источниками внешних прерываний являются:
системный таймер;
внешние устройства ввода-вывода;
нарушение питания;
пульт оператора;
другой процессор или другая вычислительная система.
К источникам внутренних прерываний относятся:
нарушение адресации (в адресной части указан запрещённый или несуществующий адрес);
неправильный код операции в команде;
деление на ноль;
переполнение или исчезновение порядка;
средства контроля, например, контроля чётности;
попытка выполнения привилегированной или запрещённой в данном режиме работы операционной системы команды.
Программные прерывания вызываются необходимостью временного изменения порядка выполнения программ с последующим возвратом к естественной последовательности выполнения команд программы1. Они предусмотрены для обеспечения переключения процессора в привилегированный режим с возможностью выполнения любых операций.
Следует иметь в виду, что имеется возможность разрешать или запрещать отдельные прерывания. Запрещение отдельных прерываний называется их маскированием. Сведения о разрешённых и запрещённых прерываниях содержатся в специальном регистре в виде последовательности битов. Для быстрого изменения состояния группы прерываний используется последовательность бит, которая называется маской.
Вполне реален случай одновремённого возникновения двух и более прерываний. В этом случае порядок их обслуживания определяется важностью прерывания, которая называется приоритетом. Например, очевидно, что запрос прерывания от клавиатуры управления технологической машиной, требующий остановить её, важнее сигнала таймера, сообщающего об истечении какой-то выдержки времени. Порядок обслуживания прерываний в соответствии с их приоритетами называется дисциплиной обслуживания прерываний. Естественный порядок обслуживания прерываний встроен в аппаратную часть (рис. 1.4). Тем не менее, в операционной системе имеется возможность повысить приоритеты прерываний, которые заданы последовательностью бит в специальном регистре, который называют часто регистром приоритетов. Если приоритеты повышены у двух и более прерываний (т.е. они важнее других), то сначала обрабатываются в естественном порядке прерывания с повышенным приоритетом, потом опять-таки в естественном порядке прерывания с обычным приоритетом.
-
Средства контроля процессора
Системный таймер
Внешние устройства
Магнитные диски
Сетевое оборудование
Терминалы
Программные прерывания
Рис. 1.4. Естественные приоритеты прерываний
Существует три основных дисциплины обслуживания прерываний:
с относительными приоритетами – обслуживание не прерывается даже при наличии запроса с более высоким приоритетом;
с абсолютным приоритетом – первыми обслуживаются прерывания с наивысшим приоритетом;
по принципу стека – запросы помещаются в стек и первыми обслуживаются последние пришедшие в стек (правило LCFS или LIFO).
Комбинация разрешённых и запрещённых прерываний и приоритетов называется режимом прерываний.