Стандарты операционных систем реального времени. Основные понятия стандарта posix

СТАНДАРТЫ

Сергей Золотарев,

Целью данной статьи является попытка внести определенную ясность в историю развития стандарта POSIX применительно к операционным системам реального времени (ОС РВ).

В качестве введения: зачем нужна стандартизация программного интерфейса?

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

Повторного использования кода из прошлых и параллельных проектов;

Переноса кода из других ОС;

Привлечения разработчиков из других проектов (в том числе с использованием других ОС).

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

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

Кто есть кто в деле развития POSIX

И начнем мы не с самого стандарта POSIX, а с упорядочения роли организаций, участвующих в работе над ним.

Первый участник - это IEEE (Institute of Electrical and Electronics Engineers, Институт инженеров по электрике и электронике), общественная некоммерческая ассоциация профессионалов. IEEE ведет свою историю с 1884 г. (формально - с 1963-го), объединяет 380 000 индивидуальных членов из 150 стран, издает третью часть технической литературы, касающейся применения компьютеров, управления, электро- и информационных технологий, а также более 100 журналов, популярных в среде профессионалов; кроме того, ассоциация проводит в год свыше 300 крупных конференций. IEEE принимала участие в разработке более 900 действующих стандартов (www.ieee.ru/ieee.htm). Сегодня этот институт занимается подготовкой, согласованием, утверждением, публикацией стандартов, но по своему формальному статусу не имеет полномочий принимать такие документы, как международные или национальные стандарты. Поэтому термин "стандарт" в понимании IEEE скорее означает "спецификация", что более отвечает статусу принимаемых ассоциацией документов. В соответствии с IEEE участвует в программах ряда международных и региональных организаций - IEC, ISO, ITU (International Telecommunication Union), ETSI (European Telecommunications Standards Institute), CENELEC (European Committee for Electrotechnical Standartization) и в национальных программах, например в программе такой организации, как ANSI.

В состав IEEE входит PASC (Portable Application Standards Committee; www.pasc.org/) - комитет ассоциации, который занимается разработкой семейства стандартов POSIX. Ранее PASC был известен как Технический комитет по операционным системам.

Второй участник работ - ANSI (American National Standards Institute, Американский национальный институт стандартов; www.ansi.org) - частная некоммерческая организация, которая администрирует и координирует в США деятельность по вопросам стандартизации. В ней работает всего 75 человек, но членами ANSI являются более 1000 компаний, организаций, правительственных агентств и институтов. ANSI представляет США в двух основных международных организациях по стандартизации - ISO и IEC.

Третий участник - ISO (International Organization for Standardization, Международная организация по стандартизации; www.iso.org). Она создана в 1946 г. по решению Комитета по координации стандартов и Генеральной ассамблеи ООН и официально начала работу 23 февраля 1947 г. ISO - это сеть национальных институтов по стандартизации из 146 стран (одна страна - один член ISO) с центральным секретариатом в Женеве (Швейцария). Стандарты ISO разрабатываются в технических комитетах, первым результатом деятельности которых является документ Draft International Standard (DIS), превращающийся после нескольких согласований в Final Draft International Standard (FDIS). После этого вопрос об одобрении данного документа выносится на голосование; при положительном результате он становится международным стандартом.

И наконец, - IEC (International Electrotechnical Commission, Международная электротехническая комиссия - МЭК; www.iec.ch/), основанная в 1906 г. IEC готовит и публикует международные стандарты для всех электрических, электронных и связанных с ними технологий. На 1 ноября 2004 г. действительными членами этой комиссии являлись национальные комитеты 64 стран. IEC издает также и рекомендации, которые выходят на английском и французском языках и носят статус международных стандартов. На их основе разрабатываются региональные и национальные стандарты. За подготовку стандартов в различных областях деятельности IEC отвечают технические комитеты (ТК), в работе которых принимают участие и национальные комитеты, заинтересованные в деятельности того или иного ТК.

IEC - ключевая организация в подготовке международных стандартов по информационным технологиям. В этой области действует объединенный технический комитет по информационным технологиям - JTC 1, сформированный в 1987 г. в соответствии с соглашением между IEC и ISO. JTC1 имеет 17 подкомитетов, курирующих все разработки - от программного обеспечения до языков программирования, компьютерной графики и редактирования изображений, взаимосвязи оборудования и методов безопасности.

