- •Введение
- •Понятие операционной системы. Типы операционных систем
- •Функции операционной системы
- •Структура операционной системы. Ос ms dos
- •Файлы и каталоги на дисках
- •Драйверы устройств
- •Базовая система ввода-вывода (bios)
- •Загрузчик операционной системы
- •Ядро ms dos
- •Командный процессор dos
- •Внешние команды dos
- •Файловая структура диска
- •Стартовый сектор
- •Каталоги
- •Область данных
- •Операционные системы Windows
- •Выбор платформы Windows
- •Термины
- •Архитектура Windows Режимы выполнения программного кода
- •Многозадачность
- •Управление памятью в Windows
- •Выполнение приложений
- •Интерфейс прикладного программирования Win32
- •Реестр Windows
- •Операционная система unix
- •Ядро и процессы unix
- •Диспетчер unix
- •Процессы unix
- •Дескриптор и контекст процесса
- •Иерархия процессов
- •Идентификаторы процесса
- •Группы процессов
- •Взаимодействие процессов
- •Процессы-«демоны»
- •Межпроцессные коммуникации unix
- •Сигналы
- •Сигналы unix по мере возрастания их значений:
- •Семафоры
- •Программные каналы (Pipes)
- •Очереди сообщений
- •Разделяемая память
- •Многопользовательская защита в unix
- •Идентификаторы пользователя и группы
- •Код защиты файла
- •Привилегированный пользователь
- •Эффективные и реальные идентификаторы
- •Свопинг и пейджинг в unix
- •Буфер кеш-памяти
- •Управление вводом/выводом
- •Специальные файлы
- •Взаимодействие драйверов с программной и аппаратной средой
- •Файловая система unix
- •Основные системные каталоги
- •Корневой каталог /
- •Каталог /var
- •Каталог /etc
- •Каталог /usr
- •Каталог /home (/export/home)
- •Каталог/opt (/opti, /opt2, ... /optn)
- •Команды управления swap
- •Команда mkfile
- •Специальные файлы
- •Класс устройства
- •Тип и номер
- •Связь физической и логической структур
- •Создание и монтирование файловой системы
- •Дисковые устройства в unix
- •Внутренняя структура файловой системы Распределение дискового пространства
- •Индексные дескрипторы
- •Системные вызовы unix для работы с файлами
- •Стандартные библиотечные функции ввода/вывода
- •Поточные функции ввода/вывода
- •Литература
- •Оглавление
-
Управление вводом/выводом
Система управления вводом/выводом в UNIX базируется на концепции драйверов, так же как это было в системах предшественниках или ровесниках UNIX.
Драйвер устройства - это программа, которая обеспечивает связь ядра с периферийными устройствами, такими, как накопители на магнитных дисках и лентах, терминалы, принтеры и сетевые устройства. Существует специальное понятие - "тип устройства", этот тип обычно однозначно соответствует драйверу. Один драйвер управляет множеством физических устройств данного типа. Например, один терминальный драйвер может управлять всеми терминалами, подключенными к системе. Драйвер различает устройства, которыми управляет: выходные данные, предназначенные для одного терминала, не должны быть посланы на другой.
Система поддерживает "псевдоустройства", с каждым из которых не связано ни одно конкретное физическое устройство. В UNIX всё можно трактовать как устройство, даже физическую память, например /dev/mem, хотя память не является никаким устройством и не управляется драйвером. Тем не менее, используя это псевдоустройство, можно обращаться к информационным структурам ядра в физической памяти.
Драйверы устройств являются частью ядра, а не пользовательскими процессами. Однако доступ к драйверу возможен как из ядра, так и из области памяти, выделенной пользовательскому процессу. Доступ к устройствам на пользовательском уровне обеспечивается посредством специальных файлов устройств, находящихся в каталоге /dev. Ядро преобразует операции, выполняемые над этими специальными файлами, в функции обращения к коду драйвера.
-
Специальные файлы
В UNIX помимо обычных файлов и каталогов существуют специальные файлы. Их можно использовать для обозначения физических устройств компьютера и псевдоустройств. Любую последовательность байтов в UNIX можно рассматривать как файл.
1. Можно вводить и выводить информацию в файл /dev/console, соответствующий консольному терминалу. Все, что выводится в файл /dev/console, будет появляться на экране терминала, а все, что вводится с клавиатуры, вы можете узнать только в результате чтения этого файла.
2. Для каждого терминала UNIX-машины существует соответствующий ему файл. Обычным терминалам соответствуют файлы, которые могут называться: /dev/contty01 или /dev/tty02 или /dev/ttyFD02 или /dev/ttySO и т. д.
3. Псевдотерминалам, которые эмулируются, когда пользователь входит в систему по сети с помощью команд типа telnet, rlogin соответствуют специальные файлы /dev/pty*, или /dev/pty/*. По команде who, или who ami, можно узнать, как называется ваш собственный терминал.
4. Существуют специальные файлы, соответствующие жесткому диску в целом (/dev/rdsk/c0t3d0s2) или его разделам (/dev/dsk/c0t3d0s). В UNIX существует понятие дискового разделения, имеющее место внутри UNIX Partition, который можно увидеть, выполнив программу FDISK (даже из MS DOS, если UNIX находится на той же самой машине). Однако из FDISK никогда нельзя увидеть, как внутри себя разбит UNIX Partition. В сущности, его можно разбить на сколько угодно частей и каждой части дать соответствующее имя. На каждой части можно смонтировать отдельную файловую систему или использовать ее как выделенное дисковое пространство для специальных целей (space) - для свопинга или для систем управления базами данных типа Informix. Каждой именованной части на дисковом разделена внутри UNIX Partition будет соответствовать специальный файл. Если читать из этих файлов, то можно получить все байты в том порядке как они расположены на жестком диске, с нулевого цилиндра и до последнего. А если в этот файл что-нибудь записать, то теряется вся дисковая разметка и система портится.
5. Помимо специальных файлов, описывающих конкретные устройства (терминалы, диски и т. д.), в UNIX имеются и другие специальные файлы такие как:
/dev/mem - файл, изображающий оперативную память;
/dev/zero - из этого файла можно считать любое количество нулевых байтов;
/dev/audio - если скопировать в него файл звукового формата (*.wav, *.au, *.mid), то он будет озвучен динамиком компьютера, а команда cat /dev/audio позволит принимать все, что произносится микрофон.
Специальные файлы бывают двух типов:
-
блочные - запись и чтение допускаются только блоками. Например, разделы дисков с файловой системой.
-
символьные (бесструктурные) - можно читать и писать отдельными байтами. К ним относятся терминалы, магнитные ленты, неформатированные диски и разделы дисков без файловой системы.
Понятия "размер" у специального файла не существует. Ведь этот файл обозначает физическое устройство. Фактически это ссылка на соответствующий драйвер. Вместо длины команда Is показывает для таких файлов два числа: порядковый номер драйвера устройства и внутренний номер устройства в таблице обслуживающего его драйвера.