Главной причиной, подталкивающей к изменениям, является необходимость добавления новых возможностей в систему. Изначально новые функциональные средства появлялись в UNIX только как пользовательские инструменты и утилиты. Позже, когда UNIX превратилась во вполне развитую систему, разработчики стали добавлять многие дополнительные возможности прямо в ядро ОС. Многие из новых функций системы создавались для поддержки более сложных программ. Одним из примеров таких нововведений является набор Interprocess Communication (IPC) в ОС System V, в состав которого входят поддержка разделения памяти, семафоры и очереди сообщений. Все эти возможности позволили процессам взаимодействовать, используя совместно данные, обмениваясь сообщениями и синхронизируя свои действия. Большинство современных систем UNIX также имеют несколько уровней потдержки для создания много поточных приложений. Возможности IPC и технологии потоков существенно помогают в разработке сложных приложений, например тех, что основаны на модели «клиент-сервер». В таких программах обычно серверная часть находится в режиме постоянного ожидания запроса от клиентов. Если такой запрос приходит, сервер обрабатывает его и снова переходит в режим ожидания следующего. Если сервер имеет возможность обслуживания сразу несколько клиентских запросов, в этом случае предпочтительно вести их обработку параллельно. С применением технологии IPC сервер может использовать отдельный процесс для обработки каждого запроса, в то время как все выполняемые процессы могут совместно использовать одни и те же данные. Многопоточная система позволяет реализовать сервер как один процесс, имеющий несколько параллельно функционирующих потоков, использующих общее адресное пространство. Возможно, наиболее «видимой» частью любой операционной системы яв¬ляется файловая система. В ОС UNIX также было добавлено множество но¬вых возможностей, в том числе поддержка файлов FIFO (First In, First Out), символьных связей, а также файлов, имеющих размеры большие, чем раздел диска. Современные системы поддерживают защиту файлов, списки прав доступа, а также ограничения доступа к дискам для каждого пользователя.
Сетевая поддержка
За годы развития UNIX максимальным изменениям была подвергнута часть ядра, являющаяся сетевой подсистемой. Ранние версии ОС работали отдельно друг от друга и не имели возможности соединения с другими машинами. Однако распространение компьютерных сетей поставило перед разработчиками проблему необходимости их поддержки в системе UNIX. Первым занялся решением этой проблемы университет Беркли. Организация DARPA профинансировала проект встраивания поддержки TCP/IP в 4BSD. На сегодняшний день системы UNIX поддерживают большое количество сетевых интерфейсов (таких как Ethernet, FDDI и ATM), протоколов (TCP/IP, UDP/IP1, SNA2 и других) и средств (например, сокетов и STREAMS). Появление возможности соединения с другими компьютерами во многих отношениях повлияло на операционную систему. Пользователи ОС сразу же захотели совместно использовать файлы, расположенные на соединенных между собой машинах, а также запускать приложения на удаленных узлах. Для удовлетворения этих требований развитие системы UNIX велось в трех направлениях:
1 User Datagram Protocol/Internet Protocol, протокол пользовательских дейтаграмм/протокол Интернета. 2 System Network Architecture (системная сетевая архитектура) компании IBM.
♦ Разрабатывались распределенные файловые системы, позволявшие вести прозрачный доступ к файлам на удаленных узлах. Наиболее удачными из созданных систем оказались Network File System (NFS) корпорации Sun Microsystems, Andrew File System (AFS) университета Карнеги— Меллона и Distributed File System (DFS) корпорации Transarc. ♦ Создавалось большое количество распределенных служб, позволяющих совместно использовать информацию по сети. Эти службы представляют собой обычные пользовательские программы, основанные на моде¬ли «клиент-сервер» и использующие удаленные вызовы процедур для активации действий на других компьютерах. Примерами таких про¬грамм являются Network Information Service (Сетевой информационный сервис, NIS) и Distributed Computing Environment (Распределенная вычислительная среда, DCE). ♦ Появлялись распределенные операционные системы, такие как Mach, Chorus и Sprite, имеющие различную степень совместимости с UNIX и продвигаемые на рынок как базовые технологии для построения бу¬дущих распределенных ОС.
Производительность
Постоянной движущей силой, заставляющей вносить изменения в системы, является увеличение их производительности. Конкурирующие между собой поставщики операционных систем тратят огромные усилия на демонстрацию того, что именно их ОС производительнее, чем другие. Почти все внутренние подсистемы претерпели большие изменения, выполненные с целью увеличения производительности систем. В начале 90-х годов университет Беркли представил файловую систему Fast File System, благодаря интеллектуальным правилам размещения блоков на диске увеличивающую производительность системы. Позже появились более быстродействующие файловые системы, использующие внешнее размещение или технологии поддержки журналов. Увеличение вычислительных мощностей также стало основной причиной разработок в области коммуникаций между процессами, работы с памятью и многопоточных процессов. Когда для работы многих приложений оказалось недостаточно одного процессора, производители разработали многопроцессорные системы под управлением UNIX, некоторые из которых имеют сотни процессоров.