- Как работают демоны, процесс Init и как у процессов рождаются потомки — изучаем основы Unix
- Как работают демоны, процесс Init и как у процессов рождаются потомки — изучаем основы Unix
- Как работает процесс Init
- Как работает разветвление процессов
- Как работают демоны
- Заключение
- Чем принципиально отличается программа демон от других ?
- Святая операционная система
- Отключаем автозапуск программы при загрузке Windows 7
Как работают демоны, процесс Init и как у процессов рождаются потомки — изучаем основы Unix
Как работают демоны, процесс Init и как у процессов рождаются потомки — изучаем основы Unix
Если вы когда-нибудь работали c Unix-системами, то наверняка слышали термин «демон». В этой статье я хочу объяснить, что это за демоны и как они работают, тем более что их название заставляет думать, что это что-то плохое.
Вообще демон — это фоновый процесс, который не привязан к терминалу, в котором был запущен. Но как они создаются, как они связаны с другими процессами, как они работают? Об этом мы и поговорим, но сперва давайте узнаем, как работает процесс init и как происходит рождение новых процессов.
Как работает процесс Init
Для начала поговорим о процессе init, также известном как PID 1 (поскольку его ID всегда равен 1). Это процесс создаётся сразу при запуске системы, то есть все другие процессы являются его потомками.
Обычно init запускается, когда ядро вызывает конкретный файл, обычно находящийся по адресу /etc/rc или /etc/inittab. Процесс устанавливает путь, проверяет файловую систему, инициализирует серийные порты, задаёт время и т.д. В последнюю очередь он запускает все необходимые фоновые процессы — в виде демонов. Все демоны обычно расположены в папке /etc/init.d/; принято оканчивать имена демонов на букву d (например, httpd, sshd, mysqld и т.п.), поэтому вы можете подумать, что директория названа так по этому же принципу, но на самом деле существует соглашение об именовании папок, содержащих конфигурационные файлы, именем с суффиксом .d. Итак, init запускает демонов, но мы так и не выяснили, как это происходит. Процесс init запускает демонов, создавая свои ответвления для запуска новых процессов.
Как работает разветвление процессов
Единственный способ создать новый процесс в Unix — скопировать существующий. Этот метод, известный как разветвление или форкинг, включает в себя создание копии процесса в виде потомка и системный вызов exec для запуска новой программы. Мы использовали слово «форкинг», поскольку fork — это реальный метод C в стандартной библиотеке Unix, который создаёт новые процессы именно таким образом. Процесс, вызывающий команду fork, считается родительским по отношению к созданному. Процесс-потомок почти полностью совпадает с родительским: отличаются лишь ID, родительские ID и некоторые другие моменты.
В современных дистрибутивах Unix и Linux процессы можно создавать и другим способами (например, при помощи posix_spawn), но большая часть процессов создаётся именно так.
Теперь, когда вы узнали о традиционном значении термина «fork», становится понятно, почему такое же понятие используется на GitHub. Но я отвлекся — вернемся к нашим демонам!
Как работают демоны
Схема демона Максвелла
Прежде чем мы углубимся в работу демонов, давайте выясним, откуда взялось это название. Термин «демон» возник из Project MAC, который в свою очередь получил своё имя от демона Максвелла — вымышленного существа из мысленного эксперимента, которое постянно сортирует молекулы. Само слово демон происходит от греческого daemon, являющегося сверхъестественным существом, которое постоянно работает на заднем плане и не является добрым или злым (в отличие от обычного современного значения). То есть, термин «демон» (в смысле Unix-процесса) на самом деле произошёл от вымышленного сверхъестественного существа.
Демоны — это фоновые процессы, работающие отдельно от терминала и почти всегда созданные процессом init; обычно они занимаются такими вещами, как сетевые запросы, работой аппаратного обеспечения и прочими заданиями типа «жди и смотри».
Демоны появляются двумя способами. Их может создать процесс init, либо же они возникают в следущей ситуации: процесс создаёт своего потомка и тут же завершается. Первый случай ясен, но что происходит во втором: как процесс init становится родительским для этих демонов?
Когда вы создаёте процесс-потомок и тут же «убиваете» его родителя, потомок становится процессом-сиротой (не стоит путать с процессом-зомби, например, потомком, который был завершен, но всё ещё ждёт, когда родитель прочтёт его exit-статус). По умолчанию, если процесс становится сиротой, то его «приёмным» родителем становится init. Вот и всё, что делает демонов уникальными!
Заключение
В целом демоны — это очень простая для понимания концепция, но чтобы полностью в них разобраться, нам понадобилось узнать, что такое init-процесс и как устроено разветвление процессов.
Чем принципиально отличается программа демон от других ?
Список форумов SYSAdmins.RU -> UNIX |
Автор | |||||
---|---|---|---|---|---|
user190 Участник форума Зарегистрирован: 05.05.2005
|
| ||||
Вернуться к началу |
| ||||
Зарегистрируйтесь и реклама исчезнет! | |||||
lavr Unix guru Зарегистрирован: 13.05.2003
|
| ||||
Вернуться к началу |
| ||||
user190 Участник форума Зарегистрирован: 05.05.2005
|
| ||||
Вернуться к началу |
| ||||
johnspb Участник форума Зарегистрирован: 21.04.2006
|
| ||||
Вернуться к началу |
| ||||
lavr Unix guru Зарегистрирован: 13.05.2003
|
| ||||
Вернуться к началу |
| ||||
user190 Участник форума Зарегистрирован: 05.05.2005 Святая операционная системаНесколько лет назад, в сети гуляла поговорка о том, что Линукс — это бесовская система, потому что, там демоны и эльфы, а Windows — это православная система, так-как в ней иконки и службы. )
ELF (англ. Executable and Linkable Format — формат исполнимых и компонуемых файлов) — формат двоичных файлов, используемый во многих современных UNIX-подобных операционных системах, таких как FreeBSD, Linux, Solaris и др. Также этот формат используется и во многих других системах. Иконка (от англ. icon) — элемент графического интерфейса, небольшая картинка, представляющая приложение, файл, каталог, окно, компонент операционной системы, устройство и т. п. В ответ на щелчок, сделанный мышкой или иным манипулятором на иконке, обычно выполняется какое-то действие (пуск программы, открывание файлов и т. д.). Слу́жбы ОС Windows (англ. Windows Service, службы) — приложения, автоматически (если настроено) запускаемые системой при запуске Windows и выполняющиеся вне зависимости от статуса пользователя. Имеет общие черты с концепцией демонов в Unix. Однако на практике выходит все совсем наоборот. И это, в первую очередь, связано с тем, что Виндовс имеет закрытый код а Линукс открытый. Давайте разберемся поподробнее, чтобы понять в чем же дело. Код ядра и приложений Виндовс компилируется разработчиками на их стороне и пользователю предоставляется, уже только исполняемый файл с кодом программы. А это значит, что конечный пользователь не может увидеть текст программы написанной разработчиком и видит только машинный код. Это не плохо, но стоит заметить, что любой разработчик может добавить в свою программу вредоносный код и пользователь об этом не будет знать, или заметит только тогда, когда вредоносная программа проявит себя. В Ленуксе каждый пользователь может видеть исходный код программ и устанавливать приложения компилируя исходный код на своем компьютере, следовательно, пользователь уверен в том, что его программа не заражена вредоносным кодом. Более того, достаточно опытный пользователь может сам править исходный код, устанавливаемых им приложений и этим самым расширять возможности приложений. Это относится и к коду ядра Линукс. Пользователь может изменять код ядра и делать свои сборки улучшающие функционал системы. Поэтому дистрибутивов Линукс большое количество, в том числе есть и христианские в которых предустановлены приложения по чтению Библии и многое другое. Возможность использовать приложения, которые устанавливаются из исходного кода очень хорошо зарекомендовала Линукс, как надежную систему и это послужило сделать ее недосягаемой для вирусов и злоумышленников. Отключаем автозапуск программы при загрузке Windows 7Есть приложения (а иногда и вирусы), которые после их установки на компьютер прописываются в автозагрузку Windows и стартуют вместе с операционной системой, соответственно, как увеличивая время загрузки самой операционной системы, так и «отъедая» системные ресурсы у компьютера. Часто автоматически загружаемые вместе с Windows 7 приложения почти не используются владельцем компьютера и тогда у пользователя возникает желание отключить автозагрузку такого приложения. В Windows 7 в меню «Пуск» есть подраздел «Автозагрузка». Иногда автоматически загружаемое приложение прописывается именно в эту папку. Простое удаление такого приложения из папки «Автозагрузка» (правой кнопкой мыши жмем на название приложения, которое хотим убрать из автозагрузки и выбираем из контекстного меню пункт «Удалить») может решить проблему автозагрузки лишнего софта. Но бывает, что решение не столь очевидно и приходится прибегать к системному приложения — Конфигурация системы . Открывается окно приложения «Конфигурация системы» и во вкладке «Автозагрузка» мы видим список элементов автозагрузки. Снимаем галочку с приложения, автозапуск которого мы хотим прекратить и жмем кнопку «Ok» В открывшемся после внесенных нами изменений окне жмем кнопку «Перезагрузка» После перезагрузки наша проблема будет решена. |