Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго




Скачать 17.46 Mb.
НазваниеUnix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго
страница2/143
Дата конвертации11.01.2013
Размер17.46 Mb.
ТипДокументы
1   2   3   4   5   6   7   8   9   ...   143

XPG3

ANSI С

i P0SIX.1

Под обозначением 4.xBSD подразумеваются различные операционные сис­темы от Computer Systems Research Group из Калифорнийского университе­та в Беркли. Эта группа также занимается распространением BSD Net 1 и BSD Net 2 - общедоступных исходные текстов операционных систем семей­ства 4.xBSD. Под обозначением SVRx подразумевается System V Release x от AT&T. XPG3 - это «X/Open Portability Guide, issue 3» (Руководство X/Open по обеспечению переносимости, выпуск 3). ANSI С - это стандарт ANSI язы­ка программирования С. POSIX.1 - это стандарт ISO и IEEE на интерфейс UNIX-подобных операционных систем. Более подробно об этих стандартах и различных версиях UNIX мы поговорим в разделах 2.2 и 2.3.

Предисловие к первому изданию

25

В этой книге под обозначением 4.3+BSD мы будем подразумевать версии UNIX, которые появились между выпусками BSD Net 2 и 4.4BSD.

К моменту написания книги версия 4.4BSD еще не была выпущена, поэтому было бы преждевременно говорить об операционной системе 4.4BSD. Однако эту серию опера­ционных систем нужно было как-то обозначить, поэтому повсюду в книге мы будем ис­пользовать обозначение 4.3+BSD.

Большинство примеров в книге были протестированы в четырех различных версиях UNIX:

  1. UNIX System V/386 Release 4.0 Version 2.0 («чистая SVR4») от U.H. Corp. (UHC), работающая на процессоре Intel 80386.

  2. 4.3+BSD от Computer Systems Research Group, отделение информатики, Калифорнийский университет в Беркли, работающая на рабочей станции от Hewlett Packard.

  3. BSD/386 (производная от BSD Net 2) от Berkeley Software Design Inc., ра­ботающая на процессоре Intel 80386. Эта система практически полностью соответствует тому, что мы называем 4.3+BSD.

  4. SunOS, версии 4.1.1 и 4.1.2 от Sun Microsystems (системы, в которых хо­рошо заметно наследие Беркли, но при этом много дополнений, пришед­ших из System V), работающие на SPARC-станциях SLC.

В книге представлены многочисленные тесты на производительность с ука­занием проверяемых операционных систем.

Благодарности

Я многим обязан моей семье за любовь, поддержку и множество выходных дней, потерянных за последние полтора года. Создание книги - во многом за­слуга семьи. Спасибо вам, Салли, Билл, Эллен и Дэвид.

Я особенно благодарен Брайану Кернигану за его помощь при работе над книгой. Его многочисленные рецензии рукописи и ненавязчивые рекомен­дации по улучшению стиля изложения, надеюсь, будут заметны в оконча­тельном варианте. Стив Раго также посвятил немало времени рецензирова­нию рукописи и ответам на многие вопросы об устройстве и истории разви­тия System V. Выражаю свою благодарность другим техническим рецензен­там издательства Addison-Wesley, которые дали ценные комментарии по различным частям рукописи: Мори Баху (Maury Bach), Марку Эллису (Mark Ellis), Джефу Гитлину (Jeff Gitlin), Питеру Ханиману (Piter Honeyman), Джону Линдерману (John Linderman), Дугу Мак-Илрою (Doug Mcllroy), Эви Немет (Evi Nemeth), Крэйгу Партриджу (Craig Partridge), Дейву Пресотто (Dave Presotto), Гэри Уилсону (Gary Wilson) и Гэри Райту (Gary Wright).

Кейт Бостик (Keith Bostic) и Кирк Мак-Кьюсик (Kirk McKusick) из U.C. Ber­keley CSRG предоставили учетную запись, которая использовалась для про­верки примеров на последней версии BSD (также большое спасибо Питеру Салусу (Peter Salus)). Сэм Нэйтарос (Sam Nataros) и Иоахим Саксен (Joachim Sacksen) из UHC предоставили копию операционной системы SVR4 для те-