Подготовка новых стандартов IEC включает несколько стадий (предварительная, стадия предложения, подготовительная, стадия технического комитета, стадия запроса, одобрения, публикации). Если запланировано, что документ IEC станет только технической спецификацией, а не международным стандартом, пересмотренная версия документа посылается в центральный офис для издания. На выработку заключительного проекта международного стандарта (FDIS) отводится четыре месяца. Если его одобрят все члены технического комитета, он направляется в центральный офис для публикации без стадии одобрения FDIS. После этого FDIS попадает в национальные комитеты, которые должны утвердить его в течение двух месяцев. FDIS считается одобренным, если за него проголосовало более двух третей национальных комитетов, а количество отрицательных голосов не превышает 25%. Если документ не одобрен, он отправляется для пересмотра в технические комитеты и подкомитеты. Стандарт должен быть опубликован не позднее чем через два месяца после одобрения FDIS.

К выработке и принятию стандартов POSIX имеют отношение еще несколько организаций.

Open Group - международная организация по стандартизации программного обеспечения, которая объединяет почти 200 производителей и пользовательских сообществ, работающих в области информационных технологий (www.opengroup.org/).OpenGroup создана в 1995 г. путем слияния двух своих предшественников: X/Open и Open Software Foundation (OSF). Open Group специализируется на разработке методологий сертификации программного обеспечения и проведении тестирования на соответствие определенным требованиям. В частности, Open Group занимается сертификацией для таких направлений, как COE Platform, CORBA, LDAP, Linux Standard Base, Schools Interoperability Framework (SIF), S/MIME Gateway, Single UNIX Specification, Wireless Application Protocol Specifications (WAP) и, наконец, семейство стандартов POSIX (www.opengroup.org/certification/).

AustinCommonStandardsRevisionGroup (CSRG) - объединенная техническая рабочая группа, образованная в 2002 г. ISO, IEC и Open Group для создания и сопровождения последних версий стандарта 1003.1, который будет формироваться на основе ISO/IEC 9945-1-1996, ISO/IEC 9945-2-1993, IEEE Std 1003.1-1996, IEEE Std 1003.2-1992 и Single UNIX Specification (www.opengroup.org/press/14nov02.htm).

National Institute of Standards and Technology (NIST) - федеральное агентство в составе Commerce Department’s Technology Administration (www.nist.gov/public_affairs/general2.htm), основанное в США в 1901 г. Задача NIST - разработка и пропаганда стандартов и технологий с целью повышения качества продукции. В состав NIST входит лаборатория по информационным технологиям (Information Technology Laboratory - ITL) , одним из результатов деятельности которой являются федеральные стандарты по обработке информации (Federal Information Processing Standards - FIPS, www.opengroup.org/testing/fips/general_info.html).NIST/ITL предложила в 1991 г. первоначальный набор тестов для сертификации по POSIX в рамках FIPS PUB 151-1 1990.

Что такое POSIX?

Формально термин POSIX предложен Ричардом Столлманом (Richard Stallman) как аббревиатура для P ortable O perating S ystem interface for unIX (переносимый интерфейс операционных систем для Unix). POSIX разрабатывался для UNIX-подобных операционных систем (их первые версии ведут свой отсчет с начала 1970-х) с целью обеспечения переносимости приложений на уровне исходных текстов.

Первоначальное описание интерфейса было опубликовано в 1986 г., тогда он назывался IEEE-IX (IEEE’s version of UNIX). Однако название быстро изменилось, превратившись в POSIX, и уже в следующей публикации (еще в 1986 г.) использовался этот новый вариант. Некоторое время под POSIX понималась ссылка (или синоним) на группу родственных документов IEEE 1003.1-1988 и части ISO/IEC 9945, а в качестве законченного и утвержденного международного стандарта ISO/IEC 9945.1:1990 POSIX был принят в 1990 г. Спецификации POSIX определяют стандартный механизм взаимодействия прикладной программы и ОС и в настоящее время включают более 30 стандартов под эгидой IEEE, ISO, IEC и ANSI.

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

История развития стандарта POSIX

Первая версия спецификации IEEE Std 1003.1 была опубликована в 1988 г. В последующем многочисленные редакции IEEE Std 1003.1 были приняты как международные стандарты . Этапы развития POSIX:

- 1990 г. Редакция, выпущенная в 1988 г. была переработана и стала основой для дальнейших редакций и дополнений. Она была одобрена как международный стандарт ISO/IEC 9945-1:1990.

- 1993 г. Выходит редакция 1003.1b-1993.

