Компания ALT Linux
Опубликован: 14.12.2004 | Доступ: свободный | Студентов: 12082 / 1395 | Оценка: 4.19 / 3.84 | Длительность: 18:18:00
ISBN: 978-5-9556-0019-1
Лекция 5:

UNIX как операционная среда

< Лекция 4 || Лекция 5: 123 || Лекция 6 >

Интерфейс

Для диалога с пользователем в UNIX выбран интерфейс командной строки. О достоинствах и недостатках этого способа общения человека и машины будет сказано далее, пока же ограничимся только его описанием: человек вводит команду с клавиатуры, машина ее выполняет. Команды могут быть совсем короткими (одно нажатие), могут содержать имя запускаемой утилиты и несколько коротких параметров, а могут быть даже небольшими программами (символов в сто). Команды большего размера неудобно вводить и исправлять прямо в командной строке, их стоит складывать в файл, называемый сценарием (script). Такой сценарий тоже считается программой, его можно вызывать по имени, передавать параметры и т. д. Все эти команды распознает и выполняет интерпретатор командной строки (shell, "оболочка"), в который встроены специальные возможности, помогающие очень быстро набирать командную строку и оперативно объединять и использовать результаты выполнения других программ.

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

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

Процессы

В роли задач в UNIX выступают процессы. Процесс - это программа, запущенная пользователем, которая находится в памяти и, как полагается задаче, потребляет ресурсы: выполняется, требует памяти, обменивается данными с системой, внешними устройствами и другими процессами . При запуске процесс получает уникальный идентификатор процесса (Process IDentifier, PID), по которому он становится доступен другим процессам и планировщику. Планировщик процессов в UNIX устроен сложнее, чем описано в лекции 4. Наше описание предельно упрощено, а полностью разобраться в планировании процессов поможет [ 6 ] . Главное отличие планировщика UNIX заключается в том, что каждая задача из очереди работает в течение всего отведенного ей промежутка времени, только если ей есть чем заняться. Если задача к этому времени работать не может (например, ожидает завершения операции ввода/вывода, или сигнала, или освобождения какого-либо ресурса), она из начала очереди перемещается в конец "очереди для тех, кто без очереди" или очереди "спящих" задач. Как только какая-нибудь задача из очереди спящих просыпается, ей тут же отводится место в начале обычной очереди. Таким образом максимально сокращается время простоя (idle) системы, если, конечно, выполняемых задач достаточно для того, чтобы полностью ее загрузить. Сверх того процессы в UNIX могут иметь разные приоритеты, сообразно которым идет планирование очередного запуска процесса (например, полностью отработав свой промежуток времени, процесс может помещаться не в конец очереди).

