- •Операционные системы (учебное пособие)
- •Введение
- •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. Распределение памяти, использующее оверлейные модули, называется распределением с перекрытием.
2.3. Распределение памяти статическими разделами
Это распределение памяти предусматривает разделение памяти на разделы с фиксированными границами, осуществляемое единовременно при загрузке операционной системы или программистом во время работы машины. В нулевом разделе размещается ядро операционной системы и транзитные модули операционной системы, т.е. модули, подгружаемые с системного диска.
В остальных разделах находятся задачи, причём в зависимости от объёма программ в каждом разделе большая или меньшая часть памяти не используется. Такие потери памяти называются фрагментацией памяти. Описанная система распределения памяти использовалась в первых мультипрограммных операционных системах. Позднее она стала применяться для недорогих вычислительных систем, причём в некоторых разделах помещались небольшие программы, которые находились в памяти в течение всего времени работы машины и вызывались по мере необходимости. Такие программы называются резидентными. В настоящее время распределение памяти с фиксированными границами разделов используется во встроенных системах, для которых характерно отсутствие нерезидентных программ. В указанных системах внешняя память не используется.
Для увеличения числа параллельно работающих задач применяется приём, называемый свопингом. Он предусматривает выгрузку задачи, находящейся в очереди ожидания ввода данных, на диск и замену её другой задачей.
Серьёзный недостаток распределения памяти на статические разделы привёл к попыткам распределения памяти на разделы с переменными границами (динамическим разделами) и к фрагментации задач.