Скачать 17.46 Mb.
|
Глава 2. Стандарты и реализации UNIX Таблица 2.5 (продолжение)
POSIX.1 не включает в себя понятие суперпользователя. Вместо этого говорится, что некоторые действия требуют «соответствующих привилегий», но определение этого термина POSIX.1 оставляет на усмотрение конкретной реализации. Версии UNIX, разработанные в соответствии с принципами безопасности Министерства обороны США, имеют многоуровневую систему безопасности. Однако в этой книге мы будем пользоваться традиционной терминологией и называть такие действия требующими привилегий суперпользователя. По прошествии почти двадцати лет работы сформировались стандарты, которые можно считать достаточно зрелыми и устоявшимися. Стандарт POSIX.1 поддерживается открытой рабочей группой, известной как Austin Group (http://www.opengroup.org/austin). Чтобы стандарты оставались актуальными, время от времени они должны подтверждаться или обновляться. 2.2. Стандартизация UNIX 63 2.2.3. Single UNIX Specification Single Unix Specification (Единая спецификация UNIX) представляет собой надмножество стандарта POSIX.1 и определяет дополнительные интерфейсы для расширения функциональных возможностей, предоставляемых базовой спецификацией POSIX.1. Полный набор системных интерфейсов называется Х/Ореп System Interface (XSI). Интерфейсы POSIX.1, которые являются частью расширений XSI, идентифицируются символьной константой _XOPEN_UNIX. XSI также определяет дополнительные интерфейсы POSIX.1, которые должны поддерживаться реализацией, чтобы она получила право именоваться «XSI-совместимой». Это синхронизация файлов, отображение файлов в память, защита памяти, интерфейсы потоков - все они отмечены в табл. 2.5 как «Обязательные для SUS». Только XSI-совместимые реализации могут называться операционными системами UNIX. Торговая марка UNIX принадлежит The Open Group, которая использует единую спецификацию UNIX для определения интерфейсов, обязательных для реализации в системе, чтобы она получила право называться системой UNIX. Чтобы получить лицензию на право использования торговой марки UNIX, реализация должна пройти серию тестов на соответствие. Некоторые из дополнительных интерфейсов, определяемых XSI, являются обязательными для реализации, тогда как другие необязательны. По своим функциональным возможностям интерфейсы разделяются на группы следующим образом:
__XOPEN_REALTIME
Единая спецификация UNIX (SUS) публикуется The Open Group, сформированной в 1996 году в результате слияния Х/Open и Open Software Foundation (OSP). X/Open принадлежит издание «X/Open Portability Guide» (Руководство X/Open по переносимости), которое заимствовало определенные стандарты и заполнило пробелы, связанные с отсутствующими функциональными возможностями. Целью этих руководств было повышение переносимости прикладных программ, которое стало возможным благодаря простому следованию опубликованным стандартам. 64 Глава 2. Стандарты и реализации UNIX Первая версия Single UNIX Specification была издана Х/Open в 1994 году. Она известна также под названием «Spec 1170», поскольку содержала примерно 1170 интерфейсов. Своими корнями она уходит в инициативу Common Open Software Environment (COSE - Общая открытая программная среда), цель которой состояла в том, чтобы еще больше повысить переносимость приложений между различными реализациями UNIX. Группа COSE - Sun, IBM, HP, Novell/USL и OSF - шагнула значительно дальше простого одобрения стандартов. Дополнительно она исследовала интерфейсы, обычно используемые коммерческими приложениями. В результате были отобраны 1170 интерфейсов и, кроме того, добавлены X/Open Common Application Environment, Issue 4 (CAE - Общая среда приложений, известная также как XPG4, поскольку исторически ее предшественником было руководство Х/Ореп Portability Guide), System V Interface Definition, Issue 3 (SVID - Определение интерфейса System V) и OSF Application Environment Specification (AES -Спецификация среды приложений). Вторая версия Single UNIX Specification была издана The Open Group в 1997 году. В новую версию была добавлена поддержка потоков, интерфейсов реального времени, 64-битной арифметики, файлов большого размера и многобайтных символов. Третья версия Single UNIX Specification (сокращенно - SUSv3) была опубликована The Open Group в 2001 году. Базовые спецификации SUSv3 те же, что и в стандарте IEEE Standard 1003.1-2001, и разделяются на четыре категории: «Основные определения», «Системные интерфейсы», «Командная оболочка и утилиты» и «Обоснование». SUSv3 также включает в себя Х/Ореп Curses Issue 4, Version 2, но эта спецификация не является частью POSIX.1. В 2002 Международная Организация по Стандартизации одобрила эту версию как международный стандарт ISO/IEC 9945:2002. В 2003 году The Open Group снова обновила стандарт 1003.1, добавив в него исправления технического характера, после чего ISO одобрила его как ISO/IEC 9945:2003. В апреле 2004 года The Open Group опубликовала Single UNIX Specification, Version 3, 2004 Edition. В нее были включены дополнительные технические исправления основного текста стандарта. 2.2.4. FIPS Аббревиатура FIPS означает Federal Information Processing Standard (Федеральный стандарт обработки информации). Этот стандарт был опубликован правительством США, которое использовало его при покупке компьютерных систем. Стандарт FIPS 151-1 (апрель 1989 года) был основан на IEEE Std. 1003.1-1988 и на проекте стандарта ANSI С. За ним последовал FIPS 151-2 (май 1993 года) на основе IEEE Standard 1003.1-1990. FIPS 151-2 требовал наличия некоторых возможностей, которые стандартом POSIX.1 были объявлены необязательными. Все они стали обязательными в стандарте РО-SIX.1-2001. В результате любой разработчик, желавший продавать POSIX.1-совместимые компьютерные системы американскому правительству, должен был 2.3. Реализации UNIX 65 поддерживать некоторые из дополнительных особенностей POSIX.1. Позднее стандарт POSIX.1 FIPS был отменен, поэтому мы больше не будем возвращаться к нему в этой книге. 2.3. Реализации UNIX В предыдущем разделе были описаны ISO С, IEEE POSIX и Single UNIX Specification - три стандарта, разработанные независимыми организациями. Однако стандарты - это лишь спецификации интерфейса. А как они связаны с реальностью? Производители берут эти стандарты и воплощают в конкретные реализации. Для нас интерес представляют как сами стандарты, так и их воплощение. В разделе 1.1 [McKusick et al. 1996] приводится подробная (и отлично иллюстрированная) история генеалогического дерева UNIX. Все началось с 6-й (1976) и 7-й (1979) редакций UNIX Time-Sharing System для PDP-11 (обычно они именуются Version 6 и Version 7). Они стали первыми версиями, получившими широкое распространение за пределами Bell Laboratories. Начали самостоятельно развиваться три ветви UNIX:
2.3.1. UNIX System V Release 4 Версия UNIX System V Release 4 (SVR4) была выпущена подразделением AT&T - UNIXSystem Laboratories (USL, ранее - UNIX Software Operation). Версия SVR4 объединила функциональность AT&T UNIX System Release 3.2 (SVR3.2), SunOS - операционной системы от Sun Microsystems, 4.3BSD, выпущенной Калифорнийским университетом, и Xenix - операционной системы от корпорации Microsoft - в единую операционную систему. (Изначально Xenix разрабатывалась на основе 7-й редакции и позднее вобрала в себя многие особенности, присущие System V.) Исходные тексты SVR4 появились в конце 1989 года, а первые копии стали доступны конечным пользователям в 1990 году. Реализация SVR4 соответствовала как стандарту POSIX Ю03.1, так и X/Open Portability Guide, Issue 3 (XPG3). Корпорация AT&T также опубликовала «System V Interface Definition» (SVID, Определение интерфейса System V) [AT&T 1989]. Выпуск 3 SVID определил функциональные возможности, которые должны поддерживаться операционной системой, чтобы она могла быть квалифицирована как реализа- 66 Глава 2. Стандарты и реализации UNIX ция, соответствующая System V Release 4. Как и в случае с POSIX.l, SVID определяет интерфейс, но не реализацию. В SVID не проводится каких-либо различий между системными вызовами и библиотечными функциями. Чтобы обнаружить эти различия, необходимо обращаться к справочному руководству по фактической реализации SVR4 [AT&T 1990е]. 2.3.2.4.4BSD Версии Berkeley Software Distribution (BSD) разрабатывались и распространялись Computer Systems Research Group (CSRG) - Группой исследования компьютерных систем Калифорнийского университета в городе Беркли. Версия 4.2BSD была выпущена в 1983, a 4.3BSD - в 1986 году. Обе эти версии работали на миникомпьютерах VAX. Следующая версия, 4.3BSD Tahoe, была выпущена в 1988 году и также работала на специфическом миникомпьютере под названием Tahoe. (Книга Леффлера (Leffler) и др. [1989] описывает версию 4.3BSD Tahoe.) Затем в 1990 году последовала версия 4.3BSD Reno, которая поддерживала большую часть функциональных возможностей, определяемых стандартом POSIX.l. Изначально BSD-системы содержали исходный код, запатентованный AT&T, и подпадали под действие лицензий AT&T. Чтобы получить исходный код BSD-системы, требовалась лицензия AT&T на UNIX. С тех пор положение вещей изменилось, так как на протяжении нескольких лет все большая часть исходного кода AT&T замещалась кодом сторонних разработчиков; кроме того, в системе появилось много новых функциональных возможностей, исходный код которых был получен из сторонних источников. В 1989 году в версии 4.3BSD Tahoe большая часть кода, не принадлежащего AT&T, была идентифицирована и выложена в публичный доступ под названием BSD Networking Software, Release 1.0. Затем, в 1991 году, последовал второй выпуск BSD Networking Software (Release 2.0), который был развитием версии 4.3BSD Reno. Основная цель состояла в том, чтобы освободить большую часть или даже всю систему 4.4BSD от любых лицензионных ограничений AT&T, сделав исходные тексты общедоступными. Версия 4.4BSD-Lite должна была стать заключительным релизом CSRG. Однако ее официальный выпуск был отложен из-за юридических споров с USL. Как только в 1994 году юридические разногласия были устранены, вышла 4.4BSD-Lite, полностью свободно распространяемая, так что теперь, чтобы получить ее, уже не требовалось приобретать какие-либо лицензии на исходные тексты UNIX. Вслед за этим, в 1995 году, CSRG выпустила вторую, исправленную версию. Второй выпуск 4.4BSD-Lite стал заключительной версией BSD от CSRG. (Эта версия BSD описана в книге Мак-Кьюсика [1996].) Разработка операционной системы UNIX в Беркли началась с PDP-11, переместилась на миникомпьютеры VAX и затем на так называемые рабочие станции. В первой половине 90-х годов была добавлена поддержка популярных персональных компьютеров, собранных на базе микропроцессора 80386, что привело к появлению версии 386BSD. Реализация была выполнена Биллом Джолитцом (Bill Jolitz) и описана в серии ежемесячных статей 2.3. Реализации UNIX 67 в журнале «Dr. Dobb's Journal» за 1991 год. Значительная часть исходного кода была заимствована из BSD Networking Software, Release 2.0. 2.3.3. FreeBSD Операционная система FreeBSD базируется на 4.4BSD-Lite. Проект FreeBSD был образован с целью дальнейшего развития линейки BSD-систем после того, как в Беркли было принято решение о прекращении работ над BSD-версиями операционной системы UNIX, и проект 386BSD оказался заброшенным. Все программное обеспечение, разработанное в рамках проекта FreeBSD, является свободно распространяемым, как в исходных текстах, так и в виде бинарных дистрибутивов. ОС FreeBSD 5.2.1 стала одной из четырех платформ, на которых тестировались примеры для данной книги. Существует еще несколько свободных операционных систем, основанных на BSD. Проект NetBSD (http://www.netbscl.org) аналогичен проекту FreeBSD, основной акцент в нем сделан на переносимости между различными аппаратными платформами. Проект OpenBSD (http://www.openbsd.org) также аналогичен FreeBSD, но с акцентом на безопасности. 2.3 A Linux Linux - это операционная система, которая предоставляет все богатства программного окружения UNIX и свободно распространяется в соответствии с Общественной Лицензией GNU (GNU Public License). Популярность Linux -это нечто феноменальное в компьютерной индустрии. Linux часто отличается тем, что первой из операционных систем начинает поддерживать новейшие аппаратные решения. ОС Linux была создана Линусом Торвальдсом (Linus Torvalds) в 1991 году в качестве замены ОС MINIX. Семена дали быстрые всходы, потому что множество разработчиков по всему миру добровольно взялись за работу по ее улучшению. Дистрибутив Linux Mandrake 9.2 стал одной из систем, на которых тестировались примеры из этой книги. В этом дистрибутиве используется ядро Linux версии 2.4.22. 2.3.5. Mac OS X Mac OS X отличается от предыдущих версий этой системы тем, что она осно-вана на совершенно иных технологиях. Ядро этой операционной системы называется Darwin и представляет собой комбинацию ядра Mach ([Accetta et al- 1^86]) и ОС FreeBSD. Ядро Darwin является проектом с открытым исходном кодом, подобно FreeBSD и Linux. Mac OS X 10.3 (Darwin 7.4.0) использовалась как одна из тестовых платформ пРи написании этой книги. 68 Глава 2. Стандарты и реализации UNIX 2.3.6. Solaris Solaris - это разновидность ОС UNIX, разработанная в Sun Microsystems. Основанная на System V Release 4, она совершенствовалась инженерами из Sun Microsystems в течение более 10 лет. Это единственный коммерчески успешный потомок SVR4, формально сертифицированный как UNIX-система. (Дополнительную информацию о сертификации UNIX-систем вы найдете по адресу http://www.opengroup.org/certification/idx/unix.html.) Версия Solaris 9 использовалась при написании этой книги в качестве одной из тестовых платформ. 2.3.7. Прочие версии UNIX Среди прочих операционных систем, которые были сертифицированы как UNIX-системы, можно назвать:
2.4. Связь между стандартами и реализациями Упомянутые выше стандарты определяют подмножество любой фактически существующей системы. Основное внимание в этой книге будет уделяться четырем операционным системам: FreeBSD 5.2.1, Linux 2.4.22, Mac OS X 10.3 и Solaris 9. Несмотря на то, что только Solaris может называться UNIX-системой, тем не менее, все четыре предоставляют программную среду UNIX. Поскольку все четыре системы в различной степени являются POSIX-co-вместимыми, мы сосредоточимся на тех функциональных возможностях, которые считаются обязательными в соответствии со стандартом POSIX.1, указывая любые различия между POSIX и фактической реализацией в этих системах. Особенности и технические приемы, характерные только для конкретной реализации, будут отмечены особо. Так как SUSv3 является надмножеством POSIX.1, мы также обратим внимание на любые особенности, которые являются частью SUSv3, но не являются частью POSIX.1. Следует знать, что реализации обеспечивают обратную совместимость no-функциональным особенностям с более ранними версиями, такими как SVR3.2 и 4.3BSD. Например, Solaris поддерживает как спецификацию неблокирующих операций ввода-вывода (0_N0NBL0CK) стандарта POSIX.1, так и традиционный для System V метод (0_NDELAY). В этой книге мы будем говорить о тех характеристиках, которые предписываются стандартом POSIX.1, и при этом будем лишь иногда упоминать нестандартные особенности, сохраняемые для обратной совместимости. Например, и SVR3.2, и 4.3BSD реализуют механизм сигналов способом, который отличается от стандарта POSIX.1. В главе 10 мы опишем только сигналы POSIX.1. 2.5. Пределы 59 2.5. Пределы реализации определяют множество системных кодов и констант. Многие из них жестко зашиты в тексты программ, для получения значений других используются специальные методы. Благодаря описанной выше деятельности по стандартизации, сейчас преобладают более универсальные методы определения значений констант и предусматриваемых реализациями пределов, что очень помогает в разработке переносимого программного обеспечения. Существует два типа пределов:
Пределы времени компиляции могут определяться в заголовочных файлах, которые подключаются программой на этапе компиляции. Пределы времени выполнения требуют, чтобы процесс получил их значения, вызвав соответствующие функции. Кроме того, некоторые пределы для одной реализации имеют фиксированные значения и потому могут определяться статически в заголовочных файлах. Для других реализаций они могут варьироваться, вследствие чего для получения их значений требуется обращаться к соответствующим функциям во время исполнения. Примером предела такого типа может служить максимальная длина имени файла. System V до появления SVR4 ограничивала длину имени файла 14 символами, тогда как BSD-системы увеличили это значение до 255 символов. Сегодня большинство реализаций UNIX поддерживают множество различных типов файловых систем, и каждая из них имеет свои собственные пределы - это случай предела времени выполнения, который зависит от того, в какой файловой системе находится рассматриваемый файл. Например, корневая файловая система может ограничивать длину имени файла 14 символами, тогда как в другой файловой системе это ограничение может составлять 255 символов. Для решения этих проблем существует три типа пределов: 1- Пределы времени компиляции (заголовочные файлы).
Еще больше путаницы добавляет то, что если конкретный предел времени выполнения не изменяется для данной системы, он может быть определен статически в заголовочном файле. Однако если он не определен в заголовочном файле, тогда приложение должно вызвать одну из трех функций conf (которые вскоре будут описаны), чтобы определить его значение во время исполнения. 70 |
![]() | Разработка серийного оформления художника В. Щербакова Серия основана в 1999 году | ![]() | Европа: вчера, сегодня, завтра / ран, Ин-т Европы; отв ред., авт предисл. Н. П. Шмелев. – М.: Экономика, 2002. – 823с |
![]() | Ричард Докинз профессор Оксфордского университета, автор таких известных книг, как "Эгоистический ген", "Слепой часовщик", "Расширенный... | ![]() | Он, бесформенный, присвоил чужую форму. Как такое могло случиться, Остин? Нет, как такое может быть? И почему тогда солнце не померкнет,... |
![]() | Ричард Флорида, «Креативный класс: люди, которые меняют будущее». М.: Классика-xxi, 2005. (Richard Florida, “The Rise of The Creative... | ![]() | Роджерсом (одним из этих проектов был получивший академическую премию документальный фильм "Путешествие в себя"). Ричард Фарсон получил... |
![]() | ![]() | ||
![]() | Борисов С. Б. Человек. Текст. Культура. Социогуманитарные исследования. Издание второе, дополненное. – Шадринск, 2007 – 556 с | ![]() | Барр, С. Россыпи головоломок [Текст] / Стивен Барр; пер с англ. Ю. Н. Сударева. М. Мир, 1987. 415 с |