<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF130%3ADrBrown2</id>
		<title>LXF130:DrBrown2 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF130%3ADrBrown2"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:DrBrown2&amp;action=history"/>
		<updated>2026-05-13T03:53:20Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:DrBrown2&amp;diff=11875&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:DrBrown2&amp;diff=11875&amp;oldid=prev"/>
				<updated>2011-04-21T05:40:45Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==О про­цес­сах яс­но==&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_51_1.jpg|300px]] Ти­пич­ный жиз­нен­ный цикл про­цес­са в ви­де сис­тем­ных вы­зо­вов ро­ди­тель­ско­го и до­чер­не­го про­цес­сов.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF130_51_2.jpg|300px]] Про­цесс ''init'' — роди­тель тер­ми­на­ла Gnome, ко­то­рый запус­ка­ет обо­лоч­ку ''Bash'', ко­то­рая запус­ка­ет ''pstree''.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
: О про­цес­сах слы­ша­ли все, но что, собственно, это та­кое?&lt;br /&gt;
&lt;br /&gt;
Нас при­шла на­вестить те­туш­ка Мод – джин при­шлось при­пря­тать. Те­тя Мод что-то слы­ша­ла о ми­ре ИТ, но знала, что я «экс­перт», и (к ее чести) хо­те­ла уз­нать еще. Она спро­си­ла: «А где програм­мы, ко­то­рые ра­бо­та­ют на мо­ем ком­пь­ю­те­ре? Ес­ли мы за­глянем внутрь, смо­жешь их по­ка­зать?» На этот во­прос бы­ло непро­сто от­ве­тить так, что­бы те­тя Мод поня­ла. Конеч­но, мож­но бы­ло ска­зать, что про­грам­ма – это «по­сле­до­ва­тель­ность команд», и, ука­зав на же­ст­кий диск или чи­пы па­мя­ти, зая­вить: «Вот тут они и жи­вут».&lt;br /&gt;
&lt;br /&gt;
Мы спря­та­ли и виски, по­то­му что ее муж, Клайв, то­же пришел. Его по­знания про­сти­ра­лись несколь­ко даль­ше, и по­то­му он был еще опаснее те­ти. Он спро­сил: «Ес­ли Linux – мно­го­процесс­ная опе­ра­ци­он­ная систе­ма, то где же про­цес­сы? Ес­ли от­крыть ком­пь­ю­тер, смо­жешь их по­ка­зать?» Этот во­прос по­сложнее, по­тому что по сравнению с про­грам­мой про­цесс – бо­лее аб­ст­ракт­ное по­ня­тие. Я мог бы вы­дать го­то­вый от­вет, ска­зав, что «про­цесс – это эк­зем­п­ляр вы­пол­няе­мой про­грам­мы», но это вряд ли бы помог­ло бед­но­му Клай­ву. Да и мне бы не по­мог­ло.&lt;br /&gt;
&lt;br /&gt;
===Нуд­ные осно­вы===&lt;br /&gt;
&lt;br /&gt;
Итак, вот мое объ­яснение, что же та­кое про­цесс. Оно ни сжато, ни кра­соч­но – я не ду­маю, что так вы раз­бе­ре­тесь в этой штуке. Про­грам­ме, вы­пол­няе­мой в Linux, нуж­ны некие ре­сур­сы. Ей тре­бу­ет­ся па­мять (ко­до­вый сег­мент, где хранит­ся она са­ма, сег­мент ста­ти­че­ских дан­ных, стек и «ку­ча», где со­дер­жат­ся данные). Про­грам­ма мо­жет от­крывать фай­лы или под­клю­чать­ся к оп­ре­де­лен­но­му сер­ве­ру. Эти со­единения от­сле­жи­ва­ют­ся с по­мо­щью «фай­ло­вых деск­рип­то­ров». У про­грам­мы есть по­ня­тие о «те­ку­щем ката­ло­ге», где она бу­дет искать фай­лы, ес­ли их име­на на­чи­на­ются не с ‘'''/'''’. У нее есть «ок­ру­жение» с «пе­ре­мен­ны­ми ок­ру­жения», вро­де '''HOME=/home/chris'''. На­конец, про­грам­ме нуж­но про­цес­сорное вре­мя – дей­стви­тель­ная воз­мож­ность быть за­планиро­ван­ной на вы­полнение в со­перниче­стве с дру­ги­ми про­цес­са­ми, тре­бующи­ми то­го же. Имен­но про­цесс хранит весь кон­текст и ре­сур­сы, необ­хо­ди­мые для за­пуска про­грам­мы.&lt;br /&gt;
&lt;br /&gt;
Здесь мо­жет по­мочь ана­ло­гия с ак­те­ром, чи­таю­щим сце­нарий пье­сы. Сце­на­рий – на­бор ин­ст­рук­ций, по­яс­няю­щий ак­те­ру, что го­во­рить и как вести се­бя на сцене. Сце­на­рий мож­но сравнить с про­грам­мой. Ак­тер – объ­ект, от­вет­ствен­ный за чтение сце­на­рия, и по­до­бие про­цес­са.&lt;br /&gt;
&lt;br /&gt;
Но­вый про­цесс соз­да­ет­ся тогда, когда в су­ще­ствую­щем процес­се про­ис­хо­дит систем­ный вы­зов '''fork()'''. Ис­ход­ный про­цесс на­зы­ва­ет­ся ро­ди­тель­ским, а но­вый – до­черним. Сна­ча­ла до­черний про­цесс пред­став­ля­ет со­бой точ­ную ко­пию ро­ди­тель­ско­го и вы­пол­ня­ет ту же са­мую про­­грам­му. В мо­ем при­ме­ре с ак­те­ра­ми, два ак­те­ра те­перь сто­ят ря­дом и чи­та­ют один и тот же сце­на­рий. Иногда дочерний про­цесс про­дол­жа­ет вы­пол­нять ту же про­грам­му, что и ро­ди­тель­ский: на­при­мер, когда ''Apache'' по­ро­ж­да­ет до­черние про­цес­сы, все они вы­пол­ня­ют один и тот же код. Но ча­ще дочерний про­цесс пе­ре­ста­ет ра­бо­тать и за­пуска­ет дру­гую про­грамму с по­мо­щью систем­но­го вы­зо­ва '''exec()'''. В мо­ем при­ме­ре ак­тер ви­дит ука­зание от­ло­жить те­ку­щую пье­су, взять текст «Макбе­та» и на­чать сна­ча­ла.&lt;br /&gt;
&lt;br /&gt;
Про­цесс за­вер­ша­ет­ся систем­ным вы­зо­вом '''exit()'''. Его мож­но пре­рвать и с по­мо­щью сиг­на­ла: об этом мы по­го­во­рим че­рез месяц. Когда до­черний про­цесс пре­кра­ща­ет ра­бо­ту, он воз­вра­ща­ет код за­вер­шения ('''exit status''') ро­ди­тель­ско­му про­цес­су, для со­общения о том, что все за­кон­чи­лось хо­ро­шо (код за­вер­шения '''0''') или что-то по­шло не так (зна­чение, от­лич­ное от нуля). Ро­ди­тель­ский про­цесс мо­жет ждать, по­ка за­вер­шит­ся до­черний, и по­лу­чить его ста­тус с по­мо­щью систем­но­го вы­зо­ва '''wait()'''. Та­кое про­ис­хо­дит, когда вы на­би­рае­те коман­ду в обо­лоч­ке: она соз­да­ет для пе­ре­данной коман­ды но­вый про­цесс и ждет, по­ка он за­вер­шит­ся. Но ро­ди­тель­ский про­цесс не обя­зан до­жи­дать­ся до­черних. Когда из ме­ню ра­бо­че­го сто­ла за­пуска­ет­ся гра­фи­че­ское при­ло­жение или обо­лоч­кой за­пуска­ет­ся фо­но­вое за­дание, ро­ди­тель­ский процесс про­сто про­дол­жа­ет ра­бо­тать вме­сте с до­черним. &lt;br /&gt;
&lt;br /&gt;
Про­смот­реть про­цес­сы, вы­пол­няю­щие­ся на ком­пь­ю­те­ре, можно коман­дой ''ps''. У нее есть мно­го фла­гов для вы­бо­ра ото­бра­жаемых про­цес­сов и ин­фор­ма­ции о них, но осо­бен­но удоб­но на­чать с ''ps -ef''. Коман­да про­из­ве­ла глу­бо­кое впе­чат­ление на мое­го дядюш­ку Клай­ва.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>