Unix

от Уикипедия, свободната енциклопедия
Unix
Еволюция на Unix и Unix-подобни системи
РазработчикKen Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna at Bell Labs
Програмен езикC and assembly language
СемействоUnix
СтатусТекущ
Тип на кодаВ исторически план затворен код, докато някои Unix проекти (включително BSD и illumos) са с отворен код
СтартираРазработката започва 1969
публикувано е първото ръководство вътрешно през ноември 1971 (1971-11)[1]
Announced outside Bell Labs in октомври 1973 (1973-10)[2]
ЕзикАнглийски
Вид ядроРазновидности; монолитен, microkernel, хибрид
Потреб.

интерфейс

по подразбиране
Command-line interface and Графичен (X Window System)
ЛицензНякои версии са патентовани, други са безплатни / с отворен код софтуер
Официален уебсайтopengroup.org/unix
Unix в Общомедия

Unix (официалната търговска марка е UNIX) е семейство от многозадачни и многопотребителски компютърни операционна системи, които произлизат от оригиналната AT&T Unix, разработена през 60-те и 70-те години на 20 век от група специалисти от AT&T, работещи в Bell Labs. В състава на работната група влизат Кен Томпсън, Денис Ричи и Дъглас Мак Илрой. В днешно време Unix има различни версии, разработени през годините от AT&T, както и от други комерсиални доставчици и некомерсиални организации.

Сегашният собственик на търговската марка UNIX е консорциумът за индустриални стандарти The Open Group. Правата върху изходния код на Unix обаче са оспорвани в дело от 2004 г., в което доставчикът на UNIX SCO Group обвинява Novell в оклеветяване на името (slander of title). Забележете, че собственикът на търговската марка използва названието UNIX, а не Unix. Терминът UNIX не е акроним, а следва историческата конвенция компютърните системи да се именуват с главни букви като ENIAC и MISTIC.

Само системи, напълно съвместими и сертифицирани по UNIX спецификацията (Single UNIX Specification) могат да се наричат „UNIX“. Другите се наричат „Unix-подобни“ (Unix-like).

В началото на 70-те и 80-те, когато компютрите не са толкова разпространени, академичните кръгове са вдъхновени от Unix, което води до широкомащабното ѝ възприемане (най-вече на варианта BSD, създаден в Калифорнийския университет в Бъркли), а също и от нови компании като Sun Microsystems. В наши дни в допълнение на сертифицираните Unix системи, Unix-подобните операционни системи като Linux и Mac OS X са често срещани.

Понякога названието традиционен Unix се използва за Unix или за операционна система с характеристики на Version 7 Unix или UNIX System V.

Въведение[редактиране | редактиране на кода]

Първоначално Unix била предназначена да бъде удобна платформа за програмисти, разработващи софтуер. Постепенно системата се разраства и се разпространява в академичните кръгове, където ползвателите започнали да добавят свои програми и инструменти и ги споделяли с колегите си. Unix операционните системи се използват както за сървъри, така и за работни станции. Unix средата и моделът клиент-сървър са основни елементи при разработването на Интернет и при създаването на компютърните мрежи – в контраст с разработките на операционни системи за персонални компютри.

Както Unix, така и C, разработени от AT&T и разпространени в службите на американското правителство и академичните институции, са приспособявани към различни архитектури и операционни системи. В резултат на това Unix се свързва с понятието „отворена система“.

Unix е проектирана като преносима, многозадачна и многопотребителска, когато е във времеразделяща конфигурация. За Unix системите са характерни следните особености: използването на неформатиран текст за запазване на данни; йерархична файлова система; устройствата и някои видове процеси (inter-process communication) (IPC) се третират като файлове; използват се голям брой малки програми, които могат да бъдат навързани заедно чрез интерпретатор на команден ред и чрез канали (pipe), в контраст с използването на една монолитна програма със същата функционалност. Тези концепции са известни като философия на Unix.

В Unix, „операционната система“ се състои от тези инструменти заедно с ядрото (kernel – основната контролираща програма). Ядрото отговаря за пускане и спиране на програмите, за работа с файловите системи и за други задачи от „високо ниво“, които са общи за повечето програми. Най-важната му задача обаче е, че то контролира директния достъп до хардуера и разрешава конфликтите – например когато две програми едновременно искат достъп до едно и също устройство. Затова ядрото има специални привилегии за достъп до системата, което води до отделянето на „потребителско“ и „системно“ пространство.

