Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises
Demon's Souls |#8| Maiden Astraea
Demon's Souls |#7| Dirty Colossus

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Сэйдж Рас Весь текст 822.4 Kb

Приемы профессиональной работы в Unix

Предыдущая страница Следующая страница
1 ... 46 47 48 49 50 51 52  53 54 55 56 57 58 59 ... 71
ошибке.

     ПОЯСНЕНИЯ

     Строки 4-8  проверяют  счетчик аргументов.  Если не был указан ни
один аргумент, выводится сообщение об ошибке. Должно быть указано хотя
бы одно имя файла.

     Строки 10-14 проверяют, является ли первый символ первого позици-
онного параметра знаком "минус" и отличается ли первая  опция  от  до-
пустимой опции -u.  Если эти условия выполняются,  выводится сообщение
об ошибке и программа завершается.

     Строки 16 и 17 инициализируют установки режимов прав  доступа  по
умолчанию. MODE1 устанавливается для запрета чтения и записи категори-
ям пользователей "группа" и "другие". MODE2 устанавливается для запре-
та  пользователю  (т.е.  мне) права записи.  Это страховка для меня от
случайной записи в файл. Нам нужны две такие переменные, поскольку эти
два  режима довольно разные.  Единственный способ сделать это - дважды
вызвать команду chmod с двумя различными установками.

     Строки 19-23 проверяют,  была ли указана в командной строке опция
-u.  Если была, она убирается из командной строки командой shift и пе-
ременные режима инициализируются для разблокирования файлов. Строка 21
разрешает возможность чтения группе пользователей и другим.  Строка 22
разрешает мне возможность записи.  Обратите внимание,  что в командном
файле lock не происходит модификации битов x, s или t. Это сделано на-
меренно,  поскольку бит x должен быть установлен только в случае, если
файл может быть исполняемым.  Для каталогов бит x должен быть установ-
лен только в случае,  если вы хотите,  чтобы другие пользователи могли
заходить в этот каталог. Мы также никогда не устанавливаем возможность
записи для группы пользователей и для других пользователей, но мы отк-
лючаем  ее при блокировании файлов.  Это дополнительная мера предосто-
рожности на случай, если файл имеет установленными такие права доступа
к нему, которые мы по каким-то причинам не желаем оставлять.

     В строках 25 и 26 выполняется команда chmod.  Параметр $@ исполь-
зован как обозначение всех имен файлов,  указанных в командной строке.
Такой способ позволяет вам вызывать lock с несколькими именами файлов.

     Из последних  шести  глав  вы  должны приобрести множество идей о
том,  как можно обезопасить среду,  в которой вы работаете,  как иметь
дело  с другими пользователями и вообще более продуктивно использовать
ваш рабочий день.  Мы готовы двигаться дальше в понимании системы UNIX
и исследовании внутренней работы файловой системы,  устройств и комму-
никаций.

      * ГЛАВА 7. Устройства и файловые системы *

ТЕРМИНАЛЬНЫЕ УСТРОЙСТВА

РАБОТА С КЛАВИАТУРОЙ

ФАЙЛЫ termcap

ДИСКОВЫЕ УСТРОЙСТВА

ФАЙЛОВЫЕ СИСТЕМЫ

ЗАГРУЗОЧНЫЙ ДИСК

РАЗМЕРНЫЕ ПАРАМЕТРЫ

     c           Быстрая очистка экрана

     mntf        Монтирование гибкого диска в системном дереве

     mntlook     Поиск всех монтированных файловых систем

     umntsys     Размонтирование всех файловых систем, кроме
                 корневой

     lrgf        Создание файла максимального размера,
                 допустимого в вашей системе

     УСТРОЙСТВА И ФАЙЛОВЫЕ СИСТЕМЫ

     ВВЕДЕНИЕ

     Ниже уровня  известной  нам области файловых систем находится мир
устройств и их драйверов.  В данной главе мы исследуем некоторые мето-
ды,  необходимые  для работы с терминалами,  дисками и непосредственно
файловыми системами.  Программное средство 'c' иллюстрирует  доступ  к
терминалу  на  примере операции быстрой очистки экрана.  Следующие три
средства - mntf, mntlook и umntsys - имеют дело с монтированием и раз-
монтированием  файловых  систем.  Наконец,  средство lrgf позволит вам
проверить пределы емкости вашей файловой системы.

                      СИСТЕМА UNIX И АППАРАТУРА

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

     Операционная система,  особенно  такая высокоразвитая,  как UNIX,
имеет множество утилит и характерных особенностей,  но сейчас речь  не
об этом.  Сердцем операционной системы (в данном случае UNIX) является
ядро (kernel). Ядро управляет процессами и руководит выполняемой рабо-
той. Оно также является своего рода мостом между аппаратурой и внешним
миром.  В данной главе мы обратим внимание на основные взаимоотношения
между ядром, процессами и аппаратурой.

     В конечном итоге система должна взаимодействовать с внешними уст-
ройствами. Наличие базовых знаний об устройствах весьма важно для пол-
ного понимания того, как UNIX общается с внешним миром.

     При работе  с машиной много времени тратится на передачу данных в
машину и из нее, а это значит, что необходимо иметь дело со множеством
различных  типов устройств,  каждое из которых имеет свой "характер" и
особенности.

     К нашему счастью, UNIX был разработан так, чтобы облегчить управ-
