Unix что это
Что такое Unix (для начинающих)
Дмитрий Ю. Карпов
Этот опус не претендует на полноту описания. Более того, в целях упрощения сознательно опущены некоторые подробности. Сначала цикл задумывался как FAQ (ЧаВо — часто задаваемые вопросы), но видимо получится «Курс молодого бойца» или «Сержантская школа».
Я попытался дать сравнительное описание разных операционных систем — именно этого на мой взгляд не хватает большинству учебников и технических пособий.
Не дожидаясь разоблачения со стороны опытных Unix’оидов, делаю добровольное признание — я не могу претендовать на роль великого знатока Unix, а мои знания в основном вокруг FreeBSD. Надеюсь, это не помешает.
Этот файл еще долго будет находиться в состоянии «under construction». 🙂
Unix — полноценная, изначально многопользовательская, многозадачная и многотерминальная операционная система. Точнее, это целое семейство систем, почти полностью совместимых друг с другом на уровне исходных текстов программ.
Какие бывают Unix’ы и на каких машинах они запускаются?
Unix | платформа |
SCO Unix (Santa Cruz Operation) | i*86 |
Novell UnixWare (куплена SCO) | i*86 |
Interactive Unix (куплен Sun) | i*86 |
Linux | i*86, Motorolla 680*0, DEC Alpha, IBM POWER-PC, Sun Sparc, . |
Семейство BSD: BSDI, FreeBSD, NetBSD, OpenBSD | i*86, Acorn ARM, Sun Sparc, . |
Solaris | Sun Sparc, i*86 |
AIX | IBM RS/6000 и AS/400 на POWER-PC |
IRIX | SGI MIPS |
Digital Unix (ранее Unix OSF/1) | DEC Alpha |
HP-UX | Hewlett-Packard PA-RISC |
Этот список не претендует на полноту, ибо кроме перечисленных есть еще множество менее распространенных Unix’ов и Unix-подобных систем, не говоря уже о древних Unix’ах для устаревших машин.
Условно можно выделить семейства System V и Berkeley. System V (читается «System Five») имеет несколько вариантов, последний по моим сведениям System V Release 4. Университет Berkeley славен не только разработкой BSD, но и большинства протоколов Internet. Впрочем, многие Unix’ы сочетают свойства обеих систем.
Где взять бесплатный Unix?
Каковы основные отличия Unix от других OS?
Unix состоит из ядра с включенными в него драйверами и из утилит (внешних по отношению к ядру программ). Если надо изменить конфигурацию (добавить устройство, изменить порт или прерывание), то ядро пересобирают (перелинковывают) из обьектных модулей или (напр., во FreeBSD) из исходников. /* Это не совсем верно. Некоторые параметры можно поправить без пересборки. Существуют также loadable kernel modules. */
В противоположность Unix’у Windows (если не уточняется, какая, то имеются в виду 3.11, 95 и NT) и OS/2 при загрузке фактически на ходу прилинковывают драйверы. При этом компактность собранного ядра и повторное использование общего кода на порядок ниже, чем у Unix. Кроме того, при неизменной конфигурации системы ядро Unix без переделки (потребуется изменить только стартовую часть BIOS) может быть записан в ПЗУ и выполняться _не_загружаясь_ в ОЗУ. Компактность кода особенно важна, т.к. ядро и драйверы никогда не покидают физическую оперативную память, не свопятся на диск.
Unix — самая многоплатформенная OS. WindowsNT пытается подражать ему, но пока это плохо удается — после отказа от MIPS и POWER-PC, W’NT остались всего на двух платформы — традиционная i*86 и DEC Alpha. Разумеется, переносимость программ с одной версии Unix на другую ограничена. Неаккуратно написанная программа, не учитывающая различий в реализациях Unix, делающая необоснованные предположения типа ‘переменная integer должна занимать четыре байта’, может потребовать серьезной переделки. Но все равно это на много порядков легче, чем например пернести с OS/2 на NT.
Unix хорош для квалифицированного (или желающего стать таковым) администратора, т.к. требует знания принципов функционирования происходящих в нем процессов. Реальная многозадачность и жесткое разделение памяти обеспечивают высокую надежность функционирования системы, хотя в производительности файл- и принт-сервисов Unix’ы уступают Netware.
Недостаточная гибкость предоставления прав доступа пользователей к файлам по сравнению с WindowsNT затрудняет организацию _на_уровне_файловой_системы_ группового доступа к данным (точнее, к файлам), что на мой взгляд компенсируется простотой реализации, а значит меньшими требованиями к аппаратуре. Впрочем, такие приложения, как SQL-сервер решают проблему группового доступа к данным своими силами, так что отсутствующая в Unix возможность запретить доступ к _файлу_ конкретному пользователю на мой взгляд является явно избыточной.
Практически все протоколы, на которых основан Internet, были разработаны под Unix, в частности стек протоколов TCP/IP придуман в университете Berkeley.
Защищенность Unix при правильном администрировании (а когда это не так?) ни в чем не уступает ни Novell, ни WindowsNT.
Важным свойством Unix, которое приближает его к мэйнфреймам, является его многотерминальность, много пользователей могут одновременно запускать программы на одной Unix-машине. Если не требуется использовать графику, можно обойтись дешевыми текстовыми терминалами (специализированными или на базе дешевых PC), подключенными по медленным линиям. В этом с ним конкурирует только VMS. Можно использовать и графические X-терминалы, когда на одном экране присутствуют окна процессов, выполняющихся на разных машинах.
Unix функционирует как на PC, так и на мощных рабочих станциях с RISC-процессорами, под Unix написаны действительно мощные САПР и геоинформационные системы. Своей масштабируемостью Unix из-за его многоплатформенности на порядок превосходит любую другую операционную систему из известных мне.
Основные понятия Unix
Unix базируется на двух основных понятиях: «процесс» и «файл». Процессы являют собой динамическую сторону системы, это субьекты; а файлы — статическую, это обьекты действия процессов. Почти весь интерфейс взаимодействия процессов с ядром и друг с другом выглядит как запись/чтение файлов. /* Хотя надо добавить такие вещи, как сигналы, разделяемая память и семафоры. */
Процессы нельзя путать с программами — одна программа (как правило с различными данными) может выполняться в разных процессах. Процессы можно весьма условно разделить на два типа — задачи и демоны. Задача — это процесс, который выполняет свою работу, стремясь побыстрее закончить ее и завершиться. Демон ждет событий, которые он должен обработать, обрабатывает произошедшие события и снова ждет; завершается он как правило по приказу другого процесса, чаще всего его убивает пользователь, дав команду «kill номер_процесса». /* В этом смысле получается, что интерактивная задача, обрабатывающая ввод пользователя, скорее похожа на демона, чем на задачу. 🙂 */
В старых Unix’ах отводилось 14 букв на имя, в новых это ограничение снято. В директории кроме имени файла находится его идентефикатор inode — целое число, определяющее номер блока, в котором записаны атрибуты файла. Среди них: номер пользователя — хозяина файла; номер группы; количество ссылок на файл (см.далее) даты и время создания, последней модификации и последнего обращения к файлу; атрибуты доступа. Атрибуты доступа содержат тип файла (см.далее), атрибуты смены прав при запуске (см.далее) и права доступа к нему для хозяина, одногрупника и остальных на чтение, запись и выполнение. Право на стирание файла определяется правом записи в вышележащую директорию.
Каждый файл (но не директория) может быть известен под несколькими именами, но обязательно лежащими на одном разделе. Все ссылки на файл равноправны; файл стирается, когда удаляется последняя ссылка на файл. Если файл открыт (для чтения и/или записи), то число ссылок на него увеличивается еще на единицу; так многие программы, открывающие временный файл, сразу удаляют его, чтобы при аварийном завершении, когда операционная система закрывает открытые процессом файлы, этот временный файл был удален операционной системой.
Есть еще одна интересная особенность файловой системы: если после создания файла запись в него шла не подряд, а с большими интервалами, то для этих интервалов место на диске не выделяется. Таким образом суммарный обьем файлов в разделе может быть больше обьема раздела, а при удалении такого файла освобождается меньше места, чем его размер.
- обычный файл прямого доступа;
- директория (файл, содержащий имена и идентефикаторы других файлов);
- символьный линк (строка с именем другого файла);
- блочное устройство (диск или магнитная лента);
- последовательное устройство (терминалы, последовательные и параллельные порты; диски и магнитные ленты тоже имеют интерфейс последовательного устройства)
- поименованный канал.
- tty* — терминалы, в т.ч.:
- ttyv — виртуальная консоль;
- ttyd — DialIn терминал (обычно последовательный порт);
- cuaa — DialOut линия
- ttyp — сетевой псевдо-терминал;
- tty — терминал, с которым ассоциирована задача;
- wd — жесткий диск;
- wd s — партиция этого диска (именуемая здесь «slice»);
- wd s — раздел партиции;
Иногда требуется, чтобы программа, запущенная пользователем, имела не права запустившего ее пользователя, а какие-то другие. В этом случае устанавливается атрибут смены прав на права пользователя — хозяина программы. (В качестве примера приведу программу, которая читает файл с вопросами и ответами и на основании прочитанного тестирует запустившего эту программу студента. Программа должна иметь право читать файл с ответами, а запустивший ее студент — нет.) Так, например, работает программа passwd, с помощью которой юзер может изсменить свой пароль. Юзер может запустить программу passwd, она может произвести изменения в системной базе данных — а пользователь не может.
В отличие от DOS, в котором полное имя файла выглядит как «диск:\путь\имя», и RISC-OS, в которой оно выглядит «-файловая_система-диск:$.путь.имя» (что вообще говоря имеет свои преимущества), Unix использует прозрачную нотацию в виде «/путь/имя». Корень отсчитывается от раздела, с которого было загружено ядро Unix. Если мы собираемся использовать другой раздел (а на загрузочном разделе как правило находится только самое необходимое для загрузки), используется команда `mount /dev/файл_раздела директория`. При этом файлы и поддиректории, ранее находившиеся в этой директории, становятся недоступными, пока не раздел не будет размонтирован (естественно, все нормальные люди используют для монтирования разделов пустые директории). Производить монтирование и размонтирование имеет право только супервизор.
При запуске каждый процесс может расчитывать, что для него уже открыты три файла, которые ему известны как стандартный ввод stdin по дескриптору 0; стандартный вывод stdout по дескриптору 1; и стандартный вывод stderr по дескриптору 2. При регистрации в системе, когда пользователь вводит имя и пароль, а ему запускается shell, все трое направлены на /dev/tty; позже любой из них может быть перенаправлен в любой файл.
В Unix практически всегда входят два командных интерпретатора — sh (shell) и csh (C-подобный shell). Кроме них еще бывают bash (Bourne), ksh (Korn), и другие. Не вдаваясь в подробности, приведу общие принципы:
Все команды, кроме изменения текущей директории, установки переменных окружения (environment) и операторов структурного программирования — внешние программы. Программы эти как правило располагаются в каталогах /bin и /usr/bin. Программы системного администрирования — в каталогах /sbin и /usr/sbin.
Команда состоит из имени запускаемой программы и аргументов. Аргументы отделяются от имени команды и друг от друга пробелаим и табуляциями. Некоторые спецсимволы интерпретируются самим shell’ом. Спецсимволами являются » ‘ ` \ ! $ ^ * ? | & ; (еще какие?).
В одной командной строке можно дать несколько команд. Команды могут быть разделены ; (последовательное выполнение команд), & (асинхронное одновременное выполнение команд), | (синхронное выполнение, стандартный вывод stdout первой команды будет подан на стандартный ввод stdin второй).
Кроме того, можно брать стандартный ввод из файла, включив в качестве одного из аргументов «файл» (файл будет обнулен) или «>>файл» (запись будет произведена в конец файла). Сама программа не получит этого аргумента; чтобы узнать, что ввод или вывод переназначены, программа должна сама предпринять некоторые весьма нетривиальные телодвижения.
Если надо получить информацию по какой-либо команде, дайте команду «man имя_команды». На экран это будет выдаваться через программу «more» — посмотрите, как с ней управляться на вашем Unix’е командой `man more`.
Финансы: форекс для тебя
Что такое UNIX
Обновлено: 27.11.2017 Опубликовано: 28.12.2016
семейство операционных систем. Благодаря высокой производительности и стабильности, активно используются для серверов и серверного оборудования. Аббревиатура UNIX расшифровывается как Uniplexed Information and Computing System (изначально, название было UNICS).
Основными отличительными особенностями являются:
- Многозадачность.
- Многопользовательский режим.
- Поддержка большого спектра различного оборудования.
- Использование командной строки как основного инструмента управления.
Список наиболее распространенных систем на базе UNIX:
Большинство из них распространяются бесплатно. Скачать дистрибутивы можно на соответствующих сайтах.
Тем, кто начинает изучать системы на базе UNIX, рекомендуется использовать Ubuntu и/или CentOS, так как это наиболее документированные системы с хорошо развитой поддержкой.
Подробнее о UNIX на сайте Википедия
Встречается в статьях
Решение проблем:
Инструкции:
- Использование playbook и роли в Ansible на примере установки NGINX
- Как установить и настроить связку Asterisk + FreePBX на CentOS 8
- Как установить и настроить связку Asterisk + FreePBX на Ubuntu
- Настройка веб-сервера на CentOS 7 со всем необходимым для правильной работы
- Настройка веб-сервера на CentOS 8 со всем необходимым для правильной работы
- Как вручную настроить сервер хостинга на CentOS 7
- Как настроить Freeradius для Active Directory и MySQL
- Как настроить OpenVPN с аутентификацией через LDAP
- Как настроить почту для корпоративной среды на CentOS 8
- Как настроить почту для корпоративной среды на Debian
- Как настроить почту для корпоративной среды на Ubuntu Server
- Настройка веб-сервера на Ubuntu со всем необходимым для правильной работы
- Как настроить почту на базе Postfix для корпоративной среды (CentOS 7)
- Настройка аутентификации по SSH через Active Directory на CentOS
- Настройка портала TeamPass для совместного хранения паролей
- Установка Nginx + PHP + MySQL + PostgreSQL на Astra Linux
- Установка и настройка FTP-сервера vsFTPd на CentOS 7
Мини-инструкции:
- Как узнать значение MTU в Windows и UNIX
- Как установить NGINX на CentOS 7
- Как найти файл в Linux
- Свободное место на разделах UNIX
- Как использовать SCP без пароля
- Как установить и настроить bind на CentOS / Rocky Linux
- Восстановление базы MySQL из дампа
- Шпаргалка по работе с пользователями во FreeBSD
- Использование tar в UNIX-системах
- Создание, редактирование и удаление пользователей в Linux
- Инструкция по установке VMware Tools на FreeBSD
- Как разрешить root заходить по SSH в Ubuntu
- Как настроить Apache для работы по HTTPS (SSL)
- Как зарезервировать IP-адрес на DHCP-сервере
- Инструкция по отправке почты из командной строки Linux
- Как настроить авторизацию при отправке сообщений в Postfix
- Как настроить автоматическую чистку логов в системах UNIX
- Инструкция по настройке почтового клиента Mutt
- Как настроить Интернет шлюз на Linux CentOS 7
- Подробная инструкция по настройке OpenVPN клиента
- Установка и настройка OwnCloud на CentOS 7 или 8
- Использование SMTP команд для отправки почты через Telnet
- Настройка ограничения chroot для протокола SFTP
- Инструкция по установке и настройке phplist
- Инструкция по переходу на новую версию GLPI
- Просмотр и смена расположения файлов базы MySQL / MariaDB
- Анализ и мониторинг нагрузки веб-сервера на базе Linux
- Установка и настройка умного дома от MajorDoMo
- Как обновить временную зону на устаревших системах Windows, Linux и FreeBSD
- Настройка проксирования почты с NGINX для IMAP, POP3 и SMTP
- Установка, настройка и использование Roundcube на Ubuntu или Debian
- Установка и настройка Nextcloud + NGINX на Ubuntu
- Как пользоваться сервисом GitHub на компьютере с Linux
- Установка и настройка SAMS для управления Squid на CentOS 7
- Отправка почты от Postfix через почтовый сервер Яндекса
- Настройка сервера мониторинга Zabbix на Ubuntu
- Настройка Autodiscover для автоматического конфигурирования почтовых программ
- Использование Roundcube на CentOS для нескольких почтовых серверов
- Инструкция по развертыванию Nextcloud с Apache на Ubuntu
- Настройка rsyslog для хранения логов на удаленном сервере Linux
- Как настроить ограничение размера виртуальных почтовых ящиков в PostfixAdmin и Dovecot
- Управление Linux с помощью веб-интерфейса Webmin
- Установка веб-интерфейса phpMyAdmin на CentOS для управления MySQL
- Работа с DNS из командной строки с помощью утилиты nslookup
- Установка и настройка сервера 1С + PostgreSQL на Linux Ubuntu
- Инструкция по установке и настройке phplist на Linux Ubuntu / Debian
- Установка и настройка сервера NextCloud на Rocky Linux
- Установка и использование почтового клиента WebMail Lite на Linux CentOS
- Настройка сервера мониторинга Zabbix 5 на Linux CentOS 8
- Организация сервиса календаря и адресной книги на базе Baikal
- Как настроить в Linux систему ODBC для подключения к MariaDB из PHP-приложения
- Настройка Runner в GitLab CI/CD для загрузки изменений проекта на веб-серверы после коммита
- Как делать запросы к Prometheus для получения значений метрик
- Настройка почтовой системы Postfix + Dovecot с хранением данных в LDAP
- Как установить и настроить веб-сервер на базе NGINX + uWSGI для поддержки приложений на Python
- Развертывание Django проекта на Ubuntu под веб-сервер Nginx
- Хранение и управление паролями PostgreSQL через Hashicorp Vault
- Установка и настройка SAMS для управления Squid на Ubuntu
- Настройка отказоустойчивого кластера Postgres + Patroni на Linux CentOS
- Как сбрость пароль суперпользователя root в системах UNIX
- Использование встроенной в Linux системы контейнеризации systemd-nspawn
- Как создавать резервную копию Nextcloud и восстанавливать ее
- Настройка отказоустойчивого кластера Postgres + Patroni на Linux Ubuntu
- Как настроить Postfix, чтобы отправка с разных доменов выполнялась с разных IP-адресов
Вопросы и ответы:
- Какая операционная система лучше подходит для файлового сервера
- Какие бывают файловые сервера
- Как правильно обслуживать сервер
- Использование операторов сравнения в UNIX shell
- Что в первую очередь нужно настраивать на UNIX серверах
- Как собрать сведения об оборудовании и системе компьютера на Linux и FreeBSD
Примеры скриптов:
Примеры моих работ:
Что такое unix? Обзор UNIX-подобных систем
UNIX — операционная система, создана в 1970 году для коммерческих целей. Изначально система была доступна исключительно только для крупных компаний и организаций, которые могли оплатить стоимость ОС. На базе UNIX позже были разработаны Linux, BSD и Mac OS.
Сегодня стоит выделить основные особенности UNIX-системы, которые позволяют не терять ей свою популярность и востребованность:
✓ Поддержка разного оборудования
✓ Работа с командной строкой
✓ Многопользовательский интерфейс и другие преимущества системы.
История UNIX
Изначально система UNIX создавалась “для себя”. Разработчики компании Bell Labs AT&T сделали начальную программу на компьютере PDP-7, потом основная часть программы, которая была написана на ассемблере, была переписана на язык СИ. Благодаря этого Юникс стало возможно использовать на разных архитектурах. После того как код системы попал в университет Беркли, была создана своя версия операционной системы под названием BSD Unix (Berkeley Software Distribution).
Имя UNIX произошло от созвучного MULTICS (Multiplexed Information and Computing Service), это один из начальных проектов разработки ОС.
Также аббревиатура UNIX обозначает Uniplexed Information and Computing System (Объединенная информационно-вычислительная система).
До 1979 года вышло шесть редакций UNIX:
- В ноябре 1971 появилась первая. Она уже включала компилятор FORTRAN и версии ПО, которые используются даже сегодня.
- В июне 1972 появилась вторая версия. UNIX успешно устанавливалась на компьютерах компании AT&T.
- В феврале 1973 выпустили 3-тью версию. Она была доступна вместе с компилятором Си и pipes.
- В ноябре 1973 уже представили 4 редакцию, которую полностью переписали на язык Си.
- В июне 1974 UNIX 5 редакции был доступен на 50 рабочих системах.
- В мае 1975 появилась уже 6 редакция.
Далее ОС начала свой путь в образовательных учреждениях. В 1976 году Юникс портировали на Interdata 8/32 компьютер, а после успешного появления 6 редакции, началось создание клонов системы. Другие разработчики оценили пользу и возможности новой ОС и начали разработку подобных система на базе оригинальной UNIX.
В январе 1979 была выпущена 7 версия системы. Основное отличие от предыдущих — более стабилизированная файловая система. Также в ОС появились новые инструменты. С этой версии UNIX разделилась на 2 потока — BSD и System V.
Сегодня владельцем ТМ UNIX является The Open Group. Исключительно совместимые и сертифицированные системы по спецификации Single UNIX квалифицируются как UNIX (Unix-like).
Для чего используется UNIX?
Сегодня UNIX используется исключительно в корпоративных целях, например, для установки на серверы и дополнительное рабочее оборудования. Для домашней установки UNIX не используется, потому что у него нет графической оболочки, тоесть интерфейса для управления, а необходимое ПО нужно ставить руками.
UNIX система — безопасна, производительна и масштабируема, в случае необходимости, поэтому так и востребована в корпоративных целях.
UNIX-подобные ОС сегодня — это многозадачные ОС, созданы для большого количества пользователей. UNIX был разработан для разных машин, в том числе для систем POSIX, включая Linux и Mac OS, поэтому неудивительно, что сегодня на базе UNIX работает так много проектов.
Сегодня самые крупные поставщики UNIX-систем — это компании IBM, HP, SUN.
UNIX в основном используют компании для своих серверов, у которых есть определенные требования из-за устаревшего программного обеспечения.
Какие основные преимущества UNIX систем?
UNIX — это открытый исходный код, который можно адаптировать под свой бизнес и не использовать лишнего. Это максимально удобно и практично.
Система безопасна, не нужны дополнительные антивирусники, как на Виндовс ОС. Грамотная настройка сервера и ваши данные будут в полной безопасности на UNIX подобной системе. Кроме того есть масса бесплатных антивирусных программ, которые помогут вам спать спокойно.
Возможность использования на устаревших моделях компьютеров. Это очень удобно, если у вас есть оборудование, которое еще нужно поддерживать в работоспособном виде и обеспечивать его функциональность и надежность. В UNIX системах очень гибкие настройки.
На уровне протоколов и данных UNIX позволяет проводить интеграции для обеспечения производительности системы. Это несомненный плюс, UNIX — это открытые стандарты для коммерческого использования.
Большое количество инструкций в Интернете и специалистов, которые готовы помочь в настройки системы. Вы никогда не останетесь наедине, если вдруг понадобится помощь в настройке системы.
Экспертов по работе с UNIX действительно много.
UNIX-подобные системы
Приведем ниже список наиболее востребованных и популярных ОС, которые в основе используют Юникс системы. UNIX является прародителем многих современных ОС. Важно отметить, что большинство из них полностью бесплатны, а в Сети большое количество инструкций для работы с данными системами даже для начинающих пользователей.
Для бизнеса и корпоративных клиентов, для установки на виртуальные и выделенные сервера
Для общего использования, как бесплатный аналог Windows OS, но на базе Linux
Современная ОС общего назначения, для решения ежедневных задач пользователей
Для установки на сервер или домашний ПК
Для серверных решений, для работы ПО
Постоянно обновляемая система для установки современных серверных программ
для компьютеров на базе процессоров Intel
корпоративная система для производственных предприятий
для организации домашней или офисной рабочей станции
для организации веб-серверов и интернет-шлюзов
для организации работы различных аппаратных платформ
для работы продуктов от компании Apple
коммерческая ОС для установки на продукты от компании Hewlett-Packard
для поддержки корпоративных информационных систем
UNIX — прародитель ОС, систему часто путают с Linux, но на самом деле Linux появился гораздо позже из истоков UNIX. Про основные отличия между этими системами в предыдущей статье:
Что такое UNIX и зачем он нужен
В 1970-х годах в мире появился UNIX — операционная система, из которой растут ноги у большинства современных операционок. Для своего времени это был технологический прорыв, а заложенные там принципы мы используем до сих пор. В этой статье — что же там было такого революционного.
Статья расширяет кругозор и помогает лучше понять информатику, но не имеет прикладной ценности. Если вам нужно что-то прикладное — прочитайте про размеры элементов в CSS.
Однозадачные компьютеры
Когда компьютеры только начали появляться, то работали они примерно так:
- Компьютер включался.
- Находил на носителе информации первую команду программы, которую нужно выполнить.
- Выполнял эту команду и переходил к следующей.
- Так происходило, пока в программе не заканчивались шаги или она сама не останавливалась. Тогда специальными командами оператор говорил компьютеру, где найти код для другой программы, или запускал первую программу заново.
Получается, что они работали в однозадачном режиме: работает только одна программа, а для запуска второй нужно остановить первую. По этому принципу до сих пор работают контроллеры в ваших микроволновках и холодильниках, а также контроллеры типа Arduino.
Сначала такой подход всех устраивал, потом стало неудобно.
Многозадачные компьютеры
Чтобы компьютер работал более эффективно, программисты написали код, который управляет работой всего компьютера — операционную систему.
Первые операционные системы были псевдомногозадачными. Это значит, что они не запускали одновременно несколько программ, а в цикле по очереди брали по одной команде из каждой программы и выполняли их. Так как переключение между командами из разных программ происходит быстро, то создаётся впечатление, что они работают одновременно.
Потом эту проблему тоже решили, и компьютер мог выполнять несколько программ действительно одновременно, чтобы они не мешали друг другу. Так появились многозадачные операционные системы.
Но в то время домашних компьютеров не было, а желающих поработать за университетским компьютером было много, поэтому все работали по очереди. Например, один лаборант работал на нём с часу до двух, второй — с двух до трёх, а научный руководитель работал за компьютером с трёх до шести.
При этом мощности компьютеров уже хватало на то, чтобы с ним мог работать второй пользователь, не замедляя работу первого. А вот операционных систем, которые бы так умели, — не было. И здесь появляется UNIX.
UNIX — многопользовательская операционная система
Создатели UNIX Кен Томпсон и Деннис Ритчи (который потом напишет язык C) решили проблему так:
- Есть один центральный компьютер — сервер, на котором выполняются все программы.
- Если кто-то хочет поработать за этим компьютером, то он подключается к нему не напрямую, а через терминал. Терминал — это монитор и клавиатура, которые соединены с сервером. Сам терминал ничего не считает, а только отправляет и получает результаты с сервера.
- Пользователь вводит свой логин и пароль и получает право запускать на сервере программы, которые ему нужны. При этом на сервере может быть запущено одновременно много программ от разных пользователей.
- Сервер помнит, кто на каком терминале зашёл под каким логином, поэтому результаты работы программы он отправляет в нужный терминал.
Со стороны пользователя кажется, что весь сервер в его распоряжении, но на самом деле сервером могут пользоваться одновременно десятки человек и не знать о том, что сервер выполняет что-то ещё. Сейчас это звучит обычно и примитивно, но для того времени это был прорыв.
Операционную систему, которая умеет всё это делать, назвали UNIX — сокращение от Uniplexed Information and Computing Service (единый информационно-вычислительный сервис). Изначально это называлось UNICS, но потом последние две буквы превратились в одну.
Что нового появилось в UNIX, чего до неё не было
Вот что впервые появилось именно в UNIX — и в виде идей, и в виде готового кода:
Файловая система с любой глубиной вложенности. Мы сейчас привыкли к папкам, в которых можно создавать другие папки, а в них третьи и так почти до бесконечности. Но до UNIX глубина вложенности была ограничена — нельзя было создать, например, папку внутри другой папки.
Модель работы с файлами. Пользователю раньше нужно было самому предусмотреть формат, размер и физическое размещение файлов на диске. В UNIX это всё взяла на себя операционная система.
Работа с программами напрямую. До UNIX настройку работы всех программ можно было сделать только в командной строке: запустил → компьютер что-то посчитал → показал результат. Если нужно изменить параметры, то это надо было делать через командную строку. В новой системе можно было менять настройки программ прямо внутри них — именно так и устроены сейчас все программы.
Вывод всего как текста. Раньше компьютеры работали с битами и выводили битовые последовательности. Их нужно было отдельно разбивать на нужные фрагменты или использовать встроенные программы для перевода битов в байты, а из них — в текст.
В UNIX единица вывода — это не бит, а байт. А в байт как раз умещается символ текста, а значит, с ним можно работать как с текстом: искать, склеивать с другими, отправлять в файл и так далее.
Регулярные выражения стали использоваться не только в профессиональных задачах, но и как основа для обработки вывода программ.
Язык C. Этот язык появился в UNIX как замена языка B. Но B был интерпретируемым языком (как Python), и для запуска программ нужен был его интерпретатор. Язык C — компилируемый, а значит, готовые программы можно запускать на любом совместимом компьютере, даже если на нём нет компилятора C.
Протокол TCP/IP. До UNIX этот протокол не был популярен, и компьютеры связывались друг с другом по более старому протоколу, который не имел столько возможностей. Теперь благодаря этой операционной системе весь мир пользуется интернетом, построенным на протоколе TCP/IP. Справедливости ради, этот протокол появился не в первой поставке UNIX.
Как работают в UNIX
Для управления этой системой почти всегда используется командная строка. Есть, конечно, и графический интерфейс для некоторых систем и задач, но штука в том, что UNIX заточен на работу в серверах. А у серверов чаще всего нет ни клавиатуры, ни монитора — только сетевые соединения, через которые пользователи и соединяются с сервером, чтобы им управлять.
Как UNIX стал стандартом
С середины 1970-х годов идёт довольно мутная история, в которой компания
AT&T долго и небезуспешно пытается заработать на UNIX, а американские университеты и инженеры-любители делают свою открытую версию. Идёт конкуренция между стандартами, инструментами, поставками и протоколами.Конкуренция выливается в то, что у UNIX появляется множество более совершенных потомков. Их мы называем Unix-подобными системами.
Можно сказать, что Unix-подобность — это такой набор правил, условностей и стандартов, которых должны придерживаться новые операционки, чтобы сохранять преемственность и некоторую совместимость. То есть такой ГОСТ для операционных систем. Операционка может быть и без ГОСТа, но с ним лучше.
Где сегодня используется UNIX
В чистом виде UNIX сейчас используется только на серверах и оборудовании связи. Всё дело в том, что для домашнего использования эта система подходит слабо: у неё нет встроенного графического интерфейса и все операции и программы нужно настраивать вручную.
Зато если нужна гарантированная надёжность, производительность и масштабируемость, особенно при сетевых нагрузках, — используют UNIX или производные от неё. Про них сейчас тоже расскажем.
UNIX-подобные системы
На основе оригинальных версий Юникса появилось много разных операционных систем: BSD, Solaris, HP-UX и даже MacOS, который сделан на основе BSD версии 4.4. Идеи, которые были заложены 50 лет назад, оказались настолько рабочими, что применяются до сих пор.
А ещё есть Linux и его производные — RedHat, Calculate, Ubuntu и ещё сотня дистрибутивов. Многие думают, что Линукс — это развитие Юникса, но на самом деле это полностью самостоятельное и независимое от него семейство операционных систем, хотя и слова похожие. Про Линукс обязательно расскажем в следующей статье.