Компания ALT Linux
Опубликован: 14.12.2004 | Доступ: свободный | Студентов: 12596 / 1645 | Оценка: 4.19 / 3.84 | Длительность: 18:18:00
ISBN: 978-5-9556-0019-1
Лекция 5:

UNIX как операционная среда

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Аннотация: Краткое описание типичной UNIX-подобной системы как проективной операционной среды. Рассматривается реализация структурных элементов операционной среды в UNIX.

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

Так что оставим процедурный подход в стороне и займемся системами проективными. С ними дело обстоит иначе: они как раз требуют изучения; информационная (отчасти даже дидактическая) поддержка - неотъемлемая их часть, и без этого с ними работать невозможно. В качестве примера проективной системы возьмем операционную систему UNIX (см. в лекции 1 первый абзац, посвященный этим четырем символам) со всеми достоинствами и недостатками, из ее проективности проистекающими. Мы будем рассматривать UNIX в первую очередь с точки зрения пользователя, т. е. изучать, что представляет собой UNIX как операционная среда.

Истоки UNIX

Начать все же стоит не с описания системы, а с истории - с зарождения UNIX (см. http://www.bell-labs.com/history). Дело было в конце 60-х, когда вся патриотическая общественность Соединенных Штатов была решительно настроена догнать и перегнать СССР в области вычислительной техники. С этой целью государственные и военные структуры США вкладывали немалые деньги в наукоемкие проекты: разработку новых вычислительных систем, средств хранения и передачи данных.

Программное наполнение нового компьютера - операционная система - считалось тогда неотъемлемой частью именно этого компьютера и разрабатывалось по той же схеме, что и, допустим, стойка для размещения всех его узлов. Группа разработчиков получала в руки "железо" с описанием его архитектуры и задание: сделать так, чтобы можно было решать определенные задачи. Если программистам что-то не нравилось, в стенд вносились аппаратные изменения, и работа начиналась заново. Задач было много, и совокупность их решений называлась operation system, то есть система правил работы с машиной.

Star Trek

Разработкой такой системы занималась тогда исследовательская лаборатория Bell Labs, подразделение американской телефонной корпорации AT&T. Средства "холодной войны" позволили привлекать к этому делу людей весьма сведущих (с высшим образованием как минимум), в том числе из такого солидного научного центра, как Массачусетский технологический институт (MIT). Полным ходом шли исследования и эксперименты над составными частями некой универсальной системы (она называлась Multics ) с разделением времени, взаимодействием между компьютерами, секретностью доступа к данным и т. п. Multics дожила до создания работающего стенда и потихоньку скончалась: изготовление второго стенда (не говоря уж о тиражировании) обошлось бы так дорого, что заказчики решили не платить вовсе.

Небольшая группа исследователей, главным образом Кен Томпсон (Ken Thompson) и Деннис Ричи (Dennis Ritchie), продолжала искать новые пути. Изредка они составляли проекты исследований, которые в Bell Labs поддерживали, за исключением того, что вычислительную машину на эти проекты не выделяли. Машинное время на ЭВМ из-под Multics стоило очень дорого, к тому же неугомонный Кен хотел отлаживать написанную им компьютерную игру Star Trek (ее пришлось переименовать в Space Travel: цензура XXI века - авторское право - не позволяет публично использовать название культового телесериала) и играть в нее. Довольно быстро где-то в подвалах AT&T отыскалась слабо загруженная работой машина PDP-7, на которую первым делом была перенесена игра.

К пуговице Кена и Денниса пришлось пришить приличные брюки: разработать хорошо сбалансированную модель псевдопараллелизма (чтобы играть, используя графические устройства ввода/вывода, и тут же редактировать и отлаживать программу на текстовом), алгоритмы разделения памяти, эффективную систему хранения данных на жестком диске ( файловую систему ), текстовый редактор, командный интерпретатор и многое другое. Активно участвующий в работе группы Брайан Керниган (Brian Kernigan) придумал системе имя - UNIX. Имя получилось звучное (особенно приятное жителю United States of America или United Kingdom) и содержало легкий кивок (или пинок?) в сторону почившего Multics.

Идеология

Директор исследовательского центра, Дуг Макилрой (Doug McIlroy), специалист в области макроязыков, навел Кена на идею канала (pipe) между командами системы. Каналы сыграли очень важную роль в формировании идеологии UNIX как инструмента. Каждая программа (utility) должна решать одну простую задачу, но решать хорошо. Данные должны передаваться в текстовом виде, тогда и человек сможет в них разобраться, и для самих программ установится общий, но гибкий формат взаимодействия. Решение сложных задач - совместная работа нескольких программ, передающих друг другу данные по каналам. Этим взаимодействием управляет оболочка (shell), предназначенная для интеграции программ и управления ими.

В начале 70-х UNIX уже твердо стоял на ногах: имелась и новая машина (PDP-11), и заказчик (патентное бюро Bell Labs ). Перенос системы, написанной на автокоде, с одной архитектуры на другую был довольно непрост, и Керниган предложил переписать ее на высокоуровневом языке программирования, не зависящем от конкретной реализации. Томпсон попытался использовать Фортран, но этот язык не годился для системного программирования. Тогда он написал собственный язык программирования, B, который в некоторых местах получился слишком низкоуровневым. Деннис основательно переработал B - и на свет появился C ( Си ), который и по сей день используется для написания операционных систем.

Разработчики UNIX System Group (USG) исправляли и дополняли систему сообща. Идея и первоначальная реализация какой-нибудь утилиты могла принадлежать одному человеку, но доводить ее до совершенства мог любой. Кроме доступа к исходным текстам, совместная работа требовала, чтобы все идеи и все готовые возможности системы были задокументированы. Макилрой отлично знал: если утилита внятно и грамотно описана на родном языке, то она и хорошо запрограммирована, и пользоваться ею будет удобно. Вдобавок UNIX -сообщество росло: к середине 70-х многие университеты США уже использовали новую систему. Если нельзя сию минуту пойти и спросить автора, что делает его программа и как ею пользоваться, значит, нужно прочесть об этом в документации. Ричи предложил использовать формат, разработанный для патентного бюро, а Макилрой усовершенствовал программу документирования и создал концепцию страницы руководства (manual page), введя в документ обязательные тематические параграфы и ссылки.

К середине 70-х Bell Labs уже активно торговала UNIX, что не замедлило сказаться на темпах и направлении развития системы. С одной стороны, получая обратную связь от пользователей, эксплуатирующих систему на производстве, разработчики получили возможность избавляться от множества мелких ошибок, неизбежно таящихся в системе. Но с другой стороны, научные исследования в рамках UNIX становились все более и более ограниченными: любое экспериментальное архитектурное изменение повлекло бы за собой несовместимость с предыдущими выпусками системы (а то и неработоспособность отдельных ее частей) и, как следствие, гнев заказчиков и падение продаж. Поэтому центры развития UNIX переместились в университеты, и без того использующие эту систему в академических целях.

BSD

Одним из главных центров стал Университет Беркли, Калифорния. Три факультета - компьютерный, математический и статистический - использовали UNIX с момента появления академической лицензии. В середине 70-х, когда движение UNIX стало замедляться по описанным выше причинам, выяснилось, что множество наработок для UNIX выходят за рамки AT&T (и не подчиняются их политике лицензирования). Поэтому в Беркли стали готовить свой выпуск UNIX со всевозможными накопившимися изменениями и дополнениями - Berkeley Software Distribution (BSD). Это стало возможным после того, как Кен Томпсон провел в Беркли полгода, обучая энтузиастов премудростям работы с UNIX.

Любой человек, каким-то образом получивший копию BSD (которая распространялась обязательно с приложением исходных текстов ), считался собственником этой копии и мог, в свою очередь, копировать ее и передавать кому угодно. В Беркли рассуждали так: чем самим исправлять все ошибки, лучше дать возможность сделать это пользователю. Если при этом он окажется достаточно грамотен и улучшит работу системы - уже неплохо, а если его доработки можно будет использовать в следующем выпуске системы - совсем хорошо. Кроме того, такая лицензия существенно облегчала и организацию исследовательских работ, и промышленную эксплуатацию систем BSD.

Многое из того, что по сей день входит в состав операционных систем (даже совсем не UNIX ), написано в конце 70-х и в 80-е годы в Беркли или для Беркли. Реализация сетевых протоколов TCP/IP (на которой основывается работа Internet) - проект, выполненный по заказу DARPA (военного ведомства) - считается на сегодня самой надежной и работоспособной.

Гнезда UNIX

Все современные UNIX -системы можно отнести либо к гнезду USG (это прямые наследники творения Bell Labs: UnixWare, SCO Open Server, HPUX, AIX, Solaris), либо к гнезду BSD (все системы, название которых включает BSD, ядро Mac OS - Darwin, Tru64 и некоторые другие). (Полную диаграмму наследования выпусков разных UNIX -систем можно найти на http://www.levenez.com/unix.) Особняком стоят столь популярные сегодня системы с общим именем Linux. Строго говоря, они не наследуют ничего, кроме идей, хотя по архитектурным особенностям традиционно относятся к гнезду USG. Стоит добавить, что гнездо USG еще называют System V или SYSV, по имени самого успешного творения Bеll Labs, выпущенного в середине 80-х.

Следует понимать, что Linux - название даже не операционной системы, а одного только ядра. Ядро это, ориентированное первоначально на i386, написал в одиночку Линус Торвальдс (Linus Torvalds), желая создать на этом, тогда еще маломощном, компьютере среду выполнения UNIX, аналогичную коммерческим версиям. Тогда, в самом начале 90-х, UNIX -подобные системы для i386 были неполными и довольно нелепыми, а кроме того, исходные тексты этих систем не были доступны. Сам автор превосходно описывает процесс создания ядра в книге "Just for Fun", что можно перевести как "Из любви к искусству" или "Забавы ради" ( [ 39 ] ). Все остальное в Linux -системе - программы, написанные программистами со всего мира и собранные (после тщательной доработки напильником) в единое целое авторами дистрибутива.

Благодаря Internet (а в конечном счете - UNIX ) в разработке открытых UNIX -систем может участвовать любой. Открытых ОС на сегодня насчитывается несколько десятков: помимо разнообразных дистрибутивов Linux, существует несколько открытых BSD-систем (самые известные - FreeBSD, OpenBSD и NetBSD), микроядерная система GNU HURD и множество других, подчас самых экзотических (есть даже проект FreeDOS, воссоздающий свойства DOS). Вокруг каждой системы образуется многонациональное сообщество (community) заинтересованных в ее развитии людей. Поддержка сообществом подстегнула развитие открытых UNIX -систем: стало проще искать новые области применения систем, привлекать новые источники финансирования, исправлять ошибки и т. д.

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

UNIX создавался для того, чтобы на нем немедленно работать, а не для того, чтобы им потом торговать, т. е. для себя. Это значит, что стадия отчуждения (в понимании, скажем, Маркса [ 39 ] ) системы как продукта какое-то время для UNIX вовсе не существовала. А когда им додумались торговать, уже ничего испортить, перекроив удобство в привлекательность, было нельзя. Образ мысли авторов UNIX, людей с университетским образованием, породил особую идеологию системы, в духе бэконовского "знание - сила". Нетрудно проследить, как это отразилось на принципах формирования системы, которые сами разработчики, наверное, не всегда и объявляли, но которых почти всегда придерживались. Именно попытка формализовать и обосновать эти принципы и привела к понятию "проективной системы".

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Max Akt
Max Akt

Я прохожу курс "Операционная система Unix" и после тестов, вижу в отчете, что этот тест сдало еще 25 человек. Почему так мало, это ведь реально хороший и полезный урок. Здесь естьи теория и практичесские материалы. Сам курс написан хорошо, живым языком. И здесь я получил ответы на вопросы по Linux, которые боялся спросить. Наверное это из-за того, что в названии курса написано не Linux, а Unix и это многих отпугивает.

Andranik Avakian
Andranik Avakian

41. УК РФ и Комментарии (ст. 273)

М. 2000 г. Издательство: ALT Linux, Институт Логики

Уголовный Кодекс РФ и комментарии к нему?

По ссылке открывается сайт документации Linux, раздел Linux Installation and Getting Started