OS Site.ru


Всё об операционных системах.
Операционные системы
Mac OS
NetWare
OS/2
Windows
BSD/386
FreeBSD
Linux
QNX
Solaris
Unix
BeOS
Miraculix OS
MorphOS
ReactOS
SkyOS
Syllable
MS-DOS
FreeDOS
OpenDOS
Novell DOS
DR-DOS
IBM PC DOS
RDOS
Меню

Cемейство операционных систем

Unix


Unix - семейство полноценных, изначально многопользовательских, многозадачных и многотерминальных операционных систем, почти полностью совместимых друг с другом на уровне исходных текстов программ.

Впервые система Unix была описана в 1974 году в статье Кена Томпсона и Дэнниса Ричи в журнале "Communications of the ACM". С этого времени она получила широкое распространение и завоевала широкую популярность среди производителей ЭВМ, которые все чаще стали оснащать ею свои машины. Особой популярностью она пользуется в университетах, где довольно часто участвует в исследовательском и учебном процессе.

За время, прошедшее с момента ее появления в 1969 году, система Unix стала довольно популярной и получила распространение на машинах с различной мощностью обработки, от микропроцессоров до больших ЭВМ, обеспечивая на них общие условия выполнения программ. Система делится на две части. Одну часть составляют программы и сервисные функции, то, что делает операционную среду Unix такой популярной; эта часть легко доступна пользователям, она включает такие программы, как командный процессор, обмен сообщениями, пакеты обработки текстов и системы обработки исходных текстов программ. Другая часть включает в себя собственно операционную систему, поддерживающую эти программы и функции.

Unix имеет долгую и интересную историю. Начавшись как несерьезный и почти "игрушечный" проект молодых исследователей, Unix стал многомиллионной индустрией, включив в свою орбиту университеты, многонациональные корпорации, правительства и международные организации стандартизации.

Unix зародился в лаборатории Bell Labs фирмы AT&T более 25 лет назад. В то время Bell Labs занималась разработкой многопользовательской системы разделения времени MULTICS (Multiplexed Information and Computing Service) совместно с MIT и General Electric, но эта система потерпела неудачу, отчасти из-за слишком амбициозных целей, не соответствовавших уровню компьютеров того времени, а отчасти и из-за того, что она разрабатывалась на языке PL/1, а компилятор PL/1 задерживался и вообще плохо работал после своего запоздалого появления. Поэтому Bell Labs вообще отказалась от участия в проекте MULTICS, что дало возможность одному из ее исследователей, Кену Томпсону, заняться поисковой работой в направлении улучшения операционной среды Bell Labs. Томпсон, а также сотрудник Bell Labs Денис Ритчи и некоторые другие разрабатывали новую файловую систему, многие черты которой вели свое происхождение от MULTICS. Для проверки новой файловой системы Томпсон написал ядро ОС и некоторые программы для компьютера GE-645, который работал под управлением мультипрограммной системы разделения времени GECOS. У Кена Томпсона была написанная им еще во времена работы над MULTICS игра "Space Travel" - "Космическое путешествие". Он запускал ее на компьютере GE-645, но она работала на нем не очень хорошо из-за невысокой эффективности разделения времени. Кроме этого, машинное время GE-645 стоило слишком дорого. В результате Томпсон и Ритчи решили перенести игру на стоящую в углу без дела машину PDP-7 фирмы DEC, имеющую 4096 18-битных слов, телетайп и хороший графический дисплей. Но у PDP-7 было неважное программное обеспечение, и, закончив перенос игры, Томпсон решил реализовать на PDP-7 ту файловую систему, над который он работал на GE-645. Из этой работы и возникла первая версия Unix, хотя она и не имела в то время никакого названия. Но она уже включала характерную для Unix файловую систему, основанную на индексных дескрипторах inode, имела подсистему управления процессами и памятью, а также позволяла двум пользователям работать в режиме разделения времени. Система была написана на ассемблере. Имя Unix (Uniplex Information and Computing Services) было дано ей еще одним сотрудником Bell Labs, Брайаном Керниганом, который первоначально назвал ее Unix, подчеркивая ее отличие от многопользовательской MULTICS. Вскоре UNICS начали называть Unix.