26

Предисловие к первому изданию

стирования примеров. Трент Хейн (Trent Hein) помог получить альфа- и бе­та-версии BSD/386.

Другие мои друзья на протяжении последних лет часто оказывали мне нема­ловажную помощь: Пол Лукина (Paul Lucchina), Джо Годсил (Joe Godsil), Джим Хог (Jim Hogue), Эд Танкус (Ed Tankus) и Гэри Райт (Gary Wright). Редактор из издательства Addison-Wesley, Джон Уэйт (John Wait), был моим большим другом на протяжении всего этого времени. Он никогда не жало­вался на срыв сроков и постоянное увеличение числа страниц. Отдельное спасибо Национальной оптической астрономической обсерватории (NOAO) и особенно Сиднею Уольфу (Sidney Wolff), Ричарду Уольфу (Richard Wolff) и Стиву Гранди (Steve Grandi) за предоставленное машинное время.

Настоящие книги о UNIX пишутся в формате trof f, и данная книга также следует этой проверенной временем традиции. Копия книги, готовая к тира­жированию, была подготовлена автором с помощью пакета grof f, созданного Джеймсом Кларком (James Clark). Большое ему спасибо за такой замеча­тельный пакет и за его быстрый отклик на замеченные ошибки. Быть мо­жет, мне когда-нибудь удастся разобраться с концевыми сносками в trof f.

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

Таксон, Аризона Ричард Стивене

Апрель 1992 rstevens@kohala.com

http://ww.kohala.com/-rstevens

1

Обзор ОС UNIX

1.1. Введение

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

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

1.2. Архитектура UNIX

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

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

28

Глава 1. Обзор ОС UNIX



Рис. 1.1. Архитектура системы UNIX

говорим в разделе 1.11). Командная оболочка - это особое приложение, ко­торое предоставляет интерфейс для запуска других приложений.

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

Например, Linux - это ядро операционной системы GNU. Некоторые так и называют эту операционную систему - GNU/Linux, но чаще всего ее име­нуют просто Linux. Хотя, строго говоря, такое наименование не является правильным, но оно вполне понятно, если учесть двоякий смысл выражения операционная система. (И кроме того, оно обладает таким преимуществом, как краткость.)

1.3. Вход в систему Имя пользователя

При входе в систему UNIX мы вводим имя пользователя и пароль. После этого система отыскивает введенное имя в файле паролей; обычно это файл /etc/passwd. Файл паролей содержит записи, каждая из которых состоит из се­ми полей, разделенных двоеточиями: имя пользователя, зашифрованный пароль, числовой идентификатор пользователя (205), числовой идентифика­тор группы (105), поле комментария, домашний каталог (/home/sar) и ко­мандный интерпретатор (/bin/ksh).

sar:x:205:105:Stephen Rago:/home/sar:/bin/ksh

Все современные системы хранят пароли в отдельном файле. В главе 6 мы рассмотрим эти файлы и некоторые функции для доступа к ним.

1.3. Вход в систему

29

Командные оболочки

Обычно после входа в систему на экран выводится некоторая системная ин­формация, после чего мы можем вводить команды, предназначенные для командной оболочки. (В некоторых системах после ввода имени пользовате­ля и пароля запускается графический интерфейс, но и в этом случае, как правило, можно получить доступ к командной оболочке, запустив команд­ный интерпретатор в одном из окон.) Командная оболочка - это интерпрета­тор командной строки, который считывает ввод пользователя и выполняет команды. Ввод пользователя обычно осуществляется посредством термина­ла (интерактивная командная оболочка) или считывается из файла (кото­рый называется сценарием командной оболочки). Перечень наиболее рас­пространенных командных оболочек приведен в табл. 1.1.

Таблица 1.1. Наиболее распространенные командные оболочки, используемые в UNIX



Название

Путь

FreeBSD 5.2.1

Linux 2.4.22

Mac OS X 10.3

Solaris 9

Bourne shell

/bin/sh



Ссылка на bash

Ссылка на bash




Bourne-again shell

/bin/bash

Необязательно








С shell

/bin/csh

Ссылка на tcsh

Ссылка на tcsh

