- •Оглавление
 - •7.1. Основные понятия 37
 - •8.1. Основные понятия 47
 - •14.1. Основные понятия 77
 - •Введение
 - •Раздел 1. Основные сведения об операционных системах Тема 1. Функции и классификация операционных систем
 - •1.1. Функции ос
 - •1.1. История ос
 - •1.3. Классификация ос
 - •По назначению
 - •По режиму обработки задач
 - •По способу взаимодействия с пользователем
 - •По принципу построения
 - •Вопросы для самоконтроля
 - •Тема 2. Структура операционных систем. Системные вызовы
 - •2.1. Структура ос
 - •Монолитная структура (структура макроядра)
 - •Иерархическая структура (многослойное ядро)
 - •Структура микроядра
 - •2.2. Выполнение системных вызовов
 - •2.3. Понятие операционной и программной среды
 - •Вопросы для самоконтроля
 - •Раздел 2. Процессы и потоки Тема 3. Процессы
 - •3.1. Основные сведения о процессах
 - •Создание процессов
 - •Завершение процессов
 - •Иерархия процессов
 - •3.2. Модели процесса Модель с двумя состояниями
 - •Модель с пятью состояниями
 - •3.3. Описание процессов
 - •3.4. Управление процессами Создание процессов
 - •Переключение процессов
 - •3.5. Выполнение кода ос по отношению к процессам
 - •Ядро вне процессов (автономное ядро)
 - •Ядро в составе пользовательских процессов
 - •Ос на основе процессов
 - •Вопросы для самоконтроля
 - •Тема 4. Системные вызовы управления процессами в ос unix
 - •4.1. Создание процесса
 - •4.2. Завершение процесса
 - •4.3. Изменение образа памяти процесса
 - •4.4. Синхронизация между родительским и дочерним процессами
 - •4.5. Состояние "зомби"
 - •Вопросы для самоконтроля
 - •Тема 5. Сигналы в ос unix
 - •5.1. Назначение сигналов
 - •5.2. Обработка сигналов
 - •5.3. Посылка сигнала процессу
 - •Вопросы для самоконтроля
 - •Тема 6. Потоки
 - •6.1. Основные понятия
 - •6.2. Основные операции с потоками
 - •6.3. Способы реализации потоков в пространстве пользователя
 - •В пространстве ядра
 - •Смешанная реализация
 - •Вопросы для самоконтроля
 - •Тема 7. Взаимоблокировки
 - •7.1. Основные понятия
 - •Типы доступа к ресурсу
 - •Условия возникновения взаимоблокировок
 - •7.2. Моделирование взаимоблокировок
 - •7.3. Обнаружение взаимоблокировок Обнаружение взаимоблокировок при наличии одного ресурса каждого типа
 - •Обнаружение взаимоблокировок при наличии нескольких ресурсов каждого типа
 - •7.4. Избежание взаимоблокировок Безопасные и небезопасные состояния
 - •Алгоритм банкира для одного вида ресурса
 - •Алгоритм банкира для нескольких видов ресурсов
 - •Вопросы для самоконтроля
 - •Раздел 3. Взаимодействие процессов Тема 8. Проблема взаимного исключения и способы ее решения
 - •8.1. Основные понятия
 - •8.2. Аппаратные способы достижения взаимного исключения Запрещение прерываний
 - •Специальные команды, выполняющиеся атомарно
 - •8.3. Программные способы достижения взаимного исключения Переменные блокировки.
 - •Алгоритм Деккера
 - •Алгоритм Петерсона
 - •Вопросы для самоконтроля
 - •Тема 9. Примитивы синхронизации
 - •9.1. Семафоры Определение семафора
 - •Применение семафоров
 - •9.2. Мьютексы
 - •9.3. Мониторы
 - •Структура монитора
 - •Вопросы для самоконтроля
 - •Тема 10. Классические проблемы межпроцессного взаимодействия
 - •10.1. Проблема производителя и потребителя
 - •10.2. Задача о читателях и писателях
 - •10.3. Задача об обедающих философах
 - •10.4. Задача о спящем парикмахере
 - •10.5. Задача о железнодорожном перегоне
 - •Вопросы для самоконтроля
 - •Тема 11. Межпроцессное взаимодействие в ос unix
 - •11.1. Неименованные каналы
 - •Синхронизирующие свойства неименованного канала
 - •Системные вызовы для работы с неименованными каналами
 - •Шаги в установлении связи через неименованный канал
 - •Ограничения неименованных каналов
 - •11.2. Именованные каналы
 - •Использование именованных каналов
 - •Синхронизирующие свойства именованных каналов
 - •Системные вызовы для работы с именованными каналами
 - •11.3. Очереди сообщений
 - •11.4. Разделяемая память
 - •Вопросы для самоконтроля
 - •Тема 12. Передача сообщений
 - •12.1. Характеристика систем передачи сообщений
 - •12.2. Модель клиент-сервер
 - •Вопросы для самоконтроля
 - •Тема 13. Api сокетов ос unix
 - •13.1. Межпроцессное взаимодействие при помощи сокетов
 - •13.2. Системные вызовы работы с сокетами в ос unix Структура адреса сокета
 - •Получить дескриптор сокета (создать сокет)
 - •Указать адрес локальной оконечной точки
 - •Перевод сокета в пассивный режим
 - •Принять соединение с сокетом
 - •Установить соединение с сервером.
 - •Чтение данных из сокета и запись данных в сокет
 - •Операции клиента и сервера
 - •14.2. Критерии краткосрочного планирования.
 - •14.3. Стратегии краткосрочного планирования. Первым поступил – первым обслужен
 - •Кратчайшая задача – первая
 - •Наименьшее оставшееся время выполнения
 - •Циклическое планирование
 - •Приоритетное планирование
 - •Вопросы для самоконтроля
 - •Раздел 5. Управление памятью Тема 15. Технологии распределения памяти
 - •15.1. Фиксированное распределение
 - •15.2. Динамическое распределение
 - •15.3. Система двойников
 - •15.4. Простая страничная организация
 - •15.5. Простая сегментная организация
 - •Вопросы для самоконтроля
 - •Тема 16. Виртуальная память
 - •16.1. Предпосылки для организации виртуальной памяти
 - •16.2. Страничная организация виртуальной памяти
 - •Структура таблицы страниц
 - •16.3. Сегментация
 - •16.4. Комбинация сегментации и страничной организации
 - •16.5. Алгоритмы управления виртуальной памятью
 - •Стратегия выборки
 - •Стратегия размещения.
 - •Стратегия замещения
 - •Вопросы для самоконтроля
 - •Раздел 6. Ввод-вывод и файловая система Тема 17. Ввод-вывод
 - •17.1. Принципы программного обеспечения ввода-вывода
 - •Способы осуществления ввода-вывода
 - •17.2. Программные уровни ввода-вывода
 - •Обработчики прерываний
 - •Драйверы устройств
 - •Независимое от устройств программное обеспечение ввода-вывода
 - •Программное обеспечение ввода-вывода пространства пользователя
 - •Вопросы для самоконтроля
 - •Тема 18. Физическая организация файловой системы
 - •18.1. Цели и задачи файловой системы
 - •18.2. Устройство диска
 - •18.3. Физическая организация и адресация файла
 - •Вопросы для самоконтроля
 - •Тема 19. Логическая организация файловой системы
 - •19.1. Типы файлов
 - •19.2. Иерархическая структура файловой системы
 - •Имена файлов
 - •Монтирование
 - •19.3. Атрибуты файлов
 - •Вопросы для самоконтроля
 - •Литература
 - •Перечень сокращений
 
