Операционная система UNIX

    ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1 Прагматический подход к измерению информации.

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

                                            Измерение информации в быту.

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

Измерение информации в технике.

          В технике информацией считается любая хранящаяся, обрабатываемая или передаваемая последовательность символов. Часто используют простой и грубый способ определения количества информации, который может быть назван объемным. Он основан на подсчете количества символов в сообщении, т. е. связан с его длиной и не учитывает содержания. Длина сообщения зависит от числа различных символов, употребляемых для записи сообщения. В вычислительной технике применяются две стандартные единицы измерения: бит (двоичный знак двоичного алфавита {0,1}) - минимальная единица измерения информации и байт - (равен восьми битам, представляет собой один символ, т.е. при вводе с клавиатуры этого символа машине передается 1 байт информации).

Измерение информации в теории информации (информация, как снятая неопределенность).

          Пылкий влюбленный, находясь в разлуке, с объектом своей любви, посылает телеграмму; “Любишь?”. В ответ приходит не менее лаконичная телеграмма: “Да!”. Сколько информации несет ответная телеграмма? Альтернатив здесь две - либо “Да”, либо “нет”. Их можно обозначить знаками двоичного кода - 1 и 0. Таким образом, ответную телеграмму можно было бы закодировать всего одним двоичным символом. Можно ли сказать, что ответная телеграмма несет одну единицу информации? Получение информации (ее увеличение) одновременно означает увеличение знания или уменьшение информационной неопределенности.

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

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

            В теории информации количеством информации называют числовую характеристику сигнала, не зависящую от его формы и содержания и характеризующую неопределенность, которая исчезает после получения сообщения в виде данного сигнала. В этом случае количество информации зависит от вероятности получения сообщения о том или ином событии. Для абсолютно достоверного события (событие обязательно произойдет, поэтому его вероятность равна 1) количество вероятности в сообщении о нем равно 0. Чем невероятнее событие, тем большую информацию о нем несет сообщение. Лишь при равновероятных ответах ответ "да" или "нет" несет 1 бит информации.

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

            Информацию измеряют так же, как измеряют вещество и энергию, приняв некоторую единицу измерения за эталон. Что же принять за эталон? Компьютерная техника, как известно, работает, “питаясь” электрическим током – явлением с двумя состояниями. Если обозначить эти состояния (ведь смысл самого явления не важен), получится алфавит из двух символов или двоичный алфавит. Количество информации, которое содержит символ двоичного алфавита, принято за единицу измерения информации. Так как речь идет о единицах и количестве, то в качестве символов используются цифры. Исторически случилось так, что этими цифрами стали 0 и 1.

            Единица измерения количества информации называется БИТ (от англ. bit, сокращенно от binary digit – двоичная цифра). Бит - самое короткое слово двоичного алфавита и самая маленькая единица измерения информации, причем символы 0 и 1 равноправны. Для удобства введена более крупная единица измерения количества информации, принятая Международной системой СИ за основную, - БАЙТ (англ. byte). 1 байт (b) = 8 бит

Производные единицы  измерения информации:

1 килобайт, Kb (K) = 1024 b (210 b)

1 мегабайт, Mb (M) = 1024 Kb (210 Kb) = 220 b

1 гигабайт, Gb (G) = 1024 Mb (210 Мb) = 230 b

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

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

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

Прагматический  подход - оценивается полезность сообщения.

I = log 2 (P1/P0),