Ссылка на tcsh




Korn shell

/bin/ksh













TENEXCshell

/bin/tcsh










Информацию о том, какой командный интерпретатор следует запустить, система извлекает из записи в файле паролей.

Командный интерпретатор Bourne shell был разработан в Bell Labs Стивом Борном (Steve Bourne). Он входит в состав практически всех существующих версий UNIX, начиная с Version 7. Управляющие конструкции в Bourne shell чем-то напоминают язык программирования Algol 68.

Командный интерпретатор С shell был разработан в Беркли Биллом Джоем (Bill Joy) и входит в состав всех версий BSD. Кроме того, С shell включен в со­став System V/386 Release 3.2 от AT&T, а также в System V Release 4 (SVR4).



следующей главе мы расскажем об этих версиях UNIX подробнее.) Команд­ная оболочка С shell разработана на основе оболочки 6-й Редакции UNIX, а не Bourne shell. Управляющие конструкции этого интерпретатора напоминают язык программирования С, и кроме того, он поддерживает дополнительные особенности, которые отсутствуют в Bourne shell: управление заданиями, ис­торию команд и возможность редактирования командной строки.

Командный интерпретатор Korn shell можно считать наследником Bourne shell. Он впервые появился в составе SVR4. Разработанный в Bell Labs Дэви-Дом Корном (David Korn), он может работать на большинстве версий UNIX, 110 До выхода SVR4 обычно распространялся как дополнение за отдельную Плату и поэтому не получил такого широкого распространения, как преды-

30 Глава!. Обзор ОС UNIX

дущие два интерпретатора. Он сохраняет обратную совместимость с Bourne shell и предоставляет те же возможности, благодаря которым С shell стал та­ким популярным: управление заданиями, возможность редактирования ко­мандной строки и прочее.

Bourne-again shell - это командный интерпретатор GNU, который входит в состав всех версий ОС Linux. Он был разработан в соответствии со стандар­том POSIX и в то же время сохраняет совместимость с Bourne shell, а также поддерживает особенности, присущие С shell и Korn shell.

Командный интерпретатор TENEX С shell представляет собой расширенную версию С shell. Он заимствовал некоторые особенности, такие как автодо­полнение команд, из ОС TENEX, разработанной в 1972 году в компании Bolt Beranek and Newman. TENEX С shell расширяет возможности С shell и часто используется в качестве его замены.

ОС Linux использует Bourne-again shell как командный интерпретатор по умолчанию. Фактически /bin/sh представляет собой ссылку на /bin/bash. В системах FreeBSD и Mac OS X командной оболочкой по умолчанию для пользователей является TENEX С shell но в сценариях системного администрирования используется Bourne shell по­скольку язык командной оболочки С shell славится своей сложностью. Операционная система Solaris унаследовала от BSD и System V все командные интерпретаторы, пере­численные в табл. 1.1. Свободно распространяемые версии большинства командных интерпретаторов можно найти в Интернете.

На протяжении всей книги в подобных примечаниях мы будем приводить историче­ские заметки и сравнения различных реализаций UNIX. Зачастую обоснования раз­личных методов реализации становятся гораздо понятнее в историческом контексте.

В тексте книги приводятся многочисленные примеры взаимодействия с ко­мандным интерпретатором, демонстрирующие запуск разрабатываемых на­ми программ. В этих примерах используются возможности, общие для Bourne shell, Korn shell и Bourne-again shell.

1.4. Файлы и каталоги Файловая система

Файловая система UNIX представляет собой иерархическую древовидную структуру, состоящую из каталогов и файлов. Начинается она с каталога, который называется корнем (root), а имя этого каталога представлено един­ственным символом - /.

Каталог представляет собой файл, в котором содержатся каталожные запи­си. Логически каждую такую запись можно представить в виде структуры, состоящей из имени файла и дополнительной информации, описывающей атрибуты файла. Атрибуты файла - это такие характеристики, как тип фай­ла (обычный файл или каталог), размер файла, владелец файла, права досту­па к файлу (есть ли у других пользователей доступ к файлу), время послед­ней модификации файла. Функции stat и f stat возвращают структуру, в ко-

4. файлы и каталоги

