<<
>>

Фундаментальные концепции

Как и у всех компьютеров, у работающих под управлением операционной системы Linux машин есть подключенные к ним устройства ввода-вывода (такие, как диски, принтеры и сети). Требуется некий способ предоставления программам доступа к этим устройствам.
Хотя возможны различные варианты решения данного вопроса, применяемый в операционной системе Linux подход заключается в интегрировании всех устройств в файловую систему в виде так называемых специальных файлов (special files). Каждому устройству ввода-вывода назначается маршрут (обычно в каталоге /dev). Например, диск может иметь маршрут /dev/hd1, у принтера может быть маршрут /dev/lp, а у сети — /dev/net.

Доступ к этим специальным файлам осуществляется так же, как и к любым другим файлам. Для этого не требуется никаких специальных команд или системных вызовов. Вполне подойдут обычные системные вызовы read и write. Например, команда cp file /dev/lp

скопирует файл file на принтер, в результате чего этот файл будет распечатан (при условии, что у пользователя есть разрешение на доступ к /dev/lp).

Программы могут открывать и читать специальные файлы, а также писать в них (тем же способом, что и в обычные файлы). На самом деле программа cp в приведенном выше примере даже не знает, что она делает вывод на печать. Таким образом, для выполнения ввода-вывода не требуется специального механизма.

Специальные файлы подразделяются на две категории: блочные и символьные. Блочный специальный файл (block special file) состоит из последовательности пронумерованных блоков. Основное свойство блочного специального файла заключается в том, что к каждому его блоку можно адресоваться и получить доступ отдельно. Иначе говоря, программа может открыть блочный специальный файл и прочитать, скажем, 124-й блок (и для этого не надо читать сначала блоки с 0-го по 123-й).

Блочные специальные файлы обычно используются для дисков.

Символьные специальные файлы (character special files) обычно используются для устройств ввода или вывода символьного потока. Символьные специальные файлы используются такими устройствами, как клавиатуры, принтеры, сети, мыши, плоттеры и т. д. Невозможно (и даже бессмысленно) искать на мыши 124-й блок.

С каждым специальным файлом связан драйвер устройства, осуществляющий работу с соответствующим устройством. У каждого драйвера есть так называемый номер старшего устройства (major device), предназначенный для его идентификации. Если драйвер одновременно поддерживает несколько устройств (например, два диска одного типа), то каждому диску присваивается идентифицирующий его номер младшего устройства (minor device). Вместе взятые номера главного устройства и младшего устройства однозначно определяют каждое устройство ввода-вывода. В некоторых случаях один драйвер может управлять двумя связанными устройствами. Например, соответствующий символьному специальному файлу /dev/tty драйвер управляет и клавиатурой, и экраном, которые часто воспринимаются как единое устройство — терминал.

Хотя к большинству символьных специальных файлов невозможен произвольный доступ, ими часто бывает нужно управлять такими способами, которые не используются для блочных специальных файлов. Рассмотрим, например, введенную с клавиатуры и отображенную на экране строку. Когда пользователь делает ошибку и хочет стереть последний символ, он нажимает определенную клавишу. Некоторые пользователи предпочитают использовать для этого клавишу Backspace, другие любят пользоваться клавишей Del. Для удаления всей только что набранной строки тоже имеется большой выбор средств. Традиционно использовался символ @, но с распространением электронной почты (использующей символ @ в почтовом адресе) многие системы перешли на использование комбинации клавиш Ctrl+U или других символов. Особая клавиша требуется и для прерывания работающей программы. Обычно для этого используется Ctrl+C, но это не универсальный вариант.

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

10.5.2.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Фундаментальные концепции:

  1. 29. Концепция символического интеракционизма. Концепция управления впечатлениями
  2. НАУКА ФУНДАМЕНТАЛЬНАЯ
  3. Постановка фундаментальных вопросов
  4. Правило фундаментальности.
  5. Правило фундаментальности.
  6. ФУНДАМЕНТАЛЬНЫЙ МЕТОД.
  7. НЛП целиком построено на двух фундаментальных принципах:
  8. § 1. ФУНДАМЕНТАЛЬНАЯ (ОБЩАЯ) СОЦИОЛОГИЧЕСКАЯ ТЕОРИЯ КАК СУБЪЕКТ ПРИЛОЖЕНИЯ
  9. 52. Аномическая концепция девиации Опираясь на идею аномии, Роберт Мертон разработал аномическую концепцию девиации.
  10. Я-КОНЦЕПЦИЯ
  11. КОНЦЕПЦИЯ САМООРГАНИЗАЦИИ