Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS.DOC
Скачиваний:
18
Добавлен:
28.10.2018
Размер:
653.82 Кб
Скачать
  1. Управление вводом/выводом

Система управления вводом/выводом в UNIX базируется на концепции драйверов, так же как это было в системах предшественниках или ровесниках UNIX.

Драйвер устройства - это программа, которая обеспечивает связь ядра с периферийными устройствами, такими, как накопители на магнитных дисках и лентах, терминалы, принтеры и сетевые устройства. Существует специальное понятие - "тип устройства", этот тип обычно однозначно соответствует драйверу. Один драйвер управляет множеством физических устройств данного типа. Например, один терминальный драйвер может управлять всеми терминалами, подключенными к системе. Драйвер различает устройства, которыми управляет: выходные данные, предназначенные для одного терминала, не должны быть посланы на другой.

Система поддерживает "псевдоустройства", с каждым из которых не связано ни одно конкретное физическое устройство. В UNIX всё можно трактовать как устройство, даже физическую память, например /dev/mem, хотя память не является никаким устройством и не управляется драйвером. Тем не менее, используя это псевдоустройство, можно обращаться к информационным структурам ядра в физической памяти.

Драйверы устройств являются частью ядра, а не пользовательскими процессами. Однако доступ к драйверу возможен как из ядра, так и из области памяти, выделенной пользовательскому процессу. Доступ к устройствам на пользовательском уровне обеспечивается посредством специальных файлов устройств, находящихся в каталоге /dev. Ядро преобразует операции, выполняемые над этими специальными файлами, в функции обращения к коду драйвера.

    1. Специальные файлы

В 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 позволит принимать все, что произносится микрофон.

Специальные файлы бывают двух типов:

  1. блочные - запись и чтение допускаются только блоками. Например, разделы дисков с файловой системой.

  2. символьные (бесструктурные) - можно читать и писать отдельными байтами. К ним относятся терминалы, магнитные ленты, неформатированные диски и разделы дисков без файловой системы.

Понятия "размер" у специального файла не существует. Ведь этот файл обозначает физическое устройство. Фактически это ссылка на соответствующий драйвер. Вместо длины команда Is показывает для таких файлов два числа: порядковый номер драйвера устройства и внутренний номер устройства в таблице обслуживающего его драйвера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]