Прикладные свободные программы и системы в школе
Шрифт:
необходима возможность имитации «одновременного» исполнения нескольких программ на одном компьютере, осуществляемой с помощью приема, известного как «разделение времени». При этом специальный компонент, называемый планировщиком, «нарезает» процессорное время на короткие отрезки и предоставляет их поочередно различным исполняющимся программам (процессам);
наконец, оператор должен иметь возможность как или иначе управлять процессами выполнения отдельных программ. Для этого служат операционные среды, одна из которых – оболочка и набор стандартных утилит – является частью
Таким образом, современные универсальные ОС можно охарактеризовать как 1) использующие файловые системы (с универсальным механизмом доступа к данным), 2) многопользовательские (с разделением полномочий), 3) многозадачные (с разделением времени).
Многозадачность и распределение полномочий требуют определенной иерархии привилегий компонентов самой ОС. В составе ОС различают три группы компонентов:
ядро, содержащее планировщик, драйверы устройств, непосредственно управляющие оборудованием, сетевую подсистему, файловую систему;
системные библиотеки и оболочку с утилитами.
Большинство программ, как системных (входящих в ОС), так и прикладных, исполняются в непривилегированном (пользовательском) режиме и получают доступ к оборудованию (и, при необходимости, к другим ядерным ресурсам, а также ресурсам иных программ) только посредством системных вызовов. Ядро исполняется в привилегированном режиме: именно в этом смысле говорят, что ОС (точнее, ее ядро) управляет оборудованием.
Текущая редакция стандарта на ОС содержит определения около тысячи системных вызовов (часть из которых должна реализоваться только в определенных классах систем; например, в системах «реального времени») и около двухсот команд оболочки и утилит ОС. Стандарт определяет лишь функции вызовов и команд, и не содержит указаний относительно способов их реализации.
Стандарт, кроме этого, определяет способ адресации файлов в системе, локализацию (установки, касающиеся национально-специфических моментов, таких, как язык сообщений или формат даты и времени), совместимый набор символов, синтаксис регулярных выражений, структуру каталогов в файловой системе, формат командной строки и некоторые другие аспекты поведения ОС.
В определении состава ОС значение имеет критерий операциональной целостности (замкнутости): система должна позволять полноценно использовать (включая модификацию) свои компоненты. Поэтому в полный состав ОС включается и набор инструментальных средств (от текстовых редакторов до компиляторов, отладчиков и компоновщиков). Операциональной замкнутостью обладают системы, удовлетворяющие «разработческому» профилю в терминах стандарта.
Краткая история открытых ОС
К концу шестидесятых годов XX в. операционным системам как классу программного обеспечения шел уже второй десяток. Были разработаны больше сотни различных ОС для разных компьютеров, из них полтора десятка находились в «боевой» эксплуатации. На рубеже шестидесятых и семидесятых в одном из исследовательских подразделений американской телекоммуникационной монополии «Эй-Ти-энд-Ти» была выполнена разработка, ставшая важнейшей вехой в истории ОС: система «Юникс».
Задуманная и реализованная Кеном Томсоном при участии нескольких коллег, она вобрала в себя многие черты более ранних ОС, но обладала целым рядом свойств, отличающих ее от большинства предшественниц:
компонентная архитектура: принцип «одна программа – одна функция» плюс мощные средства связывания различных программ для решения возникающих задач;
минимизация ядра (кода, выполняющегося в привилегированном режиме процессора) и количества системных вызовов;
независимость от аппаратной архитектуры и реализация на языке высокого уровня (язык программирования С стал «побочным продуктом» разработки «Юникс»).
«Юникс», благодаря своему удобству прежде всего в качестве инструментальной среды (среды разработки), была тепло принята сначала в университетах, а затем и в отрасли, получившей прототип единой ОС, которая могла использоваться на самых разных вычислительных системах и, более того, быстро и с минимальными усилиями перенесена на вновь разработанную аппаратную архитектуру.
Одним из центров развития «Юникс» стал Университет Калифорнии в Беркли, там было создано множество средств, дополняющих систему и развивающих ее концепцию. В конце концов, в Беркли создали свой вариант ОС той же архитектуры, получивший название «БСД».
Задачу разработать независимую (от авторских прав «Эй-Ти-энд-Ти») реализацию той же архитектуры поставил и Ричард Столлмен, основатель проекта «ГНУ» (характерно, что аббревиатура расшифровывается как GNU’s Not Unix, т.е. «ГНУ – это не “Юникс”»). В ходе разворачивания проекта (1980-90е гг.) было создано множество утилит и инструментальных средств, которые сегодня активно используются в «БСД» (входя в систему) и «Юникс» (как правило, распространяемые в качестве дополнений), а также являющихся основой операционных систем на основе ядра «Линукс», разработка которого была запущена и возглавляется с начала девяностых Линусом Торвальдсом.
Таким образом, на сегодня существует три семейства открытых операционных систем, концептуально происходящих от «Юникс», но реализованных независимо:
основанные на «Эй-Ти-энд-Ти Юникс» (в разнообразных фирменных вариантах, таких как AIX (компания IBM), «Солярис» (компания Sun Microsystems) и т.п.),
«БСД» (в него входят FreeBSD, OpenBSD, NetBSD, а также Darwin, являющаяся основой MacOS X),
«ГНУ/Линукс» (в различных вариантах, или дистрибутивах, таких как Debian GNU/Linux, RedHat Linux, Linux-Mandrake и пр.)
Системы, содержащие код, изначально написанный в AT&T, несвободны [5] , а «БСД» и «ГНУ/Линукс» разрабатываются под свободными лицензиями.
Благодаря конкурентности реализаций архитектура открытых ОС стала вначале фактическим отраслевым стандартом, а затем обрела статус и стандарта юридического (свежая версия принята Международной организацией стандартизации (ISO) в 2001 г.).
Стандартизация ОС означает возможность безболезненной замены самой ОС или оборудования при развитии вычислительной системы или сети и дешевого переноса прикладного программного обеспечения (строгое следование стандарту предполагает полную совместимость программ на уровне исходного текста; из-за профилирования стандарта и его развития некоторые изменения иногда все же необходимы, но перенос программы между открытыми системами на порядки дешевле, чем между альтернативными), а также преемственности опыта пользователей.
5
В 2002 г. «Белл Лабз», подразделение «Эй-Ти-энд-Ти», занимающееся исследованиями и разработками, с какой-то целью релицензировало свободно одну из старых версию «Юникс», System 7, имеющую сегодня лишь историческое значение.