31

торой содержится информация о всех атрибутах файла. В главе 4 мы иссле­дуем атрибуты файла более детально.

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

Имя файла

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

Всякий раз, когда создается новый каталог, автоматически создаются два файла: . (называется точка) и .. (называется точка-точка). Под именем «точка» подразумевается текущий каталог, а под именем «точка-точка» -родительский. В корневом каталоге «точка-точка» представляет тот же са­мый каталог, что и «точка».

В некоторых устаревших версиях UNIX System V длина имени файла огра­ничена 14 символами. В версиях BSD этот предел был увеличен до 255 симво­лов. Сегодня практически все файловые системы коммерческих версий UNIX поддерживают имена файлов длиной не менее 255 символов.

Путь к файлу

Последовательность одного или более имен файлов, разделенных слэшами, образует строку пути к файлу. Эта строка может также начинаться с симво­ла слэша, и тогда она называется строкой абсолютного пути, в противном случае - строкой относительного пути. В случае относительного пути мар-шРУт начинается от текущего каталога. Обозначение корня файловой систе­мы (/) - особый случай строки абсолютного пути, которая не содержит ни од­ного имени файла.

Пример

ывести список всех файлов в каталоге достаточно просто. Ниже приводит-Ся пРимер упрощенной реализации команды ls(l).

исгпинг 1 Л. Вывод списка всех файлов в каталоге

^include "apue.h" ^include

32

1   2   3   4   5   6   7   8   9   ...   143

Похожие:

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconСтивене Д. 80 Сознавание: исследуем, экспериментируем, упражняемся/ Пер с англ. А. Пилюгина
Разработка серийного оформления художника В. Щербакова Серия основана в 1999 году

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconРичард Д. Деловые культуры в международном бизнесе. От столкновения к взаимопониманию / Льюис Ричард Д.; пер с англ. Т. А. Нестика
Европа: вчера, сегодня, завтра / ран, Ин-т Европы; отв ред., авт предисл. Н. П. Шмелев. – М.: Экономика, 2002. – 823с

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconРичард Докинз. Эгоистичный ген
Ричард Докинз профессор Оксфордского университета, автор таких известных книг, как "Эгоистический ген", "Слепой часовщик", "Расширенный...

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconСтивен Кинг После заката Стивен Кинг После заката Посвящается Хайди Питлор
Он, бесформенный, присвоил чужую форму. Как такое могло случиться, Остин? Нет, как такое может быть? И почему тогда солнце не померкнет,...

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconРичард Флорида, «Креативный класс: люди, которые меняют будущее». М
Ричард Флорида, «Креативный класс: люди, которые меняют будущее». М.: Классика-xxi, 2005. (Richard Florida, “The Rise of The Creative...

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconРичард Фарсон Менеджмент абсурда. Парадоксы лидерства Публикуется по: © "София", 2001 Перевод с англ. © А. Левицкий Об
Роджерсом (одним из этих проектов был получивший академическую премию документальный фильм "Путешествие в себя"). Ричард Фарсон получил...

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconThe Roles of Intermediaries in Cluster Development: The Thai Experiences from High-Tech and mid-tech manufacturing, knowledge-intensive services, to

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconHigh School/High Tech Program Guide

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconКультура Социогуманитарные исследования Издание второе, дополненное
Борисов С. Б. Человек. Текст. Культура. Социогуманитарные исследования. Издание второе, дополненное. – Шадринск, 2007 – 556 с

Unix профессиональное программирование Второе издание У. Ричард Стивене, Стивен а раго 2007 Серия «High tech» У. Ричард Стивене, Стивен А. Раго iconЕстественно-математические науки. Техника Барр, С. Россыпи головоломок [Текст] / Стивен Барр; пер с англ. Ю. Н. Сударева. М. Мир, 1987. 415 с
Барр, С. Россыпи головоломок [Текст] / Стивен Барр; пер с англ. Ю. Н. Сударева. М. Мир, 1987. 415 с


Разместите кнопку на своём сайте:
lib.convdocs.org


База данных защищена авторским правом ©lib.convdocs.org 2012
обратиться к администрации
lib.convdocs.org
Главная страница