Микроядрото се опитва да намали размера на ядрото, като разделя ядрото на много малки части изпълняващи определени операции. Във времената на мейнфрейм машините, когато „нормалният“ компютър се състоеше от твърд диск и терминали за вход-изход, файловият модел на Unix работеше много добре, тъй като входно-изходните операции бяха „линейни“. Но модерните системи имат и по-нови периферни устройства и използват графичен потребителски интерфейс, при който действието с мишката е нов, „събитиен модел“ и моделът на Unix не функционира така добре. През 80-те разработчиците насочват усилията си към системите, поддържащи тези нови устройства, за да осигурят неблокиращ вход-изход, да създадат варианти на междупроцесна комуникация, различни от pipe, както и за изваждането на мрежовите протоколи от ядрото.

История[редактиране | редактиране на кода]

През 60-те, Масачузетският технологичен институт, AT&T Bell Labs и General Electric работят по експерименталната операционна система Multics (името идва от Multiplexed Information and Computing Service), предназначена за мейнфрейм компютъра GE-645. Целта е създаването на комерсиален продукт, но успех не е постигнат. Multics е интреактивна операционна система с много нови възможности и повишена сигурност. В резултат от проекта е създаден краен продукт, но с много ниска производителност.

AT&T Bell Labs се оттегля и насочва ресурсите си към други проекти. Един от разработчиците от екипа на Bell Labs обаче, Кен Томпсън, продължава да работи, и създава игра за GE-645 мейнфрейм, наречена Пътуване в пространството (Space Travel). Но изпълнявана на GE машината тя е бавна и доста скъпа – изпълнението ѝ струва $75 от дефицитното компютърно време.[3]

A partial list of simultaneously-running processes on a UNIX system.

С помощта на Дени Ричи Томпсън пренаписва играта на асемблер за друга машина на Digital Equipment Corporation – PDP-7. Този проект заедно с работата му по проекта Multics, кара Томпсън да започне работа по нова операционна система за PDP-7. Той и Ричи ръководят екипа от разработчици от Bell Labs, сред които и Руд Канадей (Rudd Canaday), разработващ файловата система както и новата многозадачна операционна система. Тя включва интерпретатор от команден ред.

70-те[редактиране | редактиране на кода]

През 1970 проектът е наречен Unics (съкратено от Uniplexed Information and Computing System) и поддържа два потребителя едновременно. Избраното име е приписвано на Брайън Керниган (Brian Kernighan) и представлява шега с Multics – Unix ще прави само едно нещо, но ще го прави добре, за разлика от раздутата и бавна Multics.