- 1996 г. Внесены изменения IEEE Std 1003.1b-1993, IEEE Std 1003.1c-1995 и 1003.1i-1995, однако основная часть документа осталась неизменной. В 1996 г. редакция IEEE Std 1003.1 также была одобрена как международный стандарт ISO/IEC 9945-1:1996.

- 1998 г. Появился первый стандарт для "реального времени" - IEEE Std 1003.13-1998. Это расширение стандарта POSIX для встраиваемых приложений реального времени.

- 1999 г. Принято решение внести в основной текст стандарта первые за последние 10 лет существенные изменения, включая объединение со стандартом 1003.2 (Shell и утилиты), так как к тому моменту это были отдельные стандарты. PASC решил закончить изменения базового текста после завершения работы над стандартами IEEE 1003.1a, 1003.1d, 1003.1g, 1003.1j, 1003.1q и 1003.2b.

- 2004 г. Последняя на сегодняшний день редакция стандарта 1003.1 была опубликована 30 апреля и выпущена под эгидой Austin Common Standards Revision Group. В нее внесены изменения, касающиеся редакции стандарта 2001 г. Формально редакция 2004 г. известна как IEEE Std 1003.1, 2004 Edition, The Open Group Technical Standard Base Specifications, Issue 6 и включает IEEE Std 1003.1-2001, IEEE Std 1003.1-2001/Cor 1-2002 и IEEE Std 1003.1-2001/Cor 2-2004.

Наиболее важные стандарты POSIX для ОС РВ

Для операционных систем реального времени наиболее важны семь спецификаций стандарта , но широкую поддержку в коммерческих ОС получили только три:

1003.1a (OS Definition) определяет основные интерфейсы ОС, управление заданиями, сигналы, функции файловой системы и работы с устройствами, группы пользователей, конвейеры, FIFO-буферы;

1003.1b (Realtime Extensions) описывает расширения реального времени, такие, как сигналы реального времени, диспетчеризация по приоритетам, таймеры, синхронный и асинхронный ввод-вывод, семафоры, разделяемая память, сообщения. Первоначально (до 1993 г.) этот стандарт обозначался как POSIX.4;

1003.1c (Threads) определяет функции поддержки потоков (нитей) - управление потоками, атрибуты потоков, мьютексы, диспетчеризацию. Первоначально обозначался как POSIX.4a .

Кроме указанных стандартов важными для ОС РВ являются следующие стандарты, которые были реализованы в рамках работы над проектом Std 1003.1-2001:

IEEE 1003.1d-1999. Дополнительные расширения реального времени. Первоначально обозначался как POSIX.4b;

IEEE 1003.1j-2000. Улучшенные (advanced) расширения реального времени;

IEEE 1003.1q-2000. Трассировка.

Процедура сертификации

Чтобы соответствовать стандарту POSIX, операционная система должна быть сертифицирована по результатам соответствующего комплекта тестов. С момента появления POSIX набор тестов претерпел формальные и фактические изменения.

В 1991 г. NIST разработал программу тестирования по POSIX в рамках FIPS 151-1 (http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf) . Этот вариант тестирования базировался на IEEE 1003.3 "Standard for Test Methods for Measuring Conformance to POSIX" Draft 10, May 3, 1989. В 1993 г. NIST закончил программу тестирования (POSIX Testing Program) для FIPS 151-1 и начал программу для FIPS 151-2 (www.itl.nist.gov/fipspubs/fip151-2.htm).FIPS 151-2 адаптировал "Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) ," являющуюся стандартом ISO/IEC 9945-1:1990. Наборы тестов для FIPS 151-2 основывались на IEEE 2003.1-1992 "Standard for Test Methods for Measuring Conformance to POSIX".

NIST различает две методологии сертификации: самосертификация (self-certification) и сертификация аккредитованными в IEEE тестовыми лабораториями (Accredited POSIX Testing Laboratories - APTL). В первом случае компания проводит тестирование самостоятельно, но по плану, утвержденному в NIST. Во втором случае тестирование выполняется независимой лабораторией с помощью автоматизированных наборов тестов. Всего было аккредитовано две APTL-лаборатории: Mindcraft (www.mindcraft.com) и Perennial (www.peren.com).

В 1997 г. NIST/ITL объявила о намерении прекратить сертификацию по FIPS 151-2 в конце текущего года (официально - 31 декабря 1997 г.), в то же время Open Group сообщила о том, что собирается взять на себя с 1 октября того же года сервис по сертификации в соответствии с FIPS 151-2, основанный на программе NIST/ITL. Те же функции с 1 января 1998-го взяла на себя Ассоциация по стандартизации IEEE (IEEE-SA), и также на основе FIPS 151-2.