Первыми пользователями Unix стали сотрудники отдела патентов Bell Labs, которые нашли ее удобной средой для создания текстов.

Большое влияние на судьбу Unix оказала перепись ее на языке высокого уровня С, разработанного Денисом Ритчи специально для этих целей. Это произошло в 1973 году, UNIX насчитывал к этому времени уже 25 инсталляций, и в Bell Labs была создана специальная группа поддержки Unix.

Широкое распространение Unix получил с 1974 года, после описания этой системы Томпсоном и Ритчи в компьютерном журнале CACM. Unix получил широкое распространение в университетах, так как для них он поставлялся бесплатно вместе с исходными кодами на С. Широкое распространение эффективных C-компиляторов сделало Unix уникальной для того времени ОС из-за возможности переноса на различные компьютеры. Университеты внесли значительный вклад в улучшение Unix и дальнейшую его популяризацию. Еще одним шагом на пути получения признания Unix как стандартизованной среды стала разработка Денисом Ритчи библиотеки ввода-вывода stdio. Благодаря использованию этой библиотеки для компилятора С, программы для Unix стали легко переносимыми.

Широкое распространение Unix породило проблему несовместимости его многочисленных версий. Очевидно, что для пользователя весьма неприятен тот факт, что пакет, купленный для одной версии Unix, отказывается работать на другой версии Unix. Периодически делались и делаются попытки стандартизации Unix, но они пока имели ограниченный успех. Процесс сближения различных версий Unix и их расхождения носит циклический характер. Перед лицом новой угрозы со стороны какой-либо другой операционной системы различные производители Unix-версий сближают свои продукты, но затем конкурентная борьба вынуждает их делать оригинальные улучшения и версии снова расходятся. В этом процессе есть и положительная сторона - появление новых идей и средств, улучшающих как Unix, так и многие другие операционные системы, перенявшие у него за долгие годы его существования много полезного.

На рисунке показана упрощенная картина развития Unix, которая учитывает преемственность различных версий и влияние на них принимаемых стандартов. Наибольшее распространение получили две весьма несовместимые линии версий Unix: линия AT&T - Unix System V, и линия университета Berkeley-BSD. Многие фирмы на основе этих версий разработали и поддерживают свои версии Unix: SunOS и Solaris фирмы Sun Microsystems, UX фирмы Hewlett-Packard, XENIX фирмы Microsoft, AIX фирмы IBM, UnixWare фирмы Novell (проданный теперь компании SCO), и список этот можно еще долго продолжать.

Наибольшее влияние на унификацию версий Unix оказали такие стандарты как SVID фирмы AT&T, POSIX, созданный под эгидой IEEE, и XPG4 консорциума X/Open. В этих стандартах сформулированы требования к интерфейсу между приложениями и ОС, что дает возможность приложениям успешно работать под управлением различных версий Unix.

Концепция разработки системы Unix заключалась в построении операционной системы из элементов, которые позволили бы пользователю создавать небольшие программные модули, выступающие в качестве конструкционных блоков при создании более сложных программ. Одним из таких элементов, с которым часто сталкиваются пользователи при работе с командным процессором shell, является возможность переназначения ввода-вывода. Говоря условно, процессы имеют доступ к трем файлам: они читают из файла стандартного ввода, записывают в файл стандартного вывода и выводят сообщения об ошибках в стандартный файл ошибок. Процессы, запускаемые с терминала, обычно используют терминал вместо всех этих трех файлов, однако каждый файл независимо от других может быть "переназначен".

Вторым конструкционным элементом является канал, механизм, обеспечивающий информационный обмен между процессами, выполнение которых связано с операциями чтения и записи. Процессы могут переназначать выводной поток со стандартного вывода на канал для чтения с него другими процессами, переназначившими на канал свой стандартный ввод. Данные, посылаемые в канал первыми процессами, являются входными для вторых процессов. Вторые процессы так же могут переназначить свой выводной поток и так далее, в зависимости от пожеланий программиста. И снова, так же как и в вышеуказанном случае, процессам нет необходимости знать, какого типа файл используется в качестве файла стандартного вывода; их выполнение не зависит от того, будет ли файлом стандартного вывода обычный файл, канал или устройство. В процессе построения больших и сложных программ из конструкционных элементов меньшего размера программисты часто используют каналы и переназначение ввода-вывода при сборке и соединении отдельных частей. Действительно, такой стиль программирования находит поддержку в системе, благодаря чему новые программы могут работать вместе с существующими программами.

