СОДЕРЖАНИЕ
1.2.1 Ос как виртуальная машина
1.2.2 Ос как система управления ресурсами
1.3 Интерфейс прикладного программирования
1.4 Структура операционных систем
1.4.2 Многоуровневая структура ос
1.4.4 Микроядерная архитектура (модель клиент-сервер)
1.4.5 Обобщение сравнения моделей
2.2.3 Преимущества использования потоков
2.2.4 Реализация потоков в пространстве пользователя, ядра и смешанное
2.2.5 Особенности реализации Windows
3.1 Взаимодействие между процессами
3.1.1 Передача информации от одного процесса другому
3.1.4 Взаимное исключение с активным ожиданием
3.1.5 Примитивы взаимодействия процессов
4.1 Основные понятия планирования процессов
4.2 Планирование в системах пакетной обработки
4.3.2 Приоритетное планирование
4.3.3 Методы разделения процессов на группы
4.4 Планирование в системах реального времени
4.4.1 Планирование однородных процессов
4.4.2 Общее планирование реального времени
5.1 Взаимоблокировка процессов
5.2 Моделирование взаимоблокировок
5.3 Методы борьбы с взаимоблокировками
5.3.1 Пренебрежением проблемой в целом (страусовый алгоритм)
5.3.2 Обнаружение и устранение взаимоблокировок
5.3.3 Динамическое избежание взаимоблокировок
5.3.4 Предотвращение четырех условий, необходимых для взаимоблокировок
6.2 Методы без использования внешней памяти
6.2.1 Однозадачная система без подкачки на диск
6.2.2 Распределение памяти с фиксированными разделами.
6.2.3 Распределение памяти динамическими разделами
6.3 Методы с использованием внешней памяти (свопинг и виртуальная память)
7.1 Алгоритмы замещения страниц
7.2.1 Политика распределения памяти
7.2.3 Совместно используемые страницы
7.2.4 Политика очистки страниц
7.3 Особенности реализации в unix
7.4 Особенности реализации в Windows
8.1 Основные понятия сегментации
8.2.1 Сегментация с использованием страниц: multics
8.2.2 Сегментация с использованием страниц: Intel Pentium
8.3 Особенности реализации в unix
9.1 Принципы аппаратуры ввода-вывода
9.1.3 Отображаемый на адресное пространство памяти ввод-вывод
9.1.4 Прямой доступ к памяти (dma - Direct Memory Access)
9.2 Принципы программного обеспечения ввода-вывода
9.2.1 Задачи программного обеспечения ввода-вывода
9.2.3 Управляемый прерываниями ввод-вывод
9.2.4 Ввод-вывод с использованием dma
9.3 Программные уровни и функции ввода-вывода
9.3.3 Независимое от устройств программное обеспечение ввода-вывода
9.3.4 Программное обеспечение ввода-вывода пространства пользователя
9.3.5 Обобщение уровней и функций ввода-вывода
10.1.2 Raid (Redundant Array of Independent Disk - массив независимых дисков с избыточностью)
10.1.3.1 Компакт-диски с возможностью записи cd-r
10.1.3.2 Многократно перезаписываемые компакт-диски cd-rw
10.1.3.3 Универсальный цифровой диск dvd (Digital Versatile Disk)
10.2 Форматирование дисков (программная часть)
10.2.1 Низкоуровневое форматирование
10.2.3 Высокоуровневое форматирование
10.3 Алгоритмы планирования перемещения головок
10.3.1 Алгоритм "первый пришел - первым обслужен" fcfs (First Come, First Served)
10.3.3 Алгоритмы сканирования (scan, c-scan, look, c-look)
10.5 Стабильное запоминающее устройство
10.6.1 Аппаратная часть таймеров
10.6.2 Программное обеспечение таймеров
11.1.7 Файлы, отображаемые на адресное пространство памяти
12.2.3 Связные списки при помощи таблиц в памяти
12.3.1 Реализация длинных имен файлов
12.3.2 Ускорение поиска файлов
12.3.2.1 Использование хэш-таблицы для ускорения поиска файла.
12.3.2.2 Использование кэширования результатов поиска файлов для ускорения поиска файла.
12.4 Совместно используемые файлы
12.5 Организация дискового пространства
12.6 Надежность файловой системы
12.6.2 Непротиворечивость файловой системы
12.7 Производительность файловой системы
13.1.2 Рок-ридж расширения для unix
13.1.3 Joliet расширения для Windows
13.2 Файловая система ms-dos (fat-12,16,32)
13.2.4 Расширение Windows 98 для fat-32
14.1.2 Блокировка данных файла
14.1.3 Создание и работа с файлом
14.4 Сравнительная таблица некоторых современных файловых систем
14.4.1 Архитектура файловой системы nfs
![]()
Сектор диска
На диске могут быть запасные сектора, которые могут быть использованы для замены секторов с дефектами (а они почти всегда есть). За счет этого обеспечивается одинаковая емкость на выходе.
При низкоуровневом форматировании часть полезного объема уменьшается, примерно до 80%.
Перекос цилиндров
Перекос цилиндров - сдвиг 0-го сектора каждой последующей дорожки, относительно предыдущей. служит для увеличения скорости. Головка тратит, какое то время на смену дорожки, и если 0-й сектор будет начинаться в том же месте, что и предыдущий, то головка уже проскочит его, и будет ждать целый круг.