В 2003 г. IEEE-SA и Open Group объявили о начале новой совместной программы по сертификации последних версий POSIX, начиная с IEEE 1003.1(tm) 2001. Сейчас Open Group имеет несколько наборов тестов, которые покрывают IEEE Std 1003.1-1996, IEEE Std 1003.

2-1992, IEEE Std 1003.1-2003 и IEEE Std 1003.13-1998 (www.opengroup.org/testing/testsuites/posix.html). Продукт считается сертифицированным по POSIX, если он прошел полную процедуру сертификации, по результатам тестирования удовлетворяет всем предъявленным требованиям и занесен в официальный реестр сертифицированных продуктов .

Наборы тестов включают:

VSX-PCTS1990 (www.opengroup.org/testing/testsuites/vsxpcts1990.htm) - набор conformance-тестов для системных интерфейсов IEEE Std 1003.1-1990;

VSPSE54 (www.opengroup.org/testing/testsuites/VSPSE54.htm) - набор conformance-тестов для IEEE Std 1003.13-1998 Profile PSE54 (многоцелевое реальное время);

VSX-PCTS2003 (www.opengroup.org/testing/testsuites/vsxpcts2003.htm) - набор conformance-тестов для системных интерфейсов IEEE Std 1003.1-2003 (только обязательные части);

VSC-PCTS2003 (www.opengroup.org/testing/testsuites/vscpcts2003.htm) - набор conformance-тестов для IEEE Std 1003.1-2003 (shell and utilities - только обязательные части).

Кроме того, Open Group разработала тесты для стандартов POSIX Realtime и профиля стандартов Embedded POSIX. Набор тестов для POSIX Realtime (www.opengroup.org/testing/testsuites/realtime.html) включает следующие тесты:

IEEE POSIX 1003.1b-1993/1003.1i-1995 Realtime extension and IEEE POSIX 1003.1,2003 Edition;

IEEE Std POSIX 1003.1c-1995 Threads (pthreads) extension and IEEE POSIX 1003.1,2003 Edition;

IEEE POSIX 1003.1d-1999 Additional Realtime Extension and IEEE POSIX 1003.1,2003 Edition;

IEEE POSIX 1003.1j-2000 Advanced Realtime Extension and IEEE POSIX 1003.1,2003 Edition;

IEEE POSIX 1003.1q-2000 Trace and IEEE POSIX 1003.1,2003 Edition and IEEE POSIX 1003.1,2003 Edition;

Набор тестов профиля стандартов Embedded POSIX (www.opengroup.org/testing/testsuites/embedded.html) включает следующие тесты:

IEEE POSIX 1003.1-1990 (5310 тестов);

IEEE POSIX 1003.1b-1993/1003.1i-1995 Realtime extension (1430 тестов);

IEEE Std POSIX 1003.1c-1995 Threads (pthreads) extension (1232 теста);

IEEE POSIX 1003.13-1998 Profile 52.

Немного о путанице в терминологии

Применительно к группе стандартов POSIX в английском языке часто используются не один, а целых три термина. К сожалению, они сходны по значению и часто переводятся одинаково, что вносит определенную путаницу. Термины эти таковы:

Сompatibility (буквально - "совместимость");

Сompliance (буквально - "соответствие");

Сonformance (буквально - "согласованность").

Первый термин применительно к POSIX формально не определен. Второй означает, что организация - производитель программного продукта самостоятельно заявляет о том, что продукт этот (полностью или частично) соответствует перечисленным стандартам NIST-PCTS. Третий термин подразумевает, что программный продукт прошел установленную систему тестов либо с помощью аккредитованной лаборатории, либо в рамках Open Group и на это имеется документальное подтверждение (так называемое Conformance Statement). Далее в тексте статьи везде будут приводиться оригиналы терминов, чтобы исключить неоднозначность.

Сертифицированные ОС РВ

Если придерживаться строгих правил, требующих, чтобы данные о сертифицированной ОС РВ были опубликованы в официальном реестре и тестирование проводились по уровню conformance , то в настоящее время есть всего две сертифицированные ОС РВ (данные приведены в хронологическом порядке):

