понедельник, 29 декабря 2014 г.

UNIX-подобные операционные системы

UNIX-подобные операционные системы

Введение

Первая операционная система UNIX (тогда еще "Unics") была написана в 1969 для компьютера PDP-7 сотрудниками Bell Telephone Laboratories: Кеном Томпсоном, Деннисом Ритчи, Дугласом Макилроем, Брайанои Кернигананом и проч. Первые версии системы были написаны на ассемблере, но потом переписаны на, изобретенном в процессе разработки, языке Си.
Систему не ждало ничего хорошего - фирмы, мгновенно вцепившиеся в удобную систему стремились её коммерциализовать. Отсюда и сложная генеалогия и две важные ветки: AT&T (та самая бывшая Bell Labs) и BSD. Всю эту историю в данной системе мы рассматривать не будем, но возможно, когда-нибудь придет время освятить и эту часть истории.

Структура системы

Основой работы *nix является ядро операционной системы. Это обычный выполняемый файл, лежащий в директории типа /unix или /stand/unix, или /vmunix, или /vmlinuz (в зависимости от конкретной реализации). При старте системы он целиком загружается в память, постоянно там находится и выполняет все системные функции. В ядре находятся драйверы устройств, подпрограммы управления системными ресурсами, таблицы текущих процессов и открытых файлов, системные вызовы, то есть обработчики системно-зависимых функций. Аналогом системных вызовов является прерывание #21h в PC/MS-DOS или многочисленные функции в DLL в Windows.
Любые операции с дисками кэшируются в памяти – так называемый буферный кэш. Процессы, то есть все выполняемые программы, записываются в таблице процессов. В целях экономии памяти в *nix всегда загружается только одна копия выполняемой программы; также имеются разделяемые библиотеки (аналогом является DLL), позволяющие иметь только одну копию некоторых функций. Каждый процесс имеет свое виртуальное адресное пространство. Для того чтобы обеспечить возможность поддерживать программы, требующие оперативной памяти, которая превосходит их физический объем, *nix поддерживает своп. Область памяти программы делится на три части: код программы, статические и динамические данные. Можно потребовать по возможности не выгружать программу после завершения, установив соответственный бит. В этом случае при последующей загрузке программа будет запущена почти мгновенно.

Файловая структура

Файловая структура *nix представляет собой одно большое дерево. Каждый раздел диска имеет свое дерево, а все такие деревья сцепляются в одно.
КаталогНазначение
/binНаиболее часто вызываемые команды и утилиты системы общего пользования
/devСодержит файлы устройств, являющиеся ссылками на устройства
/etcСодержит конфигурационные файлы, некоторые из утилит администрирования и сценарии инициализации системы.
В некоторых версиях *nix ту же функцию выполняет каталог /sbin или /usr/sbin
/libСодержит библиотечные файлы языка C и других языков.
Часть библиотечных фалов содержится в каталоге /usr/sbin
/lost+foundФайлы, появившиеся в результате нарушения целостности файловой системы
/mntКаталог для монтирования физических файловых систем
/homeКаталог для размещения домашних каталогов пользователей
В некоторых версиях *nix ту же функцию выполняет каталог /usr
/varКаталог для временного размещения файлов подсистем (почтовой, печати и т.п.)
/tmpВременный каталог системы
Корнем является директория "/". В файловую систему входит и директория /dev, в которой находится описание физических и логических устройств, таких как жесткие диски, принтеры, TTY-терминалы и некоторые другие. Поскольку для быстроты файловая система буферизуется, то выключение питания может привести к разрушению файловой системы. Подробный формат файловой системы (File System – fs) можно узнать, дав команду
man fs
Вообще, в *NIX существует встроенное руководство (manual) пользователя, то есть описание команд, системных файлов, системных вызовов и так далее. Для получения информации необходимо дать команду
man command_name

Базовые команды *nix

Список команд зависит от командного интерпретатора, установленного в системе. Команды интерпретаторов DOS проникают в *nix: к примеру, вы можете ввести DIR и LS и получите примерно одинаковый (ls окрашивает файлы/каталоги в зависимости от их типа) результат.
  • cd — сменить директорию (~ - обозначение домашней директории);
  • chmod — изменение атрибутов файла;
  • cp — копирование файлов;
  • gzip — разархивирует файлы, созданные gzip. Столь подробное описание сделано лишь из тех соображений, что в большинстве архивов в Интернете именно таким образом, то есть в форе file.tar.gz, хранятся очень многие вещи;
  • head — вывести первые N строк файла;
  • tail — вывести последние N строк файла;
  • less — постраничный вывод файла на экран по 24 строки, но с конца (очень удобен при просмотре, например, последних записей в log-файле);
  • ls — смотреть список файлов (с параметрами -ls — вывод полной информации о файлах);
  • mkdir — создание директории;
  • more — постраничный вывод файла на экран по 24 строки;
  • mv — перенос файлов;
  • rm — удаление файлов;
  • rmdir — удаление директории (если в директории остались файлы, то необходимо использовать параметр -f);
  • tar – простейшая программа (tape archivator – ленточный архиватор), которая просто последовательно записывает указанные файлы в один. Файлы *.tar . Ее параметры: c — создание, v — печать сообщений, x — раскрытие, f — файл;
  • file — программа, при помощи магических чисел, лежащих в отдельном файле, определяет содержимое указанного файла;
  • arch - архитектура компьютера;
  • clear - очистка экрана консоли;
  • passwd - смена пароля;
  • w, who, whoami - вывод всех пользователей работающих с системой, или своего логина;
  • last - информация о пользователях, работавших в системе в последнее время;
  • diff - сравнение файлов;
  • grep - текстовый фильтр;
  • wc - количество символов переводов строки, слов и байт в файле;
  • md5sum - контрольная сумма;
  • ssh, telnet - удалённое управление компьютером.

