UNIX е компютърна операционна система, разработена за първи път през 1969 г. в Bell Labs. Основни автори са Кен Томпсън, Денис Ричи, Дъглас Макилрой и други. Първоначално системата е писана на език за асемблиране. През 1972 г. голяма част от кода е пренаписана на новия за времето си език за програмиране C, което прави UNIX по-портируем и по-лесен за поддръжка и разпространение. Операционната система UNIX е проектирана като многопотребителска и многопроцесорна система: тя може да изпълнява няколко приложни програми едновременно за повече от един потребител и да работи ефективно в мрежа от компютри. Компютърната сигурност е важен аспект за UNIX, тъй като много хора могат да имат достъп до нея — както чрез локално влизане, така и чрез мрежови услуги.
Историческо развитие и влияние
Много от идеите, въведени в UNIX, бяха новаторски и бяха копирани или развивани от други операционни системи. През 1970–1980-те се появяват важни разклонения и версии — като версиите на UNIX от AT&T (System V) и варианта BSD от Университета на Калифорния в Бъркли — които оказват силно влияние върху по-нататъшното развитие. През 1980–1990-те UNIX се превръща както в академична, така и в търговска платформа за сървъри и работни станции. По-късно се появяват стандарти като POSIX и Спецификацията Single UNIX, които цели да осигурят съвместимост между различни реализации.
Принципи и "философия на Unix"
Една от причините за успеха на UNIX е т.нар. философия на Unix: улесняване на разработването и комбинирането на малки, специализирани програми, които вършат една работа добре и обменят данни чрез прост интерфейс — обикновено текстови потоци. Други ключови принципи са идеята „всичко е файл” (файловата система представя устройства, процеси и ресурси като файлове), използването на тривиални текстови формати за конфигурация и логове и възможността за създаване на пътища за изпълнение чрез канали (pipes).
Архитектура
Класическата архитектура на UNIX разделя системата на две основни части: ядрото (kernel) и програмите в потребителската област (userland). Ядрото управлява хардуера, процесите, паметта, файловите системи и мрежовите интерфейси чрез набор от системни повиквания. Някои характерни елементи са:
- модел на процесите (fork, exec и управление на сигнали);
- йерархична файловата система с корен / и представяне на устройства като файлове;
- системни демони (услуги), които работят във фонов режим;
- механизми за права и разделяне на потребители и групи;
- мрежови стеки и поддръжка на стандартни мрежови протоколи.
Ядрото в много реализации е монолитно, но с възможност за добавяне на модули; в други варианти има микроядрени подходи (по-рядко при класически UNIX). Портируемостта, постигната чрез C, позволи UNIX да се пренесе лесно към множество архитектури.
Потребители, права и сигурност
В операционна система UNIX и подобни на нея може да има много различни потребители. Повечето от тях имат лична област, в която могат да съхраняват файлове и конфигурации — това се нарича потребителски акаунт. Права за достъп се задават по подразбиране чрез три категории: собственик, група и останалите (owner/group/others) с разрешения за четене, писане и изпълнение (r/w/x). Съществува специален суперпотребител (root), който има неограничени права; за администраторски задачи се използват команди като su и sudo.
За добрата защита се прилагат и допълнителни механизми: списъци за контрол на достъпа (ACL), SELinux/AppArmor, криптирани връзки (например SSH), актуализации и мониторинг. В мрежова среда сигурността включва управление на услуги и отваряни портове, филтриране на трафик и внимателно конфигуриране на сървърните приложения.
Команден ред и скриптове
Един от основните начини за използване на UNIX системите е чрез командния ред. Потребителите въвеждат команди и програми чрез текстов интерфейс, което дава голяма мощ и гъвкавост. Тези команди се изпълняват в шел, който може да варира между различните системи (sh, bash, zsh, csh и др.). Командният ред е предпочитан от системните администратори и разработчиците за автоматизация чрез скриптове, обработка на файлове и изграждане на сложни работни процеси с помощта на тръби (pipes) и насочвания (redirection).
Графичен интерфейс и системата X
Графичният потребителски интерфейс (GUI) е друг начин за взаимодействие със системата. Системата X Window System (често наричана X11) е много разпространен графичен слой за UNIX-подобни системи. X е мрежово прозрачен протокол: клиентските приложения могат да работят на отдалечени машини, а дисплеят и входните устройства да са локални. Самата X Window System предоставя основните графични примитиви и протоколи, но не управлява прозорците — това е задачата на мениджърите на прозорци и на десктоп средите.
Някои от популярните десктоп и прозоречни мениджъри са:
- Gnome
- KDE
- Производител на прозорци
- Xfce
- i3 (tiling window manager)
- Openbox (лек прозоречен мениджър)
- Window Maker
Подобно на повечето други графични потребителски интерфейси, те използват прозорци, диалогови прозорци и поддържат използването на компютърна мишка. През последните години се появяват и съвременни заместители/допълнения на X, като Wayland, които целят опростяване и по-добра производителност при някои сценарии.
Софтуер и екосистема
За X и за UNIX-подобни системи има хиляди програми: от текстообработващи приложения и електронни таблици до мощни сървърни софтуерни пакети. Предлагат се както затворени (комерсиални), така и свободни проекти — включително много софтуер с отворен код. Популярни инструменти в екосистемата включват текстови редактори (vi, emacs), уеб сървъри, бази данни и инструменти за разработка. При Linux дистрибуциите също се появиха пакетни мениджъри (apt, yum, pacman и др.), които улесняват инсталацията и поддръжката на софтуер.
Стандарти и съвместимост
За да се гарантира съвместимост между различни UNIX реализации, съществуват стандарти като POSIX и специфичните за UNIX спецификации. Те дефинират системни повиквания, поведение на шел и други интерфейси, така че приложенията да могат да се пренасочват с по-малко промени между различни системи. Макар някои системи да не са директно производни от оригиналния код на UNIX, те могат да бъдат считани за Unix-подобни заради съвместимостта в концепциите и интерфейсите.
Модерни варианти и използване днес
Днес има много операционни системи, в които са залегнали идеи от UNIX. Линукс е една от тези системи и притежава голяма част от идеите и имената на командите, но, както е посочено, Linux не използва код от UNIX — той е независим проект с Unix-подобен интерфейс. Други линии като BSD (FreeBSD, OpenBSD, NetBSD) съдържат наследство от оригиналния UNIX код и концепции. Модерни комерсиални системи като macOS (основата Darwin) също наследяват архитектурни идеи от UNIX и в някои случаи имат UNIX сертификация.
UNIX и наследниците му продължават да бъдат широко използвани в сървъри, мрежова инфраструктура, вградени системи и научни приложения, благодарение на стабилността, гъвкавостта и голямата база от наличен софтуер.
Кратко обобщение: UNIX е архитектурна и концептуална основа за много от съвременните операционни системи. Неговата философия за малки, комбинируеми инструменти, портируемост посредством C и ясното разделение между ядро и потребителска област го правят ключов в развитието на софтуерната индустрия.