- LynxOS v.3 (продукт фирмы Lynx Real-Time Systems, которая сейчас называется LynuxWorks, Inc., www.lynuxworks.com) предназначена для разработки ПО встроенных систем, функционирующих в режиме жесткого реального времени, производителями комплектного и телекоммуникационного оборудования, в частности изготовителями бортовых систем военного применения. Разработка может осуществляться как на самой целевой системе (self-hosted), так и на инструментальном компьютере (host), готовое ПО предназначено для работы на целевой системе (target). LynxOS v.3 сертифицирована на согласованность (conformance) стандарту POSIX на платформе Intel и PowerPC. Информацию об этом можно найти на сайте IEEE http://standards.ieee.org/regauth/posix/posix2.html.LynxOS сертифицирована по POSIX 1003.1-1996 компанией Mindcraft, являющейся IEEE POSIX Accredited POSIX Testing Laboratory по набору тестов NIST FIPS 151-2 Conformance Test Suite. Номер документа, подтверждающего сертификацию: Reference File: IP-2LYX002, Reference File: IP-2LYX001.

- INTEGRITY v.5 (продукт фирмы Green Hills Software, www.ghs.com) сертифицирована на согласованность (conformance) по POSIX 1003.1-2003, System Interfaces для архитектуры PowerPC в июле 2004 г. (http://get.posixcertified.ieee.org/select_product.tpl). Набор тестов VSX-PCTS 2003.

POSIX и операционная система QNX

QNX v.4.20 (разработчик - фирма QNX Software Systems, www.qnx.com) сертифицирована на соответствие (compliance) по POSIX 1003.1-1988 для платформы Intel компанией DataFocus Incorporated. Тестирование проводилось 13 сентября 1993 г., дата выдачи документа - 1 ноября 1993 г. Набор тестов NIST PCTS 151-1, версия 1.1.

QNX Neutrino (версия 6.3) соответствует (complies to) следующим стандартам семейства POSIX (www.qnx.com/download/download/8660/portability.pdf):

POSIX.1 (IEEE 1003.1);

POSIX.1a (IEEE 1003.1a);

POSIX.2 (IEEE 1003.2);

POSIX.4 (IEEE 1003.1b);

POSIX.4a (IEEE 1003.1c);

POSIX.1b (IEEE 1003.1d), IEEE 1003.1j;

POSIX.12 (IEEE 1003.1g).

Компания QNX Software Systems, создатель QNX Neutrino, планирует также сертификацию (conformance) QNX Neutrino по некоторым из этих стандартов; работы запланированы на 2005 г. (www.qnx.com/news/pr_959_1.html).

Литература

1. IEEE Standards Association Operation Manual. IEEE, October 2004.

2. Kevin M. Obeland . POSIX in Real-Time, Embedded Systems Programming, 2001.

3. IEEE/ANSI Standard 1003.1: Information Technology - (POSIX) - Part1:System Application: Program Interface (API).

4. Gallmeister B. O. Programming for the Real World, POSIX.4 Sebastopol, CA: O’Reilly & Associates, 1995.

5. National Institute of Standards and Technology, PCTS:151-2, POSIX Test Suite.

6. POSIX: Certified by IEEE and The Open Group. Certified Policy. The Open Group, October 21, 2003, Revision 1.1.

Предмет: Операционные системы.
Вопрос: №8

—————————————————————

Принципы построения ОС:

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

Особое значение при построение ОС имеют привилегированные, повторно входимые и реентерабельные модули (реентабель-ность – дословно повторновходимость; специальный термин для обозначения работоспособности программы; свойство программы корректно выполняться при рекурсивном (возвращаемом) вызове из прерывания).

Наибольший эффект от использования данного принципа достижим в случае одновременного распространения данного принципа на ОС, прикладные программы и аппаратуру.

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

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

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

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

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

— единообразная по логике работы виртуаль-ная память практически неограниченного объема.

— произвольное количество виртуальных процессоров, способных работать парал-лельно и взаимодействовать во время рабо-ты.

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

Одним из аспектов виртуализации является организация возможности выполнения в данной ОС приложений, которые разра-батывались для других ОС. Другими сло-вами, речь идет об организации нескольких операционных сред.

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

7.) Принцип совместимости: одним из аспектов совместимости является способ-ность ОС выполнять программы, написан-ные для других ОС или для более ранних версий данной ОС, а также для другой аппаратной платформы. Необходимо разделять вопросы двоичной совмести-мости и совместимости на уровне исходных текстов приложений.

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

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

