- •1. Эволюция ос
- •2. Классификация ос
- •2.1. Особенности алгоритмов управления ресурсами
- •2.2. Особенности методов построения
- •2.3.Особенности аппаратных платформ
- •2.4. Особенности областей использования
- •Лекция 3. Архитектура операционной системы
- •3. 1. Ядро и вспомогательные модули ос
- •3. 2. Ядро и привилегированный режим
- •3. 3. Многослойная структура ос
- •3. 4. Аппаратная зависимость и переносимость ос
- •3. 5. Переносимость операционной системы
- •3. 6. Микроядерная архитектура
- •3 .6. 1. Концепция
- •3. 6. 2. Преимущества и недостатки микроядерной архитектуры
- •3. 7. Совместимость и множественные прикладные среды
- •3. 7. 1. Двоичная совместимость и совместимость исходных текстов
- •3. 7. 2. Трансляция библиотек
- •3. 7. 3. Способы реализации прикладных программных сред
- •Контрольные вопросы
- •Лекция 4. Основные концепции теории ос
- •4.1. Понятие процесса
- •4.2. Понятие ресурса
- •4.3. Концепция виртуализации
- •Одноочередные дисциплины обслуживания.
- •Многоочередная дисциплина обслуживания. Схема данной дисциплины приведена на рис. 5.
- •Дисциплина обслуживания при наличии приоритетов. Такая дисциплина строится на основе рассмотренной выше многоочередной дисциплины. На рис.6. Приводится ее условная схема.
- •4.5. Система прерываний
- •Лекция 5. Процессы и потоки (нити). Взаимодействие процессов.
- •5.1 Процессы
- •5.1.1 Понятие процесса
- •5.1.2 Модель процесса
- •5.1.3 Создание процесса
- •5.1.4 Завершение процесса
- •5.1.5 Иерархия процессов
- •5.1.6 Состояние процессов
- •5.2 Потоки (нити, облегченный процесс)
- •5.2.1 Понятие потока
- •5.2.2 Модель потока
- •5.2.3 Преимущества использования потоков
- •5.2.4 Реализация потоков в пространстве пользователя, ядра и смешанное
- •5.2.5 Особенности реализации Windows
- •5.3. Взаимодействие между процессами
- •5.3.1. Передача информации от одного процесса другому
- •5.3.2 Состояние состязания
- •5.3.3 Критические области
- •5.3.4 Взаимное исключение с активным ожиданием
- •5.3.5 Примитивы взаимодействия процессов
- •5.3.6 Семафоры
- •6.1 Основные понятия планирования процессов
- •6.3.2 Приоритетное планирование
- •6.3.3 Методы разделения процессов на группы
- •6.4 Планирование в системах реального времени
- •6.4.1 Планирование однородных процессов
- •6.4.2 Общее планирование реального времени
- •7.1 Взаимоблокировка процессов
- •7.2 Моделирование взаимоблокировок
- •7.3 Методы борьбы с взаимоблокировками
- •7.3.1 Пренебрежением проблемой в целом (страусовый алгоритм)
- •7.3.2 Обнаружение и устранение взаимоблокировок
- •7.3.3 Динамическое избежание взаимоблокировок
- •7.3.4 Предотвращение четырех условий, необходимых для взаимоблокировок
- •9.1 Принципы аппаратуры ввода-вывода
- •9.1.1 Устройства ввода-вывода
- •9.1.2 Контроллеры устройств
- •9.1.3 Отображаемый на адресное пространство памяти ввод-вывод
- •9.1.4 Прямой доступ к памяти (dma - Direct Memory Access)
- •9.1.5 Прерывания
- •9.2 Принципы программного обеспечения ввода-вывода
- •9.2.1 Задачи программного обеспечения ввода-вывода
- •9.2.2 Программный ввод-вывод
- •9.2.3 Управляемый прерываниями ввод-вывод
- •9.2.4 Ввод-вывод с использованием dma
- •9.3 Программные уровни и функции ввода-вывода
- •9.3.1 Обработчики прерываний
- •9.3.2 Драйвера устройств
- •9.3.3 Независимое от устройств программное обеспечение ввода-вывода
- •9.4. Программное обеспечение ввода-вывода пространства пользователя
- •9.5. Принципы, заложенные в подсистему управления вводом-выводом в ос unix
- •4.1. Понятие об организации и управлении физической памятью в операционных системах
- •4.2. Методы связного распределения основной памяти
- •4.2.1. Связное распределение памяти для одного пользователя
- •4.2.2. Связное распределение памяти при мультипрограммной обработке
- •4.2.3. Стратегии размещения информации в памяти
- •4.3. Организация виртуальной памяти
- •4.3.1. Основные концепции виртуальной памяти
- •4.3.2. Страничная организация виртуальной памяти
- •4.3.3. Сегментная организация виртуальной памяти
- •4.3.4. Странично-сегментная организация виртуальной памяти
- •4.4. Управление виртуальной памятью
- •4.4.1. Стратегии управления виртуальной памятью
- •4.4.2. Стратегии вталкивания (подкачки)
- •4.4.3. Стратегии размещения
- •4.4.4. Стратегии выталкивания
- •10.1.3 Типы файлов
- •Лекции 10-11. Системы управления данными (файловые системы)
- •10.1 Файлы
- •10.1.1 Именование файлов
- •10.1.2 Структура файла
- •Три типа структур файла.
- •Примеры исполняемого и не исполняемого файла
- •10.1.4 Доступ к файлам
- •10.1.5 Атрибуты файла
- •10.1.6 Операции с файлами
- •10.1.7 Файлы, отображаемые на адресное пространство памяти
- •Пример копирования файла через отображение в памяти.
- •10.2 Каталоги
- •10.2.1 Одноуровневые каталоговые системы
- •10.2.2 Двухуровневые каталоговые системы
- •Двухуровневая каталоговая система
- •10.2.3 Иерархические каталоговые системы
- •Иерархическая каталоговая система
- •10.2.4 Имя пути
- •10.2.5 Операции с каталогами
- •10.3 Структура файловой системы
- •Возможная структура файловой системы
- •10.4 Реализация файлов
- •10.4.1 Непрерывные файлы
- •5 Непрерывных файлов на диске и состояние после удаления двух файлов
- •10.4.2 Связные списки
- •Размещение файла в виде связного списка блоков диска
- •10.4.3 Связные списки при помощи таблиц в памяти
- •Примеры I-узла
- •10.5 Реализация каталогов
- •Варианты реализации каталогов
- •10.5.1 Реализация длинных имен файлов
- •Реализация длинных имен файлов
- •10.5.2 Ускорение поиска файлов
- •1 Использование хэш-таблицы для ускорения поиска файла.
- •2 Использование кэширования результатов поиска файлов для ускорения поиска файла.
- •10.6 Совместно используемые файлы
- •10.6.1 Жесткие ссылки
- •Иллюстрация проблемы, которая может возникнуть
- •10.6.2 Символьные ссылки
- •10.7 Организация дискового пространства
- •10.7.1 Размер блока
- •Скорости чтения/записи и эффективность использования диска, в системе с файла одинакового размера 2 Кбайта.
- •10.7.2 Учет свободных блоков
- •Основные два способа учета свободных блоков
- •10.7.3 Дисковые квоты
- •10.8 Надежность файловой системы
- •10.8.1 Резервное копирование
- •10.8.2 Непротиворечивость файловой системы
- •10.11 Производительность файловой системы
- •10.11.1 Кэширование
- •10.11.2 Опережающее чтение блока
- •10.11.3 Снижение времени перемещения блока головок
- •11.1 Файловой системы cd-дисков
- •11.1.1 Файловая система iso 9660
- •Каталоговая запись стандарта iso 9660.
- •11.1.3 Joliet расширения для Windows
- •11.1.4 Romeo расширения для Windows
- •11.1.5 Hfs расширения для Macintosh
- •11.1.6 Файловая система udf (Universal Disk Format)
- •11.2 Файловая система cp/m
- •11.2 Файловая система ms-dos (fat-12,16,32)
- •Каталоговая запись ms-dos, обратите внимание на пустые 10 байт, они будут задействованы в Windows 98
- •11.2.4 Расширение Windows 98 для fat-32
- •Формат каталогов записи с фрагментом длинного имени файла в Windows 98
- •11.3 Файловая система ntfs
- •Главная файловая таблица mft, каждая запись ссылается на файл или каталог.
- •Три записи mft для сильно фрагментированного файла. В первой записи указывается индексы на дополнительные записи.
- •Запись mft для небольшого каталога
- •11.3.1 Поиск файла по имени
- •11.3.2 Сжатие файлов
- •Пример 48-блочного файла, сжатого до 32 блоков
- •Запись mft для предыдущего файла.
- •11.3.3 Шифрование файлов
- •Шифрование файлов в ntfs
- •11.4 Файловая система unix v7
- •Расположение файловой системы unix
- •Каталоговая запись unix v7 в 16 байт Структура I-узела
- •11.4.1 Поиск файла
- •Этапы поиска файла по абсолютному пути /usr/sbin/mc
- •11.4.2 Блокировка данных файла
- •Блокировки данных файла без монополизации
- •11.4.3 Создание и работа с файлом
- •Связь между таблицей дескрипторов файлов, таблицей открытых файлов и таблицей I-узлов.
- •11.5 Файловая система bsd
- •Каталог bsd с тремя каталоговыми записями для трех файлов и тот же каталог после удаления файла zip, увеличивается длина первой записи.
- •11.6 Файловые системы linux
- •11.6.1 Файловая система ext2
- •Размещение файловой системы ext2 на диске
- •11.6.2 Файловая система ext3
- •11.6.3 Файловая система xfs
- •11.6.4 Файловая система rfs
- •11.6.4 Файловая система jfs
- •11.7 Сравнительная таблица некоторых современных файловых систем
- •Примеры монтирования удаленных файловых систем
- •Структура уровней файловой системы nfs
4.2.3. Стратегии размещения информации в памяти
Стратегии размещения информации в памяти предназначены для того, чтобы определить, в какое место основной памяти следует помещать поступающие программы и данные при распределении памяти неперемещаемыми разделами. Наиболее часто применяются следующие стратегии:
размещение с выбором первого подходящего (стратегия “первый подходящий”):
размещение с выбором наиболее подходящего (стратегия “самый подходящий”);
алгоритм с выбором наименее подходящего (стратегия “самый неподходящий”).
Стратегия “первый подходящий” состоит в выполнении следующих шагов:
упорядочить таблицу свободных областей в порядке возрастания адресов;
поместить информацию в первый встретившийся участок основной памяти размером не менее требуемого.
Стратегия “самый подходящий” реализует следующую последовательность действий:
упорядочить таблицу свободных областей в порядке возрастания размеров свободных областей:
поместить информацию в первый встретившийся участок свободной памяти размером не менее требуемого.
Стратегия “самый неподходящий” выполняет следующие действия:
упорядочить таблицу свободных областей в порядке убывания размеров областей;
поместить информацию в первый встретившийся участок свободной памяти размером не менее требуемого.
Строгих доказательств преимущества той или иной стратегии перед остальными не существует, так что их применение в операционных системах основано на интуитивных аргументах разработчиков ОС.
4.3. Организация виртуальной памяти
4.3.1. Основные концепции виртуальной памяти
Термин виртуальная память обычно ассоциируется с возможностью адресовать пространство памяти, гораздо большее, чем емкость первичной (реальной, физической) памяти конкретной вычислительной машины. Концепция виртуальной памяти впервые была реализована в машине, созданной в 1960 г. в Манчестерском университете (Англия). Однако широкое распространение системы виртуальной памяти получили лишь в ЭВМ четвертого и последующих поколений.
Существует два наиболее известных способа реализации виртуальной памяти - страничная и сегментная. Применяется также их комбинация - странично-сегментная организация виртуальной памяти.
Все системы виртуальной памяти характеризуются тем, что адреса, формируемые выполняемыми программами, не обязательно совпадают с адресами первичной памяти. Виртуальные адреса, как правило, представляют гораздо большее множество адресов, чем имеется в первичной памяти.
Суть концепции виртуальной памяти заключается в том, что адреса, к которым обращается выполняющийся процесс, отделяются от адресов, реально существующих в первичной памяти.
Адреса, на которые делает ссылки выполняющийся процесс, называются виртуальными адресами.
Адреса, которые реально существуют в первичной памяти, называются реальными (физическими) адресами.
Диапазон виртуальных адресов, к которым может обращаться выполняющийся процесс, называется пространством виртуальных адресов V этого процесса.
Диапазон реальных адресов, существующих в конкретной вычислительной машине, называется пространством реальных адресов R этой ЭВМ.
Несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной памятью. Для установления соответствия между виртуальными и реальными адресами разработаны механизмы динамического преобразования адресов ДПА (или ДАТ - от англ.Dynamics Adress Transformation), обеспечивающие преобразование виртуальных адресов в реальные во время выполнения процесса. Все подобные системы обладают общим свойством (см.рис.4.6) - смежные адреса виртуального адресного пространства процесса не обязательно будут смежными в реальной памяти.
Это свойство называют “искусственной смежностью”. Тем самым пользователь освобождается от необходимости рассматривать физическую память с ее уникальными характеристиками.
Виртуальная память строится, как правило, по двухуровневой схеме (см.рис.4.7).
Первый уровень - это реальная память, в которой находятся выполняемые процессы и в которой должны размещаться данные, к которым обращаются эти процессы.
Второй уровень - это внешняя память большой емкости, например, накопители на магнитных дисках, способные хранить программы и данные, которые не могут все сразу уместиться в реальной памяти из-за ограниченности ее объема. Память второго уровня называют вторичной или внешней.
В мультипрограммных режимах реальная память разделяется между многими процессами. Поскольку каждый процесс может иметь гораздо большее пространство виртуальных адресов, чем реальная память, то в текущий момент времени в реальной памяти имеется возможность держать лишь небольшую часть программных кодов и данных каждого процесса, причем даже эти небольшие части кодов и данных не обязательно будут размещаться сплошным массивом реальной памяти (свойство “искусственной смежности”).
Механизм динамического преобразования адресов ведет учет того, какие ячейки виртуальной памяти в данный момент находятся в реальной памяти и где именно они размещаются. Это осуществляется с помощью таблиц отображения, ведущихся механизмом ДПА.
Информация, перемещаемая из виртуальной памяти в реальную, механизмом ДПА группируется в блоки, и система следит за тем, в каких местах реальной памяти размещаются различные блоки виртуальной памяти. Размер блока влияет на то, какую долю реальной памяти ДПА будет использовать непроизводительно, для своих целей.
Если блоки имеют одинаковый размер, то они называются страницами, а соответствующая организация виртуальной памяти называется страничной. Если блоки могут быть различных размеров, то они называются сегментами, а соответствующая организация виртуальной памяти называется сегментной. В некоторых системах оба подхода комбинируются, т.е. сегменты реализуются как объекты переменных размеров, формируемые из страниц фиксированного размера. Такая организация виртуальной памяти называется либо сегментно-страничной, либо странично-сегментной.
Адреса в системе поблочного отображения являются двухкомпонентными (двумерными). Чтобы обратиться к конкретному элементу данных, программа указывает блок, в котором расположен этот элемент, и смещение элемента относительно начала блока (см.рис.4.8). Виртуальный адрес n указывает при помощи упорядоченной пары (b, d), где b- номер блока, в котором размещается соответствующий элемент данных, а d - смещение относительно начального адреса этого блока.
Преобразование адреса виртуальной памяти n =(b, d) в адрес реальной памяти r осуществляется следующим образом (см.рис.4.9). Каждый процесс имеет собственную таблицу отображения блоков, которую операционная система ведет в реальной памяти. Реальный адрес a этой таблицы загружается в специальный регистр центрального процессора, называемый регистром начального адреса таблицы отображения блоков процесса.
Таблицы отображения блоков содержат по одной строке для каждого блока процесса, причем эти блоки идут последовательно: сначала блок 0, затем блок 1 и т.д. Номер блока b суммируется с начальным адресом а таблицы, образуя реальный адрес строки таблицы для блока b. Найденная строка содержит реальный адрес b начала блока b в реальной памяти. К этому начальному адресу b прибавляется смещение d, так что образуется искомый реальный адрес r=b’+d.
Все методы поблочного отображения, применяемые в системах с сегментной, страничной и комбинированной странично-сегментной организациями, подобны схеме отображения, показанной на рис. 4.9, называемой схемой прямого отображения.