Краткая классификация *nix-систем

Спустя довольно непродолжительное время после своего возникновения UNIX стала развиваться по двум направлениям. Первое – коммерческое, поддерживалось USL (UNIX System Laboratory), второе – некоммерческое, было проектом, осуществляемым в Berkley. Первое направление к 1983 доросло до SVR (System V Release 1), второе — до BSD. Однако USL засудила BSD за использование фрагментов кода с копирайтом AT&T, вследствие чего многие коммерческие UNIX перешли на линию SVR.
Сразу оговорюсь: я не буду перечислять все типы *nix, так как их очень много. Я затрону лишь наиболее распространенные из них.
Типы *nix:
  • Некоммерческие:
    • NetBSD;
    • FreeBSD – наиболее подходит для работы в сети. В нем полностью заново переделан код ядра, где мог бы возникнуть конфликт с лицензионным соглашением;
    • GNU/Linux – самый популярный среди бесплатных UNIX. Строго говоря GNU/Linux - это дистрибутив - ядро Linux и прикладные программы по GNU;
  • Коммерческие:
    • BSD/OS 2.0 BSDi/386 – проект мертв;
    • Solaris – почти полная копия с SUN;
    • SCO UNIX — на данный момент уже мертвая система;
    • Mac OS - проприетарная ОС от Apple, основанная на ядре Darwin (которое основано на ядре Mach, которое, в свою очередь, содержит код ядер NeXTSTEP и FreeBSD).

FreeBSD

Некоммерческая операционная система, сделанная на основе BSD. Однако в ней переписан весь код ядра, дабы избежать конфликтов авторских прав. Она признана наиболее надежной системой, поддерживающей все сетевые функции, имеет поддержку NFS, графический интерфейс GNOME или KDE. Тем не менее нельзя признать ее удобной в администрировании. В основном все настройки необходимо делать из командной строки или редактировать конфигурационные файлы.

GNU/Linux

Сейчас это одна из самых популярных систем типа *nix для PC. Бесплатная. В течение длительного времени постоянно совершенствуемая добровольцами, зарекомендовала себя и как удачная система для рабочих станций, и как надежный Интернет-сервер. Огромное преимущество в том, что создано довольно большое количество программ для Linux, что облегчает работу. Часто Linux используют в довольно крупных компаниях в качестве серверной системы. Также последние модификации других UNIX включают поддержку программ для Linux (например, Solaris).
На основе Linux ядра и GNU-программ строятся дистрибутивы, различающиеся настройками ядра, списком программ и системными требованиями.
Наиболее распространенные дистрибутивы:
  • Debian — популярный, один из выживших и оказавших влияние на другие дистрибутивы (Mint, Ubuntu и проч.);
  • Fedora — дистрибутив, поддерживаемый RedHat'ом, что как-бы намекает;
  • Gentoo (русский) — дистрибутив, распространяющийся в исходном коде. Пользователю предлагается самостоятельно скомпилировать ОС под свое железо, что дает 1-2% прирост производительности;
  • Mandriva — (ранее известна как корень мандрагоры);
  • openSUSE — дистрибутив разрабатываемый Novell;
  • Slackware — один из старых выживших дистрибутивов, отличается чистотой и простотой (так как создана по принципу KISS - делай проще);
  • Ubuntu (русский) — дистрибутив Linux для человеков, основанный на Debian;
  • Puppy (русский) — дистрибутив для старых машин. По направленности аналогичен DSL (Damn Small Linux), но в отличие от него содержит больше очевидно не нужных вещей;
  • Slax (русский) — небольшая система, подходящая для загрузки с USB-носителей (основана на Slackware);
  • Android — основан на переделанном Linux-ядре и предназначен для телефонов/планшетов (погодите-ка!)

Solaris

Удобная, красивая, что немаловажно, а также мощная система, воплотившая на PC многие прелести SUN. Наиболее часто используется на машинах для скромных вычислительных целей: что-то вроде мини-лаборатории. Система с вроде как-бы закрытым кодом, в то же время доступным через проект Open Solaris.

Где обитают *nix

От холодильника (хотя туда часто пихают WinCE) до многопроцессорного сервера из TOP-10 самых производительных.

Комментариев нет:

Отправить комментарий