ление данными и устройствами настолько,  насколько это возможно. К на-
шему несчастью, имеется, по всей видимости, несократимый объем знаний,
которыми  мы должны овладеть обязательно.  На рис.  7-1 показана общая
структура операционной системы UNIX. Мы видим, что со стороны ядра об-
ращение  ко  всем  внешним  периферийным устройствам выполняется как к
файлам устройств.  Каждый тип устройств имеет свой собственный драйвер
и специфическую архитектуру,  но обращение к каждому устройству выпол-
няется одинаковыми методами.  Мы увидим,  как  использовать  различные
способы доступа к устройствам и определим,  какие способы наиболее эф-
фективны.

                            Рис. 7-1

                    Модель среды системы UNIX

---------------------------------------------------------------------------

                                     +-----------+
                                     |           |
        +------------+               | Магнитная |
        |  Принтер   |               |   лента   |
        +------------+               +-----------+
       /dev/lp0        lpn        /dev/rmt0 .../dev/rmtn
             \          |          |             /
               \        |          |           /
                 \      |          |         /
                   \  \ |  |   |   |   /   /
                    +-------------------+------- /dev/fd0
 fd:1,2             |  +-------------+  |---     +-----------+
      /dev/tty00----|  |  ПРОЦЕССОР  |  |        |Гибкий диск|
  +--------+     -- |  |    ЯДРО     |  |---     +-----------+
  |        |      / |  +-------------+  |-------- fdn
  | Экран  |        +-------------------+
  +--------+      /   /    |   |  |  \  \
  +--------+    /              |          \
  |Клавиат.| ttynn          /dev/hd01       hdnn
  +--------+                    +----------+
  fd:0                          |          |
                                | Жесткий  |
                                |   диск   |
                                |          |
                                +----------+

---------------------------------------------------------------------------

     UNIX обращается к  периферийным  устройствам  через  "специальные
файлы". Имеется два типа специальных файлов: блочные и символьные. Оба
типа имеют  свое  предназначение  и  особенности.  Блочный  (например,
/dev/hd0) использует буферизацию и позволяет получить доступ к большим
объемам данных на жестком диске.  Символьный (например, /dev/tty00 или
/dev/rfd0) не использует значительную буферизацию, а выполняет обмен с
устройством по одному символу за обращение.  Даже несмотря  на  особые
свойства таких файлов,  для них поддерживается все тот же механизм за-
щиты, что и для всех других файлов в системе.

     Первая область, которую мы рассмотрим - терминальные устройства и
работа  с ними.  Представленные программы включают в себя средство под
названием 'c' для быстрой очистки экрана,  а также  пример  программы,
которая  считывает  значения  нажатых клавиш и выполняет опрос нажатия
одной клавиши.  Мы также рассмотрим пример  файла  описания  терминала
(termcap),  который  обеспечивает  доступные определения характеристик
терминала.

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

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

     ТЕРМИНАЛЬНЫЕ УСТРОЙСТВА

     Драйверы терминальных  устройств являются одними из самых сложных
драйверов устройств.  Причина этого заключается в том,  что существует
множество  уровней программного обеспечения,  которые поддерживают ха-
рактеристики интерактивных терминалов.  При работе терминала по после-
довательной  линии  связи необходима мощная поддержка для того,  чтобы
облегчить его использование.  Различные установки, которые может иметь
терминал,   программируются  командами  stty(1)  и  ioctl(2).  Команда
termio(7) также описывает различные аспекты протокола работы  термина-
ла.

               ПРОТОКОЛ ОПЕРАЦИЙ ВВОДА/ВЫВОДА ТЕРМИНАЛА

     Протокол работы терминала представляет собой согласованный  набор
сигналов,  позволяющих  системе  правильно интерпретировать вводимые с
клавиатуры строки.  Протокол необходим по четырем причинам. Первой яв-
ляется  поддержка  входной  обработки специальных символов,  таких как
символы удаления и прекращения работы программы.  Во-вторых, нам необ-
ходимо поддерживать обработку выводимой информации,  например, вставку
символов задержки или изменение последовательности возврат каретки/пе-
ревод строки. Третьей причиной является поддержка режимов необработан-
ного и "канонического"  ввода.  Эти  два  режима  позволяют  пользова-
тельским программам получать данные или по одному символу,  или по од-
ной строке. Последняя причина введения терминального протокола - жела-
ние сделать так,  чтобы пользователь мог сам изменять параметры конфи-
гурации терминала.

     Содержимое терминальной подсистемы показано на рис.  7-2. Рисунок
разбит на три части: слева - область пользователя, посредине - область
ядра и справа - область устройства. Этот рисунок показывает, как пере-
даются данные между терминалами и программами пользователя.

                        Рис. 7-2.

                Управление протоколом терминала

---------------------------------------------------------------------------

Область                   Область ядра                               Область
пользователя                                                         устройства

 Процесс
 +-------+   :                                                       :
 |Текст  |   :          +--------+        +--------+       +-------+ : dzrint()
 |-------|   : ttread() |канонич.| canon()|необраб.| ttin()|приемн.| : +-----+
 |Данные |   :      /---|очередь |<-------|очередь |<------|буфер  |<--|dbuf |
Предыдущая страница Следующая страница
1 ... 46 47 48 49 50 51 52  53 54 55 56 57 58 59 ... 71
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (52)

Реклама