Гораздо сложнее достичь двоичной совместимости между процессорами, основанными на разных архитектурах. Для того чтобы один компьютер выполнял программы другого (например, программу для ПК типа IBM PC желательно выполнить на ПК типа Macintosh фирмы Apple), этот компьютер должен работать с машинными командами, которые ему изначально непо-нятны. В таком случае процессор типа 680×0 (или PowerPC) должен исполнять двоичный код, предназначенный для процессора i80x86. Процессор 80×86 имеет свои собственные дешифратор команд, регистры и внутреннюю архитектуру. Процессор 680×0 не понимает двоичный код 80×86, поэтому он должен выбрать каждую коман-ду, декодировать ее, чтобы определить, для

чего она предназначена, а затем выполнить эквивалентную подпрограмму, написанную для 680×0.

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

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

9.) Принцип мобильности: операционная система относительно легко должна перено-

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

— большая часть ОС должна быть выпол-нена на языке, имеющемся на всех системах, на которые планируется в даль-нейшем ее переносить. Это, прежде всего, означает, что ОС должна быть написана на языке высокого уровня, предпочтительно стандартизованном, например на языке С. Программа, написанная на ассемблере, не является в общем случае переносимой.

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

Введение стандартов POSIX преследовало цель обеспечить переносимость создава-емого программного обеспечения.

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

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

—————————————————————

Что такое POSIX : платформенно-незави-симый системный интерфейс для компьюте-рного окружения POSIX (Portable Operating System Interface for Computer Environments) – это стандарт IEEE(Institute of Electrical and Electronics Engineers − институт инженеров по электротехнике и радиоэлектронике.), описывающий системные интерфейсы для открытых ОС, в том числе оболочки, утилиты и инструментарии. Помимо этого, согласно POSIX, стандартизированными являются задачи обеспечения безопасно-сти, задачи реального времени, процессы администрирования, сетевые функции и обработка транзакций. Стандарт базируется на UNIX-системах, но допускает реализацию и в других ОС. POSIX возник как попытка всемирно известной организации IEEE пропагандировать переносимость прило-жений в UNIX-средах путем разработки абстрактного, платформенно-независимого стандарта. Например, известная ОС реального времени QNX соответствует спецификациям этого стандарта.

Этот стандарт подробно описывает систему виртуальной памяти VMS (Virtual Memory System,), многозадачность МРЕ (Multi-Process Executing) и технологию переноса операционных систем CTOS (An Operating System produced Convergent Technology …). Таким образом, на самом деле POSIX представляет собой множество стандартов, именуемых POSIX.I –POSIX.12. Следует также особо отметить, что в POSIX.1 предполагается язык С в качестве основного

языка описания системных функций API.

Таким образом, программы, написанные с соблюдением данных стандартов, будут одинаково выполняться на всех POSIX-совместимых системах. Однако стандарт в некоторых случаях носит лишь рекомен-дательный характер. Часть стандартов описана очень строго, тогда как другая часть только поверхностно раскрывает основные требования.

Реализации POSIX API на уровне операционной системы различны. Если UNIX-системы в своем абсолютном большинстве изначально соответствуют спецификациям IEEE Standard 1003.1-1990, то WinAPI не является POSIX-совместимым. Однако для поддержки данного стандарта в операционной системе MS Windows NT введен специальный модуль поддержки POSIX API, работающий на уровне привилегий пользовательских процессов.

Данный модуль обеспечивает конвертацию и передачу вызовов из пользовательской программы к ядру системы и обратно, работая с ядром через Win API. Прочие приложения, созданные с использованием WinAPI, могут передавать информацию POSIX-приложениям через стандартные механизмы потоков ввода/вывода (stdin, stdout).

Нет похожих постов...

Сегодня мы попытаемся выяснить, что описывает стандарт POSIX. Стандарты предназначены для того, чтобы мой компьютер мог взаимодействовать с вашим. Благодаря им, на двух похожих компьютерах веб-страницы или трансляция видео в реальном времени будут выглядеть одинаково.

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

Что такое POSIX?

POSIX (произносится как «позикс») - это интерфейс портативных операционных систем. Но что это значит? Во-первых, нужно обозначить область действия понятия «портативность», в этом конкретном случае, и определиться с понятием «интерфейс». Чтобы выяснить это, необходимо отталкиваться от того, что оба понятия неразрывно связаны.