Между собой процессы могут обмениваться данными не только стандартными пользовательскими средствами (посредством файлов, каналов или сокетов (о двух последних читайте в [ 35 ] ), но и с помощью более быстрых системных, именуемых средствами межпроцессного взаимодействия (Interprocess Communication, IPC). Процессы могут заказать у системы общую память (тогда часть адресного пространства каждого будет ссылаться на один и тот же кусок реальной памяти), для индикации занятости ресурса использовать семафор (система гарантирует, что запрошенный ресурс действительно будет свободен, пока процесс не откроет семафор) и посылать друг другу сигналы и сообщения.

Реализация принципов проективной системы

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

Принцип информационной открытости ( И ) соблюдается в UNIX по максимуму. Все, что можно документировать, документируется. Если к какому-то средству документации нет или она недостаточно толковая, такое средство выпадает из системы, им практически невозможно пользоваться. Документация ведется не только на средства ( утилиты, системные и библиотечные вызовы), но и на структуру системных файлов, работу с устройствами и многое другое. Подробнее об информационном наполнении UNIX рассказано в лекции 6. Большинство программных продуктов для UNIX и основательная часть базовых дистрибутивов UNIX -подобных систем распространяется в исходных текстах. Это означает, что любому квалифицированному пользователю доступна полная информация о внутреннем устройстве инструмента, которым он пользуется, и любой может исправить или улучшить его по своему усмотрению.

Принцип минимизации затрат ( З ) последовательно реализован в интерфейсе командной строки. В соответствии с этим принципом пользователь всякий раз решает некую мыслительную задачу, с тем чтобы быстро реализовать ее решение на выбранном им командном языке (чаще всего это shell, но для иных задач полезнее sed или awk, а для задач побольше - perl, python, tcl, ruby и т. п.); при этом дальнейшее использование этого решения можно целиком доверить компьютеру (написать сценарий ). Как следует из З, такие решения не всегда можно воспринять "с первого взгляда", их надо "читать", с другой стороны, читать их приходится несравненно реже, чем последовательно писать ( прямое построение проекта). В системных текстовых редакторах, о которых речь пойдет в лекциях 15 и 16, принцип З выдержан наиболее последовательно. Большинство демонов и утилит UNIX пользуется для настройки своей работы текстовыми файлами, т. е. управляется проектами.

Принцип умопостижимости контекста ( У ) включает правило, которому очень тяжело следовать: "7+-2" (см. главу 2). Добавляя в систему из семи элементов еще пять, мы перегружаем контекст. По-хорошему, после этого требуется реструктуризация перегруженного уровня системы, а это может повлечь за собой изменение структуры всей системы (что есть, в сущности, балансировка Б-дерева). Поэтому однотипных частей обычно набирается до дюжины, прежде чем разработчики решаются всерьез заняться реструктуризацией. В UNIX редко встречаются перегруженные неструктурированные инструментарии: если человек создает какой-либо предмет для того, чтобы им пользоваться, он делает его удобным.

Зато другие правила соблюдаются гораздо строже. Практически все демоны и приложения UNIX используют так называемые файлы настроек (или rc-файлы, от resource container). Это текстовые файлы (требование human readable), и, если количество содержащейся в них информации достаточно велико, они разбиты на секции и подсекции, чтобы соблюсти требование human writeable. В самых сложных из них, например в файле настройки Web-сервера Apache, предусмотрена инструкция include, чтобы помещать различные по контексту группы настроек в разные файлы и даже в отдельные каталоги. В текстовом виде хранятся и системные журналы, и документация. Множество средств переработки и фильтрации текстов позволяют создать умопостижимый контекст, разумно ограничивая большие объемы данных и отсекая заведомо ненужное.

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

Первая часть принципа ответственности выражена в UNIX тем, что существует пользователь, которому вообще никакие действия по изменению системы не запрещены! Это так называемый суперпользователь, или root. Как правило, правами суперпользователя наделяют человека настолько опытного, что он в состоянии нести ответственность за любое поведение вверенной ему системы. Он имеет такую возможность в силу соблюдения всех предыдущих принципов: И - у него есть достаточно информации, чтобы разобраться в поведении любой части системы, З - ему не надо часами давить на клавиши, чтобы перенастроить ту ее часть, которая работает недостаточно хорошо, У - сама система организована так, что один человек способен (по крайней мере на уровне проекта) решить любую возникшую задачу.

Инструментарии и стратегия

Набор программных продуктов для UNIX наглядно иллюстрирует первое следствие принципов организации проективной ОС: основное направление развития - инструментарии. В полном дистрибутиве типичной UNIX -системы от шестой до третьей части всего списка пакетов относится к области разработки. Например, на 8268 пакетов в официальном дистрибутиве FreeBSD-5.2 в категории devel (средства разработки), lang (языки программирования) и x11-toolkits (графические инструментарии) входит в общей сложности 1506 пакетов. В ALT Linux Master 2.2 доля библиотек превышает 20%. Стоит заметить, что в специализированные дистрибутивы или в системы, не распространяемые под свободной лицензией, средства разработки могут не входить: в одни - за ненадобностью, в другие - из-за желания авторов заработать на продаже инструментариев.

Как и во всякой проективной системе, в UNIX "велосипедный парк" - весьма обычное явление. Сталкиваясь с задачей "здесь и сейчас", бывает непросто выбрать между самостоятельным поиском решения и изучением способов перестройки чужого. Чтобы понять, насколько имеющийся инструмент поможет в решении задачи, и стоит ли конструировать новый, нужен опыт, который приходит только со временем. По истечении этого времени в гараже каждого пользователя UNIX будет пылиться известное количество велосипедов всевозможной кривизны. Как правило, все эти 10, 50 и 1000-строчные сценарии на shell, sed, awk или perl очень дороги сердцу автора, и он переносит их на каждое новое рабочее место.

Дело еще и в том, что система рассчитана на профессиональное решение даже самой пустяковой задачи. Это значит, что стратегию "исследование - выбор - реализация - решение", описанную нами в лекции 1, стоит применять во всех случаях, даже когда кажется, что можно начать сразу с "решения". В UNIX работа вручную всегда хуже автоматической. Говорят: "Юниксоид за три часа напишет программу, и она за пять секунд сделает работу, на которую вручную ушел бы час". Смех смехом, но любой, кому приходится повторять одни и те же действия в четвертый, пятый, десятый раз, довольно быстро приходит к идее командного сценария.

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Andranik Avakian
Andranik Avakian

41. УК РФ и Комментарии (ст. 273)

М. 2000 г. Издательство: ALT Linux, Институт Логики

Уголовный Кодекс РФ и комментарии к нему?

По ссылке открывается сайт документации Linux, раздел Linux Installation and Getting Started

Сергей Петровский
Сергей Петровский

У Вас написано:

ls -dt1 `grep -il отчет *` | head -1

если знания по шелу мне не изменяют, то должно быть:

ls -dt | `grep -il отчет *` | head -1

Владимир Данилов
Владимир Данилов
Россия, г. Санкт-Петербург