где P - вероятность  решения задачи P0 до сообщения и P1 после сообщения.

          Внешняя память компьютера используется для длительного хранения информации. Устройства внешней памяти: магнитные диски и ленты, оптические (лазерные) диски, магнитооптические диски.

          Дисководы — устройства чтения/записи информации на диски. Различают гибкие магнитные диски — дискеты и жесткие магнитные диски. Жесткие магнитные диски встроены в дисковод и в отличие от дискет являются несъемными.

        Структура магнитного диска: одна или несколько сторон (магнитных поверхностей), разделенных на концентрические дорожки, каждая из которых, в свою очередь, поделена на сектора, состоящие из «клеточек» — байтов. Все секторы на одном диске имеют фиксированный размер. Вся работа по считыванию и записи данных на дисках производится только полными секторами. Полный объем памяти диска определяется формулой: ОБЪЕМ = СТОРОНЫ*ДОРОЖКИ*СЕКТОРА*БАЙТЫ, где СТОРОНЫ — количество сторон диска, ДОРОЖКИ — количество дорожек на стороне, СЕКТОРА — количество секторов на дорожке, БАЙТЫ — количество байт в секторе.

      Информация на устройствах внешней памяти имеет файловую организацию. Файл — поименованная совокупность данных, хранящихся на внешнем носителе. Файловая структура диска — это совокупность файлов на диске и взаимосвязей между ними.

      Логический диск — это физический (реальный) диск или часть физического диска, которому присвоено собственное имя. Имена логических дисков задаются первыми буквами латинского алфавита с двоеточием: А:, В:, С: и т.д. Обычно с одним гибким магнитным диском связан один логический диск (А:, В), а жесткий диск делится на несколько логических (С:, D: и т.д.)

       Каталог — это поименованная совокупность файлов и подкаталогов (т.е. вложенных каталогов). Каталог самого верхнего уровня иерархии называется корневым. Он не вложен ни в какие другие каталоги.

       Путь к файлу — это последовательность, состоящая из имен каталогов (разделенных символом «\»), начиная от корневого и заканчивая тем, в котором непосредственно хранится файл.

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

2 Операционная система UNIX.

      UNIX (читается ю́никс) — группа переносимых, многозадачных и многопользовательских операционных систем.

       Первая система UNIX была разработана  в 1969 г. в подразделении Bell Labs компании AT&T. С тех пор было создано большое количество различных UNIX-систем. Юридически лишь некоторые из них имеют полное право называться «UNIX»; остальные же, хотя и используют сходные концепции и технологии, объединяются термином «UNIX-подобные» (англ. Unix-like). Для краткости в данной статье под UNIX-системами подразумеваются как истинные UNIX, так и UNIX-подобные ОС.

      Некоторые отличительные признаки UNIX-систем включают в себя:

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

      В настоящее время UNIX используются  в основном на серверах, а также как встроенные системы для различного оборудования. На рынке ОС для рабочих станций и домашнего применения лидером является Microsoft Windows, UNIX занимает только второе (Mac OS X) и третье (GNU/Linux) места.

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

Первые UNIX.

      Первоначально UNIX была разработана  в конце 1960-х годов сотрудниками Bell Labs, в первую очередь Кеном Томпсоном, Денисом Ритчи и Дугласом МакИлроем.

       В 1969 году Кен Томпсон, стремясь реализовать идеи, которые были положены в основу MULTICS, но на более скромном аппаратном обеспечении (DEC PDP-7), написал первую версию новой операционной системы, а Брайан Керниган придумал для неё название — UNICS (UNIplexed Information and Computing System) — в противовес MULTICS (MULTIplexed Information and Computing Service). Позже это название сократилось до UNIX.

      В ноябре 1971 года вышла версия для PDP-11, наиболее успешного семейства миникомпьютеров 1970-х (в СССР его аналоги, выпускавшиеся Министерством Электронной Промышленности были известно как СМ ЭВМ и «Электроника», позже ДВК, производились в Киеве, Воронеже, Зеленограде). Эта версия получила название «первая редакция» (Edition 1) и была первой официальной версией. Системное время все реализации UNIX отсчитывают с 1 января 1970.

       Первые версии UNIX были написаны на ассемблере и не имели встроенного компилятора с языком высокого уровня. Примерно в 1969 году Кен Томпсон при содействии Дениса Ритчи разработал и реализовал язык Би (B), представлявший собой упрощённый (для реализации на миникомпьютерах) вариант разработанного в 1966 языка BCPL. Би, как и BCPL, был интерпретируемым языком. В 1972 году была выпущена вторая редакция UNIX, переписанная на языке Би. В 1969—1973 годах на основе Би был разработан компилируемый язык, получивший название Си (C).

        В 1973 году вышла третья редакция UNIX, со встроенным компилятором языка Си. 15 октября того же года появилась четвёртая редакция, с переписанным на Си системным ядром (в духе системы Multics, также написанной на языке высокого уровня ПЛ/1), а в 1975 — пятая редакция, полностью переписанная на Си.

        С 1974 года UNIX стал распространяться среди университетов и академических учреждений. С 1975 года началось появление новых версий, разработанных за пределами Bell Labs, и рост популярности системы. В том же 1975 году Bell Labs выпустила шестую редакцию, известную по широко разошедшимся комментариям Джона Лайонса.

       К 1978 году система была установлена более чем на 600 машинах, прежде всего, в университетах.Седьмая редакция была последней единой версией UNIX. Именно в ней появился близкий к современному интерпретатор командной строки Bourne shell.