Независимо от версии, общими для Unix чертами являются:

  • многопользовательский режим со средствами защиты данных от несанкционированного доступа,
  • реализация мультипрограммной обработки в режиме разделения времени, основанная на использовании алгоритмов вытесняющей многозадачности (preemptive multitasking),
  • использование механизмов виртуальной памяти и свопинга для повышения уровня мультипрограммирования,
  • унификация операций ввода-вывода на основе расширенного использования понятия "файл",
  • иерархическая файловая система, образующая единое дерево каталогов независимо от количества физических устройств, используемых для размещения файлов,
  • переносимость системы за счет написания ее основной части на языке C,
  • разнообразные средства взаимодействия процессов, в том числе и через сеть,
  • кэширование диска для уменьшения среднего времени доступа к файлам.

Хотя операционная система и большинство команд написаны на Си, система Unix поддерживает ряд других языков, таких как Фортран, Бейсик, Паскаль, Ада, Кобол, Лисп и Пролог. Система Unix может поддерживать любой язык программирования, для которого имеется компилятор или интерпретатор, и обеспечивать системный интерфейс, устанавливающий соответствие между пользовательскими запросами к операционной системе и набором запросов, принятых в Unix.

Практически все протоколы, на которых основан Internet, были разработаны под Unix, в частности стек протоколов TCP/IP придуман в университете Berkeley.

Защищенность Unix при правильном администрировании ни в чем не уступает ни Novell, ни Windows NT. Сервер под Unix хорош для квалифицированного (или желающего стать таковым) администратора, т.к. требует знания принципов функционирования происходящих в нем процессов. Реальная многозадачность и жесткое разделение памяти обеспечивают высокую надежность функционирования системы, хотя в производительности файл- и принт-сервисов Unix уступает Netware.

Важным свойством Unix является его многотерминальность когда много пользователей могут одновременно запускать программы на одной Unix-машине. Своей масштабируемостью Unix из-за его многоплатформенности на порядок превосходит любую другую операционную систему .

Unix состоит из ядра с включенными в него драйверами и из утилит (внешних по отношению к ядру программ). Если надо изменить конфигурацию (добавить устройство, изменить порт или прерывание), то ядро пересобирают (перелинковывают) из обьектных модулей или (напр., во FreeBSD) из исходников. (Некоторые параметры пожно поправить без пересборки. Существуют также loadable kernel modules).

Выполняя различные элементарные операции по запросам пользовательских процессов, ядро обеспечивает функционирование пользовательского интерфейса. Среди функций ядра можно отметить:

  • Управление выполнением процессов посредством их создания, завершения или приостановки и организации взаимодействия между ними.
  • Планирование очередности предоставления выполняющимся процессам времени центрального процессора (диспетчеризация). Процессы работают с центральным процессором в режиме разделения времени: центральный процессор выполняет процесс по завершении отсчитываемого ядром кванта времени процесс приостанавливается и ядро активизирует выполнение другого процесса. Позднее ядро запускает приостановленный процесс.
  • Выделение выполняемому процессу оперативной памяти. Ядро операционной системы дает процессам возможность совместно использовать участки адресного пространства на определенных условиях, защищая при этом адресное пространство, выделенное процессу, от вмешательства извне. Если системе требуется свободная память, ядро освобождает память, временно выгружая процесс на внешние запоминающие устройства, которые называют устройствами выгрузки. Если ядро выгружает процессы на устройства выгрузки целиком, такая реализация системы UNIX называется системой со свопингом (подкачкой); если же на устройство выгрузки выводятся страницы памяти, такая система называется системой с замещением страниц.
  • Выделение внешней памяти с целью обеспечения эффективного хранения информации и выборка данных пользователя. Именно в процессе реализации этой функции создается файловая система. Ядро выделяет внешнюю память под пользовательские файлы, мобилизует неиспользуемую память, структурирует файловую систему в форме, доступной для понимания, и защищает пользовательские файлы от несанкционированного доступа.
  • Управление доступом процессов к периферийным устройствам, таким как терминалы, ленточные устройства, дисководы и сетевое оборудование.
    Выполнение ядром своих функций довольно очевидно. Например, оно узнает, что данный файл является обычным файлом или устройством, но скрывает это различие от пользовательских процессов. Так же оно, форматируя информацию файла для внутреннего хранения, защищает внутренний формат от пользовательских процессов, возвращая им неотформатированный поток байтов. Наконец, ядро реализует ряд необходимых функций по обеспечению выполнения процессов пользовательского уровня, за исключением функций, которые могут быть реализованы на самом пользовательском уровне. Например, ядро выполняет действия, необходимые shell'y как интерпретатору команд: оно позволяет процессору shell читать вводимые с терминала данные, динамически порождать процессы, синхронизировать выполнение процессов, открывать каналы и переадресовывать ввод-вывод. Пользователи могут разрабатывать свои версии командного процессора shell с тем, чтобы привести рабочую среду в соответствие со своими требованиями, не затрагивая других пользователей. Такие программы пользуются теми же услугами ядра, что и стандартный процессор shell.