«Портативность», в контексте стандарта POSIX, относится к исходному коду (не к бинарникам, которые из этих самых исходников собираются). Теперь выясним, что такое «интерфейс». В программировании, «интерфейс» - это взаимодействие вашего кода с остальным кодом. Интерфейс ждет от вашего кода предоставления определенной информации. Ваш код, в свою очередь, предполагает получение определенной информации от интерфейса. Хороший пример - функция fopen() в языке Си. Она ожидает информации из двух частей: путь к файлу и режим, в котором он будет открыт. С помощью этих данных, операционная система возвращает другой вид информации, который называется «дескриптор файла». Дескриптор файла может быть использован для чтения файла или записи в файл. Это и есть интерфейс. Из всего этого следует, что POSIX-совместимый код может быть скомпилирован под любую POSIX-совместимую операционную систему без серьезных изменений, а значит, он будет портативным.

Список интерфейсов, относящихся к стандарту POSIX, находится , однако, даже несмотря на его огромную длину, вполне возможно, что он неполон. POSIX не ограничивается системными вызовами, он также определяет стандарты для оболочек операционных систем (шеллов, иначе - интерфейсов командной строки), системных утилит, вроде «awk» или «echo», системных библиотек и многого другого.

Стандарт POSIX появился в виде проекта Ричарда Столлмана в 1985 году и в дальнейшем был оформлен как IEEE Std 1003.-1998. Как видно из названия, 1998 год был годом официальной публикации. С тех пор было выпущено большое количество дополнений и расширений к POSIX, который постепенно превращается в целое семейство стандартов, формально известное как IEEE 1003, признанное в качестве международного, с обозначением SO/IEC 9945, попросту называемое стандарт семейства POSIX.

Операционной системе вовсе необязательно быть POSIX-совместимой или уж тем более иметь сертификат POSIX, однако это позволяет разработчикам создавать приложения, инструменты и платформы, не переписывая код раз за разом, а лишь дополнять и подключаться к уже готовому. Также совсем не обязательно писать POSIX-совместимый код, однако это значительно улучшает переносимость проектов между операционными системами. Это значит, что умение писать код, который совместим со стандартом POSIX, является ценным само по себе, и, безусловно, очень полезно для карьеры. Крупные проекты, такие как Gnome или KDE, придерживаются стандарта POSIX, что гарантирует их работу на разных операционных системах. Подсистема POSIX реализована даже в последних выпусках Windows. Linux, как известно, поддерживает большинство системных вызовов, относящихся к стандарту POSIX, также как и крупное расширение к нему, называемое «Стандартная база Linux», которая предназначена для объединения дистрибутивов Linux в плане поддержки исходных кодов и бинарных данных.

Надеюсь, мы пролили свет на вопрос «что такое POSIX». Обладаете интересной информацией по теме? Пожалуйста, поделитесь ей в комментариях.

POSIX (portable operating system interface) – стандарт, описывающий интерфейс между операционной системой и прикладной программой. Цель создания этого стандарта – обеспечение совместимости unix-like операционных систем, а также переносимости программ на уровне исходного кода. Однако, стандарт POSIX может использоваться не только unix системами. Название POSIX было предложено Ричардом Столлманом. Произносится как «позикс» — интерфейс переносимых операционных систем Unix.

Немного истории

Первый вариант стандарта POSIX был IEEE Std 1003. Он был выпущен в 1988 году и определял интерфейс между языком программирования Си и оболочкой ядра unix-like систем.

В 1990 году была выпущена новая версия IEEE Std 1003.2. По сравнению с первым вариантом в новом документе были внесены незначительные изменения.

В 1992 году был выпущен двухтомный стандарт IEEE Std 1003.2. В документе описывался интерпретатор команд и более сотни утилит.

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

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

Стандарт POSIX 1999 года описывал дополнительные расширения реального времени.

В 2001 году вышел стандарт, объединяющий в себе все предыдущие версии. Было принято решение использовать его как основу для принятия стандартов в будущем.

Сегодня используется версия POSIX.1, утвержденная в 2008 году.

Основные идеи стандарта POSIX

Согласно задокументированных положениям, для корректного взаимодействия с приложениями ОС должна иметь такие компоненты:

  • сетевые средства;
  • средства разработки;
  • потоки управления;
  • средства реального времени;
  • пакетные сервисы;
  • заголовочные файлы;
  • математические интерфейсы;
  • унаследованные интерфейсы.

Признаки операционных систем, соответствующих стандартам POSIX

  • разграничение прав пользователей и групп, а также суперпользователя root с привилегированными правами;
  • наличие древовидной файловой системы, которая имеет единый корень /;
  • система и программные пакеты предоставляются в виде текстовых файлов – то есть, конфигурации файлов можно изменить простым редактированием;
  • единый API программирования языка C;
  • единый стандарт консольных утилита и команд (POSIX 2).

