Обзор операционных систем UNIX и Linux
История UNIX начиналась в 60-е гг. ХХ в., когда сотрудник лаборатории Bell Labs – крупнейшей телекоммуникационной компании в мире AT&T – Кен Томпсон написал на ассемблере операционную систему, которая в шутку была названа UNICS (UNiplexed Information and Computing Service – примитивная информационная и вычислительная служба). Впоследствии написание этого слова стало короче, превратившись в UNIX.
Переписывать всю систему на ассемблере заново для каждой новой машины дело трудное, поэтому Томпсон решил переписать UNIX на языке высокого уровня, который он сам специально разработал и назвал языком В. Но язык В оказался неэффективным, в первую очередь, из-за отсутствия в нём структур данных. Тогда коллега Томпсона Ритчи разработал следующий язык, явившийся преемником языка В, который, естественно, получил название С. Вместе Томпсон и Ритчи переписали UNIX на С. Язык С оказался как раз тем языком, который и был нужен в то время, и он сохраняет лидирующие позиции в области системного программирования до сих пор. За работу по созданию ОС UNIX Ритчи и Томпсону ассоциацией по вычислительной технике АСМ была присуждена престижная премия Тьюринга.
Операционная система UNIX поставлялась с полным комплектом исходных текстов, поэтому владельцы системы могли совершенствовать её. Новые идеи и усовершенствования системы распространялись быстро. К середине 80-х гг. ОС UNIX широко применялась на мини-компьютерах и рабочих станциях различных производителей. Многие компании даже приобрели лицензии на исходные тексты, чтобы производить свои версии системы UNIX. Одной из таких компаний была небольшая начинающая фирма Microsoft, в течение нескольких лет продававшая Version 7 под именем XENIX.
Для того чтобы система UNIX могла быть гарантированно запущена на любой машине, к концу 80-х гг. при содействии Совета по стандартам Standard Boards при Институте инженеров по электротехнике и электронике IЕЕЕ была предпринята попытка объединить варианты системы. В этой работе приняли участие сотни людей из промышленных, академических и правительственных организаций. Коллективное название проекта – POSIX. Первые три буквы этого сокращения означали Portable Operating System – переносимая операционная система. Буквы IX были добавлены, чтобы имя проекта выглядело юниксообразно. Комитет POSIX выработал стандарт, известный как 1003.1. Этот стандарт определяет набор библиотечных процедур, которые должна предоставлять каждая соответствующая данному стандарту система UNIX, таким образом, гарантируя, что эта программа будет работать на любой версии системы, поддерживающей данный стандарт.
Операционную систему UNIX можно рассматривать в виде пирамиды. У основания пирамиды располагается аппаратное обеспечение, состоящее из ЦП, памяти, дисков, терминалов и других устройств. Над аппаратным обеспечением располагается уровень режима ядра системы UNIX. Его функция заключается в управлении аппаратным обеспечением и предоставлении всем программам системных вызовов. Эти системные вызовы позволяют программам создавать процессы, файлы и прочие ресурсы и управлять ими. Программы обращаются к системным вызовам, помещая аргументы в регистры ЦП и выполняя команды прерывания для переключения из пользовательского режима в режим ядра и передачи управления операционной системе UNIX.
Уровни пользовательского режима представлены библиотекой системных вызовов и большим количеством стандартных программ (командный процессор, компиляторы, редакторы, программы обработки текста, утилиты для работы с файлами). Именно эти программы и запускаются пользователем с терминала. Таким образом, существует три межуровневых интерфейса в ОС UNIX: интерфейс системных вызовов, интерфейс библиотечных функций и интерфейс, образованный набором стандартных обслуживающих программ. Последний интерфейс большинство пользователей считает системой UNIX. В действительности он не имеет практически никакого отношения к самой системе и легко может быть заменён, например, графическим интерфейсом, не требуя никаких изменений в самой системе. Именно эта гибкость сделала систему UNIX столь популярной и позволила ей пережить многочисленные изменения технологии, лежащей в её основе. У многих версий системы UNIX имеется графический интерфейс пользователя, сходный с популярными интерфейсами, применяемыми на компьютерах Macintosh и в системе Windows.
Пользовательский интерфейс UNIX состоит не только из оболочки, но также из большого числа стандартных обслуживающих программ, называемых утилитами, а также масса прикладных программ, таких как web-браузеры, программы просмотра изображений и т.д.
Процессы UNIX очень похожи на последовательные классические процессы, которые были рассмотрены выше. Каждый процесс запускает одну программу и изначально получает один поток управления. UNIX представляет собой многозадачную систему, так что несколько независимых процессов могут работать одновременно. У каждого пользователя может быть одновременно несколько активных процессов, так что в большой системе могут одновременно работать сотни и даже тысячи процессов.
Файловая система в UNIX – иерархическая, с файлами и каталогами. Все диски монтируются в единое дерево каталогов, начинающееся в одном корне. Отдельные файлы могут быть связаны с любым каталогом дерева.
В 1991 г. финский студент Линус Торвальдс написал ещё один клон системы UNIX, который назвал Linux. Первая версия Linux функционально почти не отличалась от микроядерной системы MINIX. Однако, в отличие от MINIX, Linux была монолитной системой, т.е. вся ОС помещалась в ядре. Операционная система Linux быстро совершенствовалась и впоследствии развилась в полноценный клон UNIX с виртуальной памятью, более сложной файловой системой и многими другими добавленными функциями. Она была перенесена на другие платформы и теперь работает на широком спектре машин, как и UNIX.
Версия Linux 1.0, появившаяся в 1994 г., включала новую файловую систему, отображение файлов на адресное пространство памяти и совместимое с UNIX сетевое программное обеспечение. Данная версия также включала многие новые драйверы устройств. К этому времени ОС Linux стала достаточно совместимой с UNIX, поэтому в неё было перенесено большое количество программного обеспечения UNIX, что значительно увеличило полезность этой системы. Кроме того, операционная система Linux привлекла большое количество разработчиков, которые продолжили работу над её совершенствованием и расширением. Следующая версия – 2.0, вышла в 1996 г. Она включала в себя поддержку 64-разрядной архитектуры, симметричной многозадачности, новых сетевых протоколов и прочих многочисленных функций. Система также содержала внушительную коллекцию различных драйверов устройств.
Необычной особенностью Linux является её бизнес-модель: это свободно (бесплатно) распространяемое программное обеспечение. Эту программу, а также созданные на её основе дистрибутивы (установочные комплекты, включающие прикладные программы) можно скачать с различных Internet-сайтов, например, www.kernel.org. Система Linux поставляется вместе с лицензией, разработанной Ричардом Столманом, основателем Фонда бесплатно распространяемых программ.