Перекос цилиндров
Перекос цилиндров делают разным в зависимости скоростей вращения и перемещения головок.
Перекос головок - приходится применять, т.к. на переключение с головки на головку тратится время..
Чередование секторов
Если, например, один сектор прочитан, а для второго нет в буфере места, пока данные копируются из буфера в память, второй сектор уже проскочит головку.
Чтобы этого не случилось, применяют чередование секторов.

Чередование секторов
Если копирование очень медленное, может применяться двукратное чередование, или больше.
После низкоуровневого форматирования диск разбивается на разделы, эти разделы воспринимаются ОС как отдельные диски.
Для чего можно использовать разделы:
Отделить системные файлы от пользовательских (например, своп-файлы)
Более эффективно использовать пространство (например, для администрирования).
На разные разделы можно установить разные ОС.
Основные разделы диска:
Первичный (Primary partition) - некоторые ОС могут загружаться только с первичного раздела.
Расширенный (Extended partition) - непосредственно данные не содержит, служит для создания логических дисков (создается, что бы обойти ограничение в 4-ре раздела).
Логический (Logical partition) - может быть любое количество.
Информация о разделах записывается в 0-м секторе 0-го цилиндра, головка 0. И называется таблицей разделов.
Таблица разделов (Partition Table) - содержит информацию о разделах, номер начальных секторов и размеры разделов. На Pentium-компьютерах в таблице есть место только для четырех записей, т.е. может быть только 4 раздела (к логическим это не относится, их может быть не ограниченное количество).
Этот сектор называется главной загрузочной записью.
Главная загрузочная запись MBR (Master Boot Record) - содержит загрузочную программу и таблицу разделов.
Активный раздел - раздел, с которого загружается ОС, может быть и логическим. В одном сеансе загрузки может быть только один активный раздел.