Unix является изначально многопользовательской и многозадачной системой . В Unix используется вытесняющая многозадачность.

Основным различием между вытесняющим и невытесняющим вариантами многозадачности является степень централизации механизма планирования процессов. В первом случае механизм планирования процессов целиком сосредоточен в операционной системе, а во втором - распределен между системой и прикладными программами. При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом.

По критериям эффективности, использованным при разработке ОС, Unix относится к многозадачным системам разделения времени (в семействе Unix есть и системы реального времени, например, QNX).

Системы разделения времени призваны исправить основной недостаток систем пакетной обработки - изоляцию пользователя-программиста от процесса выполнения его задач. Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой. Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину.

Системы реального времени применяются для управления различными техническими объектами или технологическими процессами. Критерием эффективности для систем реального времени является их способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы - реактивностью. Для этих систем мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется исходя из текущего состояния объекта или в соответствии с расписанием плановых работ.

Среда Unix - это сочетание двух важнейших вещей: файлового дерева и интерфейса системных вызовов. Это дерево допускает бесконечное расширение возможностей, позволяя монтировать внешние дисковые области в любой точке файловой системы. Дерево помогает также в сборе логически связанных файлов, что делает систему более организованной. Интерфейс системных вызовов обеспечивает набор инструментов, из которых можно построить большинство других функций. Строгое следование этому стандарту гарантирует совместимость с постоянно развивающейся AT&T; System V.

Файловая система UNIX характеризуется:

  • иерархической структурой;
  • согласованной обработкой массивов данных;
  • возможностью создания и удаления файлов;
  • динамическим расширением файлов;
  • защитой информации в файлах;
  • трактовкой периферийных устройств как файлов.

Файловая система организована в виде дерева с одной исходной вершиной, которая называется корнем (записывается: "/"); каждая вершина в древовидной структуре файловой системы, кроме листьев, является каталогом файлов, а файлы, соответствующие дочерним вершинам, являются либо каталогами, либо обычными файлами, либо файлами устройств.

Условно в семействе Unix можно выделить подсемейства System V и Berkeley. System V (читается "System Five") имеет несколько вариантов. Университет Berkeley славен не только разработкой BSD, но и большинства протоколов Internet. Впрочем, многие 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

В России наиболее популярны системы дистрибутивов Linux и FreeBSD.
Работа в Linux или FreeBSD для опытного специалиста не представляет труда. Но для новичка Linux проще в освоении и удобнее в эксплуатации.

В отличие от FreeBSD, которая исторически происходит от кодов Unix, ядро системы Linux написано заново. Обе ОС - это системы отличного качества. Одна в чем-то лучше, чем другая, и наоборот. Обе системы активно развиваются, поэтому они могут быстро и неоднократно меняться лидирующей ролью в каких-либо аспектах.



Вверх
Версия для печати Версия для печати
Обратная связь.
При любой перепечатке материалов сайта ссылка обязательна.