К сертифицированным согласно POSIX стандарту операционным системам относятся: IBM AIX, UnixWare, Solaris, IRIX, QNX, LynxOS, Mac OS X. Полностью совместимые с одной из версий POSIX-стандарта являются такие ОС как Minix, различные ответвления BSD, OpenSolaris, VxWorks, OpenWMS. Что касается дистрибутивов Linux, то большинство из них соответствует стандарте LSB (Linux Standart Base), который в свою очередь опирается на POSIX.

Стандарт POSIX в редакции 2003-го года - весьма обширный, многогранный документ, где подробно рассматриваются следующие категории системных компонентов:

    средства разработки;

    сетевые средства;

    средства реального времени;

    потоки управления;

    математические интерфейсы;

    пакетные сервисы;

    заголовочные файлы;

    унаследованные интерфейсы.

Именно такой (на верхнем уровне, далеко не полный) репертуар должна предоставлять операционная система для работы приложения.

Важнейшим является понятие соответствия стандарту POSIX. Мы уже отмечали, что всякий интерфейс располагает двумя сторонами: вызывающей и вызываемой. Две стороны есть и у POSIX-соответствия: соответствие реализации (операционной системы) и приложения.

Реализация (операционная система), соответствующая стандарту POSIX, должна поддерживать все обязательные служебные программы, функции, заголовочные файлы с обеспечением специфицированного в стандарте поведения. Константа _POSIX_VERSION имеет значение 200112L.

ОС может предоставлять возможности, помеченные в стандарте в качестве дополнительных, а также содержать нестандартные функции. Если утверждается, что поддерживается некоторое расширение, это должно производиться непротиворечивым образом, для всех необходимых частей и так, как описано в стандарте.

В заголовочном файле следует определить константы, соответствующие поддерживаемым необязательным возможностям (например, константа _POSIX2_C_DEV обслуживает средства разработки на языке C). Анализируя эти константы во время компиляции, приложение выяснит возможности используемой ОС и подстроится под них. Аналогичные действия на этапе выполнения могут быть выполнены с помощью функции sysconf() и/или служебной программы getconf.

Для минимизации размеров ОС и приложений стандартом POSIX предусмотрена весьма мелкая гранулярность необязательных возможностей (всего их сорок). С другой стороны, проведено объединение взаимосвязанных необязательных возможностей в группы, что во многих случаях избавляет от анализа большого числа опций. Группы эти таковы:

    шифрование;

    средства реального времени;

    продвинутые средства реального времени;

    потоки реального времени;

    продвинутые потоки реального времени;

    трассировка;

  • унаследованные возможности.

Например, в группу "средства реального времени" (_XOPEN_REALTIME) входят возможности четырнадцати видов, в том числе планирование на основе приоритетов, асинхронный ввод/вывод, семафоры, таймеры и т.п.

Версия ОС Linux, на которой готовился текст данного курса, выдавала следующие значения некоторых конфигурационных констант (см. листинг 1.1).

$ getconf _POSIX_VERSION

$ getconf POSIX2_C_DEV

$ getconf _XOPEN_REALTIME

$ getconf _POSIX_TRACE

Листинг 1.1. Результат применения утилиты getconf к одной из версий ОС Linux. (html , txt )

Это значит, что поддерживается устаревшая версия стандарта POSIX, среди прочих присутствуют средства разработки и возможности реального времени; средства трассировки отсутствуют.

В документации на ОС должны быть отражены вопросы соответствия стандарту POSIX, описаны поддерживаемые дополнительные и нестандартные возможности.

Для приложений понятие соответствия стандарту POSIX богаче нюансами. Предусмотрено строгое соответствие, главный отличительный признак которого - ограничение круга используемых возможностей рамками стандарта. Рассматривается и соответствие с применением расширений; в этом случае документация на приложение должна содержать описание требуемых нестандартных возможностей. Желательно, чтобы используемые расширения POSIX-возможностей описывались международными и/или национальными стандартами.

(Отметим, что для реализации понятие строгого POSIX-соответствия бессмысленно хотя бы по той причине, что не бывает операционных систем без средств администрирования, а они не описываются данным стандартом.)

Профилем будем называть набор опций, описывающих необязательные возможности. Соответствие профилю означает соответствие стандарту POSIX и поддержку заданных возможностей. Разумным образом выбранные профили позволяют учитывать потребности представительных классов пользователей и/или приложений.

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

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

Еще один близкий термин, "поведение, зависящее от реализации", дополнительно означает, что поведение реализации необходимо документировать.

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

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