Лекция: Стандартная система UNIX

К концу 80-х широкое распространение получили две различные и в чем-то не­совместимые версии системы UNIX: 4.3BSD и System V Release 3. Кроме того, практически каждый производитель добавлял свои нестандартные усовершенствования. Этот раскол в мире UNIX, вместе с тем фактом, что стандарта на формат двоичных программ не было, сильно замедлил коммерческое признание операци­онной системы UNIX. Производители программного обеспечения не могли напи­сать пакет программ для системы UNIX так, чтобы он гарантированно мог быть запущен на любой системе UNIX (как, например, это делалось в системе MS-DOS). Различные попытки стандартизации системы UNIX провалились с самого нача­ла. Например, корпорация AT&T выпустила стандарт SVID(System V Interface Definition — описание интерфейса UNIX System V), в котором определялись все системные вызовы, форматы файлов и т. д. Этот документ был попыткой постро­ить в одну шеренгу всех производителей UNIX System V, но он не оказал никако­го влияния на производителей BSD, которые просто проигнорировали его.

Первая попытка примирить два варианта системы UNIX была предпринята при содействии Совета по стандартам при Институте инженеров по электротехнике и электронике IEEE Standard Boards, глубокоуважаемой и, что еще важнее, нейт­ральной организации. В этой работе приняли участие сотни людей из промышлен­ности, академических и правительственных организаций. Коллективное название данного проекта — POSIX.Первые три буквы этого сокращения означали Portable Operating System — переносимая операционная система. Буквы IX в конце слова были добавлены, чтобы имя проекта выглядело юниксообразно.

После большого количества высказанных аргументов и контраргументов, оп­ровержений и опровергнутых опровержений, комитет POSIX выработал стандарт, известный как 1003.1.Этот стандарт определяет набор библиотечных процедур, которые должна предоставлять каждая соответствующая данному стандарту систе­ма UNIX. Большая часть этих процедур обращается к системному вызову, но неко­торые из них могут быть реализованы вне ядра. Типичными процедурами являются open, read и fork. Идея стандарта POSIX заключается в том, что производитель программного обеспечения при написании программы использует только процедуры, описанные в стандарте 1003.1, таким образом, гарантируя, что эта программа будет работать на любой версии системы UNIX, поддерживающей данный стандарт.

Хотя большинство комитетов по стандартам, как правило, создают нечто, сплошь состоящее из компромиссов, стандарт 1003.1 заметно отличается от общего правила в лучшую сторону, особенно если учитывать большое число заин­тересованных сторон, принимавших участие в его разработке. Вместо того, чтобы принять за точку отсчета объединение множеств всех свойств System V и BSD (норма для большинства комитетов по стандартам), комитет IEEE взял за основу пересечение множеств. То есть в первом приближении дело обстоит так: если ка­кое-либо свойство присутствовало как в System V, так и в BSD, то оно включалось в стандарт. В противном случае это свойство в стандарт не включалось. В резуль­тате применения такого алгоритма стандарт 1003.1 сильно напоминает прямого общего предка систем System V и BSD, а именно Version 7. От Version 7 стандарт сильнее всего отличается в двух областях: обработке сигналов (что по большей части взято из BSD) и управлению терминалом, что представляет собой ново­введение. Документ 1003.1 написан так, чтобы как разработчики операционной системы, так и создатели программного обеспечения были способны его понять, что также ново в мире стандартов, хотя в настоящее время уже полным ходом ведется работа по исправлению этого нестандартного для стандартов свойства.

Ядро состояло из 1600 строк на С и 800 ассемблерных строк. По техническим причинам, связанным с архитектурой процессора Intel 8088, драйверы устройств ввода-вывода (еще 2900 строк на С) также были размещены в ядре. Файловая си­стема (5100 строк на С) и менеджер памяти (2200 строк на С) работали как два раз­дельных пользовательских процесса.

Преимущество микроядер перед монолитными системами заключается в том, что устройство микроядра легко понять, да и поддержка системы, основанной на микроядре, проще, благодаря модульной структуре такой системы. Кроме того, перемещение программного обеспечения из ядра в пространство пользователя существенно повышает надежность системы, так как сбой процесса, работающего в режиме пользователя, способен нанести меньший ущерб, чем сбой компонента в режиме ядра. Основной недостаток состоит в несколько меньшей производи­тельности, связанной с дополнительными переключениями из режима пользова­теля в режим ядра. Однако производительность – не единственное достоинство системы. На всех современных системах UNIX оконная система X Windows ра­ботает в режиме пользователя, в результате чего производительность несколько снижается, зато достигается большая модульность (в отличие от системы Windows, у которой весь графический интерфейс пользователя расположен в ядре). Среди других хорошо известных примеров схемы микроядра того времени можно назвать Mach и Chorus.

Уже через несколько месяцев после своего появления система MINIX стала чем-то вроде объекта культа — у нее есть своя конференция, comp.os.minix, и более 40 000 пользователей. Многие пользователи сами стали писать команды и пользо­вательские программы, так что система MINIX стала продуктом коллективного творчества большого количества пользователей, обменивающихся своими разра­ботками по Интернету. Она стала прототипом других коллективных работ, появив­шихся позднее. В 1997 году была выпущена версия 2.0 системы MINIX. Базовая система теперь включала в себя сетевое программное обеспечение, и ее размер вырос до 62 200 строк. Исходный текст операционной системы MINIX можно бесплат­но получить на web-сайте www.cs.vu.nl/~ast/minix.html.

Linux

