<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.cusu.edu.ua/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
		<id>https://wiki.cusu.edu.ua/index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.</id>
		<title>Тема 10. Тупик. - Історія редагувань</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.cusu.edu.ua/index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA."/>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;action=history"/>
		<updated>2026-07-05T10:31:48Z</updated>
		<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
		<generator>MediaWiki 1.23.2</generator>

	<entry>
		<id>https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81492&amp;oldid=prev</id>
		<title>Tenatin в 13:18, 8 січня 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81492&amp;oldid=prev"/>
				<updated>2013-01-08T13:18:57Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Попередня версія&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версія за 13:18, 8 січня 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 106:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 106:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Питання полягає в тому, чи є дана ситуація тупиковою, і якщо так, то які процеси в ній&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Питання полягає в тому, чи є дана ситуація тупиковою, і якщо так, то які процеси в ній&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;беруть участь.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;беруть участь.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:Yevhenii212.png]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:Yevhenii212.png]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для відповіді на це питання можна сконструювати граф ресурсів, як показано на мал. 7.2.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для відповіді на це питання можна сконструювати граф ресурсів, як показано на мал. 7.2.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;З малюнка видно, що є цикл, що моделює умову кругового очікування, і процеси D,E,G в&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;З малюнка видно, що є цикл, що моделює умову кругового очікування, і процеси D,E,G в&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tenatin</name></author>	</entry>

	<entry>
		<id>https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81491&amp;oldid=prev</id>
		<title>Tenatin в 13:18, 8 січня 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81491&amp;oldid=prev"/>
				<updated>2013-01-08T13:18:31Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Попередня версія&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версія за 13:18, 8 січня 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 106:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 106:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Питання полягає в тому, чи є дана ситуація тупиковою, і якщо так, то які процеси в ній&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Питання полягає в тому, чи є дана ситуація тупиковою, і якщо так, то які процеси в ній&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;беруть участь.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;беруть участь.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:Yevhenii212.png]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для відповіді на це питання можна сконструювати граф ресурсів, як показано на мал. 7.2.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Для відповіді на це питання можна сконструювати граф ресурсів, як показано на мал. 7.2.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;З малюнка видно, що є цикл, що моделює умову кругового очікування, і процеси D,E,G в&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;З малюнка видно, що є цикл, що моделює умову кругового очікування, і процеси D,E,G в&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tenatin</name></author>	</entry>

	<entry>
		<id>https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81489&amp;oldid=prev</id>
		<title>Tenatin в 13:13, 8 січня 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81489&amp;oldid=prev"/>
				<updated>2013-01-08T13:13:20Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Попередня версія&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версія за 13:13, 8 січня 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ресурсу.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ресурсу.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:Yevhenii1.png‎]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:Yevhenii1.png‎]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tenatin</name></author>	</entry>

	<entry>
		<id>https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81488&amp;oldid=prev</id>
		<title>Tenatin в 13:12, 8 січня 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81488&amp;oldid=prev"/>
				<updated>2013-01-08T13:12:57Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Попередня версія&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версія за 13:12, 8 січня 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ресурсу.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ресурсу.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:Yevhenii1.png‎&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;|thumb&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:Yevhenii1.png‎]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tenatin</name></author>	</entry>

	<entry>
		<id>https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81487&amp;oldid=prev</id>
		<title>Tenatin в 13:12, 8 січня 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81487&amp;oldid=prev"/>
				<updated>2013-01-08T13:12:20Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Попередня версія&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версія за 13:12, 8 січня 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ресурсу.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ресурсу.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:Yevhenii1.png‎|thumb&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;|300px|right&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:Yevhenii1.png‎|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tenatin</name></author>	</entry>

	<entry>
		<id>https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81486&amp;oldid=prev</id>
		<title>Tenatin в 13:11, 8 січня 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81486&amp;oldid=prev"/>
				<updated>2013-01-08T13:11:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Попередня версія&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версія за 13:11, 8 січня 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Рядок 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ресурсу.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ресурсу.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:Yevhenii1.png‎|thumb|300px|right]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tenatin</name></author>	</entry>

	<entry>
		<id>https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81483&amp;oldid=prev</id>
		<title>Tenatin: Створена сторінка: &lt;h1&gt;Вступ&lt;/h1&gt; Припустимо, що декілька процесів конкурують за володіння деяким скінченним ч...</title>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A2%D0%B5%D0%BC%D0%B0_10._%D0%A2%D1%83%D0%BF%D0%B8%D0%BA.&amp;diff=81483&amp;oldid=prev"/>
				<updated>2013-01-08T13:04:37Z</updated>
		
		<summary type="html">&lt;p&gt;Створена сторінка: &amp;lt;h1&amp;gt;Вступ&amp;lt;/h1&amp;gt; Припустимо, що декілька процесів конкурують за володіння деяким скінченним ч...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;h1&amp;gt;Вступ&amp;lt;/h1&amp;gt;&lt;br /&gt;