Пример структуры разделов
В Windows разделы будут называться устройствами C:, D:, E: и т.д.
Высокоуровневое форматирование (создание файловой системы) - проводится для каждого раздела в отдельности, и выполняет следующее:
Создает загрузочный сектор (Boot Sector)
Создает список свободных блоков (для UNIX) или таблицу (ы) размещения файлов (FAT - File Allocation Table) (для FAT или NTFS)
Создает корневой каталог
Создает, пустую файловую систему
Указывает, какая файловая система
Помечает дефектные кластеры
Кластеры и блоки - единица хранения информации в файловых системах, файлы записываются на диск, разбитыми на блоки ли кластеры.
При загрузке системы, происходит следующее:
Запускается BIOS
BIOS считывает главную загрузочную запись, и передает ей управление
Загрузочная программа определяет, какой раздел активный
Из этого раздела считывается и запускается загрузочный сектор
Программа загрузочного сектора находит в корневом каталоге определенный файл (загрузочный файл)
Этот файл загружается в память и запускается (ОС начинает загрузку)
Факторы, влияющие на время считывания или записи на диск:
Время поиска (время перемещения головки на нужный цилиндр)
Время переключения головок
Задержка вращения (время, требуемое для поворота нужного сектора под головку)
Время передачи данных
Для большинства дисков самое большое, это время поиска. Поэтому, оптимизируя время поиска можно существенно повысить быстродействие.
Алгоритмы могут быть реализованы в контроллере, в драйверах, в самой ОС.
Рассмотрим пример. Пусть у нас на диске из 28 цилиндров (от 0 до 27) есть следующая очередь запросов:
27, 2, 26, 3, 19, 0
и головки в начальный момент находятся на 1 цилиндре. Тогда положение головок будет меняться следующим образом:

Алгоритм FCFS
Как видно алгоритм не очень эффективный, но простой в реализации.
Для предыдущего примера алгоритм даст следующую последовательность положений головок:

Алгоритм SSF
Как видим, этот алгоритм более эффективен. Но у него есть не достаток, если будут поступать постоянно новые запросы, то головка будет всегда находиться в локальном месте, вероятнее всего в средней части диска, а крайние цилиндры могут быть не обслужены никогда.
SCAN – головки постоянно перемещаются от одного края диска до его другого края, по ходу дела обслуживая все встречающиеся запросы. Просто, но не всегда эффективно.
LOOK - если мы знаем, что обслужили последний попутный запрос в направлении движения головок, то мы можем не доходить до края диска, а сразу изменить направление движения на обратное
C-SCAN - циклическое сканирование. Когда головка достигает одного из краев диска, она без чтения попутных запросов перемещается на 0-й цилиндр, откуда вновь начинает свое движение.
C-LOOK - по аналогии с предыдущим.
Т.к. создать диск без дефектов сложно, а вовремя использования появляются новые дефекты.
Поэтому системе приходится контролировать и исправлять ошибки.
Ошибки могут быть обнаружены на трех уровнях:
На уровне дефектного сектора ECC (используются запасные, делает сам производитель)
Дефектные блоки или кластеры могут обрабатываться контроллером или самой ОС.
Блоки и кластеры не должны содержать дефектные сектора, поэтому система должна уметь помечать дефектные сектора.

Способы замены дефектных кластеров
RAID могут защитить от выхода из строя сектора и даже целые диски, но они не могут защитить от сбоев во время записи (могут быть записаны не верные данные, или не туда).
Стабильное запоминающее устройство - система или корректно записывает данные, или не записывает ничего.
В рассматриваемой модели учитывается следующее:
Запись блока может быть проверена при последующем чтении и изучении ECC.
Правильно записанный сектор может стать дефектным и не читаться (но это происходит редко).
Допускается выход из строя центрального процесса.
Для такой модели можно создать стабильное запоминающее устройство, из пары идентичных дисков.
Для достижения этой цели определены три операции:
Стабильная операция записи состоит из следующих шагов: - запись блока на диск 1 - считывание этой записи для проверки, если обнаружена ошибка, то повторяется запись (и так несколько раз), если запись не удалась, то используется резервный блок. - все тоже повторяется для второго диска
Стабильная операция чтения состоит из следующих шагов: - считывается блок с диска 1 - проверяется на ошибки, если обнаружены считывание повторяется, и так несколько раз. - если все попытки с 1-м диском не удачны, все повторяется для второго
Восстановление от сбоев (например, по питанию) состоит из следующих шагов: - после сбоя программа восстановления сканирует оба диска и сравнивает соответствующие блоки - если у одного обнаружена ошибка, то на место дефектного записывается нормальный блок - если ошибок нет, но блоки не совпадают, то блок с диска 1 пишется поверх диска 2 (на диске 1 всегда более свежий блок)
| 2014 biblioonline ru |