Современность.

      После разделения компании AT&T, товарный знак UNIX и права на оригинальный исходный код неоднократно меняли владельцев, в частности, длительное время принадлежали компании Novell.

      В 1993 году Novell передала права на товарный знак и на сертификацию программного обеспечения на соответствие этому знаку консорциуму X/Open, который затем объединился с Open Software Foundation, образовав консорциум The Open Group. Он объединяет ведущие компьютерные корпорации и государственные организации, в том числе IBM, Hewlett-Packard, Sun, NASA и многие другие. Консорциум занимается разработкой открытых стандартов в области операционных систем, самым важным из которых является Single UNIX Specification, ранее известный как POSIX. С точки зрения The Open Group, название UNIX могут носить только системы, прошедшие сертификацию на соответствие Single UNIX Specification.

        В 1995 году Novell продала права на существующие лицензии и дальнейшую разработку System V компании Santa Cruz Operation. В 2000 году Santa Cruz Operation продала свой UNIX-бизнес компании Caldera, которая затем была переименована в SCO Group. Хотя это название похоже на аббревиатуру SCO, используемую Santa Cruz Operation, это две разные компании.

         SCO Group заявила, что она также обладает правами на исходный код UNIX и развернула кампанию против различных пользователей и поставщиков UNIX-подобных систем, требуя выплаты лицензионных отчислений. Однако Novell утверждает, что права на исходный код не были переданы Santa Cruz Operation и, таким образом, не перешли к SCO Group, а остаются у Novell, что и подтвердил вердикт суда. Несмотря на это в августе 2009 года апелляционный суд США отменил вынесенное ранее решение, назначив дополнительное расследование с целью установления законного владельца авторских прав на исходные тексты операционной системы. В июне 2010 года суд поставил точку в этом вопросе, подтвердив вынесенный ранее (в апреле 2010) очередной вердикт в пользу Novell и отказав SCO Group в рассмотрении дальнейших жалоб.

Особенности UNIX, отличающие данное семейство от других ОС.

  • Файловая система древовидная, чувствительная к регистру символов в именах, очень слабые ограничения на длину имён и пути.
  • Нет поддержки структурированных файлов ядром ОС, на уровне системных вызовов файл есть поток байт.
  • Командная строка находится в адресном пространстве запускаемого процесса, а не извлекается системным вызовом из процесса интерпретатора команд (как это происходит, например, в RSX-11).
  • Понятие «переменных окружения».
  • Запуск процессов вызовом fork, то есть возможность клонирования текущего процесса со всем состоянием.
  • Понятия stdin/stdout/stderr.
  • Ввод/вывод только через дескрипторы файлов.
  • Традиционно крайне слабая поддержка асинхронного ввода/вывода, по сравнению с VMS и Windows NT.
  • Интерпретатор команд есть обыкновенное приложение, общающееся с ядром обыкновенными системными вызовами (в RSX-11 и VMS интерпретатор команд выполнялся как специальное приложение, специальным образом размещенное в памяти, пользующееся специальными системными вызовами, поддерживались также системные вызовы, дающие возможность приложению обращаться к своему родительскому интерпретатору команд).
  • Команда командной строки есть не более чем имя файла программы, не требуется специальная регистрация и специальная разработка программ как команд (что являлось обычной практикой в RSX-11, RT-11).
  • Не принят подход с программой, задающей пользователю вопросы о режимах своей работы, вместо этого используются параметры командной строки (в VMS, RSX-11, RT-11 программы работали также с командной строкой, но при её отсутствии выдавали запрос на ввод команд).
  • Пространство имён устройств на диске в каталоге /dev, поддающееся управлению администратором, в отличие от подхода Windows, где это пространство имен размещается в памяти ядра, и администрирование этого пространства (например, задание прав доступа) крайне затруднено из-за отсутствия его постоянного хранения на дисках (строится каждый раз при загрузке).
  • Широкое использование текстовых файлов для хранения настроек, в отличие от двоичной базы данных настроек, как, например, в Windows.
  • Широкое использование утилит обработки текста для выполнения повседневных задач под управлением скриптов.
  • «Раскрутка» ОС после загрузки ядра путём исполнения скриптов стандартным интерпретатором команд.
  • Широкое использование конвейеров (pipe).
  • Все процессы, кроме init, равны между собой, не бывает «специальных процессов».
  • Адресное пространство делится на глобальное для всех процессов ядро и на локальную для процесса части, нет «групповой» части адресного пространства, как в VMS и Windows NT, как и возможности загрузки туда кода и его исполнения там.
  • Использование двух уровней привилегий процессора вместо четырёх в VMS.
  • Отказ от использования оверлеев в пользу деления программы на несколько программ поменьше, общающихся через конвейеры или временные файлы.
  • Отсутствие APC и аналогов, то есть произвольных (а не жестко перечисленных в стандартном множестве) сигналов, не доставляемых до явного пожелания процесса их получить (Windows, VMS).
  • Концепция сигнала уникальна для UNIX, и крайне сложна в переносе на другие ОС, такие, как Windows.