В ранние годы развития системы MINIX и обсуждений этой системы в Интернете многие люди просили (а часто требовали) все больше новых и более сложных функ­ций, и на эти просьбы автор часто отвечал отказом (сохраняя небольшие размеры системы, чтобы студенты могли полностью понять ее за один семестр). Эти отка­зы раздражали многих пользователей. В те времена бесплатной системы FreeBSD еще не было. Наконец через несколько лет финский студент Линус Торвальдс ре­шил сам написать еще один клон системы UNIX, который он назвал Linux. Это должна была быть полноценная операционная система, со многими функциями, отсутствующими (по намерению авторов) в системе MINIX. Первая версия опе­рационной системы Linux 0.01 была выпущена в 1991 году. Она была разработана и собрана в системе MINIX и заимствовала некоторые идеи системы MINIX, начи­ная со структуры дерева исходных текстов и кончая структурой файловой системы. Однако, в отличие от микроядерной системы MINIX, Linux была монолитной си­стемой, то есть вся операционная система помещалась в ядре. Размер исходного текста составил 9300 строк на С и 950 строк на ассемблере, что приблизительно совпадало с версией MINIX. Функционально первая версия Linux также практи­чески не отличалась от MINIX.

Операционная система Linux быстро росла в размерах и впоследствии разви­лась в полноценный клон UNIX с виртуальной памятью, более сложной файло­вой системой и многими другими добавленными функциями. Хотя изначально система Linux работала только на процессоре Intel 386 (и даже содержала ассемб­лерный код 386-й машины посреди процедур на языке С), она была довольно быс­тро перенесена на другие платформы и теперь работает на широком спектре ма­шин, как и UNIX. Однако одно из основных отличий системы Linux от других клонов системы UNIX заключается в использовании многих специальных осо­бенностей компилятора gcc, поэтому, чтобы откомпилировать ее стандартным ANSI С компилятором, потребуется приложить немало усилий.

Следующим основным выпуском системы Linux была версия 1.0, появивша­яся в 1994 году. Она состояла из 165 000 строк кода и включала новую файло­вую систему, отображение файлов на адресное пространство памяти и совмести­мое с BSD сетевое программное обеспечение с сокетами и TCP/IP. Она также включала многие новые драйверы устройств. Следующие два года выходили вер­сии с незначительными исправлениями.

К этому времени операционная система Linux стала достаточно совместимой с UNIX, поэтому в нее было перенесено большое количество программного обес­печения UNIX, что значительно увеличило полезность рассматриваемой системы. Кроме того, операционная система Linux привлекла большое количество людей, которые начали работу над ее совершенствованием и расширением под общим руководством Торвальдса.

Следующий главный выпуск, версия 2.0, вышел в свет в 1996 году. Эта версия системы Linux состояла из 470 000 строк на С и 8000 строк ассемблерного текста. Она включала в себя поддержку 64-разрядной архитектуры, симметричной мно­гозадачности, новых сетевых протоколов и прочих многочисленных функций. Зна­чительную часть от общей массы исходного текста составляла внушительная кол­лекция различных драйверов устройств. Следом за версией 2.0 довольно часто выходили дополнительные выпуски.

В систему Linux была перенесена внушительная часть стандартного программ­ного обеспечения UNIX, включая более 1000 утилит, оконную систему X Windows и большую часть сетевого программного обеспечения. Кроме того, специально для Linux было написано два различных графических интерфейса пользователя: GNOME и KDE. В общем, система Linux выросла в полноценный клон UNIX со всеми «погремушками», какие только могут понадобиться фанату UNIX.

Необычной особенностью Linux является ее бизнес-модель: это свободно распро­страняющееся программное обеспечение. Ее можно скачать с различных Интернет-сайтов, например www.kernel.org. Система Linux поставляется вместе с лицензией, разработанной Ричардом Столманом, основателем Фонда бесплатно распространяемых программ Free Software Foundation. Несмотря на то, что система Linux распространяется бесплатно, эта лицензия, называющаяся GPL (GNU Public License — общедоступная лицензия), по длине превышает лицензию корпорации Microsoft для операционной системы Windows 2000. Она содержит сведения о том, что вы можете и чего не можете делать с исходным текстом. Пользователи могут свободно использовать, копировать, модифицировать и распространять дальше исходные тексты и двоичные файлы. Основной запрет касается отдельной прода­жи или распространения двоичного кода без исходных текстов. Исходные тексты должны либо поставляться вместе с двоичными файлами, либо предоставляться по требованию.

Хотя Торвальдс до сих пор довольно внимательно контролирует ядро системы, большое количество программ пользовательского уровня было написано другими многочисленными программистами, многие из которых изначально перешли на Linux из сетевых сообществ MINIX, BSD и GNU (Free Software Foundation). Од­нако по мере развития системы Linux все меньшая часть сообщества Linux желает ковыряться в исходном тексте (свидетельством тому служат сотни книг, описыва­ющих, как установить систему Linux и как ею пользоваться, и только несколько книг, в которых обсуждается сама система, или как она работает). Кроме того, мно­гие пользователи Linux теперь предпочитают бесплатному скачиванию системы по Интернету покупку одного из CD-ROM, распространяемых многочисленны­ми коммерческими компаниями. На web-сайте www.linux.org перечислено более 50 компаний, продающих различные пакеты Linux. По мере того, как все больше и больше компаний, занимающихся программным обеспечением, начинают про­давать свои версии Linux, а все большее число производителей компьютеров по­ставляют систему Linux со своими машинами, граница между коммерческим и бес­платным программным обеспечением слегка размывается.

 


еще рефераты
Еще работы по информатике