| |||||||||||||||||||||||||||
Содержание
Мир на трёх кашалотах мается,
Суть легенды как всё проста... Народное Общая преамбулаОС FreeBSD, как и любая Unix-подобная система, основывается на трёх понятиях: процесса, файла и пользователя (точнее, пользовательского аккаунта). Всё, что существует в системе статически, суть файлы; всё, что существует в системе в динамике, суть процессы; все, кто тем или иным образом взаимодействует с системой — её процессами и её файлами, — суть пользователи. Казалось бы, всё просто и понятно — но именно во взаимосвязи этих трёх понятий и кроется основная сложность при изучении Unix-подобных систем. Ибо ими определяется резкое топологическое отличие модели их мироустройства от привычных пользователю DOS или Windows. Действительно, модель DOS — строго линейна: из пункта А можно достигнуть пункта Б посредством команды В. Более того, линейна она однонаправленно: вернуться назад можно в лучшем случае на один шаг. Из чего и проистекает ограниченность DOS, как на узкой тропе: шаг в сторону — побег (ошибка), прыжок на месте — провокация (зависание). Впрочем, в этой линейности и ограниченности кроется одна из притягательных особенностей DOS, а именно — простота ее использования. Особенно — в тех ситуациях, когда отклонение от генеральной линии нежелательно, а то и просто запрещено. Модель мира Windows (и сходной с ней в этом отношении MacOS) аппроксимируется понятием плоскости — не зря же пресловутая метафора рабочего стола стала в этих системах столь популярной. Конечно, по плоскости можно двигаться не только вперед и назад, но также влево и вправо. Однако — не более, что также накладывает ограничения. И к тому же резко возрастает вероятность выбора неправильного направления... Естественный путь преодоления ограничений двухмерной модели — придание плоскости глубины, что время от времени и проделывается в системах из рода Windows и ее идеологических собратьев. Однако ни один из экспериментов по созданию 3D-интерфейсов пока не дал иных результатов, кроме внешних "красивостей". FreeBSD же не испытывает потребности в третьем измерении. Поскольку изначально она унаследовала от первозданного Unix принципиально иную концепцию мироздания — циклическую, или, если хотите, рекурсивную. Именно рекурсией обусловлена мощь Unix-подобных систем. Но она же и создает наибольшие трудности в их изучении, так как аналогичных понятий нет ни в DOS, ни в Windows, ни в MacOS. Да и в реальной жизни человек с понятием рекурсии практически не сталкивается... Попробую проиллюстрировать свое утверждение применительно к трём краеугольным понятиям — процесса, файла, пользователя. К каковым и можно свести почти все происходящее в системе: пользователь инициирует процесс как нечто длящееся во времени, порождающее файл как статический результат своей деятельности, который возвращаетсяся пользователю в силу свойств процесса, породившего файл. Однако и сам пользователь порождается процессом (вернее, цепочкой процессов, в первооснове которых — первый процесс системы, init), свойства которого определяются конфигурационным файлом, возникшим вследствии процесса и в силу этого принадлежащим пользователю. Который в ряде случаев и сам является не столько г-ном имя_рек, нажимающим на клавиши терминала, сколько процессом, инициированным процессом init. В результате любой пользователь, начинающий изучение FreeBSD, упирается в замкнутый, казалось бы, круг — невозможно понять (или объяснить), что такое файл (и его атрибуты), не имея представления о процессе, осознать суть которого трудно, не зная понятия пользовательского аккаунта. Тем не менее, осознание проблемы рекурсивности FreeBSD — уже половина ее решения. Ведь можно поступить подобно Александру Филипповичу (Македонскому) и просто разорвать круг в любой его точке. Какой? Тут не избежать чисто волюнтаристического решения. И в настоящей книге мы начнём знакомство с "тремя китами" Unix-мира с понятия процесса. И с верой в то, что со временем всё, что покажется поначалу непонятным, обретёт для читателя смысл. Для определённости, в этой и двух последующих главах речь пойдёт о процессах, файлах и пользовательских аккаунтах применительно к FreeBSD. Однако почти всё это, за буквально единичными (и специально оговоренными) исключениями, приложимо к любой Unix-подобной операционной системе. Понятие процессаПонятие процесса принадлежит к тем сущностям, кажущимся интуитивно ясными, и которым, тем не менее, нелегко дать строгое (и при этом удобопонятное) определение. Наиболее распространенное их них — это представление процесса как программы в стадии ее выполнения (Андрей Робачевский. Операционная система Unix. СПб: БХВ-Петербург, 2000). Однако процесс и программа — далеко не идентичные понятия. Во-первых, существуют процессы, которым не соответствует никакой программы (то есть никакого исполняемого файла). Во-вторых, программа в ходе своего выполнения может породить более одного процесса. В-третьих, в рамках одного процесса может происходить замещение одной программы другой. И наконец, в-четвертых — и это, пожалуй, главное, — при запуске программы порождение нового процесса (системный вызов fork) предшествует собственно запуску программы (системный вызов exec). Так что, пожалуй, наиболее строгим определением процесса будет следующее: процесс — это то, что порождается системным вызовом fork. Каковой, в свою очередь, в лучших традициях Unix-рекурсии можно определить как системный вызов, порождающий процессы. Не очень понятно, да? Ну что же, определение процесса в стандарте ISO 9000:2000 Definitions как совокупности взаимосвязанных действий, преобразующих входящие данные в исходящие, не намного более ясно. Что же примем это как данность... Все сказанное может вызвать естественный вопрос: а зачем обычному (=конечному) пользователю FreeBSD вообще нужно знать о каких-то там процессах? Ведь пользователь MacOS (BSD-системы в своей основе — то есть тоже имеющей понятие процесса) спокойно обходится без этих знаний. Да и в Windows причин знакомиться с ними у пользователя нет ни малейших. Причин к рассмотрению понятия процесса с позиций пользователя несколько. Первая, гносеологическая, — просто не кажется лишним знать, что там у этого пользователя в системе происходит (а, как уже говорилось, все, что происходит в системе — пользователя ли, администратора, или программиста — суть процессы). Однако есть и несколько более практических причин для хотя бы беглого знакомства с понятием процесса. Во-первых, понимание взаимоотношений между процессом и запущенной программой очень не вредно при всякого рода настроечных мероприятиях — дабы не удивляться, почему командная оболочка в консоли ведет себя одним образом, запущенная в окне терминала — другим, а в некоторых особых случаях — вообще третьим (например, категорически отказывается находить исполняемые файлы). А во-вторых, представление о процессах и способах влияния на них часто оказывается незаменимым в аварийных ситуациях. Так что давайте уделим этому вопросу некоторое внимание. Комментариианоним, Fri Jan 23 21:56:54 2009:
я вот прочитал..было интересно появилось желание просмотреть следующую...хотя я и не претендую на знающего систем unix/linux...
Raven, Mon Dec 22 21:54:39 2008:
Рекурсия же встречается в жизни на каждом шагу. Я понимаю, что для влюбленных в BSD она может казаться чем-то волшебным, но в целом обыденное явление, тем более, для любого, знакомого с прораммированием хотя бы поверхностно. Ну а для русских понятие вообще родное - матрешки :)
Raven, Mon Dec 22 21:51:02 2008:
А как насчет того факта, который стеснительно замалчивается поклонниками BSD и Linux-NT семейство является POSIX-совместимыми ОС, с полным наличием всех трех сущностей...
Имхо, крайне натянуто различие. между ними. Современные ОС вообще крайне похожи между собой. Особенно, если вспомнить что такое по сути своей MacOS X и из чего сделана NT. Разницы между ними особой вообще нет (ну разве что косметическая). V, Fri Nov 21 08:48:08 2008:
2 Buy
Вот я не даром дважды в посте топологию упомянул. При сколь угодно больших деформациях в реализации, суть остается - пользователи, процессы и файлы никуда не делись и связь между ними осталась той же. PS А я и без гугля знаю, как оно реализовано и в чем разница... Buy, Fri Nov 21 02:20:38 2008:
> вот я прочитал и не понял в чем сие топологическое отличие заключается?
Отличие заключаеться не в наличии у одного и отсутсвии в другом, а в реализации(!), взаимосвязи и взаимодействии. Но это уже материал не для популярной статьи и автор справедливо опустил изложение этих подробностей. Хочешь докопаться - в Гугле много статей на эту тему :) V, Fri Nov 21 00:57:52 2008:
"Ибо ими определяется резкое топологическое отличие модели их мироустройства от ... Windows"
вот я прочитал и не понял в чем сие топологическое отличие заключается? ну и в винде тоже есть процессы, пользователи и файлы. и связь между ними точно такая же... аноним, Thu Nov 20 03:51:31 2008:
lynx
Спасио за статьи. Интересно читать. :) аноним, Wed Nov 19 11:36:30 2008:
[OT]
>Да и в реальной жизни человек с понятием рекурсии >практически не сталкивается... Автор либо альтруист, либо не снимает розовых очков... Комментарии заморожены.
|
| ||||||||||||||||||||||||||
|