Влияние UNIX на эволюцию операционных систем.

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

        Как и Multics, UNIX была написана на языке высокого уровня, а не на ассемблере (доминировавшем в то время).

         Она содержала значительно упрощённую, по сравнению с современными  ей операционными системами, файловую модель. Файловая система включала как службы, так и устройства (такие как принтеры, терминалы и жёсткие диски) и предоставляла внешне единообразный интерфейс к ним, но дополнительные механизмы работы с устройствами (такие как IOCTL и биты доступа) не вписывались в простую модель «поток байтов».

           UNIX популяризовала предложенную  в Multics идею иерархической файловой системы с произвольной глубиной вложенности. Другие операционные системы того времени позволяли разбивать дисковое пространство на каталоги или разделы, но число уровней вложенности было фиксировано и, зачастую, уровень вложенности был только один. Позднее все основные фирменные операционные системы обрели возможность создания рекурсивных подкаталогов, также заимствованную из Multics.

          То, что интерпретатор команд стал просто одной из пользовательских программ, а в качестве дополнительных команд выступают отдельные программы, является ещё одной инновацией Multics, популяризированной UNIX. Язык командной оболочки UNIX используется пользователем как для интерактивной работы, так и для написания скриптов, то есть не существует отдельного языка описания заданий, как, например, в системе JCL фирмы IBM. Так как оболочка и команды операционной системы являются обычными программами, пользователь может выбирать их в соответствии со своими предпочтениями, или даже написать собственную оболочку. Наконец, новые команды можно добавлять к системе без перекомпиляции ядра. Новый, предложенный в командной строке UNIX, способ создания цепочек программ, последовательно обрабатывающих данные, способствовал использованию параллельной обработки данных.

          Существенными особенностями UNIX были полная ориентация на  текстовый ввод-вывод и предположение, что размер машинного слова кратен восьми битам. Первоначально в UNIX не было даже редакторов двоичных файлов — система полностью конфигурировалась с помощью текстовых команд. Наибольшей и наименьшей единицей ввода-вывода служил текстовый байт, что полностью отличало ввод-вывод UNIX от ввода-вывода других операционных систем, ориентированного на работу с записями. Ориентация на использование текста для представления всего, что только можно, сделала полезными т. н. конвейеры (англ. pipelines). Ориентация на текстовый восьмибитный байт сделала UNIX более масштабируемой и переносимой, чем другие операционные системы. Со временем текстовые приложения одержали победу[уточнить] и в других областях, например, на уровне сетевых протоколов, таких как Telnet, FTP, SMTP, HTTP и других.

           UNIX способствовала широкому распространению регулярных выражений, которые были впервые реализованы в текстовом редакторе ed для UNIX. Возможности, предоставляемые UNIX-программам, стали основой стандартных интерфейсов операционных систем (POSIX).

          Широко используемый в системном  программировании язык Си, созданный изначально для разработки UNIX, превзошёл UNIX по популярности. Язык Си был первым «веротерпимым» языком, который не пытался навязать программисту тот или иной стиль программирования. Си был первым высокоуровневым языком, предоставляющим доступ ко всем возможностям процессора, таким как ссылки, таблицы, битовые сдвиги, приращения и т. п. С другой стороны, свобода языка Си приводила к ошибкам переполнения буфера в таких функциях стандартной библиотеки Си, как gets и scanf. Результатом стали многие печально известные уязвимости, например, та, что эксплуатировалась в знаменитом черве Морриса.

Операционная система UNIX