- •1.Состав системного программного обеспечения.
- •1.1.Операционная система (ос) как посредник между уровнем пользователя и аппаратурой эвм.
- •1.2.Функции операционной системы
- •1.3.Классификация операционных систем
- •2.Структура операционной системы
- •2.1.Ядро и вспомогательные модули ос. Ядро в привилегированном режиме
- •2.2.Многослойная структура ос
- •2.3.Аппаратная зависимость и переносимость ос
- •2.4.Типовые средства аппаратной поддержки ос
- •3.Организация вычислительных процессов.
- •3.1.Понятия вычислительного процесса и ресурса.
- •3.2.Понятие системы программирования.
- •3.3. Системы интерактивной отладки
- •3.4.Принципы трансляции программ
- •3.5.Особенности построения интерпретаторов
- •3.6.Лексический и синтаксический анализ и генерация кода.
- •3.7.Загрузчик.
- •3.8.Жизненный цикл программы.
- •3.9.Система исполнения программы (run-time system).
- •4.Процессы и потоки
- •4.1.Понятия «процесс» и «поток»
- •4.2.Создание процессов и потоков
- •4.3.Планирование и диспетчеризация потоков
- •4.4.Состояния потока
- •4.5.Вытесняющие и невытесняющие алгоритмы планирования
- •4.6.Алгоритмы планирования, основанные на квантовании
- •4.7.Алгоритмы планирования, основанные на приоритетах
- •4.8.Смешанные алгоритмы планирования
- •4.9.Мультипрограммирование на основе прерываний
- •4.10.Назначение и типы прерываний
- •4.11.Механизм прерываний
- •4.12.Диспетчеризация и приоритезация прерываний в ос
- •4.13.Синхронизация процессов и потоков. Цели и средства синхронизации
- •4.14.Необходимость синхронизации и гонки
- •4.15.Критическая секция. Блокирующие переменные. Семафоры. Тупики
- •4.16.Средства коммуникации процессов
- •5.Управление памятью
- •5.1.Функции ос по управлению памятью
- •5.2.Типы адресов
- •5.3.Алгоритмы распределения памяти
- •5.4.Механизмы реализации виртуальной памяти
- •5.5.Страничное распределение
- •5.6.Сегментное распределение
- •5.7.Сегментно-страничное распределение
- •5.8.Кэширование данных. Иерархия запоминающих устройств
- •5.10.Проблема согласования данных
- •5.11.Способы отображения основной памяти на кэш
- •6.Управление устройствами ввода-вывода и файлами
- •6.1.Задачи ос по управлению файлами и устройствами
- •6.2.Многослойная модель подсистемы ввода-вывода
- •6.3. Менеджер ввода-вывода
- •6.4.Многоуровневые драйверы
- •6.5.Специальные файлы
- •6.6.Цели и задачи файловой системы
- •6.7.Типы файлов. Иерархическая структура файловой системы
- •6.8.Имена файлов. Атрибуты файлов. Логическая организация файла
- •6.9.Физическая организация и адресация файла
- •6.10.Файловые операции. Способы организации файловых операций.
- •6.11.Стандартные файлы ввода и вывода, перенаправление вывода
- •6.12.Контроль доступа к файлам. Механизм контроля доступа и защиты от сбоев
6.5.Специальные файлы
В унификацию драйверов большой вклад внесла операционная система UNIX. В этой системе все драйверы были разделены на два больших класса: блок-ориентированные (block-oriented) драйверы и байт-ориентированные (character-oriented) драйверы. Например, драйверы графических устройств и драйверы сетевых устройств относятся к классу байт-ориентированных. Блок-ориентированные драйверы управляют устройствами прямого доступа, которые хранят информацию в блоках фиксированного размера, каждый из которых имеет собственный адрес. Самое распространенное внешнее устройство прямого доступа диск. Адресуемость блоков приводит к тому, что для устройств прямого доступа появляется возможность кэширования данных в оперативной памяти, и это обстоятельство значительно влияет на общую организацию ввода-вывода для блок-ориентированных драйверов.
Устройства, с которыми работают байт-ориентированные драйверы, не адресуемы и не позволяют производить операцию поиска данных, они генерируют или потребляют последовательности байт. Примерами таких устройств, которые также называют устройствами последовательного до-ступа, служат терминалы, строчные принтеры, сетевые адаптеры.
Блок- или байт-ориентированность является характеристикой как самого устройства, так и драйвера. Очевидно, что если устройство не поддерживает обмен адресуемыми блоками данных, а позволяет записывать или считывать последовательность байт, то и устройство, и его драйвер можно назвать байт-ориентированными. Для байт-ориентированного устройства невозможно разработать блок-ориентированный драйвер.
Устройство прямого доступа с блочной адресацией является блок-ориентированным, и для управления им естественно использовать блок-ориентированный драйвер. Однако блок-ориентированным устройством можно управлять и с помощью байт-ориентированного драйвера. Так, диск можно рассматривать не только как набор блоков, но и как набор байт, первый из которых начинает первый блок диска, а последний завершает последний блок. Физический обмен с контроллером устройства по-прежнему осуществляется блоками, но байт-ориентированный драйвер устройства будет преобразовывать блоки в последовательность байт. Для устройств прямого доступа часто разрабатывают пару драйверов, чтобы к устройству можно было обращаться и по байт-ориентированному, и по блок-ориентированному интерфейсам в зависимости от потребностей.
Операционная система UNIX в свое время сделала еще один важный шаг по унификации операций и структуризации программного обеспечения ввода-вывода. В ОС UNIX все устройства рассматриваются как некоторые виртуальные (специальные) файлы, что дает возможность использовать общий набор базовых операций ввода-вывода для любых устройств независимо от их специфики.
Специальный файл всегда связан с некоторым устройством ввода-вывода и представляет его для остальной части операционной системы и прикладных процессов в виде неструктурированного набора байт. Интерфейс взаимодействия со специальным файлом организован так же, как и с обычным. Его можно открывать, считывать из него определенное количество байт или же записывать в него определенное количество байт, а после завершения операции закрывать.
Очевидно, что представление устройства в виде файла и использование для управления устройством файловых системных вызовов во многих случаях не позволяет выполнять только достаточно простые операции.
Традиционно специальные файлы помещаются в каталог /dev, хотя ничто не мешает создать их в любом каталоге файловой системы.
