ГЛАВА 1 ЧТО ТАКОЕ СИСТЕМА UNIX? СОДЕРЖАНИЕ 1.1 ВОЗМОЖНОСТИ СИСТЕМЫ UNIX 2 1.2 РАБОТА СИСТЕМЫ UNIX 3 1.2.1 Ядро 4 1.2.2 Файловая система 5 1.2.2.1 Обычные файлы 7 1.2.2.2 Каталоги 7 1.2.2.3 Специальные файлы 7 1.2.3 Shell 10 1.2.4 Команды 11 1.2.4.1 Назначение команд 11 1.2.4.2 Составление команды 12 1.2.4.3 Выполнение команд 13 1.1 ВОЗМОЖНОСТИ СИСТЕМЫ UNIX Операционная система UNIX - набор программ, которые управляют компьютером, осуществляют связь между пользователем и компьюте- ром, обеспечивают работу необходимых пользователю устройств. Она разработана с целью обеспечить несложный, эффективный и гибкий режим работы. Система UNIX имеет следующие преимущества: это многоцелевая система для выполнения различных зада- ний; это многопользовательская система, позволяющая разде- лять ресурсы компьютера между несколькими пользователя- ми без снижения производительности (такой способ назы- вается разделением времени: система UNIX работает с каждым из пользователей по ротационному принципу со скоростью, обеспечивающей иллюзию одновременности рабо- ты пользователей); наличие многозадачного режима позволяет выполнять более одной программы одновременно; наличие диалогового режима позволяет обращаться непос- редственно к компьютеру и немедленно получать ответ на все запросы и сообщения. Система UNIX базируется на следующих основных компонентах: Ядро - это программа, составляющая сердцевину операци- онной системы: она координирует работу внутренних узлов компьютера (например, распределение ресурсов системы). Работа ядра не видима пользователю. Файловая система. Она обеспечивает способ хранения дан- ных, облегчающий доступ к информации и управление ею. Shell - программа, служащая интерпретатором команд. Она является посредником между пользователем и ядром, ин терпретируя и выполняя команды пользователя в диалого- вом режиме. Команды - это имена программ, вызываемых пользователем. Пакеты программ составляют инструментарий, доступный пользователю, программисту и администратору в среде ОС UNIX. Среди имеющихся пакетов - средства для подготовки текстов и обмена информацией посредством компьютера, инструменты для разработки, отладки и сопровождения программ и т.п. 1.2 РАБОТА СИСТЕМЫ UNIX На рисунке ниже - модель системы UNIX. Иллюстрируется взаимо действие главных компонентов системы: ядра, shell'а, программ или команд пользователя. Стрелки показывают роль shell'а как посредника между пользователем и ядром. Далее описывается каж- дый из этих компонентов, а также еще одна важная составная часть ОС UNIX - файловая система. 1.2.1 ЯДРО Центральный компонент системы UNIX называется ядром. Ядро уп- равляет доступом к процессору и другим ресурсам, ведает распре делением памяти, обеспечивает работу файловой системы. На ри сунке ниже приведена функциональная схема ядра. 1.2.2 ФАЙЛОВАЯ СИСТЕМА Файловая система - краеугольный камень ОС UNIX. Она позволяет логически организовывать информацию, предоставляет средства для выборки и изменения данных. Файловая система имеет иерархичес- кую структуру, которую можно наглядно представить себе в виде дерева (см. рисунок ниже). Файл - базовый компонент ОС UNIX. Файлы бывают трех типов: обычные, каталоги и специальные (см. гл. 3 - "Принципы работы с файловой системой"). 1.2.2.1 Обычные файлы Обычный файл - это набор байт, рассматриваемый системой единое целое. Обычные файлы используются для хранения нужной Вам информации. Они могут содержать тексты отчетов или писем, выполняемые программы или последовательность команд операцион- ной системы. После того как файл создан, его можно изменить или удалить, если он больше не нужен. 1.2.2.2 Каталоги Каталог - это суперфайл, содержащий ссылки на файлы, объединен- ные по какому-либо признаку. Например, каталог с именем sales может содержать данные о торговле по месяцам, которые находятся в файлах jan, feb, mar и т.д. Каталоги можно создавать, добав- лять к ним или удалять из них файлы, а также уничтожать цели ком. Обычно пользователь создает файлы в рамках своего личного ката- лога, который выделяется при регистрации пользователя в систе- ме. Он (пользователь) определяет структуру каталога и управляет им: никто другой не может извлекать оттуда или заносить туда файлы без разрешения владельца. Имеется несколько обычных файлов и каталогов, необходимых для работы самой системы: файл /unix (ядро ОС UNIX), /bin (каталог самых употребительных команд пользователя), /etc (каталог ути- лит администратора) и т.д. Перечисленные файлы являются компо- нентами корневого каталога (обозначаемого /) - действительно корня, из которого "вырастает" все дерево файлов. Правда, прог- раммисты привыкли представлять себе дерево растущим вниз, поэ- тому корень они мыслят как верхний элемент иерархии. 1.2.2.3 Специальные файлы Специальный файл - весьма необычное понятие. Операция со специ- альным файлом практически означает обращение к физическому уст- ройству (терминалу, дисководу, лентопротяжному устройству, уст ройству связи). Пользователь обменивается информацией со спец альными файлами так же, как с обычными. Тем не менее, эти зап- росы на обмен информацией не приводят в действие обычный меха- низм доступа к файлам, вместо этого работает драйвер устройст ва, соответствующего специальному файлу. В некоторых операционных системах необходимо дополнительно за- давать тип файла (последовательного доступа, прямого доступа и т.п.). В ОС UNIX этого не нужно, что упрощает работу с файлами. Не требуется запрашивать выделение памяти для пользовательских файлов (система делает это автоматически). Если пользователь или написанная им программа нуждаются в доступе к какому-либо устройству (к принтеру, например), следует запросить соответст вующий файл. В ОС UNIX используется только один интерфейс для всей информации вводимой и получаемой пользователем, это упро щает диалог. Приведем пример типичной файловой системы (см. рисунок ниже). Обратите внимание: корневой каталог содержит ядро ОС и несколь- ко важных системных каталогов. Перечисленные ниже системные каталоги управляются самой опера- ционной системой и имеют одинаковую структуру почти во всех версиях ОС UNIX. /bin Содержит общеупотребительные утилиты. /dev Содержит специальные файлы, соответствующие пе риферийным устройствам - консоли, принтеру, терминалам пользователей, дискам и т.п. /etc Содержит программы и файлы данных для управле ния системой. /lib Содержит библиотеки, нужные компиляторам и программам пользователей. /tmp Содержит временные файлы, которые могут быть созданы любым пользователем. /usr Содержит другие каталоги, включая mail (элект- ронная почта) и news (важные новости). Более полное представление о файловой системе Вы получите в процессе изучения последующих глав. В гл. 3 рассматриваются принципы организации каталогов и манипуляции с файлами. В гл. 4 дается обзор потенциальных возможностей системы UNIX, эффектив- ное использование которых зависит от того, насколько хорошо пользователь знает файловую систему и умеет использовать содер- жащуюся в ней информацию. В гл. 5 и 6 содержатся дополнительные сведения по созданию и редактированию файлов. 1.2.3 Shell Shell - это интерпретатор команд, средство общения с операцион ной системой. Shell читает вводимые команды и интерпретирует их как запросы на выполнение программ, на доступ к файлам или на выдачу информации. Shell - это также мощный язык программирова- ния, управляющие конструкции которого имеют некоторое сходство с конструкциями языка C. На рисунке модели системы UNIX показан двусторонний поток данных между пользователем и компьютером че- рез shell. В главе 4 рассмотрены возможности языка shell. Глава 5 - руко водство по написанию несложных программ на shell'е, называемых shell-процедурами. В этой главе описываются также методы управ- ления окружением. 1.2.4 Команды Программа - это набор инструкций компьютеру. Программы, которые могут быть выполнены без трансляции называются выполняемыми программами или командами. Стандартные программы и пакеты прог- рамм всегда имеются в распоряжении пользователя. Для написания программ и разработки программного обеспечения можно также ис- пользовать системные вызовы, библиотечные функции и другие инструменты. Разумеется, в Вашем распоряжении будут и созданные Вами программы. В этой книге рассказано о наиболее употребительных программах и программных средствах. Дополнительная информация об этих и дру гих стандартных программах содержится в Справочнике пользовате- ля. В Справочнике программиста более подробно описаны программ- ные средства и подпрограммы, необходимые при разработке прог раммного обеспечения. В Карте документации описывается как за- казать любую документацию по UNIX в фирме AT&T. Перечисленные выше справочники также могут быть доступны в компьютере (в этом случае они должны храниться в файловой сис теме). Пользователь может вызывать страницы этих справочников с помощью команды man (см. man(1) в Справочнике пользователя). 1.2.4.1 Назначение команд На рисунке модели системы UNIX показано распределение системных программ по функциональным категорям: обработка текстов Строковый и экранный редакторы для создания и обработки текстов; проверка на наличие грамматических ошибок; фор- матеры для получения на бумаге высококачественных копий, пригодных для публикации. управление информацией Программы, позволяющие создавать, редактировать и удалять файлы и каталоги. электронная связь Несколько программ, обеспечивающих передачу информации другим пользователям или системам UNIX. программное окружение Несколько утилит системы UNIX, создающих для программиста дружественное окружение (предоставляют удобный интерфейс с языками программирования и многочисленные вспомогатель- ные средства). дополнительные утилиты Возможность производить вычисления, выдавать графическую информацию. 1.2.4.2 Составление команды Чтобы запрос пользователя был понятен системе UNIX, нужно соб- людать синтаксис командной строки. Общий вид командной строки: команда опции аргументы Команда - это имя программы, которая должна быть вы- полнена. Опции определяют как выполняется команда. Аргументы - данные, с которыми должна работать коман- да (обычно это имя файла или каталога). Наличие командного имени обязательно, опции же или аргументы могут отсутствовать. Ввод командной строки должен заканчиваться нажатием клавиши возврата каретки. В командных строках, содержащих опции и/или аргументы, компо- ненты отделяются как минимум одним пробелом. Если имя аргумента содержит пробел, заключите это имя в двойные кавычки. Например, если аргумент sample 1, то следует написать "sample 1", иначе система воспримет sample 1 как два разных аргумента. Некоторые команды позволяют указывать несколько опций и/или ар- гументов в командной строке, например. | команда опции аргументы | | wc -l -w file1 file2 file3 В этом примере wc - имя команды, к которой заданы две опции -l и -w (допускается группировать опции: можно написать -lw). В качестве аргументов описаны три файла: file1, file2, file3. В отличие от опций, аргументы группировать вместе нельзя. Примеры командных строк: |Неправильно Правильно | |wcfile wc file |wc-lfile wc -l file |wc -l w file wc -lw file | или | wc -l -w file |wc file1file2 wc file1 file2 1.2.4.3 Выполнение команд Схематически процесс выполнения пользовательской команды систе- мой UNIX выглядит так: |+-+----------+ +---+-------------- ||Т| | +--------------+ +----------+ | |исходные текст ||Е| | вывод | SHELL | |выборка и | | +-------------- ||Р| экран -------| <-----|выполнение<------| Ф | данные ||М| | |(интерпретатор| |программы | | А +-------------- ||И+----------| | командного | +----------+ | Й |объектные моду ||Н| | ввод | языка) | +---------+ | Л +-------------- ||А|клавиатура+-------> +-----> поиск в +------- Ы | выполняемые ||Л| | +--------------+ |каталогах| | | программы |+-+----------+ +---------+ +---+-------------- Команду следует набирать после появления на экране приглашения (например, $). Введенная команда воспринимается shell'ом, про- изводится поиск программы с указанным именем, а затем запрос вместе с этой программой переправляется ядру. Следуя инструкци- ям программы компьютер выполняет Вашу команду. По окончании вы- полнения shell сигнализирует о готовности к дальнейшей работе путем выдачи очередного приглашения. В этой главе дано общее представление о том, как устроена и как работает ОС UNIX. Из последующих глав Вы узнаете, как использо- вать ОС UNIX для решения стоящих перед Вами задач.