CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
31.08.2016

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Дистрибутивы :: BSD :: FreeBSD

Мир на трёх кашалотах мается
1. Процессы

CITKIT.ru

Страницы: 1 :: 2 :: 3 :: следующая

Содержание

Мир на трёх кашалотах мается,
Суть легенды как всё проста...
Народное

Общая преамбула

ОС 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 причин знакомиться с ними у пользователя нет ни малейших.

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

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




Страницы: 1 :: 2 :: 3 :: следующая

Комментарии

аноним, 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]
>Да и в реальной жизни человек с понятием рекурсии >практически не сталкивается...
Автор либо альтруист, либо не снимает розовых очков...

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds