Unix ( / ˈ j uː n ɪ k s / ,YOO-niks; торговая маркаUNIX) — семействомногозадачныхмногопользовательскихкомпьютерныхоперационных систем, которые произошли от оригинальнойAT&TUnix, разработка которой началась в 1969 году[1]висследовательском центреBell LabsКеном Томпсоном,Деннисом Ритчиидругими.[4]
Первоначально предназначавшийся для использования внутри Bell System , AT&T лицензировала Unix для внешних сторон в конце 1970-х годов, что привело к появлению множества как академических, так и коммерческих вариантов Unix от поставщиков, включая Калифорнийский университет в Беркли ( BSD ), Microsoft ( Xenix ), Sun Microsystems ( SunOS / Solaris ), HP / HPE ( HP-UX ) и IBM ( AIX ). В начале 1990-х годов AT&T продала свои права на Unix компании Novell , которая затем продала торговую марку UNIX компании The Open Group , отраслевому консорциуму, основанному в 1996 году. Open Group разрешает использовать марку для сертифицированных операционных систем, которые соответствуют Единой спецификации UNIX (SUS).
Ранние версии Unix работали на компьютерах PDP-11 .
Системы Unix характеризуются модульной конструкцией , которую иногда называют « философией Unix ». Согласно этой философии, операционная система должна предоставлять набор простых инструментов, каждый из которых выполняет ограниченную, четко определенную функцию. [5] Унифицированная и основанная на inode файловая система и механизм межпроцессного взаимодействия, известный как « каналы », служат основными средствами связи, [4] а язык сценариев и команд оболочки ( оболочка Unix ) используется для объединения инструментов для выполнения сложных рабочих процессов.
Unix отличается от своих предшественников тем, что является первой переносимой операционной системой: почти вся операционная система написана на языке программирования C , что позволяет Unix работать на многочисленных платформах. [6]
Первоначально Unix задумывался как удобная платформа для программистов, разрабатывающих программное обеспечение для работы на нем и других системах, а не для непрограммистов. [7] [8] [9] Система разрасталась по мере того, как операционная система начала распространяться в академических кругах, а пользователи добавляли в систему свои собственные инструменты и делились ими с коллегами. [10]
Сначала Unix не был разработан для поддержки многозадачности [11] или для переносимости . [6] Позже Unix постепенно приобрел многозадачность и многопользовательские возможности в конфигурации с разделением времени , а также переносимость. Системы Unix характеризуются различными концепциями: использование простого текста для хранения данных; иерархическая файловая система ; обработка устройств и определенных типов межпроцессного взаимодействия (IPC) как файлов; и использование большого количества программных инструментов , небольших программ, которые могут быть связаны вместе через интерпретатор командной строки с использованием каналов , в отличие от использования одной монолитной программы, которая включает в себя все те же функции. Эти концепции в совокупности известны как « философия Unix ». Брайан Керниган и Роб Пайк суммируют это в «Среде программирования Unix» как «идею о том, что мощь системы исходит больше из взаимосвязей между программами, чем из самих программ». [12]
К началу 1980-х годов пользователи начали рассматривать Unix как потенциальную универсальную операционную систему, подходящую для компьютеров всех размеров. [13] [14] Среда Unix и модель клиент-серверной программы были важнейшими элементами в развитии Интернета и преобразовании вычислений, сосредоточенных в сетях, а не на отдельных компьютерах.
И Unix, и язык программирования C были разработаны компанией AT&T и распространены среди государственных и академических учреждений, что привело к тому, что обе системы были портированы на более широкий спектр семейств машин, чем любая другая операционная система.
Операционная система Unix состоит из множества библиотек и утилит вместе с главной управляющей программой, ядром . Ядро предоставляет службы для запуска и остановки программ, управляет файловой системой и другими общими «низкоуровневыми» задачами, которые разделяет большинство программ, и планирует доступ, чтобы избежать конфликтов, когда программы пытаются получить доступ к одному и тому же ресурсу или устройству одновременно. Для посредничества в таком доступе ядро имеет особые права, отраженные в различии пространства ядра и пространства пользователя , причем последнее является областью с более низким приоритетом, где работают большинство прикладных программ.
Истоки Unix восходят к середине 1960-х годов, когда Массачусетский технологический институт , Bell Labs и General Electric разрабатывали Multics , операционную систему с разделением времени для мэйнфреймового компьютера GE 645. [15] Multics отличался несколькими нововведениями , но также представлял серьезные проблемы. Разочарованные размером и сложностью Multics, но не его целями, отдельные исследователи в Bell Labs начали выходить из проекта. Последними, кто ушел, были Кен Томпсон , Деннис Ритчи , Дуглас Макилрой и Джо Оссанна , [11] которые решили повторно реализовать свой опыт в новом проекте меньшего масштаба. Эта новая операционная система изначально не имела организационной поддержки, а также названия.
Новая операционная система была однозадачной системой. [11] В 1970 году группа придумала название Unics ( Unixed Information and Computing Service) как каламбур на Multics , что означало Multiplexed Information and Computer Services . Брайан Керниган приписывает себе эту идею, но добавляет, что «никто не может вспомнить» происхождение окончательного написания Unix . [16] Деннис Ритчи, [11] Дуг Макилрой, [1] и Питер Г. Нойманн [17] также приписывают Кернигану.
Первоначально операционная система была написана на языке ассемблера , но в 1973 году версия 4 Unix была переписана на языке C. [ 11] Однако версия 4 Unix все еще имела много специфического кода PDP-11 и не подходила для портирования. Первым портом на другую платформу был порт версии 6, сделанный четыре года спустя (1977) в Университете Вуллонгонга для Interdata 7/32 , [18] за которым последовал порт Bell Labs версии 7 на Interdata 8/32 в 1977 и 1978 годах. [19]
Bell Labs выпустила несколько версий Unix, которые вместе именуются Research Unix . В 1975 году первая исходная лицензия на UNIX была продана Дональду Б. Джиллису из Иллинойсского университета в Урбане–Шампейне, кафедра компьютерных наук (UIUC). [20]
В конце 1970-х и начале 1980-х годов влияние Unix в академических кругах привело к широкомасштабному принятию Unix ( BSD и System V ) коммерческими стартапами, что в свою очередь привело к фрагментации Unix на несколько похожих — но часто немного и взаимно несовместимых — систем, включая DYNIX , HP-UX , SunOS / Solaris , AIX и Xenix . В конце 1980-х годов AT&T Unix System Laboratories и Sun Microsystems разработали System V Release 4 ( SVR4 ), которая впоследствии была принята многими коммерческими поставщиками Unix.
В 1990-х годах Unix и Unix-подобные системы стали пользоваться популярностью и стали операционной системой по выбору для более чем 90% из 500 самых быстрых суперкомпьютеров мира , [21] поскольку дистрибутивы BSD и Linux были разработаны в сотрудничестве с всемирной сетью программистов. В 2000 году Apple выпустила Darwin , также систему Unix, которая стала ядром операционной системы Mac OS X, позже переименованной в macOS . [22]
Unix-подобные операционные системы широко используются в современных серверах , рабочих станциях и мобильных устройствах . [23]
В конце 1980-х годов усилия по стандартизации открытых операционных систем, теперь известные как POSIX, обеспечили общую основу для всех операционных систем; IEEE основал POSIX вокруг общей структуры основных конкурирующих вариантов системы Unix, опубликовав первый стандарт POSIX в 1988 году. В начале 1990-х годов отдельные, но очень похожие усилия были начаты отраслевым консорциумом, инициативой Common Open Software Environment (COSE), которая в конечном итоге стала Единой спецификацией UNIX (SUS), администрируемой The Open Group . Начиная с 1998 года, Open Group и IEEE основали Austin Group , чтобы предоставить общее определение POSIX и Единой спецификации UNIX, которая к 2008 году стала Базовой спецификацией Open Group.
В 1999 году, стремясь к совместимости, несколько поставщиков систем Unix согласились на Executable and Linkable Format (ELF) SVR4 в качестве стандарта для двоичных и объектных кодовых файлов. Общий формат обеспечивает существенную двоичную совместимость между различными системами Unix, работающими на одной и той же архитектуре ЦП.
Стандарт иерархии файловой системы был создан для предоставления эталонной структуры каталогов для Unix-подобных операционных систем; в основном он использовался в Linux.
Система Unix состоит из нескольких компонентов, которые изначально были упакованы вместе. Включая среду разработки, библиотеки, документы и переносимый, модифицируемый исходный код для всех этих компонентов, в дополнение к ядру операционной системы, Unix была самодостаточной программной системой. Это было одной из основных причин, по которой она стала важным средством обучения и преподавания и оказала широкое влияние. См. § Влияние ниже.
Включение этих компонентов не сделало систему большой — оригинальный дистрибутив V7 UNIX, состоящий из копий всех скомпилированных двоичных файлов, а также всего исходного кода и документации, занимал менее 10 МБ и поставлялся на одной девятидорожечной магнитной ленте , заслужив репутацию портативной системы. [24] Печатная документация, набранная из онлайн-источников, содержалась в двух томах.
Имена и расположение файловой системы компонентов Unix существенно изменились на протяжении истории системы. Тем не менее, реализация V7 имеет каноническую раннюю структуру:
Система Unix оказала значительное влияние на другие операционные системы. Она добилась своей репутации благодаря своей интерактивности, предоставлению программного обеспечения за номинальную плату для использования в образовательных целях, работе на недорогом оборудовании и простоте адаптации и переноса на другие машины. Первоначально Unix был написан на языке ассемблера , но вскоре был переписан на C , языке программирования высокого уровня . [26] Хотя это последовало примеру CTSS , Multics и Burroughs MCP , именно Unix популяризировал эту идею.
Unix имел радикально упрощенную файловую модель по сравнению со многими современными операционными системами: рассматривая все виды файлов как простые массивы байтов. Иерархия файловой системы содержала машинные службы и устройства (такие как принтеры , терминалы или дисководы ), предоставляя единый интерфейс, но за счет того, что иногда требовались дополнительные механизмы, такие как ioctl и флаги режима для доступа к функциям оборудования, которые не соответствовали простой модели «потока байтов». Операционная система Plan 9 продвинула эту модель еще дальше и устранила необходимость в дополнительных механизмах.
Unix также популяризировал иерархическую файловую систему с произвольно вложенными подкаталогами, первоначально представленную Multics. Другие распространенные операционные системы той эпохи имели способы разделения устройства хранения на несколько каталогов или разделов, но у них было фиксированное количество уровней, часто только один уровень. Несколько основных фирменных операционных систем в конечном итоге добавили возможности рекурсивных подкаталогов, также созданные по образцу Multics. Иерархия «группа, пользователь» DEC RSX-11M превратилась в каталоги OpenVMS , тома CP/M превратились в подкаталоги MS-DOS 2.0+, а иерархия group.account HP и библиотечные системы SSP и OS/400 IBM были объединены в более широкие файловые системы POSIX.
Превращение интерпретатора команд в обычную программу уровня пользователя с дополнительными командами, предоставляемыми в виде отдельных программ, было еще одним нововведением Multics, популяризированным Unix. Оболочка Unix использовала тот же язык для интерактивных команд, что и для скриптов ( скрипты оболочки — не было отдельного языка управления заданиями, как у IBM JCL ). Поскольку команды оболочки и ОС были «просто еще одной программой», пользователь мог выбирать (или даже писать) свою собственную оболочку. Новые команды можно было добавлять, не меняя саму оболочку. Инновационный синтаксис командной строки Unix для создания модульных цепочек процессов производитель-потребитель ( конвейеры ) сделал мощную парадигму программирования ( сопрограммы ) широко доступной. Многие более поздние интерпретаторы командной строки были вдохновлены оболочкой Unix.
Фундаментальным упрощающим предположением Unix была его ориентация на текст с разделителями новой строки для почти всех форматов файлов. В оригинальной версии Unix не было «двоичных» редакторов — вся система была настроена с использованием текстовых сценариев команд оболочки. Общим знаменателем в системе ввода-вывода был байт — в отличие от «записных» файловых систем . Ориентация на текст для представления почти всего сделала каналы Unix особенно полезными и способствовала разработке простых, общих инструментов, которые можно было бы легко комбинировать для выполнения более сложных специальных задач. Ориентация на текст и байты сделала систему гораздо более масштабируемой и переносимой, чем другие системы. Со временем текстовые приложения также оказались популярными в прикладных областях, таких как языки печати ( PostScript , ODF ), и на прикладном уровне интернет-протоколов , например, FTP , SMTP , HTTP , SOAP и SIP .
Unix популяризировал синтаксис для регулярных выражений , который нашел широкое применение. Интерфейс программирования Unix стал основой для широко распространенного стандарта интерфейса операционной системы (POSIX, см. выше). Язык программирования C вскоре распространился за пределы Unix и теперь повсеместно используется в программировании систем и приложений.
Ранние разработчики Unix сыграли важную роль в привнесении концепций модульности и повторного использования в практику разработки программного обеспечения , породив движение «программных инструментов». Со временем ведущие разработчики Unix (и программ, которые работали на нем) установили набор культурных норм для разработки программного обеспечения, норм, которые стали такими же важными и влиятельными, как и сама технология Unix; это было названо философией Unix .
Сетевые протоколы TCP/IP были быстро реализованы в версиях Unix, широко используемых на относительно недорогих компьютерах, что способствовало взрывному развитию всемирной сети Интернет , обеспечивающей подключение в режиме реального времени, и заложило основу для реализаций на многих других платформах.
Политика Unix, предусматривающая обширную онлайн-документацию и (на протяжении многих лет) свободный доступ ко всем исходным кодам системы, повысила ожидания программистов и способствовала началу движения за свободное программное обеспечение в 1983 году.
В 1983 году Ричард Столлман объявил о проекте GNU (сокращение от «GNU's Not Unix»), амбициозной попытке создать свободную программную систему типа Unix — «свободную» в том смысле, что каждый, кто получит копию, сможет свободно использовать, изучать, изменять и распространять ее. Собственный проект разработки ядра проекта GNU, GNU Hurd , еще не создал работающее ядро, но в 1991 году Линус Торвальдс выпустил ядро Linux как свободное программное обеспечение под лицензией GNU General Public License . Помимо использования в операционной системе GNU , многие пакеты GNU, такие как GNU Compiler Collection (и остальная часть инструментария GNU ), библиотека GNU C и GNU Core Utilities , продолжили играть центральную роль и в других свободных системах Unix.
Дистрибутивы Linux , состоящие из ядра Linux и больших коллекций совместимого программного обеспечения, стали популярными как среди индивидуальных пользователей, так и в бизнесе. Популярные дистрибутивы включают Red Hat Enterprise Linux , Fedora , SUSE Linux Enterprise , openSUSE , Debian , Ubuntu , Linux Mint , Slackware Linux , Arch Linux и Gentoo . [27]
Свободная производная BSD Unix, 386BSD , была выпущена в 1992 году и привела к проектам NetBSD и FreeBSD . С урегулированием в 1994 году иска, поданного против Калифорнийского университета и Berkeley Software Design Inc. ( USL против BSDi ) компанией Unix System Laboratories , было разъяснено, что Berkeley имеет право распространять BSD Unix бесплатно, если пожелает. С тех пор BSD Unix разрабатывался в нескольких различных ветвях продуктов, включая OpenBSD и DragonFly BSD .
Из-за модульной конструкции модели Unix, совместное использование компонентов является относительно обычным явлением: большинство или все Unix и Unix-подобные системы включают по крайней мере часть кода BSD, в то время как некоторые включают утилиты GNU в свои дистрибутивы. Linux и BSD Unix все больше заполняют потребности рынка, традиционно обслуживаемые фирменными операционными системами Unix, расширяясь на новые рынки, такие как потребительские настольные компьютеры , мобильные устройства и встраиваемые устройства .
В интервью 1999 года Деннис Ритчи высказал мнение, что операционные системы Linux и BSD Unix являются продолжением базовой конструкции Unix и являются производными от Unix: [28]
Я думаю, что феномен Linux довольно восхитителен, потому что он так сильно опирается на основу, предоставленную Unix. Linux, похоже, является одним из самых здоровых прямых производных Unix, хотя существуют также различные системы BSD, а также более официальные предложения от производителей рабочих станций и мэйнфреймов.
В том же интервью он заявляет, что рассматривает Unix и Linux как «продолжение идей, которые были начаты Кеном, мной и многими другими много лет назад». [28]
OpenSolaris был бесплатным программным аналогом Solaris, разработанным Sun Microsystems , который включал ядро с лицензией CDDL и в первую очередь пользовательское пространство GNU . Однако Oracle прекратила проект после приобретения Sun, что побудило группу бывших сотрудников Sun и членов сообщества OpenSolaris создать ответвление OpenSolaris в ядро illumos . По состоянию на 2014 год illumos остается единственной активной производной System V с открытым исходным кодом.
В мае 1975 года RFC 681 описал разработку Network Unix Центром передовых вычислений в Университете Иллинойса в Урбане-Шампейне . [29] Было сказано, что система Unix «представляет несколько интересных возможностей в качестве мини-хоста ARPANET ». В то время Unix требовала лицензии от Bell Telephone Laboratories , которая стоила 20 000 долларов США для неуниверситетских учреждений, в то время как университеты могли получить лицензию за номинальную плату в 150 долларов. Было отмечено, что Bell «открыта для предложений» по лицензии на всю ARPANET.
RFC специально упоминает, что Unix «предлагает мощные локальные средства обработки с точки зрения пользовательских программ, несколько компиляторов , редактор на основе QED , универсальную систему подготовки документов и эффективную файловую систему , включающую сложный контроль доступа, монтируемые и демонтируемые тома и унифицированную обработку периферийных устройств как специальных файлов ». Последнее позволило интегрировать программу управления сетью (NCP) в файловую систему Unix, рассматривая сетевые соединения как специальные файлы, к которым можно получить доступ через стандартные вызовы ввода-вывода Unix , что включало дополнительное преимущество закрытия всех соединений при выходе из программы, если пользователь пренебрегал этим. Чтобы «минимизировать объем кода, добавляемого в базовое ядро Unix », большая часть кода NCP выполнялась в заменяемом пользовательском процессе, запускаемом только при необходимости. [29]
В октябре 1993 года Novell , компания, которая в то время владела правами на исходный код Unix System V, передала товарные знаки Unix компании X/Open Company (теперь The Open Group ), [30] а в 1995 году продала соответствующие бизнес-операции компании Santa Cruz Operation (SCO). [31] [32] Вопрос о том, продала ли Novell также авторские права на само программное обеспечение, был предметом федерального судебного иска в 2006 году SCO против Novell , который Novell выиграла. Дело было обжаловано, но 30 августа 2011 года Апелляционный суд США Десятого округа подтвердил решения суда, закрыв дело. [33] Поставщик Unix SCO Group Inc. обвинил Novell в клевете на право собственности .
Текущим владельцем торговой марки UNIX является The Open Group, консорциум промышленных стандартов. Только системы, полностью соответствующие и сертифицированные по Single UNIX Specification, квалифицируются как "UNIX" (остальные называются " Unix-like ").
По указу The Open Group термин «UNIX» относится скорее к классу операционных систем, чем к конкретной реализации операционной системы; те операционные системы, которые соответствуют спецификации Single UNIX от The Open Group, должны иметь возможность использовать товарные знаки UNIX 98 или UNIX 03 сегодня, после того как поставщик операционной системы заплатит существенный сбор за сертификацию и ежегодные лицензионные отчисления за товарный знак The Open Group. [34] Системы, которые были лицензированы для использования товарного знака UNIX, включают AIX , [35] EulerOS , [36] HP-UX , [37] Inspur K-UX , [38] IRIX , [39] macOS , [40] Solaris , [41] Tru64 UNIX (ранее «Digital UNIX» или OSF/1 ), [42] и z/OS . [43] Примечательно, что EulerOS и Inspur K-UX являются дистрибутивами Linux, сертифицированными как совместимые с UNIX 03. [44] [45]
Иногда для обозначения всех операционных систем, похожих на Unix, используется представление типа Un*x , *NIX , или *N?X . Это происходит от использования звездочки ( * ) и вопросительного знака в качестве подстановочных знаков во многих утилитах. Эта нотация также используется для описания других Unix-подобных систем, которые не соответствуют требованиям к брендингу UNIX от Open Group.
Open Group просит всегда использовать UNIX как прилагательное, за которым следует родовой термин, например, система, чтобы избежать создания обобщенной торговой марки .
Unix был оригинальным форматированием, [ оспаривается – обсудите ] , но использование UNIX остается широко распространенным, потому что когда-то он был набран малыми заглавными буквами ( Unix ). По словам Денниса Ритчи , когда он представлял оригинальный документ Unix на третьем симпозиуме по операционным системам Американской ассоциации вычислительной техники (ACM), «у нас был новый наборщик, и troff только что был изобретен, и мы были опьянены возможностью печатать малыми заглавными буквами». [46] Многие из предшественников и современников операционной системы использовали полностью заглавные буквы, поэтому многие люди писали название заглавными буквами из-за силы привычки. Это не аббревиатура. [47]
Названия товарных знаков могут быть зарегистрированы различными субъектами в разных странах, а законы о товарных знаках в некоторых странах позволяют контролировать одно и то же название товарного знака двумя различными субъектами, если каждый субъект использует товарный знак в легко различимых категориях. В результате Unix использовался в качестве названия бренда для различных продуктов, включая книжные полки, ручки, клей в бутылках, подгузники, фены и контейнеры для еды. [48]
Несколько форм множественного числа Unix используются повседневно для обозначения нескольких марок Unix и Unix-подобных систем. Наиболее распространены обычные Unixes , но Unices , трактующие Unix как латинское существительное третьего склонения , также популярны. Псевдоанглосаксонская форма множественного числа Unixen не распространена, хотя иногда встречается. Sun Microsystems , разработчик варианта Solaris, утверждает, что термин Unix сам по себе является множественным числом, ссылаясь на его многочисленные реализации. [49]
Можно привести веские доводы в пользу того, что [UNIX] по сути является современной реализацией системы CTSS Массачусетского технологического института
UNIX был создан разработчиками программного обеспечения для разработчиков программного обеспечения, чтобы предоставить им среду, которой они могли бы полностью управлять.
Unix был создан и когда он сформировал свои культурные ценности,
конечных пользователей не было
.
Лучшее в UNIX — это его переносимость. UNIX поддерживает весь спектр оборудования — от однопользовательского IBM PC за 5000 долларов до Cray за 5 миллионов долларов. Впервые точкой стабильности становится программная среда, а не аппаратная архитектура; UNIX превосходит изменения в аппаратной технологии, поэтому программы, написанные для среды UNIX, могут переходить на следующее поколение оборудования.
Это затем привело к тому, что Unics (кастрированный однопользовательский Multics, названный так в честь Брайана Кернигана) позже стал UNIX (вероятно, в результате действий юристов AT&T).
Возможно, самый важный переломный момент произошел в 1973 г., когда ядро операционной системы было переписано на языке C.
на использование товарного знака UNIX требует от Лицензиата уплаты The Open Group дополнительной ежегодной платы, рассчитанной в соответствии с таблицей платежей, приведенной ниже.
UNIX — множественное число. Это не одна операционная система, а множество реализаций идеи, которая возникла в 1965 году.