18.3. Физическая организация и адресация файла
Физическая организация файла – способ размещения файла на диске. Основными критериями эффективности физической организации файлов являются:
скорость доступа к данным;
объем адресной информации файла;
степень фрагментированности дискового пространства;
максимально возможный размер файла.
Непрерывное размещение – простейший вариант физической организации, при котором файлу предоставляется последовательность кластеров диска, образующих непрерывный участок дисковой памяти. Достоинство: высокая скорость доступа, так как затраты на поиск и считывание кластеров файла минимальны; минимальный объем адресной информации; неограниченный максимально возможный размер файла. Однако реализовать эту схему сложно из-за того, что заранее неизвестен размер файла. Еще более серьезной проблемой является фрагментация. Спустя некоторое время после создания файловой системы в результате выполнения многочисленных операций создания и удаления файлов пространство диска неминуемо превращается в «лоскутное одеяло», включающее большое число свободных областей небольшого размера.
Размещение файла в виде связанного списка кластеров. В начале каждого кластера содержится указатель на следующий кластер. В отличие от предыдущего способа, каждый кластер может быть присоединен к цепочке кластеров какого-либо файла, следовательно, фрагментация на уровне кластеров отсутствует. Файл может изменять свой размер во время своего существования, наращивая число кластеров. Недостатки – сложность реализации доступа к произвольному месту файла; количество данных файла, содержащихся в одном кластере, не равно степени двойки (одно слово израсходовано на номер следующего кластера), а многие программы читают данные кластерами, размер которых равен степени двойки.
Использование связанного списка индексов. Модификация предыдущего способа. Файлу также выделяется память в виде связанного списка кластеров. Номер первого кластера запоминается в записи каталога, где хранятся характеристики этого файла. Остальная адресная информация отделена от кластеров файла. С каждым кластером диска связывается некоторый элемент – индекс. Индексы располагаются в отдельной области диска – в MS-DOS это таблица FAT (File Allocation Table), занимающая один кластер. Когда память свободна, все индексы имеют нулевое значение. Если некоторый кластер N назначен некоторому файлу, то индекс этого кластера становится равным либо номеру М следующего кластера данного файла, либо принимает специальное значение, являющееся признаком того, что этот кластер является для файла последним. Индекс же предыдущего кластера файла принимает значение N, указывая на вновь назначенный кластер. При такой физической организации сохраняются все достоинства предыдущего способа: минимальность адресной информации, отсутствие фрагментации, отсутствие проблем при изменении размера. Дополнительные преимущества: 1) высокая скорость доступа (для доступа к произвольному кластеру файла не требуется последовательно считывать его кластеры, достаточно прочитать только секторы диска, содержащие таблицу индексов, отсчитать нужное количество кластеров файла по цепочке и определить номер нужного кластера). 2) Данные файла заполняют кластер целиком, а значит, имеют объем, равный степени двойки. Недостаток: Вся таблица должна постоянно находиться в ОП.
Перечисление номеров кластеров (или метод i-узлов), занимаемых этим файлом. Этот перечень и служит адресом файла. С каждым файлом связана структура данных i-узел, содержащая также атрибуты файла. Недостаток: длина адреса зависит от размера файла и для большого файла может составить значительную величину. Достоинства: высокая скорость доступа к произвольному кластеру файла, так как здесь применяется прямая адресация, которая исключает просмотр цепочки указателей при поиске адреса произвольного кластера файла; фрагментация на уровне кластеров отсутствует; каждый i-узел должен находиться в ОП только тогда, когда соответствующий ему файл открыт.
Модифицированный подход перечисления номеров кластеров используется в традиционных файловых системах ОС UNIX s5 и ufs и в наиболее распространенных файловых системах ОС Linux – ext2fs, ext3fs (последняя отличается от первой только наличием журналирования). Для сокращения объема адресной информации прямой способ адресации сочетается с косвенным.
В стандартной для UNIX ФС ufs используется следующая схема адресации кластеров файла (рис. 18.1). Для хранения адреса файла выделено 15 полей, каждое из которых состоит из 4 байт. Если размер файла меньше или равен 12 кластерам, то номера этих кластеров непосредственно перечисляются в первых двенадцати полях адреса.
Если размер файла превышает 12 кластеров, то следующее 13-е поле содержит адрес кластера, в котором могут быть расположены номера следующих кластеров файла. Если размер файла превышает 12+2048 = 2060 кластеров, то используется 14-е поле, в котором находится номер кластера, содержащего 2048 номеров кластеров, каждый из которых хранят 2048 номеров кластеров данных файла. Здесь применяется уже двойная косвенная адресация. И, наконец, если файл включает более 12+2048+2048 =4 196 364 кластеров, то используется последнее 15-е поле для тройной косвенной адресации.
Метод перечисления адресов кластеров файла задействован и в файловой системе NTFS, используемой в ОС Windows NT/2000. Здесь он дополнен достаточно естественным приемом, сокращающим объем адресной информации: адресуются не кластеры файла, а непрерывные области, состоящие из смежных кластеров диска. Каждая такая область, называемая группой (в ext2fs), или экстентом (extent), описывается с помощью двух чисел: начального номера кластера и количества кластеров в отрезке. Так как для сокращения времени операции обмена ОС старается разместить файл в последовательных кластерах диска, то в большинстве случаев количество последовательных областей файла будет меньше количества кластеров файла и объем служебной адресной информации в NTFS сокращается по сравнению со схемой адресации файловых систем ufs/s5.
