Автор: Пучкова Д.М. Примеры операционных систем с открытым и закрытым кодом. 2. Преимущества и недостатки использования OSS по сравнению с традиционным COTS. 3. Сравнительный анализ архитектуры OSS и COTS. 1. По определению, система с открытым кодом (OSS – Open Source Software) означает, что исходный код доступен. ПО системы с открытым кодом может быть использовано, копировано и распределено с или без модификаций, и может предлагаться как самостоятельный программный продукт бесплатно или за деньги. Если конечный пользователь производит некоторые изменения в программном пакете, он может оставить полученный продукт для личного использования, либо вернуть продукт в исходную библиотеку для того, чтобы его можно было использовать в дальнейшем. Лицензия открытых систем гарантируется OSI (Open Source Initiative), образовательной корпорацией с миссией обладать и защищать торговую марку открытых систем. Сообщество разработчиков открытых систем состоит из индивидуальных программистов и групп программистов, которые делают свой вклад в отдельный продукт открытой системы или технологии. Процесс разработки открытых систем состоит в развитии и поддержке продуктов с открытым кодом и технологий, включая программное обеспечение, компьютеры, устройства, технические форматы и языки программирования. Несмотря на то, что в последнее время системы с открытым кодом приобретают все большую актуальность, год рождения систем такого типа 1960. Примеры систем открытого типа – Emacs, GNU технологии, Apache, Sendmail и Linux. Другим примером развития OSS – Perl. Одной из первых систем открытого типа стал Emacs. Это текстовый редактор, широко используемый для разработки ПО. Многие разработчики используют Emacs для разработки ПО с закрытым кодом. Успешное применение Emacs привело к появлению GNU. Гуру программирования говорят: «GNU – это не UNIX». Проект GNU состоит из ядра операционной системы и соответствующих инструментов UNIX. Инструменты GNU совместимы со многими программными платформами, включая Windows NT. Опять-таки, эти инструменты широко применяются разработчиками ПО для написания продуктов OSS и производных. Веб-сервер Apache является программным продуктом свободного распространения. Разработчики Apache формируют комитет голосования, и голоса этого комитета определяют направление развития проекта. Комитет Apache Software Foundation обеспечивает организационную, юридическую и финансовую поддержку для проектов Apache. Сервера Apache известны за свою функциональность и надежность. Они формируют костяк – инфраструктуру, господствующую в Интернете. Сегодня Apache занимает более 60% всего рынка веб-серверов и продолжает развиваться. Sendmail является платформой для пересылки почты от одной машины к другой. Консорциум Sendmail, бездоходная организация, поддерживает веб-сайт, с которого запускается программа OSS. Sendmail является платформой, пересылающей около 90 % всей электронной почты. Linux является Unix-подобной операционной системой с открытым кодом. Ядро постоянно модифицируется сообществом Linux, возглавляемым Линусом Торвальдом, изобретателем Linux. Торвальд назначил делегатов, ответственных за разработку определенных частей проекта, и, в свою очередь, эти делегаты, имеют команду координаторов. ОС Linux – многопользовательская система; она может быть использована как операционная система, как сервер или быть внедренной ОС. Linux используется около десяти млн пользователями во всем мире. Согласно исследованию Information Week, Linux составляет около 4 % всех операционных систем, и это число вырастет до 15% в ближайшие 2 года. Linux является продуктом, быстрее всего распространяющимся на рынке серверных технологий: в 1998 году Linux занимал 16% рынка, а в 1999 году уже 25%. В то время как Emacs, GNU, Apache, Sendmail и Linux являются примерами продуктов открытых систем, Perl (Practical Extraction and Reporting Language) является примером процесса с открытым кодом. Perl является языком системного администрирования и программирования, широко используемым посредством Интернет. Это – стандартный язык скриптов для всех веб-серверов Apache и, как правило, используется под Linux. Perl применяется на параллельных системах одновременно от 10 до 20 программистами, каждый из которых решает свою отдельную задачу. В настоящее время Perl используется 1 млн программистами. Процесс развития OSS сильно отличается от традиционной коммерческой системы с закрытым кодом (COTS). В модели системы с закрытым кодом отдельные программисты или небольшие группы разработчиков закрыто разрабатывают ПО, не допуская утечки кода до тех пор, пока ПО не будет разработано. Затем, готовые программы уже можно продавать другим разработчикам, в том числе и разработчикам открытых систем. Для систем с открытым кодом, напротив, свойственна модель, опирающаяся на сеть «разношерстных» программистов, разрабатывающих и отлаживающих код в параллели. Каждый программист предлагает свою модификацию. Из предложенных модификаций назначенный лидер выбирает наиболее подходящую, на его взгляд. Если лидер решит, что модификация удовлетворит большое число пользователей, тогда он выберет лучший код из всех предложений и внедрит его в действующую модель OSS. Программное обеспечение при такой модели развития выпускается быстро. Вследствие различных моделей развития, OSS имеют много преимуществ над коммерческими программами. Популярные открытые системы, как правило, являются высоко экспертными системами, и это способствует дальнейшему высокотехнологическому развитию программных продуктов. Скорость выпуска и перевыпуска дистрибутивов OSS и патчей в открытых системах напорядок выше, чем в системах с закрытым кодом. Открытыми системами легко управлять, поскольку они часто внедряют такие элементы, как центральное администрирование и удаленное управление. Так как исходный код является доступным, то его можно внедрять и использовать снова и снова для реализации новых проектов. Это позволяет сконцентрироваться больше на стратегическом развитии проекта, нежели на написании и переписывании кода. Это позволяет сократить время разработки до минимума. Благодаря доступу к исходному коду, время жизни систем OSS и их модификаций возможно сделать бесконечно большим, что нереально для коммерческих систем, когда код остается закрытым, вендор способен выйти из бизнеса в любое время, что увеличивает стоимость системы. Открытые системы строят открытые стандарты и достигают высокий уровень интероперабельности. В то время как традиционные коммерческие системы как правило основаны на монопольной поддержке одной компании, в руках которой сосредоточены все акции, открытые системы спонсируются многими вендорами, и уже между вендорами происходит соревнование за право спонсорства. Открытые системы могут быть долговременным проектом со значительными перспективами, но существуют значительные риски их применения. Во-первых, недоделанные, «сырые» коды, являющиеся порождением непрофессионализма разработчиков, которые не получают за разработку денег. Слабый интерфейс – опять-таки является следствием бесплатности – как правило, для профессиональных разработчиков интерес представляет не интерфейс, а именно алгоритм, поэтому понять результаты работы программы зачастую непросто обычному пользователю (поэтому и пишутся файлы наподобие readme.txt или crack.txt, в которых указывается инструкция «сделайте это и нажмите то»). Другой проблемой является проблема совместимости версий открытых систем, работающих на разных платформах. Обычно, доработка программ на совместимость – очень трудоемкий процесс, которым занимаются профессионалы, причем далеко не в качестве хобби, и должен быть хорошо оплачен. Более того, даже в планах алгоритмов, многие алгоритмы являются интеллектуальной собственностью коммерческих фирм или институтов и организаций, поэтому не могут быть открыты массам и даже не продаются. Безусловно, устаревшие или архивные методы и алгоритмы могут быть запущены в веб и быть использованы в качестве бесплатных программ и кодов. Причем, многие открытые системы пытаются повторить результаты закрытых систем. Цель – достичь той же цели дешевыми средствами. Не обладая технологиями, которые защищены системой безопасности закрытых систем, можно добиться лишь подобия. Выбор между открытой системой и системой с закрытым кодом основан на нескольких факторах: во-первых, цена – затраты на софт и затраты на разработку вплоть до конечного пользователя; вовторых, быстродействие; а в-третьих, качество маркетинга. Кроме того, никогда не нужно забывать, что профессиональная система с сильным менеджментом и узкоспециализированными, хорошо и правильно подобранными специалистами (Microsoft), всегда на выходе даст более профессиональный конечный продукт, нежели его копия с множественным числом нашитых друг на друга заплат. Недоработанный продукт, безусловно, может содержать много интересных, но все-таки незаконченных идей, но это, все-таки, несколько иной уровень производства. Другое дело, когда до открытия кода была проведена огромная научная работа, когда раскрывается не все, для того, чтобы показать, насколько много необходимо сделать/изобрести/вложить, в том числе и финансово, для того, чтобы полностью разбираться в программном продукте и уметь модифицировать исходный код. Но идея состоит в том, что полностью разобраться в коде может только разработчик, и в этом-то и состоит интерес: компаниямпотребителям проще и дешевле оказывается платить разработчику, чем самостоятельно проделывать ту же самую работу и пытаться полностью разобраться в коде, либо, что ещё хуже, нанимать мошенников, которые будут выдавать некачественные результаты. Разработчики открытых систем основываются на следующих факторах: Возможность производства. Доступность продукта/надежность. Совместимость. Масштабируемость. Гибкость дизайна. Время жизни. Оперируемость. Качество сервиса и поддержки. Безопасность. Уровень возможности управления. Риск фрагментации. Доступность приложений. Для всех вышеуказанных пунктов, менеджер продукта открытой системы проводит сравнительный анализ с системой с закрытым кодом. Особенности открытых систем Особенности закрытых систем • Увеличивают стоимость продукта за счет доработки кода. • Функциональность согласно со спецификацией. • Могут содержать большое число ошибок. • Требуют больших затрат на труд. • Иногда очень сложно поддерживать. • Более дешевые. • Необходимо определить функциональную способность. • Проблема с лицензированием. • Возможно, потребуется модификация. • Предъявляют требования к системе для поддержки. • Могут содержать большое количество проблем с безопасностью. • Авторы системы обеспечивают контроль за системой. Структурно Windows NT может быть представлена в виде двух частей: часть операционной системы, работающая в режиме пользователя, и часть операционной системы, работающая в режиме ядра (см. рис.1). Режим пользователя состоит из подсистем, которые передают запросы ввода/вывода соответствующему драйверу режима ядра посредством менеджера ввода-вывода. Уровень пользователя состоит из двух подсистем — подсистема окружения (Environment) и интегральная подсистема (Integral). Подсистема окружения разработана для запуска приложений, написанных для разных типов операционных систем. Ни одна из подсистем окружения не имеет прямого доступа к аппаратной части компьютера. Доступ к ресурсам памяти происходит посредством Менеджера Виртуальной Памяти, который работает в режиме ядра. Также, приложения запускаются с меньшим приоритетом, чем процессы режима ядра. Интегрированная подсистема (Integral subsystem) следит за некоторыми функциями операционной системы от имени подсистемы окружения. Состоит из подсистемы безопасности, службы рабочей станции и службы сервера. Режим ядра Windows NT имеет полный доступ к аппаратной части компьютера и системным ресурсам. Работает в защищенной области памяти, контролирует потоки, управляет памятью и взаимодействием с аппаратной частью. Предотвращает доступ к критическим областям памяти со стороны приложений и служб пользовательского режима. Для выполнения подобных операций процесс пользовательского режима должен попросить режим ядра выполнить её от своего имени. Windows NT представляет собой модульную операционную систему. Основными модулями являются: - уровнь аппаратных абстракций (Hardware Abstraction Layer - HAL); - ядро (Kernel); - исполняющая система (Windows NT executive); - защитные подсистемы (Protected subsystems); - подсистемные среды (Environment subsystems). Windows NT полностью ориентирована на работу с сетевыми приложениями и поддерживает архитектуру «клиент-сервер». Средства сетевого взаимодействия Windows NT направлены на реализацию взаимодействия с существующими типами сетей, обеспечение возможности загрузки и выгрузки сетевого программного обеспечения, а также на поддержку распределенных приложений. Windows NT с точки зрения реализации сетевых средств имеет следующие особенности: - встроенность на уровне драйверов (быстродействие); - открытость (легкость динамической загрузки/выгрузки и мультиплексируемость протоколов); - наличие сервиса вызова удаленных процедур (RPC – Remote Procedure Call); - наличие дополнительных сетевых средств (дополнительные средства безопасности, централизованное администрирование, отказоустойчивость). Система UNIX является многопользовательской многозадачной системой. Самый общий взгляд на ее архитектуру позволяет увидеть двухуровневую модель системы, состоящую из пользовательской и системной части (ядра) (см. рисунок). Защищенное ядро управляет ресурсами компьютера и предоставляет пользователю базовый набор услуг. На рисунке представлена структура ядра. Существует два основных объекта операционной системы UNIX, с которыми приходится работать пользователю – файлы и процессы. Эти объекты тесно связаны друг с другом, и в целом способ организации работы с ними как раз и определяет архитектуру операционной системы. Все данные пользователя хранятся в файлах; доступ к периферийным устройствам осуществляется посредством чтения и записи специальных файлов; во время выполнения программы операционная система считывает исполняемый код из файла в память и передает ему управление. Принципы хранения и доступа к файлам объединяются понятием файловой системы. Существует несколько видов таких структур: линейные, древовидные, объектные и другие, но в настоящее время широко распространены только древовидные структуры. Каждому файлу соответствует уникальный в рамках файловой системы номер. Этот номер, называемый индексом файла, соответствует индексному узлу (i-node) – структуре на диске, в которой хранится служебная информация (так называемые «метаданные») о файле: расположение данных файла на диске, длина файла, владелец файла, права доступа и т. п. С другой стороны, вся функциональность информационной системы определяется выполнением соответствующих процессов. Процесс – это исполняющаяся программа, относящаяся к операционной системе или запущенная пользователем. Ядро, системные утилиты и демоны работают на уровне привилегий системы, пользовательские программы – на уровне пользователя. А.Федосеев «UNIX: учебный курс». 2005-2006. 2. А.В.Кузин, В.М.Демин, «Компьютерные сети». 3. C.A.Kenwood, A business case study of open source software. 2001. 4. www.wikipedia.com 1.