- •4 Курс, 1 семестр
- •Оглавление
- •1 Введение в ос unix
- •1.1 История создания
- •1.2 Базовые концепции
- •1.3 Архитектура unix
- •1.4 Пользователи системы
- •1.5 Пользовательская среда Unix.
- •2 Файловая подсистема
- •2.1 Понятие
- •2.2 Логическая структура файловой системы
- •2.3 Имена файлов в ос unix
- •2.4 Типы файлов
- •2.5 Права доступа к файлам
- •2.6 Физическое размещение файловой системы
- •2.7 Особенности размещения файловой системы sVfs
- •2.8 Особенности размещения файловой системы ffs (ufs)
- •2.9 Монтирование файловых систем
- •2.10 Восстановление файловой системы
- •2.11 Типы файловых систем unix
- •3 Подсистема управления процессами
- •3.1 Понятие процесса
- •3.2 Логическая организация процессов
- •3.3 Жизненный цикл процесса
- •3.4 Реализация процессов
- •3.4.1 Состав процесса
- •3.4.2 Структуры управления процессом
- •3.4.3 Файловая система /proc
- •3.5 Нити (потоки)
- •Причины появления нитей
- •Типы нитей
- •3) Прикладные нити. Существует возможности поддержки нитей полностью на прикладном уровне, при этом ядру об их существовании ничего не известно.
- •3.5 Планирование
- •3.5.1 Задачи планировщика
- •3.5.2 Приоритеты процессов
- •3.5.3 Реализация планировщика
- •3.5.4 Расчет приоритета
- •3.5.5 Особенности планирования в Linux
- •3.6 Взаимодействие между процессами (Interprocess Communication, ipc)
- •3.6.1 Введение
- •3.6.2 Взаимодействие родственных процессов
- •3.6.3 Взаимодействие произвольных процессов
- •Разделяемая память.
- •Передача сообщений.
- •Семафоры.
- •3.6.4 Межпроцессное взаимодействие с помощью файловой системы
- •4 Управление памятью
- •4.1 Понятие виртуальной памяти
- •4.2 Свопинг
- •4.3 Страничное замещение
- •4.4 Стратегия замещения страниц
- •5 Подсистема ввода-вывода
- •5.1 Основные задачи
- •5.2 Типы устройств ввода-вывода в ос
- •5.3 Общая схема
- •5.4 Драйвера
- •5.5 Буферизация
- •5.6 Поддержка операций ввода-вывода
- •6 Unix в сетях
- •6.1 Конфигурация tcp/ip
- •6.2 Основные сетевые утилиты
- •6.3 Основные сетевые интерфейсы
- •6.4 Доступ к сетевым ресурсам
- •6.5 Сетевые службы Unix
5 Подсистема ввода-вывода
5.1 Основные задачи
Подсистема ввода-вывода обеспечивает обмен данными между приложениями и периферийными устройствами компьютера.
Клиентами этой подсистемы являются
пользователи
приложения
компоненты самой ОС, которым требуется получение системных данных или их вывод (например подсистеме управления процессами при смене активного процесса необходимо записать на диск контекст приостанавливаемого процесса и считать с диска контекст активизируемого процесса).
Подсистема ввода-вывода (Input-Output Subsystem) должна решать ряд задач:
организация параллельной работы устройств ввода-вывода и процессора;
согласование скоростей обмена и кэширование данных;
разделение устройств и данных между процессами;
обеспечение удобного логического интерфейса между устройствами и остальной частью системы;
поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера;
динамическая загрузка и выгрузка драйверов;
поддержка нескольких файловых систем;
поддержка синхронных и асинхронных операций ввода-вывода.
При выполнении задач используется перехват прерываний и обработка ошибок.
5.2 Типы устройств ввода-вывода в ос
Все устройства, обслуживаемые ОС UNIX, могут быть классифицированы на два типа - байт-ориентированные устройства и блок-ориентированные устройства. Байт-ориентированное устройство - это то устройство, обмен с которым осуществляется по одному байту (например, клавиатура). Блок-ориентированное устройство - это устройство, с которым обмен может осуществляться блоками.
При этом, одно и то же устройство может рассматриваться и как байт-ориентированное, и как блок-ориентированное (пример - оперативная память).
Каждое устройство имеет соответствующий ему файл. Содержимого у файлов устройств нет, а есть только ИД и имя. ИД содержит
1. информацию о типе ассоциированного устройства
2. поле, определяющее номер драйвера, связанного с этим устройством (у одного устройства может быть несколько драйверов, но не наоборот).
3. некоторый цифровой параметр, который может быть передан драйверу в качестве уточняющего информацию о работе.
В системе имеются две таблицы: для блок- и для байт-ориентированных устройств. Второе поле ИД есть номер в таблице драйверов соответствующего класса устройств.
5.3 Общая схема
Подсистемы ввода-вывода имеет иерархическую структуру.
Обобщенная структура подсистемы ввода-вывода:
Рисунок 4.9 – Обобщенная структура подсистемы ввода-вывода
При этом
нижние слои включают индивидуальные драйверы, написанные для конкретных физических устройств,
верхние слои управляют этими устройствами и предоставляют общий интерфейс для устройств, обладающих общими характеристиками (например для принтеров определенного производителя или для всех матричных принтеров и т. п.)
Программное обеспечение ввода-вывода делится не только на горизонтальные слои, но и на вертикальные. Это объясняется тем, что для разнообразных внешних устройств трудно обеспечить единообразие в разбиении функций управления на слои.
Для согласования работы слоев предусмотрен менеджер ввода-вывода
Его организующие функции распределены по всем уровням, образуя оболочку.
Задачи такого менеджера:
Верхний слой менеджера составляют системные вызовы ввода-вывода, которые принимают от пользовательских процессов запросы на ввод-вывод и переадресуют их соответствующим модулям и драйверам, а также возвращают процессам результаты операций ввода-вывода.
Нижний слой менеджера реализует непосредственное взаимодействие с контроллерами внешних устройств, экранируя драйверы от особенностей аппаратной платформы. Этот слой принимает от драйверов запросы на обмен данными с регистрами контроллеров в некоторой обобщенной форме, а затем преобразует эти запросы в зависящий от аппаратной платформы формат. Диспетчер прерываний, рассмотренный выше, может входить в состав менеджера ввода-вывода или же представлять собой отдельный модуль ядра.
менеджер созданет среды для остальных компонентов подсистемы, облегчающую их взаимодействие друг с другом. Эта задача может быть решена за счет создания некоторого стандартного внутреннего интерфейса взаимодействия модулей ввода-вывода между собой
менеджера ввода-вывода организует взаимодействие модулей ввода-вывода с модулями других подсистем ОС, таких как подсистема управления процессами, виртуальной памятью и другими.
Примерами подобного менеджера является среда STREAMS, существующая во многих версиях операционной системы UNIX.