Дотогава е липсвала финансова поддръжка от Bell Labs. Когато обаче компанията Computer Science Research Group отправя искане да използва Unix на друга машина, много по-голяма от PDP-7, Томпсън и Ричи успяват да издействат финансиране с обещанието да добавят възможности за обработка на текст към варианта на Unix за PDP-11/20 машина. За първи път операционната система UNIX официално е именувана и се изпълнява на PDP-11/20 през 1970 г. Добавени са програма за форматиране на текст (roff) и текстов редактор, и трите написани на асемблер за PDP-11/20. Bell Labs подава заявки за патенти за системата за обработка на текст и за редактора. Roff еволюира в troff, първата електронна издателска програма с пълни типографски възможности. Ръководството на UNIX програмиста (UNIX Programmer's Manual) е публикувано на 3 ноември 1971.

През 1973 е решено да се пренапише Unix на C. Промяната улеснява модифицирането/прехвърлянето на Unix на други машини (т.е. преносимостта), и дава възможност и други разработчици да създадат варианти. Кодът става по-стегнат и компактен, което води до по бърза разработка на Unix. AT&T прави Unix достъпен за университетите и компаниите, а също и за правителството на САЩ под лиценз. Лицензът включва целия изходен код с изключение на машинно-зависимата част, написана на асемблер за PDP-11. Обаче в края на 70-те се разпространяват копия на машинно-зависимото ядро с коментари под форма на копирана книга на Джон Лион от University of New South Wales – Lions' Commentary on UNIX 6th Edition, with Source Code, което води до приемането на Unix като операционна система за обучение.

Версиите на Unix се определят от версиите на съответните им ръководства т.е. „Fifth Edition UNIX“ и „UNIX Version 5“ се използват за едно и също нещо. Разработката се разшири с версии 4, 5, и 6, пуснати до 1975. Тези версии добавят концепцията за съобщителен канал, водеща до разработката на модулна кодова база, което повиши още повече скоростта на развитие. Версия 5 и по-специално версия 6 доведоха до множество различни версии на Unix в Bell Labs и извън нея, например PWB/UNIX, IS/1 (първия комерсиален Unix), и пренасянето му на Interdata 7/32 (първия не-PDP Unix) от University of Wollongong.

През 1978 е представен UNIX/32V, за VAX компютър. По това време повече от 600 машини изпълняват някаква форма на Unix. Unix версия 7 – последната широко разпространена версия на Research Unix – е представена през 1979. Версии 8, 9 и 10 са разработени през 80-те, но са разпространени само в няколко университета. Това води до разработката на Plan 9 from Bell Labs – нова преносима разпределена система.

80-те[редактиране | редактиране на кода]

Editing a shell script using the ed editor. The dollar-sign at the top of the screen is the prompt printed by the shell. 'ed' is typed to start the editor, which takes over from that point on the screen downwards.

AT&T лицензира UNIX System III, базирана основно на версия 7, за комерсиално използване през 1982. Тя включваше поддръжка на VAX. AT&T продължи да лицензира по-старите версии на Unix. За да сложи край на объркването между различните версии, AT&T ги комбинира в UNIX System V Release 1. Тя предложи нови възможности като редактора vi и curses от Berkeley Software Distribution на Unix разработени от Калифорнийския университет в Бъркли. Тя включваше поддръжка на Western Electric 3B.

Тъй като новото комерсиално лицензиране на UNIX не е изгодно за академично използване както по-ранните версии, разработчици от Бъркли продължават да развиват BSD Unix като алтернатива на UNIX System III и V, първоначално за PDP-11 (2.xBSD завършвайки с 2.11BSD) и по-късно за VAX-11 (версии 4.x на BSD). Много от нововъведенията в Unix първо се появяват в BSD, например C shell с контрол на задачите (създаден по модел на ITS). Най-важният аспект от разработката на BSD е добавянето на TCP/IP кода към Unix ядрото. Усилията на BSD имат като резултат няколко версии съдържащи мрежовия код: 4.1cBSD, 4.2BSD, 4.3BSD, 4.3BSD-Tahoe („Tahoe“ е прякора на CCI Power 6/32 архитектурата – първата версия на различна ор DEC платформа на BSD ядрото), Net/1, 4.3BSD-Reno (за наподобяване на „Tahoe“, и тъй като тази версия е „хазартна“), Net/2, 4.4BSD, и 4.4BSD-lite. Мрежовият код в тези версии е прародител на TCP/IP мрежовия код, използван сега, включително и кода пуснат по-късно в AT&T System V UNIX и Microsoft Windows. Съпътстващият Berkeley Sockets програмен интерфейс API е де-факто стандарт за мрежови програмни интерфейси и впоследствие е копиран от много платформи.

Други компании започват предлагането на комерсиални версии на UNIX за техните миникомпютри и работни станции. Повечето от тях са разработени въз основа на System V и са лицензирани от AT&T; но има и BSD базирани. Един от водещите разработчици на BSD, Бил Джой(Bill Joy), основава през 1982 Sun Microsystems и създава SunOS (сега Solaris) за техните работни станции. През 1980, Microsoft представя техния първи Unix за 16-битови компютри, наречен Xenix, който Santa Cruz Operation (SCO) прехвърля за Intel 8086 процесор през 1983, и създава Xenix клонинг – SCO UNIX през 1989.

През 1984 се сформира група, наречена X/Open, с цел да създаде съвместима отворена система за стандартизиране на UNIX. Към средата на 80-те, несъвместимостта между конкуриращите се версии на Unix, наречени Unix войни пречат на приемането на Unix на пазара, който започна да се доминира от Microsoft-ските операционни системи. Вдъхновена от разработването на двойни (AT&T/BSD) версии на Unix, IEEE работна група P1003 разработва първия POSIX стандарт за Unix-базирани програмни интерфейси, публикуван през 1988.

AT&T добави в UNIX System V, като заключване на файлове, администриране на системата, потоци, Отдалечена файлова система(Remote File System) и TLI. AT&T си сътрудничи със Sun Microsystems и от 1987 и 1989 добави възможности от Xenix, BSD, SunOS, и System V в System V Release 4 (SVR4), независимо от X/Open. Тази версия консолидира всички предишни възможности в себе си и сложи край на конкуриращите се версии. Но това означава също и по-високи лицензионни такси.

90-те[редактиране | редактиране на кода]

През 1990, Open Software Foundation обяви OSF/1, техния Unix стандарт, базиран на Mach и BSD. Фондацията е основана през 1988 и се финансира от няколко Unix компании желащи да се противопоставят на AT&T и Sun за SVR4. Впоследствие AT&T и друга група формират „UNIX International“ за да се противопоставят на OSF. Този конфликт между конкуриращи се компании е наречен „Юникс войни“.

През 1991, група от BSD разработчици (Дон Сели Donn Seeley, Майк Карелс Mike Karels, Бил Жолиц Bill Jolitz, и Треант Хейн Trent Hein) напусна Калифорнийския университет за да основе Berkeley Software Design, Inc (BSDI). BSDI произвежда напълно функционална комерсиална версия на BSD Unix за Интел базирани компютри, което постави началото на използването на евтини компютри за сериозни изчисления. Скоро след основаването на компанията Бил Жолиц напусна BSDI за да създаде 386BSD, положил началото на FreeBSD, OpenBSD, и NetBSD.

До 1993 повечето комерсиални доставчици на UNIX променят техните Unix варианти на System V базирани и добавят много от възможностите на BSD. Създаването на COSE от основните играчи на Unix пазара постави края на Unix войните, и доведе до сливането на UI и OSF през 1994. Въпреки че запази името OSF работата по OSF/1 е спряна същата година. Единствения доставчик, който я използваше бе Digital, той продължи разработката и преименува продукта на Digital UNIX в началото на 1995.

Скоро след обнародването на UNIX System V Release 4, AT&T продаде правата върху UNIX на Novell. Novell разработва своя собствен версия – UnixWare сливайки NetWare с UNIX System V Release 4. Novell я използва срещу Windows NT, но тяхното присъствие на пазара продължи да намалява.

През 1993, Novell решава да предаде UNIX запазената марка и правата за сертифициране на X/Open.[4] През 1996, X/Open се сля с OSF, създавайки Open Group. Стандартите на Open Group дефинират какво е и какво не е „UNIX“ операционна система.

През 1995, бизнеса на администриране и поддръжка на съществуващите UNIX лицензи и правото за разработка на System V кода са продадени от Novell на Santa Cruz Operation.[5] Въпроса дали Novell също продава запазената марка е основа за съдебен процес.

от 2000[редактиране | редактиране на кода]

През 2000, SCO продава целия UNIX бизнес на Caldera Systems, по късно променила името си на The SCO Group. Този нов играч на пазара започна съдебни процеси срещу потребители и доставчици на Linux. SCO твърдят, че Linux съдържа защитен от закона Unix код притежание на The SCO Group. Другите твърдения са нарушение на търговската тайна от IBM, или нарушаване на договора от бивши клиенти на Santa Cruz преминали към Linux. Но Novell отрича твърденията на SCO че държи правата на UNIX кода. Според Novell, SCO (и SCO Group) са франчайз за Novell, която държи основните права, и право на вето към лицензиите давани от SCO, и 95% от прихода. SCO Group не е на това мнение и го оспорва в процеса наречен SCO срещу Novell.

През юни 2005 година, Sun Microsystems решават да открият част от изходния код на Solaris 10 и да стартират проекта OpenSolaris.

Компоненти[редактиране | редактиране на кода]

UNIX системата е направена от няколко елемента, които по принцип са пакетирани заедно: Ядро – kernel и още – среда за разработка, библиотеки, документи и преносимия source-code (програмния код). UNIX е всичко в едно – пълна софтуерна система. Това е ключово в развитието на операционната система – била използвана за обучение, предизвикала голям интерес. Всички тези компоненти не направили системата голяма – оригиналната V7 UNIX дистрибуция, съдържаща всичко необходимо плюс сорс кода и документацията не били повече от 10 мб (мегабайта).

Въздействие[редактиране | редактиране на кода]

UNIX оказва значително въздействие върху всички следващи операционни системи. За разлика от използвания при ранните компютри асемблер тя е написана на език от високо ниво.

В сравнение с много съвременни операционни системи, третиращи всички видове файлове като към прости масиви от байтове, Unix има драстично опростен файлов модел. В йерархията на файловата система, в която се съдържат и служебните програми и периферните устройства (като например принтери, терминали, или дискове), е необходимо да се осигури единен интерфейс. Това обаче не пасва на простия модел за „поток от байтове“.

Unix популяризира йерархичната файлова система с произволно вложени субдиректории, първоначално въведена от Multics. Останалите разпространени операционни системи в тази ера също можеха да разделят запаметяващото устройство на директории или сектори, но те най-често се ограничаваха само до едно ниво. Няколко големи частни операционни системи накрая разшириха обхвата на под-директориите подобно на Multics. Йерархията DEC's RSX-1M's за „потребителска група“ се развива в така наречените VMS директории, а CP/M се развива в MS-DOS 2.0 субдиректория, докато йерархията на HP MPE group.account и IBM SSP и OS/400 системи библиотеки се свива в по-обширните POSIX файлови системи.

Друго нововъведение на Multics, разпространено от Unix, е създаването на команден програмен интерпретатор с команден ред, достъпна на потребителско ниво и с допълнителни команди, които са представени като отделни програми. Unix ядрото (shell) използва същия език за интерактивни команди, който се използва за скриптиране (shell скриптовете нямаха отделен контролен работен език както JCL на IBM). Понеже shell-а и командите на операционната система били просто „още една програма“, потребителят можеше да избере (или дори сам да напише) собствения си shell. Нови команди може да се добавят без шелът да се променя. Нововъведената команден ред на Unix за създаване на вериги от процеси тип производител-потребител, представлява един мощен програмен модел, широко достъпен за всички. Много от по-късно създадените интерпретатори с команден ред са вдъхновени от Unix shell-а.

Най-опростеният подход при Unix беше изборът на ASCII текст за почти всички файлови формати. В оригиналната версия на Unix нямаше двоични редактори, а цялата система беше конфигурирана чрез използването на командни скриптове в shell-a. Фокусирането върху текста и байтовете направи системата далеч по-мащабируема и подвижна от други системи. С времето текстово-базираните приложения доказаха, че са широко използваеми в други области, като например печатни езици като PostScript и интернет протоколите, като например Telnet, FTP, SMTP, HTTP и SIP.

Unix популяризира синтаксис за правилни изрази, който намери широко разпространение. Програмният интерфейс на Unix се превърна в основен стандарт на операционните системи.

Програмният език С, скоро разпространен и извън рамките на Unix, вече се използва в много системи и приложения за програмиране.

Ранните Unix разработчици допринесоха за теорията на модулацията и повторната употреба в софтуерната инженерна практика, използвайки „Софтуерния“ растеж.

Unix осигурява TCP/IP мрежовите протоколи за сравнително евтини компютри, които допринесоха за интернет експлозията, осигуриха свързаност в реално време и които формират основата за изпълнението на много други платформи.

Политиката на Unix за предимно он-лайн документация (поддържана в продължение на много години) и готовите системни кодове, достъпни за всички програмисти, дава началото на движението за „софтуер с отворен код“ през 1983. Водещите разработчици на Unix (и на програми, които го напускат) открай време се придържат към определен набор от културни норми за разработка на софтуер, които са станали също толкова важни и толкова влиятелни като технологията на Unix; това е наречено „философията на Unix“.

Основни Unix команди[редактиране | редактиране на кода]

  • Създаване и преглеждане на файлове и директории: pwd cd ls mkdir rm rmdir cp mv find locate touch
  • Преглеждане и редактиране на файлове: cat tac more less ed vi head tail vi wc
  • Текстова обработка: echo grep sort uniq sed awk cut tr split printf
  • Работа с дати и часове: date cal
  • Сравняване на файлове: comm cmp diff patch
  • Разнообразни shell инструменти: true false yes test xargs sleep time
  • Административни: chmod chown ps su w who du df mount umount
  • Комуникации: mail telnet ftp finger ssh

Основни Unix процеси[редактиране | редактиране на кода]

Източници[редактиране | редактиране на кода]

  1. Шаблон:Cite techreport
  2. Ritchie, D. M. и др. The UNIX Time-Sharing System // Communications of the ACM 17 (7). 1974. DOI:10.1145/361011.361061. с. 365–375. Архивиран от оригинала на June 11, 2015.
  3. www.bell-labs.com, архив на оригинала от 2 април 2014, https://web.archive.org/web/20140402194704/http://www.bell-labs.com/history/unix/pdp7.html, посетен на 2009-11-28 
  4. groups.google.com
  5. www.novell.com