- •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
3. 6. Микроядерная архитектура
3 .6. 1. Концепция
Микроядерная архитектура является альтернативой классическому способу построения операционной системы. Под классической архитектурой в данном случае понимается рассмотренная выше структурная организация ОС, в соответствии с которой все основные функции операционной системы, составляющие многослойное ядро, выполняются в привилегированном режиме. При этом некоторые вспомогательные функции ОС оформляются в виде приложений и выполняются в пользовательском режиме наряду с обычными пользовательскими программами, становясь системными утилитами или обрабатывающими программами. Каждое приложение пользовательского режима работает в собственном адресном пространстве и защищено тем самым от какого-либо вмешательства других приложений. Код ядра, выполняемый в привилегированном режиме, имеет доступ к областям памяти всех приложений, но сам полностью от них защищен. Приложения обращаются к ядру с запросами на выполнение системных функций.
Суть микроядерной архитектуры состоит в следующем. В привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром (рис. 3. 5. Микроядро защищено от остальных частей ОС и приложений. В состав микроядра обычно входят машинно-зависимые модули, а также модули, выполняющие базовые (но не все) функции ядра по управлению процессами, обработке прерываний, управлению виртуальной памятью, пересылке сообщений и управлению устройствами ввода-вывода, связанные с загрузкой или чтением регистров устройств. Набор функций микроядра обычно соответствует функциям слоя базовых механизмов обычного ядра. Такие функции операционной системы трудно, если не невозможно, выполнить в пространстве пользователя.
Все остальные более высокоуровневые функции ядра оформляются в виде приложений, работающих в пользовательском режиме. Однозначного решения о том, какие из системных функций нужно оставить в привилегированном режиме, а какие перенести в пользовательский, не существует. В общем случае многие менеджеры ресурсов, являющиеся неотъемлемыми частями обычного ядра файловая система, подсистемы управления виртуальной памятью и процессами, менеджер безопасности и т. п., становятся «периферийными» модулями, работающими в пользовательском режиме.
Приложения Утилиты Приложения Утилиты
Серверы ОС
Пользовательский
режим
П
Микроядро
ривилегированный
режим
Ядро
Рис.3. 5. Перенос основного объема функций ядра в пользовательское пространство
Работающие в пользовательском режиме менеджеры ресурсов имеют принципиальные отличия от традиционных утилит и обрабатывающих программ операционной системы, хотя при микроядерной архитектуре все эти программные компоненты также оформлены в виде приложений.
Утилиты и обрабатывающие программы вызываются в основном пользователями. Ситуации, когда одному приложению требуется выполнение функции (процедуры) другого приложения, возникают крайне редко. Поэтому в операционных системах с классической архитектурой отсутствует механизм, с помощью которого одно приложение могло бы вызвать функции другого.
Совсем другая ситуация возникает, когда в форме приложения оформляется часть операционной системы. По определению, основным назначением такого приложения является обслуживание запросов других приложений, например создание процесса, выделение памяти, проверка прав доступа к ресурсу и т. д. Именно поэтому менеджеры ресурсов, вынесенные в пользовательский режим, называются серверами ОС, то есть модулями, основным назначением которых является обслуживание запросов локальных приложений и других модулей ОС. Очевидно, что для реализации микроядерной архитектуры необходимым условием является наличие в операционной системе удобного и эффективного способа вызова процедур одного процесса из другого. Поддержка такого механизма и является одной из главных задач микроядра.
Схематично механизм обращения к функциям ОС, оформленным в виде серверов, выглядит следующим образом (рис. 3. 6). Клиент, которым может быть либо прикладная программа, либо другой компонент ОС, запрашивает выполнение некоторой функции у соответствующего сервера, посылая ему сообщение. Непосредственная передача сообщений между приложениями невозможна, так как их адресные пространства изолированы друг от друга. Микроядро, выполняющееся в привилегированном режиме, имеет доступ к адресным пространствам каждого из этих приложений и поэтому может работать в качестве посредника. Микроядро сначала передает сообщение, содержащее имя и параметры вызываемой процедуры нужному серверу, затем сервер выполняет запрошенную операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения. Таким образом, работа микроядерной операционной системы соответствует известной модели клиент-сервер, в которой роль транспортных средств выполняет микроядро.
Операционные системы, основанные на концепции микроядра, в высокой степени удовлетворяют большинству требований, предъявляемых к современным ОС, обладая переносимостью, расширяемостью, надежностью и создавая хорошие предпосылки для поддержки распределенных приложений. За эти достоинства приходится платить снижением производительности, и это является основным недостатком микроядерной архитектуры.
Рис. 3. 6. Реализация системного вызова в микроядерной архитектуре
