- •Операционные системы (учебное пособие)
- •Введение
- •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. Защита конфиденциальной информации.
- •Список литературных источников
2. Управление памятью в операционных системах
2.1. Память и отображения, виртуальное адресное пространство
Оперативная память – второй по важности разделяемый ресурс вычислительной системы. От механизма её распределения зависят производительность системы и возможности программистов по созданию своих программ. При выборе механизма распределения памяти руководствуются двумя соображениями:
выполняющаяся задача должна быть способна обратиться по любому адресу адресного пространства программы, владеющей задачей;
желательно расположить в памяти достаточное количество активных задач с тем, чтобы уменьшить время простоя процессора из-за отсутствия команды или данных.
Для неразделяемых ресурсов создаются виртуальные двойники. Например, одному принтеру может соответствовать множество виртуальных принтеров, принимающих от задач данные с тем, чтобы впоследствии вывести их на реально существующий принтер. А для виртуальных ресурсов, также требуется память.
Программирование на языках высокого уровня предполагает обращение к данным и фрагментам кода программы через некоторый набор символьных имён, заменяющих программисту реальные адреса. Всё множество упомянутых имён образует пространство символьных имён или логическое адресное пространство (рис. 2.1). В процессе компиляции программы и её загрузки в память логическое имя должно преобразоваться в реальный адрес конкретной ячейки памяти.
Рис. 2.1. Память и отображения
Система программирования создаёт виртуальное адресное пространство и преобразует логическое имя в виртуальный адрес. И, наконец, при загрузке программы загрузчиком, входящим в операционную систему, виртуальные адреса пересчитываются в физический адрес реальной ячейки памяти.
При реализации такой схемы возможно множество вариантов. Простейшим вариантом является случай полная тождественность виртуального адресного пространства и физической памяти. Второе отображение в этом варианте отпадает, и система программирования генерирует абсолютную двоичную программу, в которой все виртуальные адреса должны точно соответствовать физическим. А это возможно только в случае загрузки программы по строго определённым физическим адресам. Многие модули любой операционной системы обязательно являются абсолютными двоичными программами, которые не могут перемещаться в памяти. Эти программы способствуют работе программ, которые могут перемещаться и загружаться по разным адресам.
Второй вариант встречается довольно редко и предусматривает тождественность виртуального адресного пространства пространству имён программы. В этом случае сама операционная система осуществляет отображение логических имён на адресное пространство оперативной памяти. В данном случае отображение и выполнение квалификации имён, занимающей много времени, выполняется при каждом появлении нового имени1. Обычно используется в интерпретаторах, заменяющих операционную систему.
Третий вариант предусматривает генерацию компилятором или интерпретатором относительных адресов, являющихся смещением относительно некоторого базового адреса. При загрузке такой программы задаётся базовый адрес, и перемещающий загрузчик программы пересчитывает смещения в физические адреса оперативной памяти.
Наиболее эффективен четвёртый вариант, в котором процессор на основании базового адреса и виртуальных адресов-смещений рассчитывает физический адрес реальной ячейки памяти.
Рассматривая соотношение объёмов виртуальной памяти VV и физической памяти VР, можно выявить три очевидных случая:
VV < VР – ныне практически не встречается, характерно для 16-разрядных машин и предусматривает:
деление оперативной памяти на разделы размером по 64 К;
загрузку программы в один из разделов
применение третьего или четвёртого варианта отображения адресов, причём для разных программ указывается свой базовый адрес, являющийся адресом раздела, в который загружается программа;
VV = VР – часто встречающийся случай, характерный для недорогих вычислительных комплексов
VV > VР – наиболее часто встречающийся случай, характерный даже для персональных компьютеров и, тем более, для более сложных вычислительных систем.