Тема 3 МОС 1 Стандарты UNIX и лицензии ПО.ppt
- Количество слайдов: 70
Материал к курсу «Многопользовательские операционные системы»
Стандарты UNIX и лицензии
Причины Уже в начале 80 -х годах прошлого века UNIX набрала достаточное разнообразие: • оформились две главные ветви: AT&T и BSD; • система стала работать на других, кроме PDP, аппаратных платформах (Interdata, VAX); • быстро растет количество работающих систем от разных производителей.
Большое количество разных вариантов системы UNIX привело к необходимости стандартизовать её средства, чтобы упростить переносимость приложений и избавить пользователя от необходимости изучать особенности каждой разновидности UNIX.
Основные стандарты 1. Комитеты POSIX 2. System V Interface Definition (SVID); 3. X/Open, OSF и Open Group 4. Другие стандарты семейства UNIX (Open Source и LSB) 5. Стандарты языка программирования C
Одним из самых первых стандартов стала спецификация System V Interface Definition (SVID), выпущенная UNIX System Laboratories (USL) одновременно с UNIX System V Release 4. Этот документ, однако, не стал официальным. Наряду с версиями UNIX System V существовало направление UNIX BSD. Для того, чтобы обеспечить совместимость System V и BSD, были созданы рабочие группы POSIX (Portable Operating System Interface).
POSIX (Portable Operating System Interface for Computing Environment – переносимый интерфейс операционной системы для вычислительной среды). Первая рабочая группа POSIX была образована в 1985 г. на основе UNIXориентированного комитета по стандартизации /usr/group (была создана в 1980), также называемой Uni. Forum
Название POSIX было предложено родоначальником GNU Ричардом Столмэном. Исходный состав функций, закладываемый в первые версии, опирались на UNIX AT&T (версия SVR 4), Но в дальнейшем происходит отрыв спецификаций стандартов POSIX от этой ОС. В 1988 году был опубликован стандарт 1003. 1 – 1988, определяющий API (Application Programming Interface, программный интерфейс приложений). Через два года был принят новый вариант стандарта IEEE 1003. 1 – 1990.
Ричард Столлман — основатель проекта GNU. Название POSIX было предложено родоначаль ником GNU Ричардом Столмэном.
В начале 1990 -х годов The Open Group предложила другой, похожий на POSIX стандарт — Common API Specification, или Spec 1170. Стандарт приобрёл большую популярность, чем POSIX, поскольку был доступен бесплатно, в то время как IEEE требовало немалую плату за доступ к своему стандарту. В 1998 году были начаты работы по объединению данных стандартов. Благодаря этому в настоящее время данные стандарты почти идентичны. Совместный стандарт называется Single UNIX Specification Version 3 и доступен бесплатно в Интернете.
Open Groupe Представляет собой промышленный консорциум для сертификации продуктов торговой марки UNIX. Наиболее известен в связи со стандартом Single UNIX Specification, расширяющим POSIX. В него входят IBM, Sun Microsystems, Hewlett-Packard, Hitachi, NEC, Fujitsu, US Department of Defense, NASA и многие другие организации (всего более 100).
Всего в списке стандартов POSIX более трех десятков элементов. Их имена традиционно начинаются буквой «Р» , после которой расположено четырехзначное число с дополнительными символами. Существую так же групповые имена стандартов POSIX 1, POSIX 2 и т. д. Например, POSIX 1 связан со стандартами на базовые интерфейсы ОС (Р 1003. 1 х, где вместо х либо пусто, либо символы от a до g, таким образом, в этой группе 7 документов), а POSIX 3 – методы тестирования (два документа ‑ Р 2003 и Р 2003 n).
Приведем отрывок из курса лекций Сухомлинова ("ВВЕДЕНИЕ В АНАЛИЗ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ", Сухомлинов В. А. Часть V. Методология и система стандартов POSIX OSE http: //hcs. cmc. msu. ru/lectures/Analize. IT/), посвященным области применимости стандартов.
Область применимости стандартов POSIX - обеспечение следующих возможностей (называемых еще свойствами открытости) для информационных систем: • Переносимости приложений на уровни исходных текстов (Application Portability at the Source Code Level), т. е. предоставления возможности переноса программ и данных, представленных на исходных текстах языков программирования, с одной платформы на другую. • Системной интероперабельности (System Interoperability), т. е. поддержки взаимосвязанности между системами.
Область применимости • Переносимости пользователей (User Portability), т. е. обеспечения возможности для пользователей работать на различных платформах без переобучения. • Адаптируемости к новым стандартам (Accommodation of Standards), связанным с достижением целей открытости систем. • Адаптируемости к новым информационным технологиям (Accommodation of new System Technology) на основе универсальности классификационной структуры сервисов и независимости модели от механизмов реализации.
Область применимости • Масштабируемости прикладных платформ (Application Platform Scalability), отражающей возможность переноса и повторного использования прикладного программного обеспечения применительно к разным типам и конфигурациям прикладных платформ. • Масштабируемости распределенных систем (Distributed System Scalability), отражающей возможность функционирования прикладного программного обеспечения независимо от развития топологии и ресурсов распределенных систем.
Область применимости • Прозрачности реализаций (Implementation Transparency), т. е. скрытия от пользователей за интерфейсами систем особенностей их реализации. • Системности и точности спецификаций функциональных требований пользователей (User Functional Requirements), что обеспечивает полноту и ясность определения потребностей пользователей, в том числе, в определении состава применяемых стандартов.
Это позволяет решить задачи 1. Интеграцию информационных систем из компонент различных изготовителей. 2. Эффективность реализаций и разработок, благодаря точности спецификаций и соответствию стандартным решениям, отражающим передовой научно-технический уровень. 3. Эффективность переноса прикладного программного обеспечения, благодаря использованию стандартизованных интерфейсов и прозрачности механизмов реализации сервисов систем.
Так же в стандартах формально определяются важные понятия ОС • • пользователь; файл; процесс; терминал; хост; узел сети; время; языково-культурная среда.
Для доступа к стандартам Путь 1. 2. 3. 4. Открыть гл. страницу The Single UNIX Specification, Version 3 Read/Download. . . (Also ISO/IEC 9945) Регистрация
Как же проверять соответствие конкретной системы стандарту POSIX? Формализация такого вопроса не так проста, как кажется на первый взгляд. В современных версиях предлагается 4 вида соответствия (четыре семантических значения слова «соответствия» : полное, международное, национальное, расширенное). В ранних документах приводятся списки двух видов интерфейсных средств: обязательные (по возможности предполагается его компактность) и факультативные.
Пример Например, в одном из разделов «Базовый ввод/вывод» седьмая часть, посвященная операциям с каталогами, описывает три функции (opendir, readdir и closedir). Они определяются в четырех пунктах: Синтаксис, Описание, Возвращаемое значение и Ошибки. В пункте Синтаксис про функцию readdir приведены такие строки: #include
Второй пункт (Описание) содержит следующий текст. Типы и структуры данных, используемых в определениях с каталогами определяются в файле dirent. h. Внутренний состав каталогов определяется реализацией. При чтении с помощью функции readdir формируется объект типа struct dirent, содержащий в качестве поля символьный массив d_name, в котором находится завершаемое символом NUL локальное имя файла. Readdir читает текущий элемент каталога и устанавливает указатель позиции на следующий элемент. Открытый каталог задается указателем dirp. Элемент содержащий пустые имена пропускается.
Возвращаемое значение. Readdir при успешном завершении возвращает указатель на объект типа struct dirent, содержащий прочитанный элемент каталога. Прочитанный элемент может заноситься в статическую память и перекрываются очередным таким вызовом, примененным к тому же открытому каталогу. Вызов readdir для различных открытых каталогов не перекрывает читаемую информацию. В случае ошибки или достижении конца файла возвращается нулевой указатель. В пункте Ошибки стандарта указано следующее. Readdir и closedir обнаруживают ошибку. [EBADF] Dirp не являются указателем на открытый каталог.
Программирование в стандарте POSIX. Курс лекций. Часть первая Галатенко В. А Объём: 560 стр. ISBN: 5955600116 Серия: Основы информационных технологий »
Отметим, что набор документов POSIX изменяется уже много лет. Но разработчики новых версий всегда стараются максимально сохранить преемственность с предыдущими версиями. Например, в документе 2004 года были объединены четыре части: Base Definitions volume (XBD) - определение терминов, концепций и интерфейсов, общих для всех томов данного стандарта; System Interfaces volume (XSH) - интерфейсы системного уровня и их привязка к языку Си, где описываются обязательные интерфейсы между прикладными программами и операционной системой, в частности - спецификации системных вызовов; Shell and Utilities volume (XCU) - определение стандартных интерфейсов командного интерпретатора (т. н. POSIX-shell), а также базовой функциональности Unix-утилит; Rationale (Informative) volume (XRAT) - дополнительная, в том числе историческая, информация о стандарте.
Еще смотреть адреса • Системный вызов abort() – путь http: //www. unix. org/version 3/sample/functio ns/abort. html • http: //sysbin. com/files/lowlevel/osdev 13. htm • http: //works. tarefer. ru/69/100276/index. html • MAN interactive http: //web. opennet. ru/man. shtml? topic=split &category=1&russian=1
• http: //old. master. cmc. msu. ru/lectures/Analize. IT/Ch 5_1. ht ml • Про P 1003 1, 1 а, P 1003 2, 2 b – find but http: //opennet. ru/base/faq/posix_faq. txt. html? , http: //www. opengroup. org/onlinepubs/007908799/idx/inde x. html - version 2. • http: //googleads. g. doubleclick. net/pagead/ads? client=capub 2906923004850942&output=html&h=600&slotname=168 6007526&w=160&lmt=1256372684&ea=0&flash=5. 0. 41& url=http%3 A//cemz. krsu. edu. kg/index. php%3 Foption%3 D com_content%26 task%3 Dview%26 id%3 D 410%26 Itemid %3 D 25&dt=1256372701941&correlator=1256372701957 &frm=0&ga_vid=1955962377. 1256372702&ga_sid=1256 372702&ga_hid=431764344&ga_fc=0&u_tz=240&u_his= 0&u_java=1&u_h=768&u_w=1280&u_ah=734&u_aw=128 0&u_cd=32&u_nplug=6&u_nmime=120&fu=0&ifi=1&dtd= 250
Другие стандарты
System V Interface Definition (SVID). Первый документ появился в 1984 году на основе SVR 2. Он имел название SVID (System V Interface Definition). Четырехтомное описание стандарта было выпущено после выхода в свет версии SVR 4. Эти стандарты дополнялись в наборе тестовых программ SVVS (System V Verification Suite). Отметим, что положение дел со стандартом SVID в чем-то сходно со стандартом языка программирования С. Изданная авторами этого языка программирования книга является одним из эталонов, но не единственным.
X/Open, OSF и Open Groupe. Основанная в 1984 году рядом компьютерных фирм организация X/OPEN, своей основной задачей она ставила согласование и утверждение стандартов общего программного интерфейса и программной среды для приложений. В 1992 году появился документ XPG 3 (X/OPEN Portability Guide 3). Он включал POSIX 1003. 1 – 1988 и стандарт на графическую систему X Window System (MTI). Этот документ был развит, включая последние идеи UNIX версии BSD и System V. Он получил название XPG 4. 2 X/Open объединила свои усилия с OSF создав The Open Group, которая до настоящего времени работает над идеологией открытых систем.
BSD 4. x (Berkeley Unix) В нем поддерживается большинство возможностей описанных в стандартах ANSI, POSIX. 1 и POSIX. 2. Но он основан на отличиях имеющихся в BSD UNIX. Например, наличие символических ссылок, функции select, особенности обработки сигналов и набором функций по работе с сокетами (http: //security. opennet. ru/standard. shtml).
Linux Source Base Операционная система Linux разработана с соблюдением стандарта POSIX. Но, не смотря на это, имеет место несовместимость версий разных разработчиков. Для устранения этого недостатка был принят стандарт Linux Source Base (LSB).
Linux Standard Base, LSB — совместный проект нескольких дистрибутивов Linux при организации Linux Foundation, целью которого является стандартизация внутренней структуры операционных систем, основанных на Linux. LSB опирается на существующие спецификации, такие как POSIX, Single UNIX Specification, и другие открытые стандарты, при этом расширяя и дополняя их. По их словам: Цель LSB — разработать и продвигать набор стандартов, который увеличит совместимость различных дистрибутивов Linux и даст возможность запускать приложения на любой совместимой системе. Кроме того, LSB поможет скоординировать усилия в привлечении разработчиков к написанию и портированию приложений под Linux. (Википедия)
Первый релиз LSB (1. 0) выпущен в июне 2001. Версия 4. 0 (11. 2008) содержит: – glibc 2. 4; – двоичная совместимость с LSB 3. x; – более простой SDK; – поддержка новых версий графических библиотек GTK и Cairo; – Java; – более простые способы создания LSB-совместимых пакетов RPMp; – Crypto API (через библиотеку Network Secure Sockets).
GLIBC (GNU C library) Формальный стандарт, описывает возможности библиотеки GNU LIBC. Поддерживаются стандарты ANSI C, POSIX. 1, BSD, SVID. (http: //security. opennet. ru/standard. shtml).
Стандарты языка программирования C 1) Книга, выпущенная авторами – Керниганом и Ритчи. В 1978 году Ритчи и Керниган опубликовали первую редакцию книги «Язык программирования Си» . Эта книга, известная среди программистов как «K&R» , служила многие годы неформальной спецификацией языка. Версию языка Си, описанную в ней, часто называют «K&R C» . 2) ANSI стандарт языка программирования С и имевшим имя X 3. 159 – 1989
Замечание о формате исполнимых файлов UNIX В целях совместимости несколько создателей UNIX-систем предложили использовать ELF-формат систем SVR 4 для двоичных и объектных файлов. Единый формат полностью обеспечивает соответствие двоичных файлов в рамках одной компьютерной архитектуры.
Замечание о логической структуре файловой системы Структура каталогов некоторых систем, в частности, GNU/Linux, определена в стандарте Filesystem Hierarchy Standard (http: //www. pathname. com/fhs). Однако во многих отношениях этот тип стандарта является спорным, и он, даже внутри сообщества GNU/Linux далеко не универсален.
Документ FHS 2. 3 PDF (1 из 52 стр. ) Filesystem Hierarchy Standard Group Edited by Rusty Russell Daniel Quinlan Christopher Yeoh
Table of Contents 1. Introduction 1. 1. Purpose 1. 2. Conventions 2. The Filesystem 3. The Root Filesystem 3. 4. /bin : Essential user command binaries (for use by all users) 3. 5. /boot : Static files of the boot loader. . . . . 4. The /usr Hierarchy /usr/X 11 R 6 : X Window System, Version 11 Release 6
Лицензии на ПО
О понятии права на ПО А вторское пра во — в объективном смысле — подотрасль гражданского права, регулирующая правоотношения, связанные с созданием и использованием (изданием, исполнением, показом и т. д. ) произведений науки, литературы или искусства, то есть объективных результатов творческой деятельности людей в этих областях. Программы для ЭВМ и базы данных также охраняются авторским правом. Они приравнены к литературным произведениям и сборникам, соответственно. Понятие копирайт означает в узком смысле право делать копии.
Копилефт (англ. copy — экземпляр, копия + англ. left — лево, сравни: копирайт) — концепция и практика использования законов авторского права для обеспечения невозможности ограничить любому человеку право использовать, изменять и распространять как исходное произведение, так и произведения, производные от него.
Концепция копилефт зародилась в среде ITспециалистов — преимущественно программистов. Автором концепции считается Ричард Столлман, организатор движения свободного ПО и его главный апологет. В их понимании, идея копилефт состоит в том, что каждый, кто распространяет программу как с изменениями, так и без них, не вправе ограничивать свободу её дальнейшего распространения либо модификации. Копилефт гарантирует, что каждый пользователь свободен в своих действиях. В этом, неюридическом, смысле копилефт является антонимом копирайту. Самой известной и распространённой копилефтлицензией является GNU GPL.
Для разных платформ существует много бесплатных программ семейства UNIX/Linux. Большая часть из них разрабатывалась в соответствии со специальной лицензией GPL (General Public License), которая была издана в рамках проекта GNU (Gnu Not Unix), начатого в 1984 году Ричардом Столлманом (Richard Stollman). Для этого был основан фонд FSF (Free Software Foundation)
Свободы и обязательства GPL 1. свободу запуска программы с любой целью; 2. свободу изучения того, как программа работает, и её модификации (предварительным условием для этого является доступ к исходному коду); 3. свободу распространения копий как исходного, так и исполняемого кода; 4. свободу улучшения программы, и выпуска улучшений в публичный доступ (предварительным условием для этого является доступ к исходному коду). (Википедия)
История GPL была написана Ричардом Столлмэном для использования с программами как часть проекта GNU. Она базируется на сходных лицензиях, использовавшихся для ранних версий GNU Emacs, GDB (отладчика GNU) и Коллекции компиляторов GNU (GCC), унифицирует и обобщает их.
GPL v 1 Лицензии-прототипы содержали части, подобные частям GPL, но были специфичными для каждой программы. Целью Столлмэна являлось создание единой лицензии, которая могла бы использоваться для любого проекта, делая таким образом возможным совместное использование кода различными программами. Такой лицензией и стала первая версия GNU GPL, выпущенная в январе 1989 года.
GPL v 2 В 1990 году стало очевидным, что требуется менее ограничивающая лицензия, которая могла бы использоваться для некоторых библиотек ПО; когда версия 2 GPL была выпущена в июне 1991 года, вместе с ней была введена в обращение GNU Library General Public License (GNU LGPL, LGPL), также получившая номер 2, для обозначения того, что эти две лицензии являются взаимодополняющими. Номера версий разошлись в 1999 году, когда была выпущена LGPL версии 2. 1, которая была переименована в Lesser General Public License для уточнения её местоположения в философии GNU.
GPL v 3 В 2005 году Эбен Моглен и Ричард Столлмэн написали черновик третьей версии GPL. В разгоревшейся затем 7 апреля 2005 года в Филадельфии дискуссии Столлмэн сделал несколько заявлений, касающихся патентов на ПО и DRM. 25 января 2006 года Линус Торвальдс публично заявил, что ядро Linux, используемое в операционной системе GNU/Linux, скорее всего, будет по-прежнему распространяться по лицензии GPL версии 2
Схема GNU GPL 1. Определения – (первый абзац) Определение термина «программа» – (второй абзац) Область действия лицензии 2. Право на копирование и распространение 3. Изменение программы – (первый абзац) Право на изменения при соблюдении следующих условий: • a) добавление информации об изменении в модифицированных файлах; • b) лицензирование модифицированных версий на условиях GNU GPL; • c) условное требование интерактивного вывода информации об авторских правах и отсутствии гарантии. – (абзацы 2— 4) Уточнение термина «производная работа»
4. Требование предоставления исходного кода – (первый абзац) Возможные варианты распространения исполнимого кода: • a) распространение вместе с исходным кодом, или • b) распространение с гарантией предоставления исходного кода, или • c) (для некоммерческого использования) распространение вместе с такой гарантией, полученной от третьего лица. – (второй абзац) Определение термина «исходный код» – (третий абзац) Достаточность одинакового доступа для копирования исполнимого и исходного кодов 5. Прекращение действия лицензии при нарушении её условий
6. 7. 8. 9. 10. 11. 12. 13. Акты, означающие принятие лицензии Запрещение дополнительных ограничений при дальнейшем распространении Внешние ограничения не снимают обязательства выполнять условия лицензии Возможность географических ограничений Будущие версии GNU GPL Запросы на исключения из правил Отказ от предоставления гарантий Отказ от ответственности
GNU Lesser General Public License GNU LGPL (пер. Стандартная общественная лицензия ограниченного применения GNU). Она была основана на GNU Library General Public License (англ. Стандартная общественная лицензия GNU для библиотек). Эти лицензии действуют на свободное программное обеспечение и одобрены Фондом свободного программного обеспечения. Их цель – достигнуть компромисса между GPL и простыми разрешительными лицензиями (например, BSD License, MIT License, Mozilla Public License). LGPL была написана в 1991 году, а затем обновлена в 1999 и 2007 годах Ричардом Столлмэном и Эбеном Могленом.
GNU Free Documentation License Стандарт FDL - свободная лицензия GNU на документацию. Она может рассматриваться как дополнение к основной лицензии GPL. Эта копилефт-лицензия первоначально разрабатывалась для пользовательских руководств, учебников и документации, сопровождающей программы для компьютеров. Как и основная лицензия GNU (GPL), предполагает возможность воспроизведение, распространение и изменение исходных документов (в том числе и коммерческих целях).
Другие лицензии на ПО Лицензии открытого ПО (Википедия) Перечень лицензий, используемых производителями программного обеспечения с открытым исходным кодом; в том числе и свободного. 1. Academic Free License 2. Adaptive Public License (APL) 3. Apache Software License 4. Apple Public Source License 5. Artistic License
6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. GNU Lesser General Public License (LGPL) Historical Permission Notice and Disclaimer IBM Public License Intel Open Source License Jabber Open Source License Lucent Public License MITRE Collaborative Virtual Workspace License (CVW License) Microsoft Public license Motosoto License Mozilla Public License (MPL) 1. 0 and 1. 1 NASA Open Source Agreement Naumen Public License от компании Naumen Net. Hack General Public License
21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Attribution Assurance Licenses BSD License Computer Associates Trusted Open Source License Common Development and Distribution License Common Public License CUA Office Public License EU Data. Grid Software License Eclipse Public License Educational Community License Eiffel Forum License Entessa Public License Fair License Frameworx License GNU General Public License (GPL)
35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. Nokia Open Source License OCLC Research Public License Open Group Test Suite License Open Software License PHP License Python Software Foundation License Qt Public License (QPL) Real. Networks Public Source License Reciprocal Public License Ricoh Source Code Public License Sleepycat License Sun Industry Standards Source License (SISSL) Sun Public License (SPL)
49. 50. 51. 52. 53. 54. 55. 56. Sybase Open Watcom Public License University of Illinois/NCSA Open Source License Vovida Software License v. 1. 0 W 3 C License WTFPL wx. Windows Library License X. Net License zlib license 57. Zope Public License