Припустимо, що декілька процесів конкурують за володіння деяким скінченним числом&lt;br /&gt;
ресурсів. Якщо запрошуваний процесом ресурс недоступний, процес переходить в стан&lt;br /&gt;
чекання. У випадку якщо необхідний ресурс утримується іншим процесом, що чекає, то&lt;br /&gt;
перший процес не зможе змінити свій стан. Така ситуація називається тупиком.&lt;br /&gt;
Говорять, що в мультипрограмній системі процес знаходиться в стані тупика, дедлока&lt;br /&gt;
(deadlock) або клінчу, якщо він чекає події, яка ніколи не відбудеться. Системна тупикова&lt;br /&gt;
ситуація або зависання системи є наслідком того, що один або більше процесів&lt;br /&gt;
знаходяться в стані тупика.&lt;br /&gt;
Розглянемо приклад. Припустимо, що два процеси здійснюють вивід (output) із файлу на&lt;br /&gt;
принтер. Один з них встигнув монополізувати файл і претендує на принтер, а інший&lt;br /&gt;
навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого&lt;br /&gt;
ресурсу.&lt;br /&gt;
Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.&lt;br /&gt;
Наприклад, в системах управління базами даних процеси можуть локалізувати записи,&lt;br /&gt;
щоб уникнути гонок. В цьому випадку може вийти так, що один з процесів заблокував&lt;br /&gt;
записи, потрібні іншому процесу і навпаки. Тупик може мати місце, як на апаратних, так і&lt;br /&gt;
на програмних ресурсах.&lt;br /&gt;
&amp;lt;h1&amp;gt;Концепція ресурсу&amp;lt;/h1&amp;gt;&lt;br /&gt;
Одна з основних функцій ОС здійснювати розподіл ресурсів між процесами, тобто бути&lt;br /&gt;
менеджером ресурсів.&lt;br /&gt;
Як пристрої, так і дані можуть бути ресурсами.&lt;br /&gt;
Деякі види ресурсів допускають розподіл між процесами, тобто є пристроями, що&lt;br /&gt;
розділяються. Наприклад, пам'ять, процесор, диски колективно використовуються&lt;br /&gt;
процесами. Інші – ні, тобто є виділеними, наприклад, стример. Найчастіше тупик&lt;br /&gt;
пов'язано з виділеними ресурсами, тобто тупик виникає, коли процесу дається&lt;br /&gt;
ексклюзивний (винятковий) доступ до пристроїв, файлів і інших ресурсів.&lt;br /&gt;
Послідовність подій, потрібних для використання ресурсу така:&lt;br /&gt;
1. опитати (request) ресурс&lt;br /&gt;
2. використати (use) ресурс&lt;br /&gt;
3. звільнити (release) ресурс.&lt;br /&gt;
Якщо ресурсу немає в наявності, коли він потрібний, то процес змушений чекати. У&lt;br /&gt;
деяких ОС процес автоматично блокується (переводиться в стан призупинений), коли&lt;br /&gt;
дістає відмову на запит до ресурсу і прокидається (переводиться в стан готовність), коли&lt;br /&gt;
ресурс виявляється в наявності. У інших системах відмова супроводжується поверненням&lt;br /&gt;
помилки і вже завдання процесу вирішити: чекати чи спробувати здійснити запит знову.&lt;br /&gt;
Ми вважаємо, що коли запит відхилено, процес переходить в стан чекання.&lt;br /&gt;
Природа запиту сильно залежить від ОС. У деяких системах є системний виклик request&lt;br /&gt;
для прямого запиту на ресурс. В інших – єдині ресурси, про які ОС знає – спеціальні&lt;br /&gt;
файли, які тільки один процес має право відкривати за раз. Це робиться звичайним&lt;br /&gt;
викликом open. Якщо файл вже використовується, то процес блокується, поки ресурс не&lt;br /&gt;
звільниться.&lt;br /&gt;
&amp;lt;h1&amp;gt;Умови виникнення тупика&amp;lt;/h1&amp;gt;&lt;br /&gt;
У 1971 р. Коффман, Элфік і Шошані сформулювали наступні чотири умови для&lt;br /&gt;
виникнення тупика.&lt;br /&gt;
1. Умова взаємовиключення (Mutual exclusion). Кожен ресурс виділено (або доступно) в&lt;br /&gt;
точності одному процесу. Процеси вимагають надання їм монопольного управління&lt;br /&gt;
ресурсами, які їм виділяються.&lt;br /&gt;
2. Умова чекання ресурсів (Hold and wait). Процеси утримують за собою ресурси, вже&lt;br /&gt;
виділені їм, чекаючи в той же час виділення додаткових ресурсів (які при цьому зазвичай&lt;br /&gt;
утримуються іншими процесами).&lt;br /&gt;
3. Умова нерозподіленості (No preemtion). Ресурс, наданий раніше, не може бути&lt;br /&gt;
примусово забраний у процесу. Звільнені ресурси можуть бути тільки процесом, який їх&lt;br /&gt;
утримує.&lt;br /&gt;
4. Умова кругового очікування (чекання (Circular wait). Існує кільцевий ланцюг&lt;br /&gt;
процесів, в якому кожен процес утримує за собою один або більш за ресурси, потрібні&lt;br /&gt;
іншим процесам ланцюга.&lt;br /&gt;
Для тупика необхідне виконання всіх чотирьох умов.&lt;br /&gt;
Зазвичай тупик моделюється прямим графом, на зразок того, що зображений на мал. 1, що&lt;br /&gt;
складається з вузлів двох видів: прямокутників процесів і еліпсів ресурсів. Стрілки,&lt;br /&gt;
направлені від ресурсу до процесу, показують, що ресурс виділений даному процесу.&lt;br /&gt;
&amp;lt;h1&amp;gt;Основні напрями боротьби з тупиком&amp;lt;/h1&amp;gt;&lt;br /&gt;
У зв'язку з проблемою тупика були виконано багато цікавих досліджень в області&lt;br /&gt;
інформатики і операційних систем.&lt;br /&gt;
Основні напрями боротьби з тупиком:&lt;br /&gt;
1. Ігнорувати дану проблему&lt;br /&gt;
2. Виявлення тупика&lt;br /&gt;
3. Відновлення після тупика&lt;br /&gt;
4. Запобігання тупика за рахунок ретельного виділення ресурсів або порушення&lt;br /&gt;
одного з умов виникнення тупика.&lt;br /&gt;
&amp;lt;h1&amp;gt;Алгоритм страуса&amp;lt;/h1&amp;gt;&lt;br /&gt;
Найпростіший підхід – ігнорувати проблему тупика. Різні люди реагують на подібну&lt;br /&gt;
стратегію по-різному. Математики знаходять її неприйнятною і стверджують, що тупиків&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;
виклик fork, резонно почекати якийсь час і спробувати здійснити цей виклик знов.&lt;br /&gt;
Максимальне число відкритих файлів аналогічним чином обмежене розміром таблиці&lt;br /&gt;
індексних вузлів. Фактично будь-яка таблиця в ОС – скінченний ресурс.&lt;br /&gt;
Підхід Linux полягає в тому, щоб ігнорувати дану проблему в припущенні, що більшість&lt;br /&gt;
користувачів віддадуть перевагу випадковому тупику над безглуздими правилами, що&lt;br /&gt;
примушують їх мати один процес, один відкритий файл і т.п. ... Таким чином, ми&lt;br /&gt;
стикаємося з небажаним вибором між суворістю і зручністю. Важко знайти рішення яке&lt;br /&gt;
влаштовує всіх.&lt;br /&gt;
&amp;lt;h1&amp;gt;Виявлення тупика&amp;lt;/h1&amp;gt;&lt;br /&gt;
Виявлення тупика – це встановлення факту, що виникла тупикова ситуація і визначення&lt;br /&gt;
процесів і ресурсів, залучених в цю ситуацію. Як правило, алгоритми виявлення&lt;br /&gt;
застосовуються, коли виконані перші три необхідні умови виникнення тупикової ситуації.&lt;br /&gt;
Потім перевіряється наявність режиму кругового очікування. При цьому активно&lt;br /&gt;
використовуються графи розподілу ресурсів, мал. 1.&lt;br /&gt;
Розглянемо модельну ситуацію:&lt;br /&gt;
• Процес A утримує ресурс R і чекає ресурс S.&lt;br /&gt;
• Процес B претендує на ресурс T.&lt;br /&gt;
• Процес C претендує на ресурс S.&lt;br /&gt;
• Процес D утримує ресурс U і чекає ресурси S і T.&lt;br /&gt;
• Процес E утримує ресурс T і чекає ресурс V.&lt;br /&gt;
• Процес F утримує ресурс W і чекає ресурс S.&lt;br /&gt;
• Процес G утримує ресурс V і чекає ресурс U.&lt;br /&gt;
Питання полягає в тому, чи є дана ситуація тупиковою, і якщо так, то які процеси в ній&lt;br /&gt;
беруть участь.&lt;br /&gt;
Для відповіді на це питання можна сконструювати граф ресурсів, як показано на мал. 7.2.&lt;br /&gt;
З малюнка видно, що є цикл, що моделює умову кругового очікування, і процеси D,E,G в&lt;br /&gt;
тупиковій ситуації&lt;br /&gt;
Візуально легко виявити наявність тупика, але потрібні також формальні алгоритми, що&lt;br /&gt;
реалізовуються на комп'ютері.&lt;br /&gt;
&amp;lt;h1&amp;gt;Відновлення після тупика&amp;lt;/h1&amp;gt;&lt;br /&gt;
Припустимо, що алгоритм виявлення справився з своїм завданням і виявив тупик. Один з&lt;br /&gt;
шляхів – відновитися і примусити систему працювати далі.&lt;br /&gt;
Систему, що попала в тупик, можна вивести з нього, порушивши одну з умов його&lt;br /&gt;
існування. При цьому можливі декілька процесів частково або повністю втратять&lt;br /&gt;
результати виконаної роботи.&lt;br /&gt;
Складність відновлення обумовлена рядом факторів&lt;br /&gt;
• у більшості систем немає достатньо ефективних засобів для припинення процесу,&lt;br /&gt;
виведення його з системи і відновлення (поновлення) згодом;&lt;br /&gt;
• якщо навіть такі засоби є, то їх використання вимагає уваги оператора;&lt;br /&gt;
• відновлення після серйозної тупика може вимагати багато роботи.&lt;br /&gt;
&amp;lt;h1&amp;gt;Відновлення за допомогою перерозподілу ресурсів&amp;lt;/h1&amp;gt;&lt;br /&gt;
Один із способів відновлення – примусове виведення деякого процесу з системи для&lt;br /&gt;
подальшого використання його ресурсів. В деяких випадках може виявитися можливим&lt;br /&gt;
тимчасово забрати ресурс у його поточного власника і передати його іншому процесу.&lt;br /&gt;
&amp;lt;h1&amp;gt;Відновлення через відкат назад&amp;lt;/h1&amp;gt;&lt;br /&gt;
Це, ймовірно, найефективніший спосіб припинення і відновлення.&lt;br /&gt;
У ряді систем реалізовані засоби рестарту з контрольної точки (збереження стану&lt;br /&gt;
системи в якийсь момент часу). Там де ці засоби не передбачені, їх повинні організувати&lt;br /&gt;
розробники прикладних програм. Якщо проектувальники системи знають, що тупик&lt;br /&gt;
вірогідний, вони можуть періодично організовувати для процесів контрольні точки.&lt;br /&gt;
Коли тупик виявлено, видно які ресурси залучені в цикл кругового чекання. Щоб&lt;br /&gt;
здійснити відновлення, процес, який володіє таким ресурсам, повинен бути відкинутий на&lt;br /&gt;
момент часу до запиту на цей ресурс.&lt;br /&gt;
&amp;lt;h1&amp;gt;Відновлення через ліквідацію одного з процесів&amp;lt;/h1&amp;gt;&lt;br /&gt;
Грубий, але простий спосіб усунути тупик – убити один або більш процесів. Наприклад,&lt;br /&gt;
убити процес, який в циклі. Тоді за умови успіху решта процесів зможе виконуватися.&lt;br /&gt;
Якщо це не допомагає, то можна ліквідовувати ще один процес.&lt;br /&gt;
По можливості краще убити той процес, який може бути без проблем повернено до&lt;br /&gt;
початку (такі процеси називаються ідемпотентними), наприклад, компіляція. З іншого&lt;br /&gt;
боку процес, який змінює вміст бази даних, не завжди може бути коректно запущений&lt;br /&gt;
повторно.&lt;br /&gt;
&amp;lt;h1&amp;gt;Способи запобігання тупика шляхом ретельного розподілу ресурсів.&amp;lt;/h1&amp;gt;&lt;br /&gt;
При запобіганні тупика основною метою є забезпечення умов, що виключають&lt;br /&gt;
можливість виникнення тупикових ситуацій.&lt;br /&gt;
Система, надаючи ресурс в розпорядження процесу, повинна ухвалити рішення, безпечно&lt;br /&gt;
це чи ні. Виникає питання: чи є такий алгоритм, який допомагає завжди уникати тупика і&lt;br /&gt;
робити правильний вибір.&lt;br /&gt;
Один з алгоритмів запобігання тупика базується на концепції безпечних станів.&lt;br /&gt;
&amp;lt;h1&amp;gt;Запобігання тупика і алгоритм банкіра.&amp;lt;/h1&amp;gt;&lt;br /&gt;
Можна уникнути тупикової ситуації, якщо раціональним чином використовувати ресурси,&lt;br /&gt;
дотримуючись певних правил. Найбільш відомий серед алгоритмів такого роду –&lt;br /&gt;
алгоритм банкіра, запропонований Дейкстрой. Він, як би імітує дії банкіра, який, маючи в&lt;br /&gt;
своєму розпорядженні певне джерело капіталу, приймає позики і видає платежі.&lt;br /&gt;
Припустимо, що у системи в наявності n пристроїв. Суть алгоритму полягає в наступному.&lt;br /&gt;
• ОС приймає запит від призначеного для користувача процесу, якщо його&lt;br /&gt;
максимальна потреба не перевищує n.&lt;br /&gt;
• Користувач гарантує, що якщо ОС в змозі задовольнити його запит, то всі пристрої&lt;br /&gt;
будуть повернені системі протягом скінченого часу.&lt;br /&gt;
• Поточний стан системи називається надійним, якщо ОС може забезпечити всім&lt;br /&gt;
процесам їх виконання протягом скінченого часу.&lt;br /&gt;
• Відповідно до алгоритму банкіра виділення пристроїв можливе, тільки якщо стан&lt;br /&gt;
системи залишається надійним.&lt;br /&gt;
Розглянемо приклад надійного стану для системи з трьома користувачами і 12-ма&lt;br /&gt;
пристроями, де 10 пристроїв задіяно, а 2 є в наявності. Нехай поточна ситуація така:&lt;br /&gt;
Даний стан надійний. Наступні дії системи можуть бути такі. Спочатку задовольнити&lt;br /&gt;
запити другого користувача, потім дочекатися, коли він виконає свою роботу і звільнить&lt;br /&gt;
свої 6 пристроїв. Потім можна обслужити решту користувачів. Тобто, система&lt;br /&gt;
задовольняє тільки ті запити, які залишають її в надійному стані і відхиляє інші.&lt;br /&gt;
Термін ненадійний стан не припускає, що обов'язково виникне тупик. Він лише говорить&lt;br /&gt;
про те, що у разі несприятливої послідовності подій система може зайти в тупик.&lt;br /&gt;
&amp;lt;h1&amp;gt;Недоліки алгоритму банкіра&amp;lt;/h1&amp;gt;&lt;br /&gt;
В алгоритмі банкіра наявні серйозні недоліки, із-за яких розробник може вибрати інший&lt;br /&gt;
підхід для вирішення проблеми тупика:&lt;br /&gt;
• Алгоритм банкіра виходить з фіксованої кількості ресурсів.&lt;br /&gt;
• Він вимагає, щоб число працюючих користувачів залишалося постійним&lt;br /&gt;
• Даний алгоритм вимагає, щоб розподільник гарантовано задовольняв запити за&lt;br /&gt;
кінцевий період часу. Очевидно, що для реальних систем потрібні конкретніші&lt;br /&gt;
гарантії.&lt;br /&gt;
• Алгоритм вимагає, щоб клієнти гарантовано повертали ресурси. Знову таки в&lt;br /&gt;
реальних системах потрібні, набагато конкретніші гарантії.&lt;br /&gt;
• Потрібно, щоб користувачі наперед (заздалегідь) вказали свої максимальні потреби&lt;br /&gt;
в ресурсах. При динамічному розподілі ресурсів важко оцінити максимальні&lt;br /&gt;
потреби користувачів.&lt;br /&gt;
Розглянемо інші способи запобігання тупика.&lt;br /&gt;
&amp;lt;h1&amp;gt;Запобігання тупика за рахунок порушення умов виникнення тупика&amp;lt;/h1&amp;gt;&lt;br /&gt;
Як же може реальна система уникнути тупика, якщо відсутня інформація про майбутні&lt;br /&gt;
запити? Для відповіді на це питання повернемося до чотирьох умов розділу 7.3. Якщо ми&lt;br /&gt;
зможемо організувати роботу системи так, що, принаймні, одна з цих умов не задоволена,&lt;br /&gt;
тупик не можливий.&lt;br /&gt;
&amp;lt;h1&amp;gt;Порушення умови взаємовиключення&amp;lt;/h1&amp;gt;&lt;br /&gt;
Якщо в системі відсутні виділені ресурси, тупика не буде. Проте, ясно, що, наприклад,&lt;br /&gt;
дозвіл двом процесам писати на один принтер в один і той же час приведе до хаосу. За&lt;br /&gt;
рахунок організації спулінгу одночасний друк для декількох процесів стає можливим. У&lt;br /&gt;
цій моделі єдиний процес, що реально взаємодіє з принтером, – демон принтера. Таким&lt;br /&gt;
чином, тупик для принтера усунено.&lt;br /&gt;
На жаль, не для всіх пристроїв може бути організований спулінг (таблиця процесів погано&lt;br /&gt;
піддається спулінгу). Неприємним побічним наслідоком може бути потенційна тупикова&lt;br /&gt;
ситуація із-за конкуренції за дисковий простір для спул-буфера. Проте, в тій або іншій&lt;br /&gt;
формі ця ідея застосовується часто.&lt;br /&gt;
&amp;lt;h1&amp;gt;Порушення умови чекання додаткових ресурсів&amp;lt;/h1&amp;gt;&lt;br /&gt;
Хавендер в 1968 р. запропонував наступну стратегію.&lt;br /&gt;
• Кожен процес повинен опитувати всі потрібні йому ресурси відразу, причому не&lt;br /&gt;
може виконуватися до тих пір, поки всі вони не будуть йому надані.&lt;br /&gt;
• Якщо ж процес, утримує певні ресурси і дістає відмову у виділенні йому&lt;br /&gt;
додаткових ресурсів, то він повинен звільнити свої первинні ресурси і, при&lt;br /&gt;
необхідності, опитати їх знову разом з додатковими.&lt;br /&gt;
Таким чином, один із способів – примусити всі процеси перевіряти всі свої ресурси перед&lt;br /&gt;
виконанням (все або нічого). Якщо система в змозі виділити процесу все необхідне, він&lt;br /&gt;
може працювати до завершення. Якщо хоч би один з ресурсів зайнятий, процес чекатиме.&lt;br /&gt;
Подібний підхід не дуже привабливий і призводить до зниження ефективності роботи&lt;br /&gt;
комп'ютера. Рідко буває, що всі опитані пристрої знадобляться програмі одночасно.&lt;br /&gt;
Можна, звичайно, розділити програму на декілька кроків і виділяти ресурси окремо для&lt;br /&gt;
кожного кроку програми, але основна проблема якраз в тому, що багато процесів не&lt;br /&gt;
знають, скільки ресурсів їм знадобиться до початку роботи. Якщо така інформація є, то&lt;br /&gt;
можна скористатися алгоритмом банкіра. Проте, деякі пакетні мейнфрейми вимагають від&lt;br /&gt;
користувачів перерахувати всі необхідні його програмі ресурси.&lt;br /&gt;
&amp;lt;h1&amp;gt;Порушення принципу нерозподільності.&amp;lt;/h1&amp;gt;&lt;br /&gt;
Відповідно до другого принципу Хавендера можна відбирати ресурси утримуючих їх&lt;br /&gt;
процесів до завершення цих процесів. Якби це було завжди можливо, то можна було б&lt;br /&gt;
добитися невиконання третьої умови виникнення тупика. З проблемою відняття ресурсів в&lt;br /&gt;
утримуючих їх процесів ми стикалися в 7.7.1. Якщо процес протягом деякого часу&lt;br /&gt;
використовує певні ресурси, а потім звільняє ці ресурси, він втрачає всю роботу, виконану&lt;br /&gt;
до теперішнього моменту. Все питання в ціні даного рішення, яка може бути занадто&lt;br /&gt;
високою, якщо подібна ситуація виникає часто.&lt;br /&gt;
Іншим недоліком даної схеми може бути дискримінація окремих процесів, у яких постійно&lt;br /&gt;
відбирають ресурси.&lt;/div&gt;</summary>
		<author><name>Tenatin</name></author>	</entry>

	</feed>