<?xml version="1.0" encoding="UTF-8" ?><feed xmlns="http://www.w3.org/2005/Atom">
	<title type="text">디지털신서비스</title>
		<updated>2026-09-15T13:09:10+09:00</updated>
	<id>https://www.stechstar.com/user/zbxe/digital_new_service/atom</id>
	<link rel="alternate" type="text/html" hreflang="ko" href="https://www.stechstar.com/user/zbxe/digital_new_service"/>
	<link rel="self" type="application/atom+xml" href="https://www.stechstar.com/user/zbxe/digital_new_service/atom"/>
	<generator uri="http://www.xpressengine.com/">XpressEngine</generator>
   <entry>
		<title><![CDATA[semaphore란 ?]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2313</id>
		<published>2011-12-20T21:44:58+09:00</published>
		<updated>2011-12-20T21:45:35+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2313"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2313#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;SUBJECT:&nbsp;&nbsp; semaphore란 ? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;Description :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;o 세마포어 (semaphore)란 (1) ?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; - 동기화의 일반적인 방법인 세마포어 방법은 세마포어라는 정수 변수 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; (integer variable), 프로세스 대기열(process waiting queue), &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; P와 V의 두 명령으로 구성된다. 초기 상태의 변수값은 자원의 수와 같으며&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 대기열은 비어 있다. P명령은 변수의 값을 하나 줄인 후, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 변수의 값이 0보다 작으면 프로세스를 대기열로 집어 넣는다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 반대로 0보다 크면 그 프로세스는 계속 진행된다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; V명령은 변수의 값을 하나 증가시킨다.&nbsp; 그 결과가 0보다 크면 프로세스는 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 계속되며 0보다 작으면 대기열의 프로세스 하나를 준비 상태로 만들고, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 프로세스의 수행은 계속된다.&nbsp; 결국 변수의 값은 음수일 경우는 대기 중인 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 프로세스의 수를 나타내며, 양수이면 사용 가능한 자원의 수를 가리킨다.&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 위에서 동기화란 프로세스의 실행을 시간에 따라 순서적으로 처리하는 것을 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 동기화라 한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;o 세마포어 (semaphore)란 (2) ?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; - 다익스트라(E.J.Dijkstra)가 제안한 동시에 정보를 공유하여 수행되는 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 두 개 이상의 프로그램이나 프로세스에서 활동(activity)의 위치(coordination)를&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 설정해 주는 데 사용되는 동기화를 위한 기본 조작. 이는 두개 이상의 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 프로세스에 의해 공유되는 고유변수로 정의되는데, 보통의 방법으로는 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 다룰 수 없고 항상 P와 V라는 연산을 통해서만 액세스할 수 있다.&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 세마포어 sem이란 다음과 같은 연산이 허용된 정수형 변수를 말한다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; (P와 V란 이름은 wait와 signal이란 말의 네덜란드어에서 나온것으로 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 이때 signal이란 물론 UNIX의 signal호출과는 다르다.) &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 두 연산은 모두 원자화되어야 한다. 즉 sem을 변경할수 있는 프로세스는 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 한 순간에 오직 하나 뿐이다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 컴퓨터가 여러 프로그램을 동시에 수행하는 다중 프로그래밍 시스템에서는 프로세스들간의 상호&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 배제와 동기화를 위한 기본적인 연산이 필요하다. 세마포어는 다익스트라가 제안한 프로세스&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 동기화를 위한 구조로, 이는 여러 프로세스들에 의해 공유되는 변수로 정의된다.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 그런데 이 변수는 보통의 방법으로는 액세스할 수 없고 오직 P와 V라는 연산으로만 다룰 수 있다.&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | P와 V연산의 정의는 다음과 같다.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure P(S)&nbsp;&nbsp; --&gt; 최초 S값은 1임&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while S=0 do wait&nbsp; --&gt; S가 0면 1이 될때까지 기다려야 함&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S := S-1&nbsp;&nbsp; --&gt; S를 0로 만들어 다른 프로세스가 들어 오지 못하도록 함&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end P&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure V(S) --&gt; 현재상태는 S가 0임&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S := S+1&nbsp;&nbsp; --&gt; S를 1로 원위치시켜 해제하는 과정. 이제는 다른 프로세스가&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 들어 올수 있음&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | P와 V는 쪼갤수 없는 단일 연산이다.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 즉 한 프로세스가 P나 V를 수행하고 있는 동안에는 프로세스가 인터럽트를 당하지 않는다.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 이제 P와 V를 사용하면 다음과 같이 위험지역(cirtical section)에 대한 상호배제를 구현할수 있다.|&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P(S);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 위 험 지 역&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; V(S);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 최초에 S의 값은 1이다. 위와 같은 위험지역을 포함하는 두개의 프로세스 A와 B가 있다고 하자.&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | A와 B는 서로 독립적으로 수행되지만, 두 프로세스가 동시에 위험 지역으로 들어가서는 안된다.&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 위와 같이 세마포어를 사용하면 P(S)를 먼저 수행하는 프로세스가 S를 0으로 해놓고 위험지역에&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 들어가므로 나중에 도착하는 프로세스는 P에서 더이상 진행되지 못하고 기다리게 된다.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 먼저 들어갔던 프로세스가 V(S)를 해주어야 비로서 P(S)에서 기다리던 프로세스가 위험지역에&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 들어갈 수 있고 따라서 상호배제가&nbsp; 실현된다.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 위의 예는 이진 세마포어 (binary semaphore)로, 단지 하나의 프로세스만이 위험지역에 들어갈 수&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 있도록 한다. 한편 S의 초기값을 N으로 하면 최대 N개의 프로세스가 P(S)를 통과할 수 있게&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; | 되는데 이러한 경우에는 계수 세마포어 (counting semaphore)라 하며 자원 할당에 사용한다.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; UNIX 시스템 V에서 구현된 세마포어는 이러한 개념에 기초했지만 보다 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 일반적인(그리고 아마도 보다 복잡한)기능을 제공한다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 우선 semget과 semctl을 살펴보자.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; &lt;사용법&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key_t key;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sem_id, nsems, permflags, command;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int retval, sem_num;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union semun {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int val;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct semid_ds *stat;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ushort *array;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } ctl_arg;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sem_id = semget(key, nsems, perflags);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retval = semctl(sem_id, sem_num, command, ctl_arg);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; semget 호출은 msgget(get message queue)과 유사하다. 인수 nsems는 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 세마포어 집합에 필요한 세마포어의 갯수를 나타낸다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 따라서 UNIX 세마포어 연산은 세마포어 하나만이 아니라 한 집합 전체를&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 다루게 된다. 이로 인해서 나머지 세마포어 루틴에 대한 인터페이스가 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 복잡해진다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; semget호출이 성공하면 세마포어 집합 식별자라는 메시지 큐 식별자와 유사한 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 역할을 하는 것이 돌아온다. C 언어의 관습을 따라서 세마포어 집합에 대한 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 첨자는 0부터 nsems-1까지 있을 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 집합 내의 각 세마포어는 다음과 같은 값들을 갖게 된다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . semval : 세마포어의 값으로서 항상 양수가 지정된다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 여기에 값을 새로 지정하려면 반드시 세마포어 시스템 호출을 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 통해야하며 프로그램에서 일반 자료형의 변수와 같이 직접&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 접근 할 수는 없다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . sempid : 세마포어에 접근했던 최근의 프로세스의 프로세스 식별번호이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . semncnt : 세마포어의 값이 현재보다 증가하기를 기다리는 프로세스의 갯수&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . semzcnt : 세마포어의 값이 0으로 되기까지 기다리는 프로세스의 갯수&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 정의에서 알 수 있듯이 함수 semctl은 msgctl보다 훨씬 복잡하다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; sem_id는 유효한 세마포어 식별자라야 한다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; command는 msgctl에서와 같이 수행해야 할 정확한 기능을 명시한다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 이 기능에는 세가지 유형이 있다. IPC_STAT와 같은 표준 IPC기능,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 단일 세마포어만을 다루는 기능, 세마포어의 전체를 다루는 기능이 그것이다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 가능한 모든 기능을 다음과 같이 정리하였다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; semctl(semaphore control operations) 기능 코드&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; -----------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 표준 IPC기능 (semid_ds구조는 sem.h에 정의되어 있다.)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; ----------------------------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPC_STAT&nbsp; 상태정보를 ctl_arg.stat에 저장한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPC_SET&nbsp;&nbsp; ctl_arg.stat에 저장된 형태로 소유권과 사용 허가권을 지정한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPC_RMID&nbsp; 시스템에서 해당 세마포어의 집합을 삭제한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; ----------------------------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 단일 세마포어 연산 (이들은 retval에게 넘어온 값 sem_unm을 사용한다.)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; ----------------------------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GETVAL&nbsp;&nbsp;&nbsp; 세마포어의 값 semval을 돌려준다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SETVAL&nbsp;&nbsp;&nbsp; 세마포어 값을 ctl_arg.val로 지정한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GETPID&nbsp;&nbsp;&nbsp; sempid의 값을 돌려준다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GETNCNT&nbsp;&nbsp; semncnt를 돌려준다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GETZCNT&nbsp;&nbsp; semzcnt를 돌려준다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; ----------------------------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 전체 세마포어 연산 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; ----------------------------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GETALL&nbsp;&nbsp;&nbsp; 모든 senvals의 값을 ctl_arg.array에 저장한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SETALL&nbsp;&nbsp;&nbsp; ctl_arg.array의 값을 사용하여 모든 semvals값을 지정한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; ----------------------------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sem_num 인수는 semctl의 단일 세마포어 기능에서 특정 세마포어를 지정해준다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 마지막 인수인 ctl_arg는 세가지 구성 요소의 결합이다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 이들 구성 요소들은 각각 semctl의 세가지 기능에 대응한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; semctl은 세마포어의 초기값을 지정할 때 요긴하게 사용된다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 이 기능은 semget에는 없음에 주의하라.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 따라서 semget과 semctl은 두개 모두 있어야 한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 다음에 예로서 제시하는 함수는 프로그램이 단일 세마포어를 생성할때나 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 이에 대한 세마포어 집합 식별자를 얻고자 할 때 사용될 수 있다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 세마포어가 생성되는 경우에는 semctl을 사용하여 초기값을 부여하게 된다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; / * initsem&nbsp; -- semaphore initialization */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; #include &quot;pv.h&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; initsem(semkey)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; key_t semkey;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int status = 0, semid ;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((semid = semget(semkey, 1, SEMPERM|IPC_CREAT|IPC_EXCL)) == -1) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (errno == EEXIST)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; semid = semget(semkey, 1, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else&nbsp;&nbsp; / * if created... */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status = semctl(semid, 0, SETVAL, 1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((semid == -1 || status == -1) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&quot;initsem failed&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (-1);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return semid;&nbsp;&nbsp;&nbsp; / * all okay&nbsp; */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; include 화일 pv.h는 다음과 같다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; / * semaphore example header file */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;errno&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; extern int errno;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; #define SEMPERM 0600&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; #define TRUE 1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; #define FALSE 0 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 세마포어 연산 : semop 호출&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;- semop 호출 semop은 기본적인 세마포어 연산을 실제로 수행하는 시스템호출이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 이때 semop은 메뉴얼의 항목이 아니라 실제 함수 이름이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 사용법 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;/span&gt;&lt;sys&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int retval, sem_id;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct sembuf op_array[SOMEVALUE];&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retval = semop(sem_id, op_array, SOMEVALUE);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; sem_id는 세마포어 집합 식별자로서 이전에 semget호출을 통해 값이 지정되어야 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 한다. op_array는 sembuf구조의 배열로서 sembuf구조는 sem.h에 정의되어 있다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; SOMEVALUE는 임의의 정수형 상수이다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 각각의 sembuf구조 변수는 세마포어에 대해 수행할 연산을 지정한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 다시 강조하거니와 semop함수가 세마포어 집합에 대해 수행하는 일련의 연산들은 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 모두 원자화 되어야 한다. 즉, 그중의 한 연산이라도 수행할 수 없다면 전체 연산&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 이 모두 수행되지 말아야 한다. 이 경우에는 특별히 명시되지 않는한, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 모든 연산이 한번에 수행될수 있을때까지 프로세스의 수행이 중지된다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; sembuf구조를 좀더 자세히 보면 다음과 같이 구성되어 있다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; struct sembuf {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; short&nbsp;&nbsp; sem_num;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / * semaphore # */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; short&nbsp;&nbsp; sem_op;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / * semaphore operation */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; short&nbsp;&nbsp; sem_flg;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / * operation flags */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; sem_num는 집합 내의 세마포어에 대한 첨자를 저장한다. 만약 집합의 원소가 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 하나뿐이라면 sem_num의 값은 0이어야 한다.&nbsp; sem_op는 함수 semop이 수행해야 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 하는 기능을 정수로서 나타낸다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 여기에는 세가지 경우가 있다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 경우 1 : sem_op가 음수일때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 이 경우에는 앞서 소개했듯이 일반적인 세마포어 명령 P()와 같이 수행된다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 이를 의사 코드(pseudo-code)로 나타내면 다음과 같다 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; (ABS는 변수의 절대값을 나타낸다)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (semval &gt;= ABS(sem_op)){&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set semval to semval-ABS(sem_op)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((sem_flg&amp;IPC_NOWAIT))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return-1 immediately&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wait until semval reaches or exceeds&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ABS(sem_op), then subtract&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ABS(sem_op) as above&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 기본 개념은 함수 semop에서 sem_num이 가리키는 세마포어의 값 semval을 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 조사하는 것이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; semval의 값이 충분히 크다면 즉시 하나 감소시킨다. 아니면 semval이 충분히 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 커질 때까지 프로세스의 수행을 중단시킨다. 그러나 sem_flg의 IPC_NOWAIT&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 플래그의 값이 1로 되어 있으면 sem_op은 즉시 -1을 되돌려주고 errono값을 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; EAGAIN으로 한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 경우 2 : sem_op이 양수일 때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 이때는 보통의 V()연산과 유사하다. 즉 sem_op의 값을 해당 semval에 더해준다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 이때 해당 세마포어의 값이 증가하기를 기다리는 프로세스들이 깨어나게 된다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 경우 3 : sem_op이 0일때&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 이 경우는 semval을 변환시키는 것이 아니라 값이 0이 될때까지 기다린다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; semval이 0이 아니고 sem_flg의 IPC_NOWAIT가 1인 경우에 semop는 즉시 오류 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 값을 돌려주게 된다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; SEM_UNDO 플래그&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; - 이것은 sembuf구조의 구성요소 sem_flg에 있는 플래그의 하나이다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 이는 프로세스의 수행이 끝났을 때 시스템이 수행된 연산을 자동적으로 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 취소하도록 지시한다. 수행된 일련의 연산을 추적하기 위하여 시스템은 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 세마포어에 semadj라는 정수를 대응시킨다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 이때 semadj변수는 프로세스마다 할당되어야 함에 주의해라.&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 따라서 서로 다른 프로세서는 동일한 세마포어에 대해 독립적인 semadj값을 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 유지하게 된다. SEM_UNDO의 값을 1로 하고서 semop연산을 수행하면 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; semadj값에서 sem_num값을 뺀다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 이때 sem_num의 부호가 중요한데 이는 sem_num의 값이 양수인가 음수인가에 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 따라 semadj의 값이 감소하거나 증가하기 때문이다. 프로세스의 수행이 끝나면 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 시스템은 semadj값을 해당 세마포어에 더해줌으로써 지금까지의 모든 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; semop호출 효과를 상쇄시킨다. 일반적으로 볼때 프로세스가 지정한 값이 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 해당 프로세스의 종료 후에도 효력을 갖지 않는다면 SEM_UNDO가 사용되어야만 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; 세마포어의 예&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp; - 이제 initsem루틴으로 시작한 예를 완성해 보자. 여기서는 전통적인 세마포어 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 연산을 P()와 V()로 구현하여 이를 중심으로 삼았다. 우선 P()를 보자.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / * pc -- semaphore p operation */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &quot;pv.h&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p(semid)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int semid;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct sembuf p_buf;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p_buf.sem_num = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p_buf.sem_op = -1;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p_buf.sem_flg = SEM_UNDO;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (semop(semid, &amp;p_buf, 1) == -1) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&quot;p(semid) failed&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(0);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 이때 SEM_UNDO를 사용했음에 주의하라. V()는 다음과 같다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / * v.c -- semaphore v operation */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &quot;pv.h&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v(semid)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int semid;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct sembuf v_buf;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_buf.sem_num = 0; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_buf.sem_op = 1; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v_buf.sem_flg = SEM_UNDO; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(semop(semid, &amp;v_buf, 1) == -1) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&quot;v(semid) failed&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(0);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 이제 비교적 간단한 이들 루틴으로 상호 배제를 구현해보자.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 다음의 프로그램을 살펴보자.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / * testsem -- test semaphore routines */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &quot;pv.h&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; main()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key_t semkey = 0x200;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fork() == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handlesem(semkey);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fork() == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handlesem(semkey);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fork() == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handlesem(semkey);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handlesem(skey)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key_t skey;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int semid, pid = getpid();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((semid = initsem(skey)) &lt; 0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\nprocess %d before critical section\n&quot;, pid);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p(semid);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;process %d in critical section\n&quot;, pid);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / * in real life do something interesting */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(10);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;process %d leaving critical section\n&quot;, pid);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v(semid);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;process %d exiting\n&quot;, pid);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; testsem은 세개의 자식프로세스를 생성하고 , 이들은 p()와 v()를 사용하여 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 임계 영역에는 한 순간에 둘 이상이 들어있지 못하도록 한다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 한 컴퓨터에서 testsem을 수행시킨 결과는 다음과 같다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 799 before critical section &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 800 before critical section &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 801 before critical section &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 799 in critical section &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 799 leaving critical section &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 799 exiting &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 801 in critical section &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 801 leaving critical section &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 801 exiting&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 800 in critical section &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 800 leaving critical section &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process 800 exiting&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;o Critical secion 란 ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; - 다중 프로그래밍 운영체제에서 여러 프로세스가 데이타를 공유하면서 수행될 때 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 각 프로세스에서 공유 데이타를 액세스하는 프로그램 코드 부분을 가리키는 말.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 공유데이타를 여러 프로세스가 동시에 액세스하면 시간적인 차이 때문에 잘못된 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 결과를 만들어 낼 수 있기 때문에 한 프로세스가 위험 부분을 수행하고 있을 때,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 즉 공유 데이타를 액세스하고 있을 때는 다른 프로세스들은 절대로 그 데이타를&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 액세스하지 못하도록 하여야 한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;o Mutual exclusion (상호 배제)란(1) ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; - 프로세스의 상호 교신에 대한 기본적인 조치는 공용 부분을 여러 프로세스가 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 동시에 사용하는 것을 배제하는 것이었다. 시스템의 어떠한 자원을 한 시점에서&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 한개의 프로세스만이 사용할 수 있도록 하는 것을 상호배제라 한다. 또한, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 프로그램에서 이러한 자원을 사용하거나 혹은 그 내용을 변경하는 부분을 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 위험부분 (critical section)이라 하며, 둘 이상의 프로그램에서 이 위험 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 부분이 동시에 수행되지 않도록 하는 것이 상호 배제의 기능이다.&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;o Mutual exclusion (상호 배제)란(2) ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; - 다중 프로그래밍 시스템에서 여러 프로세스가 하나의 공유 데이타를 액세스하면서&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 작업을 할 때, 한 프로세스가 그 데이타를 액세스할 때는 다른 프로세스들은 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 그것을 사용하지 못하도록 하는 운영체제의 기능.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 예를 들어 한 프로세스가 어떤 화일에 데이타를 쓰고 있을 때 다른 프로세스가 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 그 화일을 지원버린다면 많은 문제가 발생할 것이다. 상호 배제는 한번에 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 한 프로세스만이 공유 데이타를 액세스할 수 있도록 해 주는 것으로, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp; 다중프로그래밍 시스템의 운영체제가 꼭 갖추어야 할 기능이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;Revision History&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;작성일자 : 96.10.10&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;작성자 : 이진수&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;수정일자 :&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: Gulim; FONT-SIZE: 16px&quot;&gt;수정자 :&lt;/span&gt;&lt;/div&gt;]]></content>
						<category term="semaphore"/>
				
	</entry>
   <entry>
		<title><![CDATA[HA (High Availability)]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2309</id>
		<published>2011-12-20T21:39:51+09:00</published>
		<updated>2011-12-20T21:39:51+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2309"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2309#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;table class=&quot;post-top&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;p12&quot; valign=&quot;bottom&quot;&gt;
&lt;div id=&quot;title_1&quot; class=&quot;htitle&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;span class=&quot;pcol1 itemSubjectBoldfont&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#0000ff&quot;&gt;HA(High Availability)란 무엇인가? &lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;cate pcol2&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#0000ff&quot;&gt;&lt;img data-autoattach=&quot;success&quot; class=&quot;pcol2b fil3&quot; src=&quot;./files/attach/images/109/309/002/5323ce46946a2d2d0a25472ea3f9a878.gif&quot; width=&quot;1&quot; height=&quot;11&quot; /&gt;&lt;/font&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;p class=&quot;fil3 dline&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style=&quot;FLOAT: right&quot; id=&quot;url&quot; class=&quot;url&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;img data-autoattach=&quot;success&quot; id=&quot;copyBtn&quot; class=&quot;btn_urlcopy _setClipboard&quot; title=&quot;http://blog.naver.com/orayoon/50000230534&quot; alt=&quot;복사&quot; src=&quot;./files/attach/images/109/309/002/9c71ce88f7a700df6c1bca4a50a54b37.gif&quot; width=&quot;21&quot; height=&quot;13&quot; /&gt; &lt;/font&gt;&lt;a class=&quot;fil5 pcol2&quot; href=&quot;http://blog.naver.com/orayoon/50000230534&quot; target=&quot;_top&quot;&gt;&lt;font size=&quot;3&quot;&gt;http://blog.naver.com/orayoon/50000230534&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;3&quot;&gt; &lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;clear blank5&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/div&gt;
&lt;p class=&quot;post_option&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;div id=&quot;post-view50000230534&quot; class=&quot;post-view pcol2 _param(1)&quot;&gt;
&lt;p class=&quot;Title2&quot;&gt;&lt;font size=&quot;3&quot;&gt;HA, 중단 없는 서비스를 위한 필수 전략 &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;인터넷의 급속한 발전으로 세계 어느 곳에 있든지 웹브라우저만 있으면 다양한 업무들을 처리할 수 있게 됐다. 전 세계가 인터넷이라는 거대한 하나의 고리로 연결됐을 뿐 아니라 인터넷 뱅킹, 전자결제, 전자상거래, 홈쇼핑, 증권 거래, 민원 업무 등 우리의 일상도 인터넷을 이용해 처리할 수 있게 된 것이다. 이처럼 인터넷이 생활 속으로 깊숙이 침투하고 이러한 서비스를 이용하는 사용자들이 빠르게 증가함에 따라 중단 없는 서비스에 대한 요구도 점점 높아지고 있다. 따라서 24×7×365일 항상 서비스를 제공할 수 있는 시스템이 절실하게 필요해졌다. ‘해가 져도 비즈니스는 계속된다’는 광고 카피처럼, HA(High Availability)는 이제 비즈니스의 연속성과 가용성을 극대화해주는 필수 전략이 되고 있다. &lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;Author&quot; align=&quot;right&quot;&gt;&lt;font size=&quot;3&quot;&gt;서현교 &lt;br /&gt;맨텍 솔루션 사업부 과장&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;Author&quot; align=&quot;right&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;table cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; bgcolor=&quot;#eaeaea&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td bgcolor=&quot;#e5e5e5&quot; height=&quot;19&quot; width=&quot;100&quot;&gt;
&lt;p align=&quot;justify&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;19&quot; width=&quot;286&quot; align=&quot;center&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;HA 구성(클러스터 구성)&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;19&quot; width=&quot;295&quot; align=&quot;center&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;단일 시스템&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td bgcolor=&quot;#e5e5e5&quot; height=&quot;40&quot; width=&quot;100&quot; align=&quot;center&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;시스템 가용성&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;40&quot; width=&quot;286&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;언제나 보장(서비스 레벨의 HA 구성은 99.999%의 가용성 보장).&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;40&quot; width=&quot;295&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;한 번 시스템에 장애가 발생하면 복구 시간이 오래 걸림(보통 97% 내외의 가용성을 보장).&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td bgcolor=&quot;#e5e5e5&quot; height=&quot;40&quot; width=&quot;100&quot; align=&quot;center&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;애플리케이션&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;40&quot; width=&quot;286&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;시스템이 다운돼도 대기 상태에 있는 서버에서 항상 서비스 가능.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;40&quot; width=&quot;295&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;시스템을 재구성한 후 다시 서비스 재개.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td bgcolor=&quot;#e5e5e5&quot; height=&quot;40&quot; width=&quot;100&quot; align=&quot;center&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;비용 및 효율성&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;40&quot; width=&quot;286&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;초기 설치 비용에 대해서 부담이 있긴 하지만 훨씬 안정적이고 믿을 만한 서비스를 보장받을 수 있음.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;40&quot; width=&quot;295&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;설치 비용은 저렴하나 시스템 장애가 일어나게 되면 가용성이 보장 안됨.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td bgcolor=&quot;#e5e5e5&quot; height=&quot;40&quot; width=&quot;100&quot; align=&quot;center&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;평가&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;40&quot; width=&quot;286&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;긴 안목에서 중단 없는 서비스를 제공해 더 효율적임.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;40&quot; width=&quot;295&quot;&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;장애는 곧 막대한 매출 손실뿐 아니라 항상 시스템 운영자를 불안하게 함.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;Sub1&quot;&gt;&lt;strong&gt;&lt;font size=&quot;3&quot;&gt;HA의 필요성&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;HA(High Availability)는 고가용성을 의미한다. HA와 클러스터(Cluster)라는 용어는 엄밀히 말하면 다르지만, 고가용성이라는 의미로 혼용해 사용하고 있다. 아마도 몇몇 HA 제품들의 명칭에 클러스터라는 단어가 사용되고 있기 때문일 것이다. &lt;br /&gt;HA의 목적은 서비스의 다운타임을 최소화함으로써 가용성을 극대화하자는 것이다. 운영 서버에 장애가 발생하더라도, 대기 서버가 즉시 서비스를 대신 처리해 준다면 서비스의 다운타임은 최소화될 수 있다. 운영 서버에 언제 장애가 발생할 지는 아무도 예측할 수 없다. 관리자가 아무도 없는 새벽 시간에 장애가 발생할 수도 있다. HA는 관리자가 없을지라도, 운영 서버의 장애를 모니터링해 대기 서버가 처리할 수 있도록 함으로써 중단 없이 서비스를 제공하는 역할을 한다.&lt;br /&gt;HA는 이와 같이 계획되지 않은 다운타임을 위해 구성하는 것이지만, 더불어 계획된 다운타임에 대해서도 이용할 수 있다. 운영 서버 작업 시, HA를 이용해 대기 서버로 쉽고 빠르게 서비스를 이관할 수 있다. 이렇듯 HA는 서비스 이관의 편리함을 제공한다.&lt;br /&gt;과거에는 HA에 투자하는 것을 과잉 투자라고 생각했다. 그러나 HA는 이제 선택 사항이 아니다. e비즈니스 환경에서 기업이 살아남기 위한 필수 사항이 된 것이다.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;Sub1&quot;&gt;&lt;strong&gt;&lt;font size=&quot;3&quot;&gt;다양한 HA 제품들&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;현재 상용되고 있는 HA 제품들은 크게 하드웨어 업체에서 제공하는 것과 서드파티 제품으로 구분할 수 있다.&lt;br /&gt;각 하드웨어 업체들은 자체 HA를 가지고 있다. 하드웨어 업체의 HA는 해당 하드웨어와 해당 OS에 종속적이다. 반면에, 서드파티 제품은 하드웨어 업체나 OS 플랫폼에 독립적이며 애플리케이션 레벨에서 동작하기 때문에 제품이 가볍다. 또한 이기종 OS 환경 하에서도 단일 콘솔로 관리할 수 있다는 장점이 있다.&lt;/font&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;strong&gt;&lt;font size=&quot;3&quot;&gt;&lt;img data-autoattach=&quot;success&quot; src=&quot;./files/attach/images/109/309/002/ca09263db37a45271d7239387d983960.gif&quot; width=&quot;509&quot; height=&quot;439&quot; /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;Author&quot; align=&quot;right&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;Sub1&quot;&gt;&lt;strong&gt;&lt;font size=&quot;3&quot;&gt;HA가 관리하는 장애 포인트&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;HA는 어떠한 상황을 장애로 판단하고 대기 서버를 구동해 서비스를 하도록 하는 것일까?&lt;br /&gt;HA가 관리하는 포인트는 크게 세 가지로 나누어 볼 수 있다.&lt;br /&gt;- 하드웨어 장애: 전원 공급, CPU, 메모리, HDD 장애&lt;br /&gt;- 네트워크 장애: 네트워크 카드, LAN 케이블 장애&lt;br /&gt;- 프로세스 장애: DB 및 각종 애플리케이션 장애&lt;br /&gt;HA는 계속해서 상대방 시스템의 상태를 모니터링하고 있다가 이와 같은 장애가 발생할 경우 자동으로 조치하게 된다. 이를 통해 서비스를 지속적으로 제공할 수 있도록 해준다.&lt;br /&gt;HA는 양쪽 서버에 각각 설치하게 된다(그림 7). &lt;br /&gt;각 시스템을 보면 맨 하단에 OS가 있고, 그 위에 애플리케이션이 있다. HA는 맨 상단에서 시스템과 애플리케이션을 모니터링한다. Heartbeat는 두 서버 간의 HA 통신 라인이다. 서로의 상태를 모니터링하는 중요한 연결 라인이다.&lt;br /&gt;그림 8에 HA 절체(Failover) 원리에 대해 도시했다.&lt;br /&gt;활 성(Active)-대기(Standby) 상태의 두 시스템이 있다. 활성 서버에 장애가 발생했을 때, 모든 서비스가 대기 서버에서 구동돼 서비스가 이루어진다. 물론 HA가 활성 서버의 장애를 자동으로 감지해 대기 서버로 넘기는 것이다. 이런 현상을 절체, 페일오버(Failover), 스위치오버(Switchover)라고 말한다.&lt;br /&gt;HA는 첫째, 서비스 IP인 10.10.10.3을 넘겨준다. 클라이언트에서는 10.10.10.3 IP만 찾으므로 대기 시스템으로 연결된다. &lt;br /&gt;둘째, 스토리지의 파일 시스템인 /data를 마운트한다. 이 안에 모든 데이터가 들어있다.&lt;br /&gt;셋째, DB 및 각종 애플리케이션을 구동한다. 애플리케이션까지 구동돼야만 온전한 서비스를 할 수 있게 된다.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;지금까지 HA의 정의와 필요성, 구축 효과 등에 대해 알아보았다. HA의 도입으로 서비스의 가용성을 극대화할 수 있다. 언제 장애가 발생하더라도 HA가 자동으로 대처해 주기 때문에, 기업들은 업무의 지속성을 유지할 수 있으며, 관리자들은 장애에 대한 공포를 덜 수 있게 된다&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div align=&quot;right&quot;&gt;&lt;font size=&quot;3&quot;&gt;출처 : 시사컴퓨터 2004년 1월호&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;]]></content>
						<category term="HA (High Availability)"/>
				
	</entry>
   <entry>
		<title><![CDATA[결함허용컴퓨터/ FTS / 장애 허용 시스템]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2291</id>
		<published>2011-12-18T19:28:51+09:00</published>
		<updated>2011-12-18T19:28:51+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2291"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2291#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;span style=&quot;font:/normal 나눔고딕; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;&quot;&gt;결함허용컴퓨터/ 
FTS / 장애 허용 시스템&lt;/span&gt; 
&lt;div&gt;&lt;span style=&quot;font:/normal 나눔고딕; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font:/normal 나눔고딕; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font:/normal 나눔고딕; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;&lt;span style=&quot;font:/normal 나눔고딕; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;&quot;&gt;장애 
허용 시스템&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;font:/normal 나눔고딕; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;&quot;&gt;위키백과, 
우리 모두의 백과사전.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font:/normal 나눔고딕; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;&quot;&gt;이동:&lt;span&gt; &lt;/span&gt;&lt;a href=&quot;http://ko.wikipedia.org/#mw-head&quot; target=&quot;_blank&quot;&gt;둘러보기&lt;/a&gt;,&lt;span&gt; &lt;/span&gt;&lt;a href=&quot;http://ko.wikipedia.org/#p-search&quot; target=&quot;_blank&quot;&gt;찾기&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; lang=&quot;ko&quot;&gt;
&lt;p&gt;&lt;b&gt;장애 허용 시스템&lt;/b&gt;(Fault tolerant system)은 구성 부품의 일부가 고장나도 정상적으로 처리를 
수행하는&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;시스템&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%8B%9C%EC%8A%A4%ED%85%9C&quot; target=&quot;_blank&quot;&gt;시스템&lt;/a&gt;이다.&lt;/p&gt;
&lt;p&gt;장애 허용 개념이 고려되지 않은 시스템에서는 조금의 장애가 발생해도 전체에 영향을 주지만 장애 허용 시스템에서는 완전하게 기능을 유지한 
채로 처리를 지속하거나 장애의 정도에 따라 기능을 저하되더라도 처리는 지속한다.&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;
&lt;h2&gt;목차&lt;/h2&gt;&lt;span&gt;[&lt;a href=&quot;http://ko.wikipedia.org/#&quot; target=&quot;_blank&quot;&gt;숨기기&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EC.A0.81.EC.9A.A9_.EB.B6.84.EC.95.BC&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;적용 분야&lt;/span&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.ED.8A.B9.EC.84.B1&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;특성&lt;/span&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EC.9E.A5.EC.95.A0_.EB.B3.B5.EA.B5.AC_.EB.B0.A9.EC.8B.9D&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;장애 복구 방식&lt;/span&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EC.9D.B4.EC.A4.91.ED.99.94_.EC.8B.9C.EC.8A.A4.ED.85.9C_.28Fault-tolerance_by_replication.29&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;3.1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이중화 시스템 (Fault-tolerance by 
replication)&lt;/span&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EB.8F.99.EC.9E.91_.EC.A7.80.EC.86.8D_.28No_Single_Point_of_Repair.29&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;3.2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;동작 지속 (No Single Point of 
Repair)&lt;/span&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EA.B3.A0.EC.9E.A5_.EB.B6.84.EB.A6.AC_.28Fault_Isolation_to_the_Failing_Component.29&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;3.3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;고장 분리 (Fault Isolation to the 
Failing Component)&lt;/span&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EA.B3.A0.EC.9E.A5_.EC.A0.84.EC.97.BC_.28Fault_Containment.29&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;3.4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;고장 전염 (Fault 
Containment)&lt;/span&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EB.B6.80.EA.B0.80.EC.A0.81.EC.9C.BC.EB.A1.9C&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;3.5&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;부가적으로&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EA.B4.80.EB.A0.A8_.ED.95.AD.EB.AA.A9&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;관련 항목&lt;/span&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EB.B0.94.EA.B9.A5_.EA.B3.A0.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;바깥 고리&lt;/span&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EC.84.9C.EC.A0.81&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;5.1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서적&lt;/span&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://ko.wikipedia.org/#.EC.9E.90.EB.A3.8C&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;5.2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;자료&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 적용 분야&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=1&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;적용 분야&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;장애 허용 시스템 성격은 연속적인 동작이 요구되는 시스템이나 인명에 영향을 주는 시스템으로 특별히 나눌 수가 있다.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 특성&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=2&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;특성&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;장애 허용 시스템의 특성은 개별 구성품의 특성만이 아니고, 머신간의 제휴에 대한 규칙의 특성이기도 하다. 예를 
들어&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;전송 제어 프로토콜&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C&quot; target=&quot;_blank&quot;&gt;TCP&lt;/a&gt;에서의&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;패킷 통신 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8C%A8%ED%82%B7_%ED%86%B5%EC%8B%A0&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;패킷 통신&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;네트워크&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; target=&quot;_blank&quot;&gt;네트워크&lt;/a&gt;&lt;span&gt; &lt;/span&gt;내에서 불완전한 링크나 과부하의 링크가 있어도 신뢰성이 높은 쌍방향 통신을 할 
수 있도록 설계되고 있다. 이것은 수신측에서 패킷 상실, 패킷 이중화, 순서 변경 등이 있도록&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;통신 프로토콜&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%86%B5%EC%8B%A0_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C&quot; target=&quot;_blank&quot;&gt;통신 프로토콜&lt;/a&gt;이 설계되어 있기 때문에 결과적으로 통신 성능이 저하되도 데이터의 정확성이 손상되지 않게 되어 있는 
것이다. 데이터 형식도 동일한 생각을 적용시킬 수 있다. 예를 들어&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;HTML&quot; href=&quot;http://ko.wikipedia.org/wiki/HTML&quot; target=&quot;_blank&quot;&gt;HTML&lt;/a&gt;에서&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;상위 호환&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%83%81%EC%9C%84_%ED%98%B8%ED%99%98&quot; target=&quot;_blank&quot;&gt;상위 호환&lt;/a&gt;을 유지하도록 설계되고 있기 때문에 새로운 기능을 사용한 HTML을 오래된&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;웹 브라우저&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9B%B9_%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80&quot; target=&quot;_blank&quot;&gt;브라우저&lt;/a&gt;가 읽어들였을 때 그것을 처리할 수 없는 것으로서 버리는 것이 아니라 이해할 수 있는 범위를 표시하도록 
할 수 있다.&lt;/p&gt;
&lt;p&gt;각 시스템 안에는&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;발산 성질 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B0%9C%EC%82%B0_%EC%84%B1%EC%A7%88&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;발산 성질&lt;/a&gt;(resilience) 상태 예외적인 경우를 고려하여 대처할 수 있도록 시스템을 구축해야 한다. 또한 
일반적으로&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;자기 안정성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%90%EA%B8%B0_%EC%95%88%EC%A0%95%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;자기 안정성&lt;/a&gt;을 갖게 하는 것에 의해서 시스템이 오류 없는 상태로 수렴시키는 것으로&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;발산 성질 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B0%9C%EC%82%B0_%EC%84%B1%EC%A7%88&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;발산 성질&lt;/a&gt;(resilience)을 줄인다. 그러나 시스템 장애가 중대하기에, 그에 대처하는 데 매우 큰 비용을 
들이는 것보다 더 좋은 방법은 이중화를 하는 것이다.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 장애 복구 방식&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=3&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;장애 복구 방식&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;장애 허용 시스템에 있어서의 장애 복구는&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;롤포워드 복구 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A1%A4%ED%8F%AC%EC%9B%8C%EB%93%9C_%EB%B3%B5%EA%B5%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;롤포워드 복구&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(roll-forward)와&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;롤백 복구 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A1%A4%EB%B0%B1_%EB%B3%B5%EA%B5%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;롤백 복구&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(roll-back)으로 나눌 수 있다. 시스템 장애로 인해 오류가 일어났을 
때 롤 포워드 복구에서는 그 시점의 시스템 상태로 복구를 실시한다.&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;롤백 복구 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A1%A4%EB%B0%B1_%EB%B3%B5%EA%B5%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;롤백 복구&lt;/a&gt;에서는 시스템 상태를 약간 이전으로 되돌려(예를 들어 Checkpointing 사용) 거기에서부터 
처리를 재개한다.&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;롤백 복구 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A1%A4%EB%B0%B1_%EB%B3%B5%EA%B5%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;롤백 복구&lt;/a&gt;(rollback)에서는 체크 포인트(되돌리는 지점)와 장애 발생 지점과의 사이의 
처리는&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;멱등&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A9%B1%EB%93%B1&quot; target=&quot;_blank&quot;&gt;멱등&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(몇 번 실행해도 1회 실행한 것과 같은)이 아니면 안 된다. 몇 개의 시스템은 
오류의 종류나 오류 발생 수에 의해서&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;롤포워드 복구 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A1%A4%ED%8F%AC%EC%9B%8C%EB%93%9C_%EB%B3%B5%EA%B5%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;롤포워드 복구&lt;/a&gt;와&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;롤백 복구 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A1%A4%EB%B0%B1_%EB%B3%B5%EA%B5%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;롤백 복구&lt;/a&gt;(rollback)를 구현한다.&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 이중화 시스템 (Fault-tolerance by replication)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=4&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이중화 시스템 (Fault-tolerance by 
replication)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;이중화에 의한 장애 허용 시스템은 특징은 세 가지로 나뉜다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;리플리케이션&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A6%AC%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98&quot; target=&quot;_blank&quot;&gt;리플리케이션&lt;/a&gt;(Replication)：동일한 시스템을 복수로 준비하여 병렬로 실행시켜 다수를 만족한 결과를 올바른 
결과적으로 적용한다. 
&lt;li&gt;&lt;a title=&quot;다중화&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8B%A4%EC%A4%91%ED%99%94&quot; target=&quot;_blank&quot;&gt;다중화&lt;/a&gt;(Redundancy) : 동일한 시스템의 복수로 준비하여 장애가 일어나면 보조 시스템으로 전환한다. 
&lt;li&gt;&lt;a title=&quot;다양화 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%8B%A4%EC%96%91%ED%99%94&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;다양화&lt;/a&gt;(Diversity)：같은 사양에 다른 하드웨어 시스템을 복수로 준비하여 복제화와 같이 그것을 운용한다. 
이 경우, 각 시스템이 똑같은 장애를 일으키지 않는다.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a title=&quot;레이드&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A0%88%EC%9D%B4%EB%93%9C&quot; target=&quot;_blank&quot;&gt;레이드&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(&lt;a title=&quot;RAID&quot; href=&quot;http://ko.wikipedia.org/wiki/RAID&quot; target=&quot;_blank&quot;&gt;RAID&lt;/a&gt;)는&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;다중화&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8B%A4%EC%A4%91%ED%99%94&quot; target=&quot;_blank&quot;&gt;다중화&lt;/a&gt;를 활용한 장애 허용 시스템을&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;기억 장치&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B8%B0%EC%96%B5_%EC%9E%A5%EC%B9%98&quot; target=&quot;_blank&quot;&gt;기억 장치&lt;/a&gt;에 적용한 예이다. 레이드의 개념이 발전하면서&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;레이드 0 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A0%88%EC%9D%B4%EB%93%9C_0&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;레이드 0&lt;/a&gt;과 같은 속도만을 향상시키기 위한 시스템도 레이드에 포함되나 이는 엄밀히 말해 장애 허용 시스템에는 
해당하지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;락스텝 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%9D%BD%EC%8A%A4%ED%85%9D&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;락스텝&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(lockstep) 방식의 장애 허용 시스템 머신은 각 부분을 다중화해 병렬해 
동작시킨다. 다중화된 각 부분은 어느 시점에서 봐도 완전히 같은 상태가 아니면 안 된다. 같은 입력을 주었을 경우에 같은 출력을 얻을 수 있는 
것을 기대할 수 있다. 다중화 부분의 출력은 다수결 회로에 모아져 비교된다. 각 부품을 이중화한 머신 (dual modular 
redundant,&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;DMR (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=DMR&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;DMR&lt;/a&gt;)으로 불린다. 이 경우 다수결 회로는 결과가 차이가 나는 것밖에 모르기 때문에 복구는 다른 방법으로 
실시할 필요가 있다. 각 부품을 삼중화한 머신 (triple modular redundant,&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;TMR (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=TMR&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;TMR&lt;/a&gt;) 으로 불린다. 이 경우의 다수결 회로는 비교 결과가 2대1이 되었을 때에 오류를 판정하므로 올바른 
결과를 출력할 수 있어 오류로 판정된 결과를 버릴 수 있다. 그 뒤, 오류를 일으킨 복제 부품은 고장난 것으로 간주하여 다수결 
회로는&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;DMR (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=DMR&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;DMR&lt;/a&gt;&lt;span&gt; &lt;/span&gt;상태로 전환한다. 이 모델은 더 많은 복제에 대해서도 적용시킬 수 
있다.&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;락스텝 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%9D%BD%EC%8A%A4%ED%85%9D&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;락스텝&lt;/a&gt;&lt;span&gt; &lt;/span&gt;방식의 머신은 간단하게 완전하게 동기시킬 수 있어 각 복제 부품은 같은 클락으로 
동기하여 동작한다. 물론 각 복제를 클락에 동기시키지 않는 락스텝 시스템도 구축 가능하다. 다만, 클락 동기 하지 않는 경우, 고장에 의해서 
출력을 다수결 회로에 보낼 수 없게 된 부품을 어떻게 취급할지가 문제가 된다.&lt;/p&gt;
&lt;p&gt;복제를 동기시키려면 각 내부 상태가 일치해야 한다. 그럼으로써&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;리셋&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A6%AC%EC%85%8B&quot; target=&quot;_blank&quot;&gt;리셋&lt;/a&gt;&lt;span&gt; &lt;/span&gt;상태 등의 같은 내부 상태로부터 일제히 동작을 개시할 수 있다. 한편, 복제간에 
상태를 복사하는 방법도 있다.&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;DMR (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=DMR&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;DMR&lt;/a&gt;&lt;span&gt; &lt;/span&gt;변형의 일종인&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;Pair-and-spare (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Pair-and-spare&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;pair-and-spare&lt;/a&gt;가 있다. 두 복제 부품이 락스텝에서 같은 처리를 실시해 다수결 회로가 상이값을 
검출하면 오류 신호를 출력한다. 또 하나의 이중화 시스템이 완전히 같은 처리를 하고 있고, 두 이중화 시스템의 출력을 비교해 오류가 되지 않은 
것을 적용한다. pair-and-spare는 네개 복제가 필요한데&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;TMR (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=TMR&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;TMR&lt;/a&gt;이 필요한 세계보다 많지만 상용 시스템으로 채용된 예도 있다.&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 동작 지속 (No Single Point of Repair)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=5&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;동작 지속 (No Single Point of 
Repair)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;시스템이 고장 나더라도 지속적으로 동작해야 하며, 복구 작업을 하는 동안 성능 간섭이 없어야 한다.&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 고장 분리 (Fault Isolation to the Failing Component)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=6&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;고장 분리 (Fault Isolation to the 
Failing Component)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;고장이 발생할 때 시스템은 고장과 분리되어 정상적인 구성 요소에 영향을 주지 말아야 한다. 이것은 고장 감지 메커니즘이 고장과 분리를 
목적으로 존재함을 나타낸다.&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 고장 전염 (Fault Containment)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=7&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;고장 전염 (Fault 
Containment)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;어떤 고장 메커니즘은 시스템을 고장나게 하는 원인이 될 수 있는데 나머지 시스템에게 고장을 전파한다. 예를 들어, &quot;Rogue 
transmitter&quot;는 정상적인 통신 상태를 문제를 만들어 버리고 모든 시스템을 고장나게 한다. &quot;Rogue transmitter&quot;를 격리하는 
메커니즘 또는 구성 요소를 잘못되게 하는 것으로부터 보호하는 시스템이 필요하다.&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 부가적으로&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=8&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;부가적으로&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;오차 허용 시스템의 특징은 계획된 서비스 정지 또는 비계획 서비스 정지 개념을 포함한다. 이것은 보통 측정이 되는데 응용 프로그램 
수준에서이지 하드웨어 수준은 아니다. 이것의 이점은&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;가용성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EA%B0%80%EC%9A%A9%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;가용성&lt;/a&gt;(availability)이라고 부르고&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;퍼센트&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8D%BC%EC%84%BC%ED%8A%B8&quot; target=&quot;_blank&quot;&gt;퍼센트&lt;/a&gt;&lt;span&gt; &lt;/span&gt;단위로 표현되는데 통계적으로 99.999%(&lt;a title=&quot;Five nines (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Five_nines&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;five nines&lt;/a&gt;) 가용성을 갖는다.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 관련 항목&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=9&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;관련 항목&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;비잔틴 장애 허용&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B9%84%EC%9E%94%ED%8B%B4_%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9&quot; target=&quot;_blank&quot;&gt;비잔틴 장애 허용&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(Byzantine fault tolerance) 
&lt;li&gt;&lt;a title=&quot;클러스터&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0&quot; target=&quot;_blank&quot;&gt;클러스터&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(Cluster)&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 바깥 고리&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=10&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;바깥 고리&lt;/span&gt;&lt;/h2&gt;
&lt;h3&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 서적&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=11&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서적&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;cite style=&quot;font-style: normal;&quot;&gt;&lt;a title=&quot;Brian Randell (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Brian_Randell&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;Brian Randell&lt;/a&gt;, P.A. Lee, P. C. Treleaven (june 
1978).&lt;span&gt; &lt;/span&gt;&lt;a href=&quot;http://portal.acm.org/citation.cfm?id=356729&amp;coll=&amp;dl=ACM&amp;CFID=15151515&amp;CFTOKEN=6184618&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Reliability Issues in Computing System 
Design&lt;/a&gt;.&lt;span&gt; &lt;/span&gt;&lt;i&gt;&lt;a title=&quot;ACM Computing Surveys (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=ACM_Computing_Surveys&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;ACM Computing 
Surveys&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(CSUR)&lt;/i&gt;&lt;span&gt; &lt;/span&gt;&lt;b&gt;10&lt;/b&gt;&lt;span&gt; &lt;/span&gt;(2): 
123–165. ISSN 0360-0300.&lt;/cite&gt; 
&lt;li&gt;&lt;cite style=&quot;font-style: normal;&quot;&gt;&lt;a title=&quot;P. J. Denning (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=P._J._Denning&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;P. J. Denning&lt;/a&gt;&lt;span&gt; &lt;/span&gt;(December 1976).&lt;span&gt; &lt;/span&gt;&lt;a href=&quot;http://portal.acm.org/citation.cfm?id=356680&amp;dl=ACM&amp;coll=&amp;CFID=15151515&amp;CFTOKEN=6184618&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Fault tolerant operating 
systems&lt;/a&gt;.&lt;span&gt; &lt;/span&gt;&lt;i&gt;ACM Computing Surveys 
(CSUR)&lt;/i&gt;&lt;span&gt; &lt;/span&gt;&lt;b&gt;8&lt;/b&gt;&lt;span&gt; &lt;/span&gt;(4): 359–389. ISSN 
0360-0300.&lt;/cite&gt; 
&lt;li&gt;&lt;cite style=&quot;font-style: normal;&quot;&gt;Theodore A. Linden (December 
1976).&lt;span&gt; &lt;/span&gt;&lt;a href=&quot;http://portal.acm.org/citation.cfm?id=356682&amp;coll=&amp;dl=ACM&amp;CFID=15151515&amp;CFTOKEN=6184618&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Operating System Structures to Support Security and 
Reliable Software&lt;/a&gt;.&lt;span&gt; &lt;/span&gt;&lt;i&gt;ACM Computing Surveys 
(CSUR)&lt;/i&gt;&lt;span&gt; &lt;/span&gt;&lt;b&gt;8&lt;/b&gt;&lt;span&gt; &lt;/span&gt;(4): 409–445. ISSN 
0360-0300.&lt;/cite&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;&lt;span&gt;[&lt;a title=&quot;부분 편집: 자료&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;section=12&quot; target=&quot;_blank&quot;&gt;편집&lt;/a&gt;]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;자료&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.windowsnetworking.com/articles_tutorials/Implementing-Fault-Tolerance-Windows-Networks.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Implementing Fault Tolerance on Windows 
Networks&lt;/a&gt;&lt;span&gt; &lt;/span&gt;— a high-level survey of the different fault tolerant 
technologies available for Windows Server 2003 
&lt;li&gt;&lt;a href=&quot;http://www.eventhelix.com/RealtimeMantra/FaultHandling/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Fault Handling and Fault Tolerance&lt;/a&gt;&lt;span&gt; &lt;/span&gt;— 
Articles about software and hardware fault tolerance techniques. 
&lt;li&gt;Article &quot;&lt;a href=&quot;http://citeseer.csail.mit.edu/677518.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Practical Considerations in Making CORBA Services 
Fault-Tolerant&lt;/a&gt;&quot; by&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;Priya Narasimhan (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Priya_Narasimhan&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;Priya Narasimhan&lt;/a&gt; 
&lt;li&gt;Article &quot;&lt;a href=&quot;http://doi.ieeecomputersociety.org/10.1109/TC.2004.1275293&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Experiences, Strategies and Challenges in Building Fault-Tolerant 
CORBA Systems&lt;/a&gt;&quot; by&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;Pascal Felber (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Pascal_Felber&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;Pascal Felber&lt;/a&gt;&lt;span&gt; &lt;/span&gt;and&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;Priya Narasimhan (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Priya_Narasimhan&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;Priya Narasimhan&lt;/a&gt; 
&lt;li&gt;Article (an excellent starting point in the subject, read 
it&lt;span&gt; &lt;/span&gt;&lt;i&gt;first&lt;/i&gt;&lt;span&gt; &lt;/span&gt;and then read the tutorial below) &quot;&lt;a href=&quot;http://rodin.cs.ncl.ac.uk/Publications/avizienis.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Dependability And Its Threats: A Taxonomy&lt;/a&gt;&quot; by Algirdas 
Avizienis, Jean-Claude Laprie,&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;Brian Randell (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Brian_Randell&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;B. Randell&lt;/a&gt; 
&lt;li&gt;Tutorial (a very good one, read 
it&lt;span&gt; &lt;/span&gt;&lt;i&gt;after&lt;/i&gt;&lt;span&gt; &lt;/span&gt;you have read the article above) &quot;&lt;a href=&quot;http://hdl.handle.net/2002/12633&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Software 
Fault Tolerance: A Tutorial&lt;/a&gt;&quot; by Wilfredo Torres-Pomales 
&lt;li&gt;EU funded research project&lt;span&gt; &lt;/span&gt;&lt;a href=&quot;http://www.hpc4u.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;HPC4U&lt;/a&gt;&lt;span&gt; &lt;/span&gt;addressing development of 
fault tolerant technologies for Grid computing 
environments&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;]]></content>
						<category term="결함허용컴퓨터"/>
				<category term="FTS"/>
				<category term="장해허용시스템"/>
				
	</entry>
   <entry>
		<title><![CDATA[CPU 스케줄링]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2287</id>
		<published>2011-12-15T22:36:52+09:00</published>
		<updated>2011-12-15T22:36:52+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2287"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2287#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;div class=&quot;titleWrap&quot;&gt;
&lt;h2&gt;&lt;a href=&quot;http://blog.paran.com/entry/운영체제-이론중에서-CPU스케줄링-기법&quot; target=&quot;_blank&quot;&gt;운영체제 이론중에서 CPU스케줄링 기법&lt;/a&gt;&lt;/h2&gt;&lt;/div&gt;&lt;!-- titleWrap close --&gt;
&lt;div class=&quot;article&quot;&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;570&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;PADDING-BOTTOM: 30px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; TABLE-LAYOUT: fixed; PADDING-TOP: 10px&quot; class=&quot;ln16 bk&quot;&gt;
&lt;p&gt;&lt;font size=&quot;2&quot;&gt;&lt;strong&gt;[출처] &lt;a href=&quot;http://park1020.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9D%B4%EB%A1%A0%EC%A4%91%EC%97%90%EC%84%9C-CPU%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EA%B8%B0%EB%B2%95&quot; target=&quot;_blank&quot;&gt;http://park1020.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9D%B4%EB%A1%A0%EC%A4%91%EC%97%90%EC%84%9C-CPU%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EA%B8%B0%EB%B2%95&lt;/a&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;2&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;2&quot;&gt;&lt;strong&gt;CPU스케줄링&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -38px; MARGIN: 0px 0px 0px 38px; FONT-FAMILY: &#039;한양견고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양견고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;￭ CPU 스케줄링의 개념: &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -21px; MARGIN: 0px 0px 0px 39px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;프로세스들의 수행 순서를 정해 주는 것.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -21px; MARGIN: 0px 0px 0px 39px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;- 준비 상태에 있는 프로세스 중에서 어느 프로세스에게 CPU를 할당할 것인지 결정.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: 0px; MARGIN: 0px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -38px; MARGIN: 0px 0px 0px 38px; FONT-FAMILY: &#039;한양견고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양견고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;￭ CPU 스케줄링의 필요성: &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: 1px; MARGIN: 0px 0px 0px 17px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;여러 프로세스가 한 job을 수행하는데 CPU가 줄 곧 필요하지 않다. 계산을 할 때는 CPU가 필요하지만, I/O를 할 때는 필요 없다. 이때 CPU를 다른 프로세스가 이용하면 전체적인 시스템의 효율은 올라간다.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: 1px; MARGIN: 0px 0px 0px 17px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: 1px; MARGIN: 0px 0px 0px 17px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UNI000005140001.gif&quot; width=&quot;325&quot; height=&quot;1&quot; /&gt;프로세스 A &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -21px; MARGIN: 0px 0px 0px 39px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;처리&lt;span style=&quot;HWP-TAB: 1&quot;&gt; &lt;/span&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;I/O&lt;span style=&quot;HWP-TAB: 1&quot;&gt; &lt;/span&gt;처리&lt;span style=&quot;HWP-TAB: 1&quot;&gt; &lt;/span&gt;I/O&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -21px; MARGIN: 0px 0px 0px 39px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;br /&gt;&lt;span style=&quot;WIDTH: 1px; FLOAT: right; HEIGHT: 1px&quot; id=&quot;callbacknestpark1020tistorycom1501955&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: 1px; MARGIN: 0px 0px 0px 17px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: 1px; MARGIN: 0px 0px 0px 17px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UNI000005140003.gif&quot; width=&quot;325&quot; height=&quot;1&quot; /&gt;프로세스 B &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -21px; MARGIN: 0px 0px 0px 39px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;처리&lt;span style=&quot;HWP-TAB: 1&quot;&gt; &lt;/span&gt;I/O&lt;span style=&quot;HWP-TAB: 1&quot;&gt; &lt;/span&gt;처리&lt;span style=&quot;HWP-TAB: 1&quot;&gt; &lt;/span&gt;I/O&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -21px; MARGIN: 0px 0px 0px 39px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -21px; MARGIN: 0px 0px 0px 39px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;이렇게 CPU를 여러 프로세스가 번갈아 가면서 사용하면 효율적이다.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -21px; MARGIN: 0px 0px 0px 39px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -38px; MARGIN: 0px 0px 0px 38px; FONT-FAMILY: &#039;한양견고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양견고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;￭ 스케줄링의 분류: &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;‧ 단기 스케줄링(short-term scheduling) : 준비 상태 프로세스중에서 한 프로세스를 선택하여 CPU 할당.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;‧ 중기 스케줄링(medium-term scheduling) : 메모리에 프로세스가 너무 많은 경우, 메모리에 있는 프로세스를 선정하여 디스크로 보낸다. 나중에 다시 올 수 있다(swapping).&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;‧ 장기 스케줄링(long-term scheduling) : 생성(상태)에 있는 프로그램들 중에서 필요한 프로세스를 생성하여 준비에 넣는다.&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: 0px; MARGIN: 0px 0px 0px 88px; FONT-FAMILY: &#039;한양중고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양중고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -38px; MARGIN: 0px 0px 0px 38px; FONT-FAMILY: &#039;한양견고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양견고딕&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;￭ 스케줄링 기준(용어): &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;‧ CPU 사용률 : 실제 CPU 사용 시간 / 전체 시간&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;‧ 처리율(throughput) : 단위 시간당 완료되는 작업 수&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;‧ 반환시간(turnaround time) : 시스템에 들어가서 마치고 나온 시간 간격&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;메모리에 들어가기 위해 기다리는 시간, 준비 큐에서 기다리는 시간,&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;&lt;span style=&quot;HWP-TAB: 1&quot;&gt;&lt;/span&gt;프로세서에서 실행되는 시간, 입출력 시간을 합친 것 (I/O에 영향 多)&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;‧ 대기시간(waiting time) : 준비 큐에서 기다린 시간&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; TEXT-INDENT: -46px; MARGIN: 0px 0px 0px 84px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;&lt;span style=&quot;TEXT-ALIGN: justify; LINE-HEIGHT: 21px; FONT-FAMILY: &#039;한양신명조&#039;; COLOR: #000000; FONT-SIZE: 13px&quot;&gt;‧ 응답시간(response time) : 제출 --&gt; 첫 번째 응답까지의 시간. &lt;/span&gt;&lt;br /&gt;1) 정의&lt;br /&gt;&lt;br /&gt;- 작업을 처리하기 위해 프로세스들에게 중앙처리 장치나 각종 처리기들 을 할당하기 위한&lt;br /&gt;정책을 계획하는 것&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) 방법별 분류&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;① 선점(preemptive) 스케쥴링&lt;/strong&gt;&lt;br /&gt;- 한 프로세스가 CPU를 차지하고 있을 때 우선순위가 높은 다른 프로세스가 현재 프로세&lt;br /&gt;스를 중지시키고 자신이 CPU를 차지할 수 있는 경우&lt;br /&gt;- 높은 우선순위를 가진 프로세스들이 빠른 처리를 요구하는 시스템에서 유용&lt;br /&gt;- 빠른 응답시간을 요구하는 시분할 시스템에 유용&lt;br /&gt;- 높은 우선순위 프로세스들이 들어오는 경우 오버헤드를 초래&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;② 비선점(nonpreemptive) 스케쥴링&lt;br /&gt;&lt;/strong&gt;- 한 프로세스가 CPU를 할당받으면 다른 프로세스는 CPU를 점유못함 &lt;br /&gt;- 짧은 작업을 수행하는 프로세스가 긴 작업이 종료될 때까지 기다려야 함&lt;br /&gt;- 모든 프로세스들에게 공정하고 응답시간의 예측이 가능&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3) CPU 스케쥴링 알고리즘별 분류&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;① 우선순위(priority) 스케줄링&lt;/strong&gt; &lt;br /&gt;- nonpreemptive&lt;br /&gt;- 프로세스에게 우선순위를 부여하여 우선순위가 높은 순서대로 처리&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ㄱ) 정적(static) 우선순위 방법&lt;/strong&gt;&lt;br /&gt;- 주변 환경 변화에 적응하지 못하여 실행중 우선순위를 바꾸지 않음, 구현이 쉽고&lt;br /&gt;오버헤드가 적다&lt;br /&gt;&lt;strong&gt;ㄴ) 동적(dynamic) 우선순위 방법&lt;/strong&gt;&lt;br /&gt;- 상황 변화에 적응하여 우선순위를 변경, 구현이 복잡, 오버헤드 많다,&lt;br /&gt;시스템의 응답속도를 증가시켜 효율적&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;② 기한부(deadline) 스케줄링 - nonpreemptive&lt;br /&gt;&lt;/strong&gt;- 작업을 명시된 시간이나 기한내에 완료되도록 계획&lt;br /&gt;- 작업시간이나 상황등 정보를 미리 예측하기가 어렵다&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;③ FIFO 스케줄링 - nonpreemptive&lt;/strong&gt;&lt;br /&gt;- 프로세스들은 대기 큐에 도착한 순서대로 CPU를 할당 받는다&lt;br /&gt;- 일괄처리 시스템에서 주로 사용, 작업 완료 시간을 예측하기 용이&lt;br /&gt;- 짧은 작업이 긴 작업을 기다리게 됨&lt;br /&gt;- 중요하지 않은 작업이 중요한 작업을 기다리게하여 불합리&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;④ 라운드로빈(round robin) 스케줄링&lt;br /&gt;&lt;/strong&gt;- preemptive &lt;br /&gt;- FCFS에 의해서 프로세스들이 보내지며&lt;br /&gt;- 각 프로세스는 같은 크기의 CPU 시간을 할당 받는다&lt;br /&gt;- 시분할 방식에 효과적, 할당시간의 크기가 매우 중요&lt;br /&gt;- 할당시간이 크면 FCFS와 같게되고, 작으면 문맥교환이 자주 일어난다&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;⑤ SJF(shortest job first) 스케줄링 - nonpreemptive&lt;/strong&gt;&lt;br /&gt;- 준비큐내의 작업중 수행시간이 가장 짧다고 판단되는 것을 먼저 수행&lt;br /&gt;- FCFS보다 평균 대기 시간을 감소, 큰 작업은 시간 예측이 어렵다&lt;br /&gt;- 짧은 작업에 유리&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;⑥ SRT(short remaining time) 스케줄링&lt;/strong&gt;&lt;br /&gt;- preemptive&lt;br /&gt;- 가장 짧은 시간이 소요된다고 판단되는 프로세스를 먼저 수행&lt;br /&gt;- 남은 처리 시간이 더 짧다고 판단는 프로세스가 준비큐에 생기면 언제라도 실행중인 &lt;br /&gt;프로세스가 선점됨&lt;br /&gt;- 긴 작업은 SJF보다 대기 시간이 길다&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;⑦ HRN(highest response ratio next) 스케줄링 &lt;/strong&gt;&lt;br /&gt;- nonpreemptive&lt;br /&gt;- 긴 작업과 짧은 작업간의 지나친 불평등을 어느 정도 보완한 기법&lt;br /&gt;- 짧은 작업이나 대기시간이 긴 작업은 우선순위가 높아진다&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;⑧ 다단계 큐(multilevel queue) 스케줄링 &lt;/strong&gt;&lt;br /&gt;- preemptive&lt;br /&gt;- 작업들을 여러 종류의 그룹으로 나누어 여러개의 큐를 이용하는 기법&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;⑨ 다단계 피드백 큐(multilevel feedback queue) 스케줄링&lt;/strong&gt; &lt;br /&gt;- preemptive&lt;br /&gt;- 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 서로 다른 CPU의 타임 슬라이스를 &lt;br /&gt;부여&lt;br /&gt;- 짧은 작업에 유리, 입출력 위주의 작업에 우선권을 줌&lt;br /&gt;- 하위단계 큐일수록 할당시간은 커진다&lt;/div&gt;]]></content>
						<category term="CPU 스케줄링"/>
				
	</entry>
   <entry>
		<title><![CDATA[병렬 컴퓨팅]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2283</id>
		<published>2011-12-13T21:38:52+09:00</published>
		<updated>2011-12-13T21:38:52+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2283"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2283#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;h1 id=&quot;firstHeading&quot; class=&quot;firstHeading&quot;&gt;병렬 컴퓨팅&lt;/h1&gt;&lt;!-- /firstHeading --&gt;&lt;!-- bodyContent --&gt;
&lt;div id=&quot;bodyContent&quot;&gt;&lt;!-- tagline --&gt;
&lt;div id=&quot;siteSub&quot;&gt;&lt;b&gt;병렬 컴퓨팅&lt;/b&gt;(parallel computing) 또는 &lt;b&gt;병렬 연산&lt;/b&gt;은 동시에 많은 계산을 하는 &lt;a title=&quot;연산&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%97%B0%EC%82%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;연산&lt;/font&gt;&lt;/a&gt;의 한 방법이다. 크고 복잡한 문제를 작게 나눠 동시에 병렬적으로 해결하는 데에 주로 사용되며&lt;sup id=&quot;cite_ref-0&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[1]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;, 병렬 컴퓨팅에는 여러 방법과 종류가 존재한다. 그 예로, &lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EB.B9.84.ED.8A.B8.EC.88.98.EC.A4.80_.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;비트 수준&lt;/font&gt;&lt;/a&gt;, &lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EB.AA.85.EB.A0.B9.EC.96.B4_.EC.88.98.EC.A4.80_.EB.B3.91.EB.A0.AC_.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;명령어 수준&lt;/font&gt;&lt;/a&gt;, &lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.9E.90.EB.A3.8C_.EB.B3.91.EB.A0.AC_.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;데이터&lt;/font&gt;&lt;/a&gt;, &lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.9E.91.EC.97.85_.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;작업 병렬 처리&lt;/font&gt;&lt;/a&gt; 방식 등이 있다. 병렬 컴퓨팅은 오래전부터 주로 &lt;a class=&quot;mw-redirect&quot; title=&quot;고성능 연산&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%A0%EC%84%B1%EB%8A%A5_%EC%97%B0%EC%82%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;고성능 연산&lt;/font&gt;&lt;/a&gt;에 이용되어 왔으며, &lt;a title=&quot;클럭 속도&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%81%B4%EB%9F%AD_%EC%86%8D%EB%8F%84&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;프로세서 주파수&lt;/font&gt;&lt;/a&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[2]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;의 물리적인 한계에 다가가면서 문제 의식이 높아진 이후에 더욱 주목받게 되었다. 최근 컴퓨터 이용에서 발열과 &lt;a class=&quot;new&quot; title=&quot;전력 소모 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%A0%84%EB%A0%A5_%EC%86%8C%EB%AA%A8&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;전력 소모&lt;/font&gt;&lt;/a&gt;에 대한 관심이 높아지는 것과 더불어 &lt;a title=&quot;멀티 코어&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A9%80%ED%8B%B0_%EC%BD%94%EC%96%B4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;멀티 코어&lt;/font&gt;&lt;/a&gt; 프로세서를 핵심으로 &lt;a title=&quot;컴퓨터 구조&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B5%AC%EC%A1%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴퓨터 구조&lt;/font&gt;&lt;/a&gt;에서 강력한 패러다임으로 주목받게 되었다&lt;sup id=&quot;cite_ref-View-Power_2-0&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-View-Power-2&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[3]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; lang=&quot;ko&quot; class=&quot;mw-content-ltr&quot;&gt;
&lt;p&gt;병렬 컴퓨터들은 대체적으로 하드웨어의 병렬화 방법에 따라 분류된다. &lt;a title=&quot;컴퓨터 클러스터&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;클러스터&lt;/font&gt;&lt;/a&gt;, &lt;a title=&quot;MPP&quot; href=&quot;http://ko.wikipedia.org/wiki/MPP&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MPP&lt;/font&gt;&lt;/a&gt;, &lt;a title=&quot;그리드 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B7%B8%EB%A6%AC%EB%93%9C_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;그리드&lt;/font&gt;&lt;/a&gt;는 여러 컴퓨터에서 한 가지 작업을 하도록 설계되었다. &lt;a title=&quot;멀티 코어&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A9%80%ED%8B%B0_%EC%BD%94%EC%96%B4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;멀티 코어&lt;/font&gt;&lt;/a&gt;나 &lt;a title=&quot;대칭형 다중 처리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8C%80%EC%B9%AD%ED%98%95_%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;멀티 프로세서&lt;/font&gt;&lt;/a&gt; 컴퓨터들은 여러 개의 처리 요소(CPU 등)을 한 기기에 탑재하고 작업한다. 특수화된 병렬 컴퓨터 구조들은 가끔씩 고전적인 프로세서들과 함께 특정한 작업을 가속화 시키는 목적으로도 사용된다.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;new&quot; title=&quot;병렬 알고리즘 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;병렬 컴퓨터 프로그램&lt;/font&gt;&lt;/a&gt;들은 순차적 프로그램보다 난해하다.&lt;sup id=&quot;cite_ref-3&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-3&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[4]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; 왜냐하면 동시처리는 여러 종류의 새로운 잠재적 &lt;a title=&quot;소프트웨어 버그&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EB%B2%84%EA%B7%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;소프트웨어 버그&lt;/font&gt;&lt;/a&gt;를 가지고 있기 때문이다. (&lt;a title=&quot;경쟁 상태&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B2%BD%EC%9F%81_%EC%83%81%ED%83%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;경쟁 상태&lt;/font&gt;&lt;/a&gt;가 가장 흔하다) &lt;a class=&quot;mw-redirect&quot; title=&quot;컴퓨터 네트워킹&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;통신&lt;/font&gt;&lt;/a&gt;과 &lt;a class=&quot;new&quot; title=&quot;동기화 (전산) (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%8F%99%EA%B8%B0%ED%99%94_(%EC%A0%84%EC%82%B0)&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;동기화&lt;/font&gt;&lt;/a&gt; 를 요구하는 다른 하위 작업들은 병렬 프로그램 성능의 전형적인 방해요소다. 병렬화된 프로그램의 &lt;a class=&quot;new&quot; title=&quot;속도 향상 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%86%8D%EB%8F%84_%ED%96%A5%EC%83%81&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;속도 향상&lt;/font&gt;&lt;/a&gt;은 &lt;a title=&quot;암달의 법칙&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%94%EB%8B%AC%EC%9D%98_%EB%B2%95%EC%B9%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;암달의 법칙&lt;/font&gt;&lt;/a&gt;에 의해서 그 결과가 결정된다.&lt;/p&gt;
&lt;table id=&quot;toc&quot; class=&quot;toc&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div id=&quot;toctitle&quot;&gt;
&lt;h2&gt;목차&lt;/h2&gt;&lt;span class=&quot;toctoggle&quot;&gt;&lt;font size=&quot;2&quot;&gt;[&lt;/font&gt;&lt;a id=&quot;togglelink&quot; class=&quot;internal&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot; size=&quot;2&quot;&gt;숨기기&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot;&gt;] &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;toclevel-1 tocsection-1&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EB.B0.B0.EA.B2.BD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;배경&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li class=&quot;toclevel-2 tocsection-2&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.95.94.EB.8B.AC.EC.9D.98_.EB.B2.95.EC.B9.99.EA.B3.BC_.EA.B5.AC.EC.8A.A4.ED.83.91.EC.8A.A8.EC.9D.98_.EB.B2.95.EC.B9.99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;1.1&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;암달의 법칙과 구스탑슨의 법칙&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-2 tocsection-3&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.A2.85.EC.86.8D.EC.84.B1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;1.2&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;종속성&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-2 tocsection-4&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EA.B2.BD.EC.9F.81.EC.83.81.ED.83.9C.2C_.EC.83.81.ED.98.B8.EB.B0.B0.EC.A0.9C.2C_.EB.8F.99.EC.A1.B0.ED.99.94.2C_.EB.B3.91.EB.A0.AC.EA.B0.90.EC.86.8D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;1.3&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;경쟁상태, 상호배제, 동조화, 병렬감속&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-2 tocsection-5&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.9E.98.EA.B2.8C_.EB.82.98.EB.88.94.28fine-grained.29.2C_.ED.81.AC.EA.B2.8C_.EB.82.98.EB.88.94.28coarse-grained.29.2C_.EC.B2.98.EC.B9.98_.EA.B3.A4.EB.9E.80_.EB.B3.91.EB.A0.AC.28embarrassingly_parallel.29&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;1.4&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;잘게 나눔(fine-grained), 크게 나눔(coarse-grained), 처치 곤란 병렬(embarrassingly parallel)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-2 tocsection-6&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.9D.BC.EA.B4.80.EC.84.B1_.EB.AA.A8.EB.8D.B8.EB.93.A4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;1.5&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;일관성 모델들&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-2 tocsection-7&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.ED.94.8C.EB.A6.B0.EC.9D.98_.EB.B6.84.EB.A5.98.ED.95.99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;1.6&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;플린의 분류학&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;li class=&quot;toclevel-1 tocsection-8&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC.EC.9D.98_.EC.A2.85.EB.A5.98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;병렬처리의 종류&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li class=&quot;toclevel-2 tocsection-9&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EB.B9.84.ED.8A.B8.EC.88.98.EC.A4.80_.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;2.1&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;비트수준 병렬처리&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-2 tocsection-10&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EB.AA.85.EB.A0.B9.EC.96.B4_.EC.88.98.EC.A4.80_.EB.B3.91.EB.A0.AC_.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;2.2&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;명령어 수준 병렬 처리&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-2 tocsection-11&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.9E.90.EB.A3.8C_.EB.B3.91.EB.A0.AC_.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;2.3&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;자료 병렬 처리&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-2 tocsection-12&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.9E.91.EC.97.85_.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;2.4&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;작업 병렬처리&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;li class=&quot;toclevel-1 tocsection-13&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EA.B0.99.EC.9D.B4_.EB.B3.B4.EA.B8.B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;같이 보기&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-1 tocsection-14&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.B0.B8.EC.A1.B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;참조&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;li class=&quot;toclevel-1 tocsection-15&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.99.B8.EB.B6.80_.EB.A7.81.ED.81.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;외부 링크&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 배경&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EB.B0.B0.EA.B2.BD&quot; class=&quot;mw-headline&quot;&gt;배경&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;전통적으로 컴퓨터 소프트웨어는 직렬 컴퓨팅 방식을 기본으로 작성되어 왔다. 문제를 해결하는 데 있어서 &lt;a title=&quot;알고리즘&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;알고리즘&lt;/font&gt;&lt;/a&gt;은 직렬형 명령들로 이루어졌고 그 명령들은 하나의 &lt;a title=&quot;중앙 처리 장치&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A4%91%EC%95%99_%EC%B2%98%EB%A6%AC_%EC%9E%A5%EC%B9%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;CPU&lt;/font&gt;&lt;/a&gt;에 의해서 실행되었다. 한 명령이 한 번에 하나씩 실행된다. 하나가 끝나면 그 다음 명령이 실행된다. &lt;sup id=&quot;cite_ref-llnltut_4-0&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-llnltut-4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[5]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;병렬 컴퓨팅은 여러 개의 처리 요소(프로세서 등)를 이용하여 한 번에 문제를 해결한다. 이것은 그 문제를 독립적인 부분들로 나눠서 각 처리 요소가 그 부분의 알고리즘들을 한 번에 다른 요소들과 처리를 할 수 있게 하는 것을 가능하게 했다. 그 처리요소들은 여러 자원들을 포함한다. 예를 들면 한 컴퓨터에 있는 멀티프로세서, 여러 네트워크 컴퓨터들, 특수 하드웨어, 아니면 그런 것들을 섞어 쓸 수도 있다.&lt;sup id=&quot;cite_ref-llnltut_4-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-llnltut-4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[5]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;컴퓨터의 &lt;a title=&quot;클럭 속도&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%81%B4%EB%9F%AD_%EC%86%8D%EB%8F%84&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;클럭 속도&lt;/font&gt;&lt;/a&gt;는 1980년도 중반부터 2004년까지 컴퓨터 성능을 향상시키는 데 가장 영향력 있는 요소였다. 프로그램 실행시간은 명령어 수를 명령어 당 평균시간을 곱한 것과 같았는데 클럭수를 늘리면 명령을 실행하는 평균시간은 짧아진다.&lt;/p&gt;
&lt;p&gt;그러나 칩의 전력소모량은P = C × V&lt;sup&gt;2&lt;/sup&gt; × F의 공식에 따른다. P는 전력이고 C는 &lt;a title=&quot;전기용량&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A0%84%EA%B8%B0%EC%9A%A9%EB%9F%89&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;전기용량&lt;/font&gt;&lt;/a&gt; V는 &lt;a title=&quot;전압&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A0%84%EC%95%95&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;전압&lt;/font&gt;&lt;/a&gt;(voltage)이고 F는 주파수(프로세서 속도)를 의미한다.&lt;sup id=&quot;cite_ref-5&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-5&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[6]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; 주파수 수(프로세서 속도)를 높이면 전력 사용량이 늘어난다는 뜻이다. 전력 사용량이 계속 높아가자 결국 &lt;a title=&quot;인텔&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%B8%ED%85%94&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;인텔&lt;/font&gt;&lt;/a&gt;은 2004년 5월에 &lt;a class=&quot;new&quot; title=&quot;테자스와 제이호크 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%85%8C%EC%9E%90%EC%8A%A4%EC%99%80_%EC%A0%9C%EC%9D%B4%ED%98%B8%ED%81%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;테자스와 제이호크&lt;/font&gt;&lt;/a&gt;(Tejas and Jayhawk)를 취소시키기에 이른다. 그 사건은 주파수 척도에 의한 컴퓨터 구조 패러다임이 끝나는 것을 의미하게 된다.&lt;sup id=&quot;cite_ref-6&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-6&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[7]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;무어의 법칙&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%AC%B4%EC%96%B4%EC%9D%98_%EB%B2%95%EC%B9%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;무어의 법칙&lt;/font&gt;&lt;/a&gt;은 매 18에서 24개월 동안 집적도가 두 배씩 늘어난다는 것을 예측하는데,&lt;sup id=&quot;cite_ref-Moore1965paper_7-0&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-Moore1965paper-7&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[8]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; 전력소모량 사건에 계속됐던 예측은 끝이나고 말지만 무어의 법칙은 여전히 유효하다. 주파수 척도는 끝이 났지만 추가적인 트랜지스터들은 추가적인 병렬 컴퓨팅에 쓰이게 된다.&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 암달의 법칙과 구스탑슨의 법칙&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=2&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EC.95.94.EB.8B.AC.EC.9D.98_.EB.B2.95.EC.B9.99.EA.B3.BC_.EA.B5.AC.EC.8A.A4.ED.83.91.EC.8A.A8.EC.9D.98_.EB.B2.95.EC.B9.99&quot; class=&quot;mw-headline&quot;&gt;암달의 법칙과 구스탑슨의 법칙&lt;/span&gt;&lt;/h3&gt;
&lt;dl&gt;
&lt;dd&gt;&lt;img data-autoattach=&quot;success&quot; alt=&quot;&quot; src=&quot;./files/attach/images/109/283/002/a9d32236de206ebceea77189699bd8cd.png&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt; &lt;small&gt;&lt;font size=&quot;2&quot;&gt;이 부분의 본문은 &lt;/font&gt;&lt;a title=&quot;암달의 법칙&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%94%EB%8B%AC%EC%9D%98_%EB%B2%95%EC%B9%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot; size=&quot;2&quot;&gt;암달의 법칙&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot;&gt;입니다.&lt;/font&gt;&lt;/small&gt; 
&lt;dd&gt;&lt;img data-autoattach=&quot;success&quot; alt=&quot;&quot; src=&quot;./files/attach/images/109/283/002/a9d32236de206ebceea77189699bd8cd.png&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt; &lt;small&gt;&lt;font size=&quot;2&quot;&gt;이 부분의 본문은 &lt;/font&gt;&lt;a class=&quot;new&quot; title=&quot;구스탑슨의 법칙 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EA%B5%AC%EC%8A%A4%ED%83%91%EC%8A%A8%EC%9D%98_%EB%B2%95%EC%B9%99&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot; size=&quot;2&quot;&gt;구스탑슨의 법칙&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot;&gt;입니다.&lt;/font&gt;&lt;/small&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;div class=&quot;thumb tright&quot;&gt;
&lt;div style=&quot;WIDTH: 302px&quot; class=&quot;thumbinner&quot;&gt;&lt;a class=&quot;image&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:AmdahlsLaw.svg&quot; target=&quot;_blank&quot;&gt;&lt;img data-autoattach=&quot;success&quot; class=&quot;thumbimage&quot; alt=&quot;&quot; src=&quot;./files/attach/binaries/109/283/002/ff25e57a826322bf46bb35a1e2b798c8&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt; 
&lt;div class=&quot;thumbcaption&quot;&gt;
&lt;div class=&quot;magnify&quot;&gt;&lt;a class=&quot;internal&quot; title=&quot;실제 크기로&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:AmdahlsLaw.svg&quot; target=&quot;_blank&quot;&gt;&lt;img data-autoattach=&quot;download-failure&quot; alt=&quot;&quot; src=&quot;http://bits.wikimedia.org/skins-1.18/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a title=&quot;암달의 법칙&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%94%EB%8B%AC%EC%9D%98_%EB%B2%95%EC%B9%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;암달의 법칙&lt;/font&gt;&lt;/a&gt;을 그림으로 표현했다. 병렬화로 인한 프로그램의 속도 향상은 프로그램이 얼마나 병렬화 되어있느냐에 제한되어있다. 예를 들면 90%의 프로그램이 병렬화될 수 있다면 이론적으로 병렬 컴퓨팅을 사용한 속도 향상은 몇 개의 프로세서를 쓰던지 10배의 속도까지만 향상시킬 수 있다.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;병렬화로 인한 속도 향상중 제일 좋은 것은 역시 선형적 결과다. 프로세서 수를 두 배로 늘리면 두 배 역할을 해서 실행시간을 절반으로 줄이고 프로세서 수를 또 두 배로 늘리면 또 실행시간이 절반으로 줄어든다. 그런데 아주 적은수의 병렬 알고리즘만이 최적의 속도 향상을 달성했다. 대부분은 그저 비슷한 선형적 속도 향상을 적은 수의 처리요소(프로세서)로 달성했을 뿐이다. 그것들은 처리 요소들의 숫자가 많아질수록 효과가 적어진다.&lt;/p&gt;
&lt;p&gt;병렬 컴퓨팅 기반에서 잠재적인 속도 향상 알고리즘인 암달의 법칙은 1960년대에 &lt;a class=&quot;new&quot; title=&quot;진 암달 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%A7%84_%EC%95%94%EB%8B%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;진 암달&lt;/font&gt;&lt;/a&gt;에 의해서 만들어졌다.&lt;sup id=&quot;cite_ref-8&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[9]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; 병렬화할 수 없는 작은 부분의 프로그램은 전체적인 병렬화에 영향(제한)을 가져온다는 것이었다. 수학적이나 공학적 문제들은 전통적으로 몇 가지 병렬화된 부분과 병렬화되지 않은 부분으로 구성되게 된다. 이 관계는 아래와 같은 공식으로 나타나게 된다.&lt;/p&gt;
&lt;dl&gt;
&lt;dd&gt;&lt;img data-autoattach=&quot;success&quot; class=&quot;tex&quot; alt=&quot;S = \frac{1}{1 - P}&quot; src=&quot;./files/attach/images/109/283/002/ecfa2a8958000b20acb0f3ffe78061f7.png&quot; /&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;여기서 &lt;i&gt;S&lt;/i&gt;는 프로그램의 속도 향상을, &lt;i&gt;P&lt;/i&gt;는 병렬화 가능한 분수를 의미한다. 만약 프로그램의 10%가 순차적 부분이라면 우리는 몇 개의 프로세서를 추가하든 간에 10배 이상 속도를 높일 수가 없다. 이것이 실용적으로 병렬실행 유닛들을 추가할 수 있는 한계이다. 순차적 부분의 제한으로 작업을 더 이상 나눌 수 없게 될 때 응용 프로그램들은 그 이상 빠른 결과를 만들 수 없게 된다. 인월미신의 예를 인용하자면 “임산부가 아무리 많아도 아이를 낳는 데에는 9개월이 걸린다.”&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;new&quot; title=&quot;구스탑슨의 법칙 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EA%B5%AC%EC%8A%A4%ED%83%91%EC%8A%A8%EC%9D%98_%EB%B2%95%EC%B9%99&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;구스탑슨의 법칙&lt;/font&gt;&lt;/a&gt;은 컴퓨터 공학의 또 다른 법칙인데, 암달의 법칙과는 밀접한 관계가 있다. 이 공식은 다음과 같다:&lt;/p&gt;
&lt;dl&gt;
&lt;dd&gt;&lt;img data-autoattach=&quot;success&quot; class=&quot;tex&quot; alt=&quot; S(P) = P - \alpha(P-1) \, &quot; src=&quot;./files/attach/images/109/283/002/da84b6158df6ad18811402875f03306d.png&quot; /&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;div class=&quot;thumb tright&quot;&gt;
&lt;div style=&quot;WIDTH: 402px&quot; class=&quot;thumbinner&quot;&gt;&lt;a class=&quot;image&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:Optimizing-different-parts.svg&quot; target=&quot;_blank&quot;&gt;&lt;img data-autoattach=&quot;success&quot; class=&quot;thumbimage&quot; alt=&quot;&quot; src=&quot;./files/attach/binaries/109/283/002/421629a0ffc329d7f1bde0d1eb31d241&quot; width=&quot;400&quot; height=&quot;139&quot; /&gt;&lt;/a&gt; 
&lt;div class=&quot;thumbcaption&quot;&gt;
&lt;div class=&quot;magnify&quot;&gt;&lt;a class=&quot;internal&quot; title=&quot;실제 크기로&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:Optimizing-different-parts.svg&quot; target=&quot;_blank&quot;&gt;&lt;img data-autoattach=&quot;download-failure&quot; alt=&quot;&quot; src=&quot;http://bits.wikimedia.org/skins-1.18/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; /&gt;&lt;/a&gt;&lt;/div&gt;작업이A하고 B, 두 개의 독립적인 부분으로 되어있다고 가정하자, B는 전체 계산중에 대충 25%정도 시간을 차지한다. 프로그래머가 노력해서 이 부분을 5배 빠르게 만들었다. 그러나 이것은 전체 계산을 봤을 때에는 그냥 약간의 시간 감소에 불과하다. 반대로 A 부분을 2배로 만들면 B 부분을 빠르게 만드는 것보다 훨씬 더 효과가 있다 B를 5배 빠르게 만들었다고 해도 말이다.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;P&lt;/i&gt;는 프로세서 수고 &lt;i&gt;S&lt;/i&gt;는 속도 향상. &lt;i&gt;α&lt;/i&gt;는 비 병렬 부분이다.&lt;sup id=&quot;cite_ref-9&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[10]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; 암달의 법칙은 문제가 고정된 크기라는 것과 순차적 부분을 독립적인 프로세서들이라고 가정한다. 구스탑슨의 법칙은 그런 가정을 하지 않는다.&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 종속성&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=3&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EC.A2.85.EC.86.8D.EC.84.B1&quot; class=&quot;mw-headline&quot;&gt;종속성&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class=&quot;new&quot; title=&quot;병렬 알고리즘 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;병렬 알고리즘&lt;/font&gt;&lt;/a&gt;은 &lt;a class=&quot;new&quot; title=&quot;자료 종속성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%90%EB%A3%8C_%EC%A2%85%EC%86%8D%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;자료 종속성&lt;/font&gt;&lt;/a&gt;을 이해하는 것이 기본이 된다. 어떤 프로그램도 가장 길게 연결되어 있는 종속적(비독립) 계산보다 빠르게 실행될 수 없다. (&lt;a title=&quot;크리티컬 패스 분석법&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%81%AC%EB%A6%AC%ED%8B%B0%EC%BB%AC_%ED%8C%A8%EC%8A%A4_%EB%B6%84%EC%84%9D%EB%B2%95&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;크리티컬 패스&lt;/font&gt;&lt;/a&gt;라고도 함) 이는 계산들이 이전 계산에 종속되어 있으면 계산은 그 차례를 지켜야 한다는 것을 뜻한다. 그러나 대부분 알고리즘들은 그런 긴 종속의 연결을 포함하지 않는다. 일반적인 병렬에서는 비종속적인(독립적인) 계산을 실행할 가능성이 많다.&lt;/p&gt;
&lt;p&gt;P&lt;sub&gt;i&lt;/sub&gt; 와 P&lt;sub&gt;j&lt;/sub&gt; 두 프로그램 조각들이 있다고 하자. 번스타인 상태&lt;sup id=&quot;cite_ref-10&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-10&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[11]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;는 두 개의 독립적이고 병렬적으로 실행될 수 있을 때를 설명한다. I&lt;sub&gt;i&lt;/sub&gt; 는 P&lt;sub&gt;i&lt;/sub&gt;의 입력 변수고 Oi는 출력 변수라고 하고 P&lt;sub&gt;j&lt;/sub&gt; 도 같이 그렇다고 하자. 만약 다음을 만족시키면 P&lt;sub&gt;i&lt;/sub&gt;와 P&lt;sub&gt;j&lt;/sub&gt;는 독립적이다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;img data-autoattach=&quot;success&quot; class=&quot;tex&quot; alt=&quot; I_j \cap O_i  =  \varnothing, \, &quot; src=&quot;./files/attach/images/109/283/002/fb5941ac9a06b1dc8fd45eb071ebe68c.png&quot; /&gt; 
&lt;li&gt;&lt;img data-autoattach=&quot;success&quot; class=&quot;tex&quot; alt=&quot; I_i \cap O_j  =  \varnothing, \, &quot; src=&quot;./files/attach/images/109/283/002/de4adb4b75a1cbb73ffc9b2c643897d3.png&quot; /&gt; 
&lt;li&gt;&lt;img data-autoattach=&quot;success&quot; class=&quot;tex&quot; alt=&quot; O_i \cap O_j  = \varnothing. \, &quot; src=&quot;./files/attach/images/109/283/002/57b66780781d741e127e5cd95e9aa7ca.png&quot; /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;첫번째 상태의 위반은 종속성 흐름(flow dependency) 을 야기한다. 첫번째 문(文)을 일치시키는 것은 두 번째 문이 작성한 결과를 만든다. 두 번째 상태는 &lt;a class=&quot;new&quot; title=&quot;대 종속성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%8C%80_%EC%A2%85%EC%86%8D%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;대 종속성&lt;/font&gt;&lt;/a&gt;(anti-dependency) 상태를 의미한다. 첫번째 문이 두 번째 문에 의해 필요가 된 변수를 덮어쓸 때 세 번째와 마지막 상태는 출력의 독립을 의미하게 된다. 두 개의 문들이 같은 장소에서 작성할 때 마지막 결과는 논리적으로 반드시 마지막으로 실행됐던 명령이 되어야 한다. &lt;sup id=&quot;cite_ref-11&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-11&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[12]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;아래 함수는 몇가지 종속성을 보여준다.&lt;/p&gt;&lt;pre&gt;1: function Dep(a, b)
2:    c := a·b
3:    d := 2·c
4: end function
&lt;/pre&gt;
&lt;p&gt;Dep 함수 세 번째 줄은 두 번째 줄이 실행되기 전에는 실행될 수 없다. 왜냐하면 세 번째 줄은 두 번째줄의 결과에 의해서 실행되야 하기 때문이다. 이것은 첫번째 상태를 위반한거다. 즉, 종속성 흐름을 야기시킨다.&lt;/p&gt;&lt;pre&gt;1: function NoDep(a, b)
2:      c := a·b
3:      d := 2·b
4:      e := a+b
5: end function
&lt;/pre&gt;
&lt;p&gt;이 예에서 명령어 간에 종속성은 없다, 따라서 이것들은 병렬로 처리할 수 있다.&lt;/p&gt;
&lt;p&gt;번스타인의 상태는 다른 프로세스들 간에 메모리 공유를 허용하지 않는다. 그 때문에 서로 접근할 수 있게 만드는 방법이 필요할지도 모른다. 예를 들면 &lt;a title=&quot;세마포어&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;세마포어&lt;/font&gt;&lt;/a&gt;나 &lt;a class=&quot;new&quot; title=&quot;배리어 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B0%B0%EB%A6%AC%EC%96%B4&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;배리어&lt;/font&gt;&lt;/a&gt;나 아니면 다른 &lt;a title=&quot;동기화&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8F%99%EA%B8%B0%ED%99%94&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;동기화&lt;/font&gt;&lt;/a&gt; 방법들 말이다.&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 경쟁상태, 상호배제, 동조화, 병렬감속&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EA.B2.BD.EC.9F.81.EC.83.81.ED.83.9C.2C_.EC.83.81.ED.98.B8.EB.B0.B0.EC.A0.9C.2C_.EB.8F.99.EC.A1.B0.ED.99.94.2C_.EB.B3.91.EB.A0.AC.EA.B0.90.EC.86.8D&quot; class=&quot;mw-headline&quot;&gt;경쟁상태, 상호배제, 동조화, 병렬감속&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;병렬 프로그램에서 하위 작업들은 스레드라고 불리기도 한다. 몇몇 병렬 컴퓨터 구조는 작고 경량화된 버전의 스레드인 파이버를 이용하기도 한고 큰 버전으로는 프로세스 라고도 한다. 그러나 “스레드”는 일반적으로 하위 작업을 가리키는 단어로 해석된다. 스레드들은 자기들끼리 공유되는 몇몇 변수들을 갱신할 필요가 있다. 두 프로그램들 사이의 명령어들은 아마 끼워넣을 지도 모른다. 예를 들자면 아래 프로그램을 보자.&lt;/p&gt;
&lt;table class=&quot;wikitable&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;스레드 A&lt;/td&gt;
&lt;td&gt;스레드 B&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1A: 변수 V를 읽는다&lt;/td&gt;
&lt;td&gt;1B: 변수 V를 읽는다&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2A: 변수 V에 1 을 추가한다&lt;/td&gt;
&lt;td&gt;2B: 변수 V에 1 을 추가한다&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3A: 변수 V를 써넣는다&lt;/td&gt;
&lt;td&gt;3B: 변수 V를 써넣는다&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;만약 명령어 1B가 1A과 3A 사이에서 실행되었다거나 1A가 1B나 3B 사이에서 실행되었다면 프로그램은 잘못된 정보를 만들게 된다. 이것을 바로 “경쟁 상태” 라고 한다. 프로그래머는 반드시 &lt;a class=&quot;new&quot; title=&quot;락 (컴퓨터 과학) (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%9D%BD_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;락&lt;/font&gt;&lt;/a&gt;을 사용해서 &lt;a title=&quot;상호 배제&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%83%81%ED%98%B8_%EB%B0%B0%EC%A0%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;상호 배제&lt;/font&gt;&lt;/a&gt;를 해야 한다. 락은 한 개의 스레드가 락이 풀리기 전까지 변수를 제어하고 다른 스레드가 읽거나 쓰는 것을 막는 프로그래밍 언어 구조체다. 스레드는 락을 &lt;a title=&quot;임계 구역&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9E%84%EA%B3%84_%EA%B5%AC%EC%97%AD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;임계 구역&lt;/font&gt;&lt;/a&gt; (몇몇 변수를 접근할 수 있게 허용해 주는 프로그램 구역) 내에서 자유롭게 실행할 수 있게 만든다. 그리고 다 끝나면 잠금을 해제한다. 따라서 올바른 프로그램 실행을 보장시켜준다. 위의 프로그램을 락을 사용해서 다시 작성하면 다음과 같다.&lt;/p&gt;
&lt;table class=&quot;wikitable&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;스레드 A&lt;/td&gt;
&lt;td&gt;스레드 B&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1A: 변수V 를 잠금&lt;/td&gt;
&lt;td&gt;1B: 변수V 를 잠금&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2A: 변수V 를 읽음&lt;/td&gt;
&lt;td&gt;2B: 변수V 를 읽음&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3A: 변수V 에 1 추가&lt;/td&gt;
&lt;td&gt;3B: 변수V 에 1 추가&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4A: 변수 V를 써넣는다&lt;/td&gt;
&lt;td&gt;4B: 변수 V를 써넣는다&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5A: 변수V 를 잠금해제&lt;/td&gt;
&lt;td&gt;5B: 변수V 를 잠금해제&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;다른 스레드가 &lt;a class=&quot;new&quot; title=&quot;락 아웃 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%9D%BD_%EC%95%84%EC%9B%83&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;락 아웃&lt;/font&gt;&lt;/a&gt;( V가 다시 풀릴 때까지 진행하지 못하게 함)될 때 한 스레드는 변수V를 성공적으로 잠궜다. 이것은 프로그램이 정상적으로 실행되는 것을 보장한다. 잠금은 프로그램이 정상적으로 실행되는 것을 반드시 보장하지만 프로그램 속도를 느리게 할 수도 있다.&lt;/p&gt;
&lt;p&gt;여러 개의 변수들을 비&lt;a title=&quot;원자성&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9B%90%EC%9E%90%EC%84%B1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;원자성&lt;/font&gt;&lt;/a&gt; 을 사용해서 잠그면 &lt;a title=&quot;교착 상태&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B5%90%EC%B0%A9_%EC%83%81%ED%83%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;교착 상태&lt;/font&gt;&lt;/a&gt;에 빠질 수도 있다. 원자성 락은 한꺼번에 여러 개의 변수를 잠근다. 만약 전부다 잠글수 없다면 아무것도 잠그지 않는다. 만약 두 개의 스레드들이 서로 같은 두 변수들을 비원자성을 사용해서 잠가야 한다면 한 개의 스레드는 하나를 잠글지도 모르고 그러면 두 번째 스레드는 두 번째 변수를 잠가야 한다. 이 경우 두 스레드 다 잠그지 않을것이다. 그리고 교착 상태로 이어진다.&lt;/p&gt;
&lt;p&gt;많은 병렬 프로그램들이 하위작업으로 동기화를 필수로 한다. &lt;a class=&quot;new&quot; title=&quot;배리어 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B0%B0%EB%A6%AC%EC%96%B4&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;배리어&lt;/font&gt;&lt;/a&gt; 는 그 작업에 필요한데, 배리어는 원래 소프트웨어 락에 포함 (implement) 되어 사용된다. 한 클래스의 알고리즘들인 &lt;a class=&quot;new&quot; title=&quot;비차단 동기화 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B9%84%EC%B0%A8%EB%8B%A8_%EB%8F%99%EA%B8%B0%ED%99%94&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;비차단 동기화&lt;/font&gt;&lt;/a&gt; (lock-free와 wait-free 알고리즘)는 모두 락과 배리어의 사용을 피한다. 그러나 이 접근은 일반적으로 포함시키기 어렵고 정확한 디자인의 자료구조를 요구하게 된다.&lt;/p&gt;
&lt;p&gt;모든 병렬화가 속도 향상을 시키진 않는다. 일반적으로 스레드들을 나누면 나눌수록 그 스레드들은 서로 의사소통 하는 데 시간을 더 증가시킨다. 결국 의사소통에 의한 문제를 해결하기 위해서 간접적인 시간소모를 해야하고 그 이상의 병렬화는(부하를 나누기 위해 스레드들을 나눌 때) 실행시간을 단축시키기는 커녕 늘리게 된다. 이것을 &lt;a class=&quot;new&quot; title=&quot;병렬 감속 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EA%B0%90%EC%86%8D&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;병렬 감속&lt;/font&gt;&lt;/a&gt;이라고 한다.&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 잘게 나눔(fine-grained), 크게 나눔(coarse-grained), 처치 곤란 병렬(embarrassingly parallel)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=5&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EC.9E.98.EA.B2.8C_.EB.82.98.EB.88.94.28fine-grained.29.2C_.ED.81.AC.EA.B2.8C_.EB.82.98.EB.88.94.28coarse-grained.29.2C_.EC.B2.98.EC.B9.98_.EA.B3.A4.EB.9E.80_.EB.B3.91.EB.A0.AC.28embarrassingly_parallel.29&quot; class=&quot;mw-headline&quot;&gt;잘게 나눔(fine-grained), 크게 나눔(coarse-grained), 처치 곤란 병렬(embarrassingly parallel)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;응용 프로그램들은 가끔 얼마나 자주 하위 작업들이 동기화 되나 혹은 서로 통신해야 하냐에 따라서 분류가 나뉘기도 한다. 만약 병렬 응용프로그램의 하위 작업들이 초당 통신을 많이 해야 하면 잘게 나뉘었다고 하고 초당 통신을 많이 안해도 되면 크게 나뉘었다고 한다. 그리고 만약 아주 가끔 통신하거나 아예 하지 않는다면 &lt;a title=&quot;처치 곤란 병렬&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%B2%98%EC%B9%98_%EA%B3%A4%EB%9E%80_%EB%B3%91%EB%A0%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;처치 곤란 병렬&lt;/font&gt;&lt;/a&gt; 이라고 한다. 처치 곤란 병렬 응용 프로그램은 가장 쉬운 병렬화로 알려져 있다.&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 일관성 모델들&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=6&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EC.9D.BC.EA.B4.80.EC.84.B1_.EB.AA.A8.EB.8D.B8.EB.93.A4&quot; class=&quot;mw-headline&quot;&gt;일관성 모델들&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;병렬 프로그래밍 언어와 병렬 컴퓨터들은 반드시 &lt;a class=&quot;new&quot; title=&quot;일관성 모델 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9D%BC%EA%B4%80%EC%84%B1_%EB%AA%A8%EB%8D%B8&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;일관성 모델&lt;/font&gt;&lt;/a&gt; (메모리 모델이라고도 불린다) 을 가지고 있어야 한다. 일관성 모델이란 &lt;a class=&quot;mw-redirect&quot; title=&quot;컴퓨터 메모리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EB%A9%94%EB%AA%A8%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴퓨터 메모리&lt;/font&gt;&lt;/a&gt; 위에서 어떻게 연산들을 할 것인지와 어떻게 결과들을 만들것인지 규칙을 정의하는 것이다.&lt;/p&gt;
&lt;p&gt;일관성 모델 중에는 &lt;a title=&quot;레슬리 램포트&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A0%88%EC%8A%AC%EB%A6%AC_%EB%9E%A8%ED%8F%AC%ED%8A%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;레슬리 램포트&lt;/font&gt;&lt;/a&gt;의 &lt;a class=&quot;new&quot; title=&quot;순차 일관성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%88%9C%EC%B0%A8_%EC%9D%BC%EA%B4%80%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;순차 일관성&lt;/font&gt;&lt;/a&gt; 모델 (sequential consistency) 이라는 것이 있다. 순차 일관성이란 병렬 프로그램 실행시 순차적 프로그램에서 나오는 결과와 똑같이 만드는 병렬 프로그램의 특성이다. 특히 만약에 “…어떤 실행에서의 결과가 모든 프로세서들의 연산이 어떤 순차적인 차례로 실행되거나 그 연산들의 각 독립적인 프로세서가 그 프로그램에 의해 보여주는 순서가 똑같다면” 프로그램은 순차적으로 모순이 없다.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;new&quot; title=&quot;소프트웨어 트랜잭셔널 메모리 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%94%EB%84%90_%EB%A9%94%EB%AA%A8%EB%A6%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;소프트웨어 트랜잭셔널 메모리&lt;/font&gt;&lt;/a&gt; (Software transactional memory (이하 STM)) 는 흔한 방식의 일관성 모델이다. STM은 &lt;a title=&quot;데이터베이스 관리 시스템&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%EA%B4%80%EB%A6%AC_%EC%8B%9C%EC%8A%A4%ED%85%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;데이터베이스 이론&lt;/font&gt;&lt;/a&gt;에서 &lt;a class=&quot;new&quot; title=&quot;원자 트랜잭션 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9B%90%EC%9E%90_%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;원자 트랜잭션&lt;/font&gt;&lt;/a&gt;의 컨셉과 그것을 메모리 접근에 적용한걸 가져온 것이다.&lt;/p&gt;
&lt;p&gt;수학적으로 이런 모델들은 여러가지 방법으로 표현될 수 있다. 1962년 칼 아담 페트리의 박사 논문으로 소 개된 &lt;a class=&quot;new&quot; title=&quot;페트리 넷 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8E%98%ED%8A%B8%EB%A6%AC_%EB%84%B7&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;페트리 넷&lt;/font&gt;&lt;/a&gt;은 일찍이 일관성 모델들을 체계적으로 분류하는걸 시도했던 사례다. 자료흐름 이론(dataflow theory) 은 그것을 기반으로 만들어졌고 자료흐름 구조 (Dataflow architectures) 는 자료흐름 이론의 아이디어들을 물리적인 방법에 의해 만들어졌다. 1970년도 후반에 시작된 &lt;a class=&quot;new&quot; title=&quot;통신 시스템 미적분 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%86%B5%EC%8B%A0_%EC%8B%9C%EC%8A%A4%ED%85%9C_%EB%AF%B8%EC%A0%81%EB%B6%84&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;통신 시스템 미적분&lt;/font&gt;&lt;/a&gt; (Calculus of Communicating System) 이나 &lt;a class=&quot;new&quot; title=&quot;소통 순차적 프로세스 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%86%8C%ED%86%B5_%EC%88%9C%EC%B0%A8%EC%A0%81_%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;소통 순차적 프로세스&lt;/font&gt;&lt;/a&gt; (Communicating Sequential Processes)들 같은 &lt;a class=&quot;new&quot; title=&quot;프로세스 미적분 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EB%AF%B8%EC%A0%81%EB%B6%84&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;프로세스 미적분&lt;/font&gt;&lt;/a&gt; (process calculi)들이 구성요소들의 상호 통합 이라는 대수적 논리에 의해서 개발될 수 있었다. 좀 더 최근에는 &lt;a class=&quot;new&quot; title=&quot;파이-미적분 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8C%8C%EC%9D%B4-%EB%AF%B8%EC%A0%81%EB%B6%84&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;파이-미적분&lt;/font&gt;&lt;/a&gt; 같은 미적분 들이 동적 기하학에 대한 성능 향상을 위해 그 프로세스에 추가되었다. 램포트의 &lt;a class=&quot;new&quot; title=&quot;TLA+ (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=TLA%2B&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;TLA+&lt;/font&gt;&lt;/a&gt; 같은 논리들과 &lt;a title=&quot;대각합&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8C%80%EA%B0%81%ED%95%A9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;대각합&lt;/font&gt;&lt;/a&gt; (traces)이나 &lt;a class=&quot;new&quot; title=&quot;액터 이벤트 다이어그램 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%95%A1%ED%84%B0_%EC%9D%B4%EB%B2%A4%ED%8A%B8_%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;액터 이벤트 다이어그램&lt;/font&gt;&lt;/a&gt; (Actor event diagrams) 같은 수학적 모델들이 동시 행위 시스템의 행동을 설명하기 위해서 개발됐다.&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 플린의 분류학&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=7&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.ED.94.8C.EB.A6.B0.EC.9D.98_.EB.B6.84.EB.A5.98.ED.95.99&quot; class=&quot;mw-headline&quot;&gt;플린의 분류학&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class=&quot;new&quot; title=&quot;마이클 J. 플린 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A7%88%EC%9D%B4%ED%81%B4_J._%ED%94%8C%EB%A6%B0&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;마이클 J. 플린&lt;/font&gt;&lt;/a&gt;은 가장 쉬운 컴퓨터와 프로그램 병렬(과 순차) 분류 시스템 중에 하나를 만들었다. 이것은 플린의 분류학(&lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;&lt;a title=&quot;영어&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%98%81%EC%96%B4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot; size=&quot;2&quot;&gt;영어&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot;&gt;:&lt;/font&gt;&lt;/span&gt; &lt;span lang=&quot;en&quot; xml:lang=&quot;en&quot;&gt;Flynn&#039;s taxonomy&lt;/span&gt;)이라고도 알려져 있다. 플린은 프로그램들과 컴퓨터들을 그것이 단일, 아니면 복수의 명령어 셋을 사용하느냐 아니냐 그리고 그 명령으로 단일 아니면 복수의 데이터 들을 연산하는지 여부에 따라서 분류를 했다.&lt;/p&gt;
&lt;table style=&quot;TEXT-ALIGN: center; MARGIN: 0px 0px 1em 1em; FLOAT: right; CLEAR: right&quot; class=&quot;wikitable&quot;&gt;
&lt;caption&gt;&lt;b&gt;&lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.ED.94.8C.EB.A6.B0.EC.9D.98_.EB.B6.84.EB.A5.98.ED.95.99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;플린의 분류학&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;&lt;/caption&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;&lt;font color=&quot;#0645ad&quot;&gt;&lt;/font&gt;&lt;/th&gt;
&lt;th&gt;단일&lt;br /&gt;명령어&lt;/th&gt;
&lt;th&gt;복수&lt;br /&gt;명령어&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;단일&lt;br /&gt;자료&lt;/th&gt;
&lt;td&gt;&lt;a title=&quot;SISD&quot; href=&quot;http://ko.wikipedia.org/wiki/SISD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SISD&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a title=&quot;MISD&quot; href=&quot;http://ko.wikipedia.org/wiki/MISD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MISD&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;복수&lt;br /&gt;자료&lt;/th&gt;
&lt;td&gt;&lt;a title=&quot;SIMD&quot; href=&quot;http://ko.wikipedia.org/wiki/SIMD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SIMD&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a title=&quot;MIMD&quot; href=&quot;http://ko.wikipedia.org/wiki/MIMD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MIMD&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;TEXT-ALIGN: center; BACKGROUND: rgb(204,204,221)&quot; colspan=&quot;3&quot;&gt;&lt;span style=&quot;WHITE-SPACE: nowrap; FONT-SIZE: smaller; FONT-WEIGHT: normal&quot; class=&quot;noprint plainlinks plainlinksneverexpand&quot;&gt;&lt;a title=&quot;틀:플린의 분류학&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8B%80:%ED%94%8C%EB%A6%B0%EC%9D%98_%EB%B6%84%EB%A5%98%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀을 보기&quot;&gt;&lt;font color=&quot;#0645ad&quot; size=&quot;2&quot;&gt;v&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;2&quot;&gt; &lt;/font&gt;&lt;font size=&quot;1&quot;&gt;&lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt; &lt;/font&gt;&lt;a class=&quot;new&quot; title=&quot;틀토론:플린의 분류학 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8B%80%ED%86%A0%EB%A1%A0:%ED%94%8C%EB%A6%B0%EC%9D%98_%EB%B6%84%EB%A5%98%ED%95%99&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀에 대한 토론&quot;&gt;&lt;font color=&quot;#ba0000&quot; size=&quot;2&quot;&gt;d&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;2&quot;&gt; &lt;/font&gt;&lt;font size=&quot;1&quot;&gt;&lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt; &lt;/font&gt;&lt;a class=&quot;external text&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8B%80:%ED%94%8C%EB%A6%B0%EC%9D%98_%EB%B6%84%EB%A5%98%ED%95%99&amp;action=edit&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀을 편집할 수 있습니다. 단, 저장하기 전에 미리 보기로 결과를 확인하여 주십시오.&quot;&gt;&lt;font color=&quot;#3366bb&quot; size=&quot;2&quot;&gt;e&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;2&quot;&gt; &lt;/font&gt;&lt;font size=&quot;1&quot;&gt;&lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt; &lt;/font&gt;&lt;a class=&quot;external text&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8B%80:%ED%94%8C%EB%A6%B0%EC%9D%98_%EB%B6%84%EB%A5%98%ED%95%99&amp;action=history&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀의 역사를 볼 수 있습니다.&quot;&gt;&lt;font color=&quot;#3366bb&quot; size=&quot;2&quot;&gt;h&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;a title=&quot;SISD&quot; href=&quot;http://ko.wikipedia.org/wiki/SISD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SISD&lt;/font&gt;&lt;/a&gt;(단일명령-단일자료)는 완전히 순차적 프로그램과 같다. &lt;a title=&quot;SIMD&quot; href=&quot;http://ko.wikipedia.org/wiki/SIMD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SIMD&lt;/font&gt;&lt;/a&gt;(단일명령-복수자료)는 반복되는 큰 자료에 대한 연산을 한다. SIMD는 일반적으로 &lt;a class=&quot;mw-redirect&quot; title=&quot;신호처리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%8B%A0%ED%98%B8%EC%B2%98%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;신호처리&lt;/font&gt;&lt;/a&gt; 응용 프로그램들에서 실행된다. &lt;a title=&quot;MISD&quot; href=&quot;http://ko.wikipedia.org/wiki/MISD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MISD&lt;/font&gt;&lt;/a&gt;(복수명령-단일자료)는 거의 쓰이지 않는 분류인데, 컴퓨터 구조들이 이것을 고민하고 있을 때(&lt;a class=&quot;new&quot; title=&quot;시스톨릭 배열 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%8B%9C%EC%8A%A4%ED%86%A8%EB%A6%AD_%EB%B0%B0%EC%97%B4&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;시스톨릭 배열&lt;/font&gt;&lt;/a&gt;같은 것들) 몇몇 응용 프로그램들이 이 분류를 구현시켜냈다. &lt;a title=&quot;MIMD&quot; href=&quot;http://ko.wikipedia.org/wiki/MIMD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MIMD&lt;/font&gt;&lt;/a&gt;(복수명령-복수자료) 프로그램들은 제일 흔한 종류의 병렬 프로그램들이다.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;new&quot; title=&quot;데이비드 A. 패터슨 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%8D%B0%EC%9D%B4%EB%B9%84%EB%93%9C_A._%ED%8C%A8%ED%84%B0%EC%8A%A8&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;데이비드 A. 패터슨&lt;/font&gt;&lt;/a&gt;과 &lt;a class=&quot;new&quot; title=&quot;존 L. 헤네시 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%A1%B4_L._%ED%97%A4%EB%84%A4%EC%8B%9C&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;존 L. 헤네시&lt;/font&gt;&lt;/a&gt;에 따르면 “몇 머신들은 이 카테고리를 여러 개 가질수도 있다, 당연히, 그런데 이 오래된 모델은 살아남는다. 왜냐하면 간단하고 이해하기 쉽기도 하고 처음 배울 때 좋다. 그리고 또 아마 어떤 조직을 넓게 이해하는 데 가장 많이 쓰였기 때문이다.”&lt;sup id=&quot;cite_ref-12&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-12&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[13]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 병렬처리의 종류&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC.EC.9D.98_.EC.A2.85.EB.A5.98&quot; class=&quot;mw-headline&quot;&gt;병렬처리의 종류&lt;/span&gt;&lt;/h2&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 비트수준 병렬처리&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EB.B9.84.ED.8A.B8.EC.88.98.EC.A4.80_.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC&quot; class=&quot;mw-headline&quot;&gt;비트수준 병렬처리&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a title=&quot;초고밀도 집적회로&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%B4%88%EA%B3%A0%EB%B0%80%EB%8F%84_%EC%A7%91%EC%A0%81%ED%9A%8C%EB%A1%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;초고밀도 집적회로&lt;/font&gt;&lt;/a&gt;(VLSI)의 등장으로 1970년대부터 1986년까지 컴퓨터 칩 제조 기술은 두 배의 워드 크기를 가진 컴퓨터 구조를 만들어 내서 속도 향상을 달성했다. 프로세서의 정보량은 사이클 단위의 조작이 가능했는데&lt;sup id=&quot;cite_ref-13&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-13&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[14]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;, &lt;a class=&quot;mw-redirect&quot; title=&quot;워드 (컴퓨팅)&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9B%8C%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;워드&lt;/font&gt;&lt;/a&gt; 크기를 늘리게 되면 워드 길이보다 큰 변수 위에서 실행되어야 했던 명령어 갯수가 줄어들게 됐다. 예를 들자면, &lt;a title=&quot;8비트&quot; href=&quot;http://ko.wikipedia.org/wiki/8%EB%B9%84%ED%8A%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;8비트&lt;/font&gt;&lt;/a&gt; 프로세서는 반드시 &lt;a title=&quot;16비트&quot; href=&quot;http://ko.wikipedia.org/wiki/16%EB%B9%84%ED%8A%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;16비트&lt;/font&gt;&lt;/a&gt; &lt;a title=&quot;정수&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A0%95%EC%88%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;정수형&lt;/font&gt;&lt;/a&gt; 두 개를 추가시켜야 한다. 프로세서는 반드시 먼저 8 하위 비트를 각 표준 추가 명령어를 정수형으로부터 추가시켜야 하고 그 다음에 하위에서 추가로 ADC 명령과 &lt;a title=&quot;캐리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BA%90%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;캐리&lt;/font&gt;&lt;/a&gt;를 사용하는8 상위 비트를 추가시킨다. 8비트 프로세서는 한 개의 연산을 완료하기 위해서 2개의 명령어들을 필요로 하게 되고, 16비트 프로세서는 1개의 연산을 1개의 명령어로 끝낼수 있게 된다.&lt;/p&gt;
&lt;p&gt;역사적으로 &lt;a title=&quot;4비트&quot; href=&quot;http://ko.wikipedia.org/wiki/4%EB%B9%84%ED%8A%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;4비트&lt;/font&gt;&lt;/a&gt; 마이크로 프로세서들은 8비트, 16비트 그리고 32비트 마이크로 프로세서들에 의해서 교체됐다. 이 유행은 일반적으로 두 세대를 범용 컴퓨터 표준이 된32비트 프로세서의 등장과 함께 끝나는데, 최근 (2003-2004)엔 &lt;a title=&quot;64비트&quot; href=&quot;http://ko.wikipedia.org/wiki/64%EB%B9%84%ED%8A%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;64비트&lt;/font&gt;&lt;/a&gt; 프로세서들을 가진&lt;a title=&quot;X86-64&quot; href=&quot;http://ko.wikipedia.org/wiki/X86-64&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;x86-64&lt;/font&gt;&lt;/a&gt; 구조들이 등장하면서 표준이 된다.&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 명령어 수준 병렬 처리&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=10&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EB.AA.85.EB.A0.B9.EC.96.B4_.EC.88.98.EC.A4.80_.EB.B3.91.EB.A0.AC_.EC.B2.98.EB.A6.AC&quot; class=&quot;mw-headline&quot;&gt;명령어 수준 병렬 처리&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;컴퓨터 프로그램은 명령어들의 흐름이 프로세서에 의해서 실행되는걸 바탕으로 한다. 이 명령어들은 &lt;a title=&quot;비순차적 명령어 처리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B9%84%EC%88%9C%EC%B0%A8%EC%A0%81_%EB%AA%85%EB%A0%B9%EC%96%B4_%EC%B2%98%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;재 순차&lt;/font&gt;&lt;/a&gt;와 결과의 변경 없이 한꺼번에 그룹단위로 병렬실행이 가능했다. 이것을 명령어 수준 병렬화라고도 한다. 이 명령어 수준 병렬화는 80년대 중반부터 90년대 중반까지 컴퓨터 구조를 주름잡았다.&lt;sup id=&quot;cite_ref-14&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-14&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[15]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;현대의 프로세서들은 다단계 &lt;a title=&quot;명령어 파이프라인&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9%EC%96%B4_%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;명령어 파이프라인&lt;/font&gt;&lt;/a&gt;을 가졌다. 파이프라인에서 각 단계는 다른 행동을 하는 같은 단계의 명령어를 실행하는 프로세서와 일치시킨다. N 스테이지 파이프라인은 N 개 만큼의 다른 명령어들을 다른 완료된 단계에서 가질수 있다. 파이프라인된 프로세서의 정석은 &lt;a title=&quot;RISC&quot; href=&quot;http://ko.wikipedia.org/wiki/RISC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;RISC&lt;/font&gt;&lt;/a&gt; 프로세서다. (다섯 개의 단계 – 명령어 패치, 디코드, 실행, 메모리 접근, 다시 써넣기 (write back) 가 정석이다.) &lt;a title=&quot;펜티엄 4&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8E%9C%ED%8B%B0%EC%97%84_4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;펜티엄 4&lt;/font&gt;&lt;/a&gt; 프로세서는 31단계의 파이프라인을 가지고 있다.&lt;sup id=&quot;cite_ref-15&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-15&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[16]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;파이프라인을 할 때 명령어 수준 병렬화에서 몇 프로세서들은 한 개 이상의 명령어를 한 번에 만들수 있었다. 이것을 &lt;a title=&quot;슈퍼스칼라&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%8A%88%ED%8D%BC%EC%8A%A4%EC%B9%BC%EB%9D%BC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;슈퍼스칼라&lt;/font&gt;&lt;/a&gt; 프로세서라고도 한다. 만약에 &lt;a class=&quot;new&quot; title=&quot;자료종속성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%90%EB%A3%8C%EC%A2%85%EC%86%8D%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;자료종속성&lt;/font&gt;&lt;/a&gt;만 없다면 명령어들은 한꺼번에 합쳐질수 있다. &lt;a class=&quot;new&quot; title=&quot;스코어보딩 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%8A%A4%EC%BD%94%EC%96%B4%EB%B3%B4%EB%94%A9&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;스코어보딩&lt;/font&gt;&lt;/a&gt; (Scoreboarding)과 &lt;a class=&quot;new&quot; title=&quot;토마줄로 알고리즘 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%86%A0%EB%A7%88%EC%A4%84%EB%A1%9C_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;토마줄로 알고리즘&lt;/font&gt;&lt;/a&gt; (스코어보딩과 비슷하지만 &lt;a class=&quot;new&quot; title=&quot;레지스터 리네이밍 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0_%EB%A6%AC%EB%84%A4%EC%9D%B4%EB%B0%8D&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;레지스터 리네이밍&lt;/font&gt;&lt;/a&gt; (Register renaming)을 사용한다) 이 두 가지가 가장 흔한 비 순차적 실행과 명령어 수준 병렬화 기술들이다.&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 자료 병렬 처리&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=11&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EC.9E.90.EB.A3.8C_.EB.B3.91.EB.A0.AC_.EC.B2.98.EB.A6.AC&quot; class=&quot;mw-headline&quot;&gt;자료 병렬 처리&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;자료 병렬화는 &lt;a class=&quot;new&quot; title=&quot;제어문 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%A0%9C%EC%96%B4%EB%AC%B8&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;프로그램 루프&lt;/font&gt;&lt;/a&gt;에 내재된 병렬화다. 프로그램 루프는 병렬로 처리된 다른 컴퓨팅 노드들의 자료를 분산시키는데 초점을 맞춘다. “루프를 병렬시키는 것은 가끔 비슷한 (완전 같을 필요는 없이) 순차 연산이나 큰 자료구조의 요소에서 실행되는 함수들을 실행시키게 한다.”&lt;sup id=&quot;cite_ref-Culler124_16-0&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-Culler124-16&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[17]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; 많은 과학적, 공학적인 응용물들이 자료 병렬화를 보여준다.&lt;/p&gt;
&lt;p&gt;루프가 가지고 있는 종속성은 이전 반복의 하나 이상의 결과에 종속된다. 루프의 종속성은 병렬화 루프에 의해 막힌다. 예를 들면 아래의 &lt;a title=&quot;피보나치 수&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%94%BC%EB%B3%B4%EB%82%98%EC%B9%98_%EC%88%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;피보나치 수&lt;/font&gt;&lt;/a&gt; &lt;a title=&quot;의사코드&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%98%EC%82%AC%EC%BD%94%EB%93%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;의사코드&lt;/font&gt;&lt;/a&gt;를 보자.&lt;/p&gt;&lt;pre&gt;1:    PREV1 := 0
2:    PREV2 := 1
4:    do:
5:       CUR := PREV1 + PREV2
6:       PREV1 := PREV2
7:       PREV2 := CUR
8:    while (CUR &lt; 10)
&lt;/pre&gt;
&lt;p&gt;이 루프는 병렬화할 수 없다. 왜냐하면 CUR 이 각 루프를 도는 동안 그 자신(PREV2)과 PREV1에 종속되기 때문이다. 각 반복이 그 이전 결과에 종속되므로 병렬화할 수 없다. 문제의 크기가 크면 클수록 자료의 병렬화의 유효성은 일반적으로 커진다.&lt;sup id=&quot;cite_ref-Culler125_17-0&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-Culler125-17&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[18]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 작업 병렬처리&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=12&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EC.9E.91.EC.97.85_.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC&quot; class=&quot;mw-headline&quot;&gt;작업 병렬처리&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;작업 병렬화는 병렬 프로그램 “전체적으로 다른 계산들은 같거나 다른 자료들에서 실행될 수 있다.”&lt;sup id=&quot;cite_ref-Culler124_16-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-Culler124-16&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[17]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; 라는 성질을 가지고 있다. 이것을 자료 병렬화와 상반시키면 계산이 같거나 다른 자료들에서 실행될 수 있다. 작업 병렬화는 일반적인 규모의 문제와 함께 측정되지 않는다.&lt;sup id=&quot;cite_ref-Culler125_17-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_note-Culler125-17&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;[18]&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 같이 보기&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=13&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EA.B0.99.EC.9D.B4_.EB.B3.B4.EA.B8.B0&quot; class=&quot;mw-headline&quot;&gt;같이 보기&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;extiw&quot; title=&quot;en:List of important publications in concurrent, parallel, and distributed computing&quot; href=&quot;http://en.wikipedia.org/wiki/List_of_important_publications_in_concurrent,_parallel,_and_distributed_computing&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;List of important publications in concurrent, parallel, and distributed computing&lt;/font&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a class=&quot;extiw&quot; title=&quot;en:List of distributed computing conferences&quot; href=&quot;http://en.wikipedia.org/wiki/List_of_distributed_computing_conferences&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;List of distributed computing conferences&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 참조&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=14&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EC.B0.B8.EC.A1.B0&quot; class=&quot;mw-headline&quot;&gt;참조&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;LIST-STYLE-TYPE: decimal; column-count: 2; -moz-column-count: 2; -webkit-column-count: 2&quot; class=&quot;reflist references-column-count references-column-count-2&quot;&gt;
&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-0&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Almasi, G.S. and A. Gottlieb (1989). &lt;a class=&quot;external text&quot; href=&quot;http://portal.acm.org/citation.cfm?id=1011116.1011127&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;i&gt;&lt;font color=&quot;#3366bb&quot;&gt;Highly Parallel Computing&lt;/font&gt;&lt;/i&gt;&lt;/a&gt;. Benjamin-Cummings publishers, Redwood City, CA. 
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; S.V. Adve et al. (November 2008). &lt;a class=&quot;external text&quot; href=&quot;http://www.upcrc.illinois.edu/　documents/UPCRC_Whitepaper.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;&quot;Parallel Computing Research at Illinois: The UPCRC Agenda&quot;&lt;/font&gt;&lt;/a&gt; (PDF). Parallel@Illinois, University of Illinois at Urbana-Champaign. &quot;The main techniques for these performance benefits – increased clock frequency and smarter but increasingly complex architectures – are now hitting the so-called power wall. The computer industry has accepted that future performance increases must largely come from increasing the number of processors (or cores) on a die, rather than making a single core go faster.&quot; 
&lt;li id=&quot;cite_note-View-Power-2&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-View-Power_2-0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Asanovic, Krste et al. (December 18, 2006). &lt;a class=&quot;external text&quot; href=&quot;http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;pdf &quot;The Landscape of Parallel Computing Research: A View from Berkeley&quot;&lt;/font&gt;&lt;/a&gt; (PDF). University of California, Berkeley. Technical Report No. UCB/EECS-2006-183. &quot;Old [conventional wisdom]: Increasing clock frequency is the primary method of improving processor performance. New [conventional wisdom]: Increasing parallelism is the primary method of improving processor performance ... Even representatives from Intel, a company generally associated with the &#039;higher clock-speed is better&#039; position, warned that traditional approaches to maximizing performance through maximizing clock speed have been pushed to their limit.&quot; 
&lt;li id=&quot;cite_note-3&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-3&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; &lt;a class=&quot;new&quot; title=&quot;David A. Patterson (scientist) (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=David_A._Patterson_(scientist)&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Patterson, David A.&lt;/font&gt;&lt;/a&gt; and &lt;a class=&quot;new&quot; title=&quot;John L. Hennessy (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=John_L._Hennessy&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;John L. Hennessy&lt;/font&gt;&lt;/a&gt; (1998). &lt;i&gt;Computer Organization and Design&lt;/i&gt;, Second Edition, Morgan Kaufmann Publishers, p. 715. &lt;a class=&quot;internal mw-magiclink-isbn&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8A%B9%EC%88%98%EA%B8%B0%EB%8A%A5:%EC%B1%85%EC%B0%BE%EA%B8%B0/1558604286&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;ISBN 1558604286&lt;/font&gt;&lt;/a&gt;. 
&lt;li id=&quot;cite_note-llnltut-4&quot;&gt;↑ &lt;sup&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-llnltut_4-0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;가&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-llnltut_4-1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;나&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; Barney, Blaise. &lt;a class=&quot;external text&quot; href=&quot;http://www.llnl.gov/computing/tutorials/parallel_comp/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Introduction to Parallel Computing&lt;/font&gt;&lt;/a&gt;. Lawrence Livermore National Laboratory. 2007년 11월 9일에 확인. 
&lt;li id=&quot;cite_note-5&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-5&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Rabaey, J. M. (1996). &lt;i&gt;Digital Integrated Circuits&lt;/i&gt;. Prentice Hall, p. 235. &lt;a class=&quot;internal mw-magiclink-isbn&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8A%B9%EC%88%98%EA%B8%B0%EB%8A%A5:%EC%B1%85%EC%B0%BE%EA%B8%B0/0131786091&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;ISBN 0131786091&lt;/font&gt;&lt;/a&gt;. 
&lt;li id=&quot;cite_note-6&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-6&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Flynn, Laurie J. &lt;a class=&quot;external text&quot; href=&quot;http://www.nytimes.com/2004/05/08/business/08chip.html?ex=1399348800&amp;en=98cc44ca97b1a562&amp;ei=5007&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;&quot;Intel Halts Development of 2 New Microprocessors&quot;&lt;/font&gt;&lt;/a&gt;. &lt;i&gt;The New York Times&lt;/i&gt;, May 8, 2004. Retrieved on April 22, 2008. 
&lt;li id=&quot;cite_note-Moore1965paper-7&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-Moore1965paper_7-0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Moore, Gordon E. (1965). &lt;a class=&quot;external text&quot; href=&quot;ftp://download.intel.com/museum/Moores_Law/Articles-Press_Releases/Gordon_Moore_1965_Article.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Cramming more components onto integrated circuits&lt;/font&gt;&lt;/a&gt; (PDF). &lt;i&gt;&lt;a class=&quot;new&quot; title=&quot;Electronics (magazine) (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Electronics_(magazine)&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Electronics Magazine&lt;/font&gt;&lt;/a&gt;&lt;/i&gt; 4. 2006년 11월 11일에 확인. 
&lt;li id=&quot;cite_note-8&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Amdahl, G. (April 1967) &quot;The validity of the single processor approach to achieving large-scale computing capabilities&quot;. In &lt;i&gt;Proceedings of AFIPS Spring Joint Computer Conference&lt;/i&gt;, Atlantic City, N.J., AFIPS Press, pp. 483–85. 
&lt;li id=&quot;cite_note-9&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; &lt;a class=&quot;external text&quot; href=&quot;http://www.scl.ameslab.gov/Publications/Gus/AmdahlsLaw/Amdahls.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Reevaluating Amdahl&#039;s Law&lt;/font&gt;&lt;/a&gt; (1988). &lt;a class=&quot;new&quot; title=&quot;Communications of the ACM (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Communications_of_the_ACM&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Communications of the ACM&lt;/font&gt;&lt;/a&gt; 31(5), pp. 532–33. 
&lt;li id=&quot;cite_note-10&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-10&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Bernstein, A. J. (October 1966). &quot;Program Analysis for Parallel Processing,&#039; IEEE Trans. on Electronic Computers&quot;. EC-15, pp. 757–62. 
&lt;li id=&quot;cite_note-11&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-11&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Roosta, Seyed H. (2000). &quot;Parallel processing and parallel algorithms: theory and computation&quot;. Springer, p. 114. &lt;a class=&quot;internal mw-magiclink-isbn&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8A%B9%EC%88%98%EA%B8%B0%EB%8A%A5:%EC%B1%85%EC%B0%BE%EA%B8%B0/0387987169&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;ISBN 0387987169&lt;/font&gt;&lt;/a&gt;. 
&lt;li id=&quot;cite_note-12&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-12&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Patterson and Hennessy, p. 748. 
&lt;li id=&quot;cite_note-13&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-13&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; &lt;a class=&quot;new&quot; title=&quot;David Culler (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=David_Culler&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Culler, David E.&lt;/font&gt;&lt;/a&gt;; Jaswinder Pal Singh and Anoop Gupta (1999). &lt;i&gt;Parallel Computer Architecture - A Hardware/Software Approach&lt;/i&gt;. Morgan Kaufmann Publishers, p. 15. &lt;a class=&quot;internal mw-magiclink-isbn&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8A%B9%EC%88%98%EA%B8%B0%EB%8A%A5:%EC%B1%85%EC%B0%BE%EA%B8%B0/1558603433&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;ISBN 1558603433&lt;/font&gt;&lt;/a&gt;. 
&lt;li id=&quot;cite_note-14&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-14&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; Culler et al. p. 15. 
&lt;li id=&quot;cite_note-15&quot;&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-15&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;↑&lt;/font&gt;&lt;/a&gt; &lt;a class=&quot;new&quot; title=&quot;Yale Patt (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Yale_Patt&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Patt, Yale&lt;/font&gt;&lt;/a&gt; (April 2004). &quot;&lt;a class=&quot;external text&quot; href=&quot;http://users.ece.utexas.edu/~patt/Videos/talk_videos/cmu_04-29-04.wmv&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;The Microprocessor Ten Years From Now: What Are The Challenges, How Do We Meet Them?&lt;/font&gt;&lt;/a&gt; (wmv). Distinguished Lecturer talk at &lt;a class=&quot;new&quot; title=&quot;Carnegie Mellon University (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Carnegie_Mellon_University&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Carnegie Mellon University&lt;/font&gt;&lt;/a&gt;. Retrieved on November 7, 2007. 
&lt;li id=&quot;cite_note-Culler124-16&quot;&gt;↑ &lt;sup&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-Culler124_16-0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;가&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-Culler124_16-1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;나&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; Culler et al. p. 124. 
&lt;li id=&quot;cite_note-Culler125-17&quot;&gt;↑ &lt;sup&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-Culler125_17-0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;가&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#cite_ref-Culler125_17-1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;나&lt;/font&gt;&lt;/a&gt;&lt;/sup&gt; Culler et al. p. 125.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;부분 편집: 외부 링크&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85&amp;action=edit&amp;section=15&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;편집&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; &lt;span id=&quot;.EC.99.B8.EB.B6.80_.EB.A7.81.ED.81.AC&quot; class=&quot;mw-headline&quot;&gt;외부 링크&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; href=&quot;http://www.llnl.gov/computing/tutorials/parallel_comp/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Lawrence Livermore National Laboratory: Introduction to Parallel Computing&lt;/font&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a class=&quot;external text&quot; href=&quot;http://www-unix.mcs.anl.gov/dbpp/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Designing and Building Parallel Programs, by Ian Foster&lt;/font&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a class=&quot;external text&quot; href=&quot;http://wotug.ukc.ac.uk/parallel/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Internet Parallel Computing Archive&lt;/font&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a class=&quot;external text&quot; href=&quot;http://dsonline.computer.org/portal/site/dsonline/index.jsp?pageID=dso_level1_home&amp;path=dsonline/topics/parallel&amp;file=index.xml&amp;xsl=generic.xsl&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Parallel processing topic area at IEEE Distributed Computing Online&lt;/font&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a class=&quot;external text&quot; href=&quot;http://www.new-npac.org/projects/cdroms/cewes-1998-05/copywrite/pcw/book.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Parallel Computing Works Free On-line Book&lt;/font&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a class=&quot;external text&quot; href=&quot;http://ark.cdlib.org/ark:/13030/ft0f59n73z/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Frontiers of Supercomputing Free On-line Book Covering topics like algorithms and industrial applications&lt;/font&gt;&lt;/a&gt; 
&lt;li&gt;&lt;a class=&quot;external text&quot; href=&quot;http://www.upcrc.illinois.edu/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#3366bb&quot;&gt;Universal Parallel Computing Research Center&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;table style=&quot;BACKGROUND: white&quot; id=&quot;collapsibleTable0&quot; class=&quot;navbox collapsible autocollapse nowraplinks&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th style=&quot;TEXT-ALIGN: center; WIDTH: 100%&quot; colspan=&quot;2&quot;&gt;&lt;span class=&quot;collapseButton&quot;&gt;[&lt;a id=&quot;collapseButton0&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;보이기&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; 
&lt;div style=&quot;TEXT-ALIGN: left; WIDTH: 6em; FLOAT: left&quot;&gt;&lt;span style=&quot;WHITE-SPACE: nowrap; FONT-SIZE: smaller; FONT-WEIGHT: normal&quot; class=&quot;noprint plainlinks plainlinksneverexpand&quot;&gt;&lt;a title=&quot;틀:컴퓨터 과학&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8B%80:%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀을 보기&quot;&gt;&lt;font color=&quot;#0645ad&quot; size=&quot;1&quot;&gt;v&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;1&quot;&gt; &lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt; &lt;/font&gt;&lt;a title=&quot;틀토론:컴퓨터 과학&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8B%80%ED%86%A0%EB%A1%A0:%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀에 대한 토론&quot;&gt;&lt;font color=&quot;#0645ad&quot; size=&quot;1&quot;&gt;d&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;1&quot;&gt; &lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt; &lt;/font&gt;&lt;a class=&quot;external text&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8B%80:%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99&amp;action=edit&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀을 편집할 수 있습니다. 단, 저장하기 전에 미리 보기로 결과를 확인하여 주십시오.&quot;&gt;&lt;font color=&quot;#3366bb&quot; size=&quot;1&quot;&gt;e&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;1&quot;&gt; &lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt; &lt;/font&gt;&lt;a class=&quot;external text&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8B%80:%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99&amp;action=history&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀의 역사를 볼 수 있습니다.&quot;&gt;&lt;font color=&quot;#3366bb&quot; size=&quot;1&quot;&gt;h&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;a title=&quot;컴퓨터 과학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴퓨터 과학&lt;/font&gt;&lt;/a&gt;의 주요 분야&lt;/th&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;수학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%88%98%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;수학적 기초&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a title=&quot;수리논리학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%88%98%EB%A6%AC%EB%85%BC%EB%A6%AC%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;수리논리학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;집합론&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A7%91%ED%95%A9%EB%A1%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;집합론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;정수론&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A0%95%EC%88%98%EB%A1%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;정수론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;그래프 이론&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%98%ED%94%84_%EC%9D%B4%EB%A1%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;그래프 이론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;형 이론 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%98%95_%EC%9D%B4%EB%A1%A0&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;형 이론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;범주론&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B2%94%EC%A3%BC%EB%A1%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;범주론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;수치 해석&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%88%98%EC%B9%98_%ED%95%B4%EC%84%9D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;수치 해석&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;이산수학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%B4%EC%82%B0%EC%88%98%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;이산수학&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;계산 이론&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0_%EC%9D%B4%EB%A1%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;계산 이론&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a title=&quot;오토마타 이론&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%98%A4%ED%86%A0%EB%A7%88%ED%83%80_%EC%9D%B4%EB%A1%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;오토마타 이론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;계산 가능성 이론&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0_%EA%B0%80%EB%8A%A5%EC%84%B1_%EC%9D%B4%EB%A1%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;계산 가능성 이론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;계산 복잡도 이론&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0_%EB%B3%B5%EC%9E%A1%EB%8F%84_%EC%9D%B4%EB%A1%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;계산 복잡도 이론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;mw-redirect&quot; title=&quot;양자컴퓨터&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%96%91%EC%9E%90%EC%BB%B4%ED%93%A8%ED%84%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;양자 계산 이론&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;알고리즘&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;알고리즘&lt;/font&gt;&lt;/a&gt; &amp; &lt;a title=&quot;자료 구조&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;자료 구조&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a title=&quot;알고리즘&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;알고리즘&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;알고리즘 설계 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98_%EC%84%A4%EA%B3%84&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;알고리즘 설계&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;알고리즘 해석 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98_%ED%95%B4%EC%84%9D&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;알고리즘 해석&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;자료 구조&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;자료 구조&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;계산기하학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0%EA%B8%B0%ED%95%98%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;계산기하학&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;프로그래밍 언어&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;프로그래밍 언어&lt;/font&gt;&lt;/a&gt; &amp; &lt;a title=&quot;컴파일러&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴파일러&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a title=&quot;구문 분석&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B5%AC%EB%AC%B8_%EB%B6%84%EC%84%9D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;구문 분석&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;컴파일러&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴파일러&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;인터프리터&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;인터프리터&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;프로그래밍 언어&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;프로그래밍 언어&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;구조적 프로그래밍&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B5%AC%EC%A1%B0%EC%A0%81_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;구조적 프로그래밍&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;객체 지향 프로그래밍&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;객체 지향 프로그래밍&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;strong class=&quot;selflink&quot;&gt;병렬&lt;/strong&gt; &amp; &lt;a title=&quot;분산 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B6%84%EC%82%B0_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;분산 시스템&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;strong class=&quot;selflink&quot;&gt;병렬 컴퓨팅&lt;/strong&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;컴퓨터 클러스터&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴퓨터 클러스터&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;분산 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B6%84%EC%82%B0_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;분산 컴퓨팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;그리드 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B7%B8%EB%A6%AC%EB%93%9C_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;그리드 컴퓨팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;클라우드 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;클라우드 컴퓨팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;IaaS&quot; href=&quot;http://ko.wikipedia.org/wiki/IaaS&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;IaaS&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;PaaS&quot; href=&quot;http://ko.wikipedia.org/wiki/PaaS&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;PaaS&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;SaaS&quot; href=&quot;http://ko.wikipedia.org/wiki/SaaS&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SaaS&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;소프트웨어 공학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B3%B5%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;소프트웨어 공학&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a title=&quot;요구사항 분석&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD_%EB%B6%84%EC%84%9D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;요구 분석&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;소프트웨어 설계&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EC%84%A4%EA%B3%84&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;소프트웨어 설계&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;컴퓨터 프로그래밍&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴퓨터 프로그래밍&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;형식수법 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%98%95%EC%8B%9D%EC%88%98%EB%B2%95&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;형식수법&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;소프트웨어 테스트&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%ED%85%8C%EC%8A%A4%ED%8A%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;소프트웨어 테스트&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;소프트웨어 개발&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;소프트웨어 개발&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;시스템 아키텍처&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%8B%9C%EC%8A%A4%ED%85%9C_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;시스템 아키텍처&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a title=&quot;컴퓨터 구조&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B5%AC%EC%A1%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴퓨터 아키텍처&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;마이크로아키텍처&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;마이크로아키텍처&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;운영 체제&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9A%B4%EC%98%81_%EC%B2%B4%EC%A0%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;운영 체제&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;통신&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%86%B5%EC%8B%A0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;통신&lt;/font&gt;&lt;/a&gt; &amp; &lt;a title=&quot;컴퓨터 네트워크&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;네트워크&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a class=&quot;new&quot; title=&quot;컴퓨터 오디오 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%BB%B4%ED%93%A8%ED%84%B0_%EC%98%A4%EB%94%94%EC%98%A4&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;컴퓨터 오디오&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;라우팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%9D%BC%EC%9A%B0%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;라우팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;네트워크 토폴로지&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC_%ED%86%A0%ED%8F%B4%EB%A1%9C%EC%A7%80&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;네트워크 토폴로지&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;암호학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%94%ED%98%B8%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;암호학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;차세대 통신망&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%B0%A8%EC%84%B8%EB%8C%80_%ED%86%B5%EC%8B%A0%EB%A7%9D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;차세대 통신망&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;데이터베이스&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;데이터베이스&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a title=&quot;데이터 마이닝&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%A7%88%EC%9D%B4%EB%8B%9D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;데이터 마이닝&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;관계형 데이터베이스&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B4%80%EA%B3%84%ED%98%95_%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;RDBMS&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;SQL&quot; href=&quot;http://ko.wikipedia.org/wiki/SQL&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SQL&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;오라클 데이터베이스&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%98%A4%EB%9D%BC%ED%81%B4_%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;오라클 데이터베이스&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a class=&quot;mw-redirect&quot; title=&quot;인공 지능&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%B8%EA%B3%B5_%EC%A7%80%EB%8A%A5&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;인공 지능&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a class=&quot;new&quot; title=&quot;자동추론 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9E%90%EB%8F%99%EC%B6%94%EB%A1%A0&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;자동추론&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;전산언어학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A0%84%EC%82%B0%EC%96%B8%EC%96%B4%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;전산언어학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;컴퓨터 비전&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EB%B9%84%EC%A0%84&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴퓨터 비전&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;진화 연산&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A7%84%ED%99%94_%EC%97%B0%EC%82%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;진화 연산&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;기계 학습&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B8%B0%EA%B3%84_%ED%95%99%EC%8A%B5&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;기계 학습&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;자연 언어 처리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9E%90%EC%97%B0_%EC%96%B8%EC%96%B4_%EC%B2%98%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;자연 언어 처리&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;로봇공학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A1%9C%EB%B4%87%EA%B3%B5%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;로봇학&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a class=&quot;mw-redirect&quot; title=&quot;컴퓨터 그래픽&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B7%B8%EB%9E%98%ED%94%BD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;컴퓨터 그래픽&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a class=&quot;new&quot; title=&quot;시각화 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%8B%9C%EA%B0%81%ED%99%94&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;시각화&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;영상 처리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%98%81%EC%83%81_%EC%B2%98%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;영상 처리&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;인간과 컴퓨터 상호 작용&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%B8%EA%B0%84%EA%B3%BC_%EC%BB%B4%ED%93%A8%ED%84%B0_%EC%83%81%ED%98%B8_%EC%9E%91%EC%9A%A9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;인간과 컴퓨터 상호 작용&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a class=&quot;new&quot; title=&quot;컴퓨터 접근성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%BB%B4%ED%93%A8%ED%84%B0_%EC%A0%91%EA%B7%BC%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;컴퓨터 접근성&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;사용자 인터페이스&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%82%AC%EC%9A%A9%EC%9E%90_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;사용자 인터페이스&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;착용 컴퓨터&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%B0%A9%EC%9A%A9_%EC%BB%B4%ED%93%A8%ED%84%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;착용 컴퓨터&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;유비쿼터스 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%B9%84%EC%BF%BC%ED%84%B0%EC%8A%A4_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;유비쿼터스 컴퓨팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;가상현실&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81%ED%98%84%EC%8B%A4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;가상현실&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;계산과학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0%EA%B3%BC%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;계산과학&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a title=&quot;인공생명&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%B8%EA%B3%B5%EC%83%9D%EB%AA%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;인공생명&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;생물정보학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%83%9D%EB%AC%BC%EC%A0%95%EB%B3%B4%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;생물정보학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;인지과학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%B8%EC%A7%80%EA%B3%BC%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;인지과학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;계산화학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0%ED%99%94%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;계산화학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;계산론적 신경과학 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EA%B3%84%EC%82%B0%EB%A1%A0%EC%A0%81_%EC%8B%A0%EA%B2%BD%EA%B3%BC%ED%95%99&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;계산론적 신경과학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;계산물리학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0%EB%AC%BC%EB%A6%AC%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;계산물리학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;수치 해석&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%88%98%EC%B9%98_%ED%95%B4%EC%84%9D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;수치 해석&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Symbolic mathematics (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Symbolic_mathematics&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Symbolic mathematics&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a class=&quot;mw-redirect&quot; title=&quot;정보보호&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%A0%95%EB%B3%B4%EB%B3%B4%ED%98%B8&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;정보보호&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a title=&quot;암호학&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%94%ED%98%B8%ED%95%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;암호학&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;물리 보안&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%AC%BC%EB%A6%AC_%EB%B3%B4%EC%95%88&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;물리 보안&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;소프트웨어 보안 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EB%B3%B4%EC%95%88&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;소프트웨어 보안&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;인터넷 보안&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7_%EB%B3%B4%EC%95%88&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;인터넷 보안&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;네트워크 보안&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC_%EB%B3%B4%EC%95%88&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;네트워크 보안&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;해킹&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%95%B4%ED%82%B9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;해킹&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;크래킹&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%81%AC%EB%9E%98%ED%82%B9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;크래킹&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;table style=&quot;BACKGROUND: white&quot; id=&quot;collapsibleTable1&quot; class=&quot;navbox collapsible autocollapse nowraplinks&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th style=&quot;TEXT-ALIGN: center; WIDTH: 100%&quot; colspan=&quot;2&quot;&gt;&lt;span class=&quot;collapseButton&quot;&gt;[&lt;a id=&quot;collapseButton1&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;보이기&lt;/font&gt;&lt;/a&gt;]&lt;/span&gt; 
&lt;div style=&quot;TEXT-ALIGN: left; WIDTH: 6em; FLOAT: left&quot;&gt;&lt;span style=&quot;WHITE-SPACE: nowrap; FONT-SIZE: smaller; FONT-WEIGHT: normal&quot; class=&quot;noprint plainlinks plainlinksneverexpand&quot;&gt;&lt;a title=&quot;틀:병렬 컴퓨팅 주요 분야&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%8B%80:%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85_%EC%A3%BC%EC%9A%94_%EB%B6%84%EC%95%BC&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀을 보기&quot;&gt;&lt;font color=&quot;#0645ad&quot; size=&quot;1&quot;&gt;v&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;1&quot;&gt; &lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt; &lt;/font&gt;&lt;a class=&quot;new&quot; title=&quot;틀토론:병렬 컴퓨팅 주요 분야 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8B%80%ED%86%A0%EB%A1%A0:%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85_%EC%A3%BC%EC%9A%94_%EB%B6%84%EC%95%BC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀에 대한 토론&quot;&gt;&lt;font color=&quot;#ba0000&quot; size=&quot;1&quot;&gt;d&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;1&quot;&gt; &lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt; &lt;/font&gt;&lt;a class=&quot;external text&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8B%80:%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85_%EC%A3%BC%EC%9A%94_%EB%B6%84%EC%95%BC&amp;action=edit&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀을 편집할 수 있습니다. 단, 저장하기 전에 미리 보기로 결과를 확인하여 주십시오.&quot;&gt;&lt;font color=&quot;#3366bb&quot; size=&quot;1&quot;&gt;e&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size=&quot;1&quot;&gt; &lt;span style=&quot;FONT-SIZE: smaller&quot;&gt;•&lt;/span&gt; &lt;/font&gt;&lt;a class=&quot;external text&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%8B%80:%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85_%EC%A3%BC%EC%9A%94_%EB%B6%84%EC%95%BC&amp;action=history&quot; target=&quot;_blank&quot;&gt;&lt;span title=&quot;이 틀의 역사를 볼 수 있습니다.&quot;&gt;&lt;font color=&quot;#3366bb&quot; size=&quot;1&quot;&gt;h&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;strong class=&quot;selflink&quot;&gt;병렬 컴퓨팅&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;일반&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a title=&quot;클라우드 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;클라우드 컴퓨팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;고성능 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%A0%EC%84%B1%EB%8A%A5_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;고성능 컴퓨팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;클러스터 컴퓨팅 시스템 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0_%EC%BB%B4%ED%93%A8%ED%8C%85_%EC%8B%9C%EC%8A%A4%ED%85%9C&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;클러스터 컴퓨팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;분산 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B6%84%EC%82%B0_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;분산 컴퓨팅&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;그리드 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B7%B8%EB%A6%AC%EB%93%9C_%EC%BB%B4%ED%93%A8%ED%8C%85&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;그리드 컴퓨팅&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;병렬화 수준&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EB.B9.84.ED.8A.B8.EC.88.98.EC.A4.80_.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;비트&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EB.AA.85.EB.A0.B9.EC.96.B4_.EC.88.98.EC.A4.80_.EB.B3.91.EB.A0.AC_.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;명령어&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.9E.90.EB.A3.8C_.EB.B3.91.EB.A0.AC_.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;데이터&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.EC.9E.91.EC.97.85_.EB.B3.91.EB.A0.AC.EC.B2.98.EB.A6.AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;테스크&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;스레드&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;스레드&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a class=&quot;new&quot; title=&quot;슈퍼스레딩 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%8A%88%ED%8D%BC%EC%8A%A4%EB%A0%88%EB%94%A9&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;슈퍼스레딩&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;하이퍼스레딩&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%95%98%EC%9D%B4%ED%8D%BC%EC%8A%A4%EB%A0%88%EB%94%A9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;하이퍼스레딩&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;이론&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a title=&quot;암달의 법칙&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%95%94%EB%8B%AC%EC%9D%98_%EB%B2%95%EC%B9%99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;암달의 법칙&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;구스타프손의 법칙 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EA%B5%AC%EC%8A%A4%ED%83%80%ED%94%84%EC%86%90%EC%9D%98_%EB%B2%95%EC%B9%99&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;구스타프손의 법칙&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt; &lt;a class=&quot;new&quot; title=&quot;비용 효과 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B9%84%EC%9A%A9_%ED%9A%A8%EA%B3%BC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;비용 효과&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt; &lt;a class=&quot;new&quot; title=&quot;Karp–Flatt metric (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Karp%E2%80%93Flatt_metric&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Karp–Flatt metric&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Slowdown (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Slowdown&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;slowdown&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt; &lt;a class=&quot;new&quot; title=&quot;Speedup (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Speedup&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;speedup&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;구성 요소&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a title=&quot;프로세스&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;프로세스&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;스레드&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;스레드&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;섬유 (컴퓨팅) (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%84%AC%EC%9C%A0_(%EC%BB%B4%ED%93%A8%ED%8C%85)&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Fiber&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;PRAM&quot; href=&quot;http://ko.wikipedia.org/wiki/PRAM&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;PRAM&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;명령어 윈도우 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%AA%85%EB%A0%B9%EC%96%B4_%EC%9C%88%EB%8F%84%EC%9A%B0&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Instruction window&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;조정&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a title=&quot;다중 처리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;다중 처리&lt;/font&gt;&lt;/a&gt;(&lt;a title=&quot;대칭형 다중 처리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8C%80%EC%B9%AD%ED%98%95_%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;대칭형&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;비대칭형 다중 처리 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B9%84%EB%8C%80%EC%B9%AD%ED%98%95_%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;비대칭형&lt;/font&gt;&lt;/a&gt;) &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;멀티스레딩&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;멀티스레딩&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;메모리 일관성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%A9%94%EB%AA%A8%EB%A6%AC_%EC%9D%BC%EA%B4%80%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;메모리 일관성&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;캐시 일관성&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%BA%90%EC%8B%9C_%EC%9D%BC%EA%B4%80%EC%84%B1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;캐시 일관성&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Barrier (computer science) (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Barrier_(computer_science)&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Barrier&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;동기화 (컴퓨터 과학) (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%8F%99%EA%B8%B0%ED%99%94_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;동기화&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Application checkpointing (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Application_checkpointing&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Application checkpointing&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a class=&quot;mw-redirect&quot; title=&quot;프로그래밍&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;프로그래밍&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a class=&quot;new&quot; title=&quot;병렬 프로그래밍 모델 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EB%AA%A8%EB%8D%B8&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;모델&lt;/font&gt;&lt;/a&gt;(&lt;a class=&quot;new&quot; title=&quot;내재적 병렬성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%82%B4%EC%9E%AC%EC%A0%81_%EB%B3%91%EB%A0%AC%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;내재적 병렬성&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;외재적 병렬성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%99%B8%EC%9E%AC%EC%A0%81_%EB%B3%91%EB%A0%AC%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;외재적 병렬성&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;동시성 (컴퓨터 과학) (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%8F%99%EC%8B%9C%EC%84%B1_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;동시성&lt;/font&gt;&lt;/a&gt;) &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;병렬 컴퓨팅&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%8C%85#.ED.94.8C.EB.A6.B0.EC.9D.98_.EB.B6.84.EB.A5.98.ED.95.99&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;플린의 분류학&lt;/font&gt;&lt;/a&gt;(&lt;a title=&quot;SISD&quot; href=&quot;http://ko.wikipedia.org/wiki/SISD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SISD&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt; &lt;a title=&quot;SIMD&quot; href=&quot;http://ko.wikipedia.org/wiki/SIMD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SIMD&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;MISD&quot; href=&quot;http://ko.wikipedia.org/wiki/MISD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MISD&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;MIMD&quot; href=&quot;http://ko.wikipedia.org/wiki/MIMD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MIMD&lt;/font&gt;&lt;/a&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;하드웨어&quot; href=&quot;http://ko.wikipedia.org/wiki/%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;하드웨어&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;메모리(&lt;a title=&quot;불균일 기억 장치 접근&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B6%88%EA%B7%A0%EC%9D%BC_%EA%B8%B0%EC%96%B5_%EC%9E%A5%EC%B9%98_%EC%A0%91%EA%B7%BC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;NUMA&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;COMA (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=COMA&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;COMA&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;분산 메모리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B6%84%EC%82%B0_%EB%A9%94%EB%AA%A8%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;분산&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;공유 메모리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B3%B5%EC%9C%A0_%EB%A9%94%EB%AA%A8%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;공유&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;분산 공유 메모리 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B6%84%EC%82%B0_%EA%B3%B5%EC%9C%A0_%EB%A9%94%EB%AA%A8%EB%A6%AC&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;분산 공유&lt;/font&gt;&lt;/a&gt;) &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;동시 멀티스레딩&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8F%99%EC%8B%9C_%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SMT&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;대칭형 다중 처리&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8C%80%EC%B9%AD%ED%98%95_%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;SMP&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;대규모 병렬 컴퓨터&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%8C%80%EA%B7%9C%EB%AA%A8_%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%84%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MPP&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;슈퍼스칼라&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%8A%88%ED%8D%BC%EC%8A%A4%EC%B9%BC%EB%9D%BC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;슈퍼스칼라&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;벡터 프로세서&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B2%A1%ED%84%B0_%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;벡터 프로세서&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;슈퍼컴퓨터&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%8A%88%ED%8D%BC%EC%BB%B4%ED%93%A8%ED%84%B0&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;슈퍼컴퓨터&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;mw-redirect&quot; title=&quot;베어울프&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%B2%A0%EC%96%B4%EC%9A%B8%ED%94%84&quot; target=&quot;_blank&quot;&gt;&lt;i&gt;&lt;font color=&quot;#0645ad&quot;&gt;베어울프(Beowulf)&lt;/font&gt;&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;&lt;a title=&quot;API&quot; href=&quot;http://ko.wikipedia.org/wiki/API&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;API&lt;/font&gt;&lt;/a&gt;&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%; BACKGROUND: rgb(247,247,247)&quot;&gt;&lt;a title=&quot;POSIX 스레드&quot; href=&quot;http://ko.wikipedia.org/wiki/POSIX_%EC%8A%A4%EB%A0%88%EB%93%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;POSIX 스레드&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;OpenMP&quot; href=&quot;http://ko.wikipedia.org/wiki/OpenMP&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;OpenMP&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;병렬 가상 머신 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EB%B3%91%EB%A0%AC_%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;PVM&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;메시지 전달 인터페이스&quot; href=&quot;http://ko.wikipedia.org/wiki/%EB%A9%94%EC%8B%9C%EC%A7%80_%EC%A0%84%EB%8B%AC_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;MPI&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;통합 병렬 C (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%86%B5%ED%95%A9_%EB%B3%91%EB%A0%AC_C&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;UPC&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;인텔 스레딩 빌드 블록 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%9D%B8%ED%85%94_%EC%8A%A4%EB%A0%88%EB%94%A9_%EB%B9%8C%EB%93%9C_%EB%B8%94%EB%A1%9D&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;인텔 스레딩 빌드 블록&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Boost C++ Libraries (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Boost_C%2B%2B_Libraries&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Boost.Thread&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;전역 배열 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%A0%84%EC%97%AD_%EB%B0%B0%EC%97%B4&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;전역 배열&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Charm++ (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Charm%2B%2B&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Charm++&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Cilk (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Cilk&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Cilk&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Co-array Fortran (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Co-array_Fortran&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Co-array Fortran&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;OpenCL&quot; href=&quot;http://ko.wikipedia.org/wiki/OpenCL&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;OpenCL&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;mw-redirect&quot; title=&quot;CUDA&quot; href=&quot;http://ko.wikipedia.org/wiki/CUDA&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;CUDA&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;DISPLAY: none&quot;&gt;
&lt;th style=&quot;TEXT-ALIGN: right; WHITE-SPACE: nowrap; BACKGROUND: rgb(221,221,255)&quot;&gt;문제&lt;/th&gt;
&lt;td style=&quot;TEXT-ALIGN: left; WIDTH: 100%&quot;&gt;&lt;a title=&quot;처치 곤란 병렬&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%B2%98%EC%B9%98_%EA%B3%A4%EB%9E%80_%EB%B3%91%EB%A0%AC&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;처치 곤란 병렬 문제&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Grand Challenge problem (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Grand_Challenge_problem&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Grand Challenge&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Software lockout (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Software_lockout&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Software lockout&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;확장성 (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=%ED%99%95%EC%9E%A5%EC%84%B1&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;확장성&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;경쟁 상태&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B2%BD%EC%9F%81_%EC%83%81%ED%83%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;경쟁 상태&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;교착 상태&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B5%90%EC%B0%A9_%EC%83%81%ED%83%9C&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;교착 상태&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt; &lt;a title=&quot;교착 상태&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B5%90%EC%B0%A9_%EC%83%81%ED%83%9C#.EB.9D.BC.EC.9D.B4.EB.B8.8C.EB.9D.BD&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;라이브락&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a title=&quot;결정론적 알고리즘&quot; href=&quot;http://ko.wikipedia.org/wiki/%EA%B2%B0%EC%A0%95%EB%A1%A0%EC%A0%81_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0645ad&quot;&gt;결정론적 알고리즘&lt;/font&gt;&lt;/a&gt; &lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;·&lt;/span&gt;&lt;a class=&quot;new&quot; title=&quot;Parallel slowdown (없는 문서)&quot; href=&quot;http://ko.wikipedia.org/w/index.php?title=Parallel_slowdown&amp;action=edit&amp;redlink=1&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#ba0000&quot;&gt;Parallel slowdown&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;]]></content>
						<category term="병렬 컴퓨팅"/>
				
	</entry>
   <entry>
		<title><![CDATA[parallel processing ; 병렬처리]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2276</id>
		<published>2011-12-13T21:29:52+09:00</published>
		<updated>2011-12-13T21:30:26+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2276"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2276#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;p align=&quot;center&quot;&gt;&lt;b&gt;&lt;font color=&quot;#8000ff&quot;&gt;&lt;span class=&quot;std&quot;&gt;parallel processing&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;std&quot;&gt; ; 병렬처리&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;컴퓨터에서 병렬처리란 프로그램 &lt;a href=&quot;http://terms.co.kr/instruction.htm&quot;&gt;명령어&lt;/a&gt;를 여러 &lt;a href=&quot;http://terms.co.kr/processor.htm&quot; target=&quot;Frame 3&quot;&gt;프로세서&lt;/a&gt;에 분산시켜 동시에 수행함으로써 빠른 시간 내에 원하는 답을 구하는 작업을 일컫는다. 초기의 컴퓨터에서는 한번에 오직 하나의 프로그램만 수행되었다. 예를 들어 계산 수행에 1시간 걸리는 프로그램과, 테이프에서 데이터 읽기에 1시간 걸리는 프로그램이 있다면, 이 두 프로그램을 수행시키는데는 총 2시간이 소요되었다. 초기의 병렬처리는 이 두 프로그램이 섞여서(interleaved) 수행되도록 하는 방법이었다. 즉 한 프로그램이 입출력을 시작하여 끝나기를 기다리는 동안, 다른 계산 수행을 하는 프로그램이 실행될 수 있도록 하여 1시간 조금 더 걸리는 시간에 작업을 마치는 방법이었다.&lt;/p&gt;
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;다음 단계의 병렬처리는 &lt;a href=&quot;http://terms.co.kr/multiprogramming.htm&quot; target=&quot;Frame 3&quot;&gt;멀티프로그래밍&lt;/a&gt;이었다. 멀티프로그래밍 시스템에서는 여러 사용자가 수행시킨 여러 프로그램이 있을 때 한 프로그램이 프로세서를 짧은 시간 동안 차지하여 작업을 수행시키고, &lt;a href=&quot;http://terms.co.kr/OS.htm&quot; target=&quot;Frame 3&quot;&gt;운영체계&lt;/a&gt;가 그 다음 프로그램이 수행되도록 하는 방식으로 작업을 하였다. 사용자에게는 모든 프로그램이 동시에 수행되는 것처럼 보인다. 이 시스템이 처음 봉착한 문제는 여러 프로그램이 한 자원을 집중적으로 사용할 때 효율적으로 해결해주지 못해서 나타나는 &lt;a href=&quot;http://terms.co.kr/deadlock.htm&quot;&gt;데드록&lt;/a&gt; 현상이었다. &lt;/p&gt;
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;벡터 프로세싱은 한 번에 한 개 이상의 일을 수행하려는 또 다른 시도였다. 이런 시스템에서는 한 개의 명령어로 두 &lt;a href=&quot;http://terms.co.kr/array.htm&quot; target=&quot;Frame 3&quot;&gt;어레이&lt;/a&gt;의 데이터를 더하거나 뺄 수 있는 기능이 추가되었다. 이런 기능은 벡터나 매트릭스 계산이 빈번히 나타나는 많은 엔지니어링 프로그램에서 매우 유용하게 이용되었다. 하지만 이런 계산을 많이 필요로 하지 않는 프로그램에서는 큰 효용이 없었다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;130&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class=&quot;std&quot;&gt;그 다음에 개발된 병렬처리의 기법은 &lt;a href=&quot;http://terms.co.kr/multiprocessing.htm&quot; target=&quot;Frame 3&quot;&gt;멀티프로세싱&lt;/a&gt;이었다. 이 시스템에서는 두 개 이상의 프로세서가 한 프로그램을 같이 수행하여 작업을 마쳤다. 초기 단계에서는 주종(master/slave)관계의 구조였다. 한 프로세서(master)가 시스템의 모든 작업을 관장하도록 설계되었고, 다른 프로세서(slave)는 주 프로세서가 부여한 일만을 수행하였다. 이런 구조로 설계된 것은 그 당시에는 여러 프로세서가 협동하여 시스템 자원을 사용하는 것에 대한 기술이 부족했었기 때문이다. &lt;/span&gt;
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;이러한 문제를 해결하면서 나온 것이 &lt;a href=&quot;http://terms.co.kr/SMP.htm&quot; target=&quot;Frame 3&quot;&gt;SMP&lt;/a&gt;이다. SMP에서는 각 프로세서가 동등하게 시스템 작업의 흐름을 제어하는 기능이 있다. 원래의 목표는 SMP를 단일 프로세서가 멀티 프로그래밍을 하는 것처럼 보이게 하는 것이었다. 하지만 엔지니어들은 어떤 명령어의 순서를 바꾸어 실행시킴으로써 성능을 10~20% 향상시킬 수 있다는 것을 알아냈고, 프로그래머들은 좀더 복잡하게 프로그램을 하도록 주문 받게 되었다 (이러한 것은 두 개 이상의 프로그램이 같은 인자에 읽기나 쓰기를 동시에 실행할 때에만 나타난다. 따라서 복잡하게 프로그램해야 되는 경우는 소수의 특정한 &lt;a href=&quot;http://terms.co.kr/programmer.htm&quot;&gt;프로그래머&lt;/a&gt;에게만 필요하다). &lt;/p&gt;
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;SMP시스템의 프로세서 수가 증가함에 따라 시스템의 한 편에서 다른 모든 부분으로 데이터를 전파시키는데 걸리는 시간도 증가했다. 프로세서의 수가 수십 개를 넘어가면 프로세서 수를 증가시킴으로 얻어지는 성능 향상이 너무 적어지게 된다. 전파 속도가 길어지는 문제를 해결하기 위하여 &lt;a href=&quot;http://terms.co.kr/message.htm&quot;&gt;메시지&lt;/a&gt; 패싱 시스템이 고안되었다. 이런 시스템에서는 데이터를 공유한 프로그램이 특정 인자에 새로운 값이 할당되었다는 것을 알리기 위해 메시지를 전송한다. 그 인자의 새로운 값을 시스템의 모든 부분에 방송하는 대신에 그 값을 필요로 하는 프로그램에게만 전송한다. &lt;/p&gt;
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;공유 메모리를 사용하는 대신 프로그램간 메시지 전송을 위해 네트웍를 이용하는 방식도 등장했다. 이렇게 함으로써 한 시스템 내에 수백 개나 수천 개의 프로세서가 효율적으로 함께 작동할 수 있게 되었다(확장성이 좋다는 표현을 쓴다). 이러한 시스템을 &lt;a href=&quot;http://terms.co.kr/MPP.htm&quot; target=&quot;Frame 3&quot;&gt;MPP&lt;/a&gt;시스템이라 부른다. &lt;/p&gt;
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;MPP에서 효율적으로 수행되는 프로그램들은 방대한 데이터를 처리할 때 프로그램을 여러 독립적인 부분으로 나누어 실행시킬 수 있는 것들이다. 예를 들어 &lt;a href=&quot;http://terms.co.kr/datamining.htm&quot;&gt;데이터마이닝&lt;/a&gt; 같은 경우 정적인 &lt;a href=&quot;http://terms.co.kr/database.htm&quot;&gt;데이터베이스&lt;/a&gt;에 대하여 여러 가지 독립적인 검색을 수행한다. 또 체스 게임 같은 인공지능에서는 여러 가지 다른 수를 분석하여 볼 필요가 있다. 많은 경우 MPP시스템은 프로세서의 &lt;a href=&quot;http://terms.co.kr/cluster.htm&quot; target=&quot;Frame 3&quot;&gt;클러스터&lt;/a&gt;로 구성된다. 각 클러스터는 SMP처럼 작동하며, 메시지 패싱은 클러스터간에서만 일어난다. 인자를 어드레싱하는 것이 메시지를 통해서나 메모리 어드레스를 통해 가능하기 때문에 어떤 MPP시스템은 &lt;a href=&quot;http://terms.co.kr/NUMA.htm&quot; target=&quot;Frame 3&quot;&gt;NUMA&lt;/a&gt; 시스템이라 부른다. &lt;/p&gt;
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;SMP는 비교적 프로그래밍이 간편하지만 MPP는 그렇지 않다. SMP시스템은 다뤄야 할 데이터 량이 너무 방대하지 않다면 거의 모든 종류의 프로그램에 잘 맞는다. 하지만 방대한 데이터를 다루는 데이터마이닝은 MPP만이 다룰 수 있다. 
&lt;p class=&quot;std&quot; align=&quot;left&quot;&gt;&lt;img src=&quot;https://www.stechstar.com/user/zbxe/files/attach/images/109/276/002/a152994bd3d79409cf1e0872c519798f.gif&quot; alt=&quot;&quot; width=&quot;235&quot; height=&quot;14&quot; style=&quot;&quot; /&gt; 
&lt;ul&gt;
&lt;li&gt;&lt;span class=&quot;std&quot;&gt;미국 위스칸신 대학에서 Doug Burger와 Mark Hill이 &lt;a href=&quot;http://www.cs.wisc.edu/~arch/www/&quot; target=&quot;_blank&quot;&gt;The WWW Computer Architecture Home Page&lt;/a&gt;를 만들었으니 참고하시기 바랍니다. &lt;/span&gt;
&lt;li&gt;&lt;span class=&quot;std&quot;&gt;David A. Bader가 &lt;a href=&quot;http://computer.org/parascope&quot; target=&quot;_blank&quot;&gt;병렬 컴퓨팅 사이트들의 IEEE 목록&lt;/a&gt;을 제공합니다. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;]]></content>
						<category term="parallel processing ; 병렬처리"/>
				
	</entry>
   <entry>
		<title><![CDATA[병렬처리의 법칙]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2272</id>
		<published>2011-12-13T21:25:55+09:00</published>
		<updated>2011-12-13T21:25:55+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2272"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2272#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;div class=&quot;titleWrap&quot;&gt;
&lt;h2 class=&quot;title&quot;&gt;&lt;a href=&quot;http://bart7449.tistory.com/244&quot; target=&quot;_blank&quot;&gt;병렬 처리 관련 법칙들&lt;/a&gt;&lt;/h2&gt;&lt;/div&gt;
&lt;div class=&quot;container&quot;&gt;
&lt;div class=&quot;article&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 1; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 1.2; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;[출처] &lt;a href=&quot;http://bart7449.tistory.com/244&quot; target=&quot;_blank&quot;&gt;http://bart7449.tistory.com/244&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&quot;&lt;b&gt;모든&lt;/b&gt; &lt;b&gt;컴퓨터 아키텍트들은 암달의 법칙을 알고 있다. 그럼에도 불구하고, 우리는 때때로 불가능한 성능 최적화를 위해 막대한 노력을 기울인다. 그리고, 전체 속도향상이 실망스러운 수준임을 확인했을 때에서야 비로소 암달의 법칙을 떠올린다.&quot;&lt;/b&gt;-In Computer Architecture: A Quantitative Edition, 4th ed. &lt;b&gt;John L. Hennessy &lt;/b&gt;and &lt;span style=&quot;FONT-WEIGHT: bold&quot; class=&quot;Apple-style-span&quot;&gt;David A. Patterson &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&quot;모두들 암달의 법칙을 알고 있지만, 금방 잊어버린다!&quot;&lt;/b&gt; - &lt;b&gt;Thomas Puzak&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;병렬 처리에 있어 중요한 비교척도로는 속도향상과 효율성이 존재한다. 1개의 프로세서 또는 1개의 노드 추가로 이루어지는 어떠한 알고리즘의 &lt;b&gt;속도향상&lt;/b&gt;(speedup)은 다음과 같이 계산된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/941e2ce54200806d087d3757c9f8b5ac.gif&quot; /&gt; (식 1)&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;여기에서, n는 프로세서의 수 또는 노드의 수, &lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 23px; FONT-FAMILY: serif; WHITE-SPACE: nowrap; FONT-SIZE: 16px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font face=&quot;Adobe 명조 Std M&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;T&lt;/span&gt;&lt;sub style=&quot;LINE-HEIGHT: 1em&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;1&lt;/span&gt;&lt;/sub&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;은 직렬 알고리즘의 실행 시간, &lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 23px; FONT-FAMILY: serif; WHITE-SPACE: nowrap; FONT-SIZE: 16px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font face=&quot;Adobe 명조 Std M&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;T&lt;/span&gt;&lt;sub style=&quot;LINE-HEIGHT: 1em&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;n&lt;/span&gt;&lt;/sub&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt; 는 n 개의 프로세서 또는 노드를 이용한 병렬 알고리즘의 실행 시간을 의미한다. 속도 향상은 다시 크게 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;절대 속도향상&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;(absolute speedup)과 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;상대 속도향상&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;(relative speedup)으로 나뉘는데, 절대 속도 향상은 &lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 23px; FONT-FAMILY: serif; WHITE-SPACE: nowrap; FONT-SIZE: 16px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font face=&quot;Adobe 명조 Std M&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;T&lt;/span&gt;&lt;sub style=&quot;LINE-HEIGHT: 1em&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;1&lt;/span&gt;&lt;/sub&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt; 이 가장 최적의 직렬 알고리즘(best sequential algorithm)의 실행 시간인 반면에, 상대 속도 향상에서는 &lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 23px; FONT-FAMILY: serif; WHITE-SPACE: nowrap; FONT-SIZE: 16px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font face=&quot;Adobe 명조 Std M&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;T&lt;/span&gt;&lt;sub style=&quot;LINE-HEIGHT: 1em&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;1&lt;/span&gt;&lt;/sub&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt; 이 병렬 알고리즘을 한 프로세서에서 실행된 시간이다. 보통 속도향상을 얘기할 때는 상대 속도향상을 의미한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 17px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 17px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;효율성&lt;/b&gt;(Efficiency)은 한 프로세서 또는 노드가 병렬 처리를 위해 얼마나 잘 활용되는지를 비교하는데 이용된다. &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 12px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/b4241e5c49516ab38cac57c6ef87a90a.gif&quot; /&gt;&lt;/span&gt; (식 2) &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div&gt;&lt;span style=&quot;LINE-HEIGHT: 22px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;이 상적으로는 병렬 처리에서 속도 향상은 추가되는 n 개의 프로세서 또는 노드의 수에 따라 선형(linear)으로 증가한다. 즉, Speedup(n) = n이 된다. 이 경우 효율성은 1이 된다. 하지만 실제로는 I/O, 네트워크 대역폭(bandwidth), 지연시간(latency) 등 여러 이유로 1이 되지 못한다. 가장 대표적인 이유는 알고리즘의 모든 부분을 병렬화(parallelize) 시킬 수가 없기 때문인데, 이 알고리즘에 남아있는 직렬 처리 부분은 모든 알고리즘의 병렬화의 한계를 결정한다. 이는&lt;b&gt; 암달의 법칙&lt;/b&gt;(Amdahl&#039;s law)으로 설명된다. &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 1.2; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div&gt;&lt;span style=&quot;FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;6&quot;&gt;&lt;span style=&quot;FONT-SIZE: 19px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;﻿&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 14pt&quot;&gt;&lt;b&gt;Amdahl&#039;s law&lt;sup class=&quot;footnote&quot;&gt;&lt;a style=&quot;FONT-FAMILY: Verdana, Sans-serif; COLOR: #f9650d&quot; id=&quot;footnote_link_244_1&quot; href=&quot;http://bart7449.tistory.com/244#footnote_244_1&quot; target=&quot;_blank&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;﻿ 암달의 법칙은 1967년 한 컨퍼런스에서 IBM의 Gene Amdahl이 논한 것으로, 이 공식은 어떤 시스템의 f 비율만큼의 부분이 S만큼 속도향상이 있을 때, 최대로 얻을 수 있는 이상적인 속도향상은 다음과 같이 제약됨을 설명한다. &lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;또한, 여기에서는, 프로그램 수행을 통해 풀고자 하는 문제의 크기가 특정 부분의 속도 향상의 전후에도 언제나 동일한 것으로 가정한다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/0627988ba768b101d45cb927d6228d97.gif&quot; /&gt; 식(3)&lt;/span&gt;&lt;font color=&quot;#666666&quot; face=&quot;&quot;&gt; &lt;/font&gt;
&lt;div&gt;&lt;font style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;1) 만약 속도향상을 이룬 부분이 작다면 (f값이 작다면), 전체 시스템의 속도향상은 미미하다.&lt;/span&gt;&lt;/div&gt;&lt;/font&gt;
&lt;div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;2) 만약 f 부분의 속도향상을 무한대(S &lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;∞)로 할 수 있다면, 전체 시스템의 속도향상은 1/(1-f)로 수렴될 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;﻿예를 들어 전체 시스템의 20%를 2배만큼 속도향상을 시킬 수 있다면, 이로 인해 얻을 수 있는 전체 시스템의 속도향상은:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 12px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px; WIDTH: 512px; HEIGHT: 45px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/7ac21df3ea024138328c7fc63ba421d1.gif&quot; /&gt; (식 4)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;로 제한된다. 이 암달의 법칙은 어떠한 프로그램을 병렬화할 때 얻을 수 있는 최대한의 속도향상을 예측하는데 이용되기도 하는데, 이 때는 아래와 같은 형식으로 표현될 수 있다. &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/a677286015038692b0dc916b6f2cd639.gif&quot; /&gt; (식5)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 18px; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 12px&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;여기에서 f는 프로그램에서 병렬화된 부분을 n은 프로세서 또는 노드의 수를 의미한다.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;먼저, 한 프로그램을 하나의 프로세서 또는 노드로 수행시켰을 때의 실행 시간을 1로 한다. &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;다 음으로 프로그램의 일정 부분 f를 n개의 프로세서나 노드로 병렬화하여 처리한다면, 이 f의 실행 시간은 f/n만큼의 시간이 들게 될 것이다. 반대로, 남은 부분 1-f는 한개의 프로세서 또는 노드로 수행하기 때문에 그대로 원래 만큼의 시간이 소요된다. 즉, 프로그램의 일정 부분 f를 n개의 프로세서나 노드를 이용하여 병렬화하는 경우 전체 수행 시간은 1-f+f/n만큼 소요되고, 이를 원래 시간 1과 비교하면 위의 식 5만큼의 성능 개선이 있다고 설명할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;예 를 들어, 만약 f=1, n=16, 즉 프로그램의 모든 부분이 병렬화되어 있고, 16개의 프로세서를 이용해 병렬 처리한다면, 속도향상은 16배가 될 것이다. 그리고, 이 경우 효율성은 1(=16/16)이 된다. 하지만, 프로그램의 모든 부분을 병렬화 할 수는 없다. 이런 이유로 실제 프로세서나 노드 수를 늘린다고 해도, 어느 수준 이상에서는 속도향상을 기대할 수 없다. 아래 그림은 암달의 법칙에서 프로세서의 증가에 따른 속도 향상의 한계를 보인다. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div style=&quot;TEXT-ALIGN: center; CLEAR: both&quot; class=&quot;imageblock center&quot;&gt;&lt;a href=&quot;http://cfile1.uf.tistory.com/original/1438E5154B42A5C940743F&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img data-autoattach=&quot;success&quot; alt=&quot;&quot; src=&quot;./files/attach/images/109/272/002/fe5fd027af5c1279171268d08aaf665c.png&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt; 
&lt;p class=&quot;cap1&quot;&gt;Figure 1a.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;span style=&quot;LINE-HEIGHT: 19px; FONT-FAMILY: sans-serif; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font face=&quot;Adobe 고딕 Std B&quot;&gt;그 래프를 보면 프로그램의 95%(f=0.95)가 병렬화 되어 있다고 해도, 16개의 프로세서를 가지고 10배 이상의 속도향상을 내지 못한다. 이후로는 아무리 많은 수의 프로세서를 가진다 해도 20배 이상의 속도향상을 낼 수가 없다. 즉, 병렬화 되지 않은 부분이 많을수록 속도향상은 더 적다. 50%의 병렬화를 통해 16 프로세서를 가지고 얻을 수 있는 속도향상은 2배 밖에 되지 못한다. 실제로 프로그램 상에 남아있는 직렬 실행 부분의 비율은 아래 그래프와 같이 병렬화를 통해 얻을 수 있는 속도향상을 제약한다.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 19px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;font face=&quot;Adobe 고딕 Std B&quot;&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot; face=&quot;sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 19px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div style=&quot;TEXT-ALIGN: center; CLEAR: both&quot; class=&quot;imageblock center&quot;&gt;&lt;a href=&quot;http://cfile29.uf.tistory.com/original/141478194B42A5DD325F37&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;Adobe 고딕 Std B&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;CURSOR: pointer&quot; alt=&quot;&quot; src=&quot;./files/attach/images/109/272/002/26258469927e73d78cc0d34af03f578b.jpg&quot; width=&quot;400&quot; height=&quot;438&quot; /&gt;&lt;/font&gt;&lt;/a&gt; 
&lt;p class=&quot;cap1&quot;&gt;Figure 1b.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot; face=&quot;Adobe 고딕 Std B&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 19px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;이 러한 이유로 병렬 처리에서 있어서는 프로그램의 직렬화 부분(1-f)를 얼마만큼 줄이느냐, 다른 말로 병렬화 부분(f)을 얼마나 늘이느냐 것이 관건이 되어 왔다. 또한, 실제로는 모든 부분을 병렬화할 수 없기 때문에, 프로세서 수를 계속 늘려도 병렬화의 이점을 추가로 가질 수가 없다. 이에 따라서 병렬 처리는 보통 소수의 프로세서를 가지고서 병렬 처리를 해 왔다. 프로그램의 병렬 부분과 속도향상과의 관계는 위 식에 의해 아래와 유도가 가능하다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;TEXT-ALIGN: center; LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot; face=&quot;sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: 19px; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 12px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font face=&quot;Adobe 고딕 Std B&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/e1ae00faa68302e33c55db167eba926a.gif&quot; /&gt;&lt;/font&gt; (식 6)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 19px; FONT-WEIGHT: bold&quot; class=&quot;Apple-style-span&quot;&gt;Gustafson&#039;s law&lt;sup class=&quot;footnote&quot;&gt;&lt;a style=&quot;FONT-FAMILY: Verdana, Sans-serif; COLOR: #f9650d&quot; id=&quot;footnote_link_244_2&quot; href=&quot;http://bart7449.tistory.com/244#footnote_244_2&quot; target=&quot;_blank&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;6&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 19px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;﻿&lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt; &lt;/span&gt;구스타프슨의 법칙&lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;은 1988 년 Sandia national Lab에 있던 John Gustafson이 고안한 것으로 규모가 충분히 큰 문제들은 효과적으로 병렬화가 가능함을 기술하고 있다. 이는 암달의 법칙이 병렬화를 통해 일정 수준 이상의 속도향상을 기대할 수 없다고 얘기하는 것에 배치되는데, 그렇다고 암달의 법칙이 틀렸다는것은 아니다. 암달의 법칙은 계속 유효하다. 이 법칙은 아래와 같이 표기된다. &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;6&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 19px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/1d6505d8ae38315393be2f9675186e0a.gif&quot; /&gt; (식 7)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;여기에서 n은 프로세서 또는 노드의 수, α는 프로그램에서 병렬화되지 않은 부분을 의미한다(, &lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;α= 1-f).&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;이 법칙에 따르면, 만약 n=16이고 α=0.05이라면(95%가 병렬화 되어 있다면), 얻을 수 있는 속도향상은 15.25배(16-0.05*15) 이다. 이는 동일한 조건에서 속도향상은 10배를 넘지 못한다는 암달의 법칙과 상반된다. 이 이유는 무엇인가?&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;암달의 법칙이 병렬 처리에 있어 병렬화 전후의 문제 크기는 변하지 않는 것을 가정하는데 반해, 구스타프슨의 법칙은 고정된 처리 시간 개념을 도입하여 보다 큰 문제에 대한 속도향상을 설명한다. &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;즉, 암달의 법칙에서는 고정된 문제 크기를 갖는다고 가정하였는데, 이는 프로세서 수의 증가에 상관없이 문제 크기는 증가하지 않는 것을 기초로 출발하였다. 아래의 그림을 보자.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div style=&quot;TEXT-ALIGN: center; CLEAR: both&quot; class=&quot;imageblock center&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/1233CC154B42B8CBB4471D&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img data-autoattach=&quot;success&quot; alt=&quot;&quot; src=&quot;./files/attach/images/109/272/002/054551ccac8cef26c811a1971153b5f3.jpg&quot; width=&quot;357&quot; height=&quot;253&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;그 림과 같이 직렬 시스템에서 프로그램을 실행하는데 걸린 시간은 프로그램의 직렬 부분 s와 병렬화 가능한 부분 p의 실행 시간으로 구성된다. 즉, s+p=1 이 병렬화 이전에 소요된 시간이다. 그리고 병렬화를 통해 얻어진 실행시간은 s+p/N이다. 여기에서 N은 프로세서의 수이다. 따라서 전체 속도향상은 식 1에 따라&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;1/(s+p/N)이 된다. s를 1-f라 하고 p를 f로 치환하면 위의 암달의 법칙(식 5)와 동일한 수식을 얻게 된다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0); FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;반대로, 구스타프슨의 법칙은 주어진 시간 내에 보다 많은 크기의 문제를 해결하는 경우 병렬화가 효과적인 방법이 됨을 설명한다. 아래 그림을 보자 . &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;
&lt;div style=&quot;TEXT-ALIGN: center; CLEAR: both&quot; class=&quot;imageblock center&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/1433CC154B42B8CCB543C6&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;WIDTH: 512px; HEIGHT: 198px&quot; alt=&quot;&quot; src=&quot;./files/attach/images/109/272/002/67e73b1199cc704ec03e9df5607c6c78.jpg&quot; width=&quot;672&quot; height=&quot;255&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;여 기에서는 프로그램을 병렬화하였을 때의 실행 시간을 s+p=1로 하고, 이를 기준으로 프로그램의 직렬 시간과 비교한다. 즉 여기에서 속도향상은 식 1에 따라 s+Np가 된다. 여기에서 s를 α로, N을 n으로 치환하면, 식 7의 구스타프슨 법칙과 같게 된다. 즉 구스타프슨의 법칙은 주어진 시간에 병렬화로 임의 크기의 문제를 해결할 수 있을 때, 직렬 프로그램 실행 시간과의 비교를 통해 속도향상을 측정하는 반면에, 암달의 법칙은 직렬 실행 시간을 기준으로 병렬화를 수행하였을 때 얼마만큼의 속도향상이 있는지를 보인다는 점이 다르다. 병렬화 가능한 부분의 문제 크기가 클수록 구스타프슨 법칙에 따르면, 속도향상이 높게 나올 수 있다. 왜냐하면 문제 크기에 따라 더 많은 프로세서 할당을 통해 병렬 실행 시간 값(p)을 고정시킬 수 있기 때문이다. 예를 들어, 병렬가능한 문제 크기가 100이면, 100개의 프로세서로 할당하면 p=1이 된다. 1000이면, 1000개의 프로세서를 할당해서 p=1로 떨어지게 한다. 반대로 암달의 법칙은 문제 크기와 상관없이 고정된 제한 속도향상 값을 갖는다. &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;자동차를 가지고 두 법칙을 비유하자면, &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;1) 자동차로 120Km 떨어진 도시로 이동한다고 하자. 그리고, 60Km/h의 속도로 한시간을 이미 이동하였다. 이제 나머지 절반의 거리를 아무리 빠르게 운전한다 하더라도, 출발지에서 목적지까지의 자동차의 평균 시속은 120Km/h를 넘을 수 없다. 이미 이동하는데 한시간을 써버렸고 아직 60Km의 이동 거리가 남아 있기 때문에 자동차가 남은 거리를 무한대의 시속으로 이동한다 하더라도, 이미 지나간 시간은 돌아오지 못하기 때문이다. (암달의 법칙)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;2) 자동차로 120Km/h보다 낮은 속도로 이동하고 있었다고 하자. 남은 시간과 남은 이동거리가 충분하다면, 이전까지 얼마나 많이, 또 얼마나 천천히 운전했냐에 상관없이 자동차의 평균 시속은 120Km/h를 넘을 수 있다. 만약 60Km/h의 속도로 자동차를 한 시간 동안 운전했다면, 이 후 한 시간을 180Km/h 로 운전하거나 또는 150Km/h로 두 시간을 운전한다면, 총 이동 거리에 대한 평균 시속은 120Km/h에 도달하게 된다. (구스타프슨의 법칙)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 14pt&quot;&gt;&lt;b&gt;Karp-Flatt metric&lt;sup class=&quot;footnote&quot;&gt;&lt;a style=&quot;FONT-FAMILY: Verdana, Sans-serif; COLOR: #f9650d&quot; id=&quot;footnote_link_244_3&quot; href=&quot;http://bart7449.tistory.com/244#footnote_244_3&quot; target=&quot;_blank&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;6&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 19px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;﻿ 카프-플랫 척도&lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;는&lt;/span&gt; &lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;1990년에 Alan H. Karp와 Horace P. Flatt에 의해&lt;/span&gt; &lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;병 렬 프로세서 시스템에서 코드의 병렬화를 측정하기 위해 고안되었다. 이 식은 측정된 속도향상 값을 가지고, 프로그램의 직렬화 부분의 비율을 찾아내는데 효과적이다. 암달이나 구스타프슨의 법칙은 실제 병렬 처리에 있어 스케쥴링, 프로세서간 통신 비용이나 프로세스간 동기화에 소비되는 비용, 프로세서간 불균형한 작업량 등을 고려하지 않는 이상적인 법칙이다. 반면에 이 척도는 실제 실험 결과를 대상으로 직렬화 부분의 비율을 계산할 수 있게 해준다.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 12px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/74a3cf584f455ed7eadfd555453cb4f4.gif&quot; /&gt; (식 7)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;예를 들어, 1개의 프로세서를 가지고 프로그램을 실행하였을 떄 측정된 실행 시간이 5분(T1-5min)이 걸렸고, 10개의 프로세서(n=10)을 가지고 프로그램을 병렬화하였을 때 실행 시간이 1분이 걸렸다면(Tn=1min), &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;6&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 19px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span style=&quot;FONT-SIZE: 15px; FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 12px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;MARGIN: 10px&quot; id=&quot;equationview&quot; title=&quot;This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.&quot; name=&quot;equationview&quot; src=&quot;./files/attach/images/109/272/002/940580f01701fe41e8d68f4d72358fdd.gif&quot; /&gt; (식 8)&lt;/span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;으로 해당 코드의 직렬 실행 부분은 1/9(약 11.1%) 임을 식을 통해 유도할 수 있다. &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;6&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 19px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Superlinear Speedup&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;6&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 19px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;암달의 법칙에 따르면, 병렬화를 통해 얻을 수 있는 속도향상은 선형 이상이 될 수가 없다. 하지만, 특정한 경우에 프로그램의 병렬화는 &lt;/span&gt;﻿초선형&lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;(superlinear) 의 속도향상을 보이기도 한다. 즉, n개의 프로세서로 병렬화를 하였을 때 n배를 초과한 속도 향상이 나오기도 한다. 이렇다고 암달의 법칙이 틀렸다고 할 수는 없다. 다만 암달의 법칙이 초선형의 속도 향상을 보이기도 하는 이유를 설명하지 않는다 정도로 해석하는 것이 맞다. 초선형의 속도향상이 가끔씩 발생하는 이유 중 가장 큰 이유는 메모리 계층 상의 캐시 히트 때문이다. 즉 데이터 처리에 있어 이전에 이용되었던 데이터가 캐시에 남아 있어 메모리나 디스크 IO 없이 빠르게 처리된 경우에는 가끔씩 이런 경우가 목격된다.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;6&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 19px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;또 다른 이유로는 데이터의 공간 복잡도에서 발생하기도 한다. 예를 들어 x개의 입력을 가지고 2&lt;span style=&quot;LINE-HEIGHT: 23px; FONT-FAMILY: serif; WHITE-SPACE: nowrap; FONT-SIZE: 16px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;sup style=&quot;LINE-HEIGHT: 1em&quot;&gt;&lt;font face=&quot;Adobe 명조 Std M&quot;&gt;x&lt;/font&gt;&lt;/sup&gt;&lt;/span&gt;의 처리 데이터를 작성하는 시스템이 있다고 하자. 이 데이터를 n개의 프로세서에 분할 할당한다고 하면, 각 프로세서는 &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 15px; FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;2&lt;span style=&quot;LINE-HEIGHT: 23px; FONT-FAMILY: serif; WHITE-SPACE: nowrap; FONT-SIZE: 16px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;sup style=&quot;LINE-HEIGHT: 1em&quot;&gt;&lt;font face=&quot;Adobe 명조 Std M&quot;&gt;x&lt;/font&gt;&lt;/sup&gt;&lt;/span&gt;/n 크기의 데이터를 처리할 것이다. 하지만 입력 자체를 n개로 나누어 처리 데이터를 작성한다면, 각 프로세서에 할당되는 데이터의 크기는 &lt;span style=&quot;FONT-SIZE: 15px; FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;2&lt;span style=&quot;LINE-HEIGHT: 23px; FONT-FAMILY: serif; WHITE-SPACE: nowrap; FONT-SIZE: 16px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;sup style=&quot;LINE-HEIGHT: 1em&quot;&gt;&lt;font face=&quot;Adobe 명조 Std M&quot;&gt;x/n&lt;/font&gt;&lt;/sup&gt;&lt;/span&gt;으로 &lt;span style=&quot;FONT-SIZE: 19px; FONT-WEIGHT: bold&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 15px; FONT-WEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;2&lt;span style=&quot;LINE-HEIGHT: 23px; FONT-FAMILY: serif; WHITE-SPACE: nowrap; FONT-SIZE: 16px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;sup style=&quot;LINE-HEIGHT: 1em&quot;&gt;&lt;font face=&quot;Adobe 명조 Std M&quot;&gt;x&lt;/font&gt;&lt;/sup&gt;&lt;/span&gt;/n 보다 훨씬 작게 된다. 병렬 처리 알고리즘의 복잡도가 선형이라면, 그만큼 병렬 실행 시간도 초선형으로 줄어들 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Acknowledgement&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;그림 1a.는 Wikipedia의 암달의 법칙에서, 1b.~2b.는 참고문헌 [2]의 논문에서 발췌하였음. 식들은 모두 &lt;a title=&quot;[http://www.codecogs.com/components/equationeditor/equationeditor.php]로 이동합니다.&quot; href=&quot;http://www.codecogs.com/components/equationeditor/equationeditor.php&quot; target=&quot;_blank&quot;&gt;Online LaTeX Equation Editor&lt;/a&gt;를 이용해 작성되었음.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;TEXT-ALIGN: right&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;Written by bart7449&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;TEXT-ALIGN: right&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;LINE-HEIGHT: normal; FONT-SIZE: 15px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.5; FONT-FAMILY: 굴림; COLOR: rgb(51,51,51); FONT-SIZE: 9pt&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes&quot;&gt;
&lt;li id=&quot;footnote_244_1&quot;&gt;Amdahl, G.M. Validity of the single processor approach to achieving large scale computing capabilities, In AFIPS Conference Proceedings, Vol. 30 (Atlantic City, NJ Apr. 18-20). AFIPS Press, Reston, Va., 1967, pp. 483--385 &lt;a href=&quot;http://bart7449.tistory.com/244#footnote_link_244_1&quot; target=&quot;_blank&quot;&gt;[본문으로]&lt;/a&gt; 
&lt;li id=&quot;footnote_244_2&quot;&gt;Gustafson, J.L, Reevaluating Amdahl&#039;s law, Communications of ACM , May 1988 Vol. 31, No. 5 pp.532--533 &lt;a href=&quot;http://bart7449.tistory.com/244#footnote_link_244_2&quot; target=&quot;_blank&quot;&gt;[본문으로]&lt;/a&gt; 
&lt;li id=&quot;footnote_244_3&quot;&gt;Karp Alan H. and Flatt Horace P. Measuring Parallel Processor Performance, Communications of ACM, Vol 33, No. 5, May 1990 &lt;a href=&quot;http://bart7449.tistory.com/244#footnote_link_244_3&quot; target=&quot;_blank&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;div style=&quot;TEXT-ALIGN: right; MARGIN-BOTTOM: 10px; CLEAR: both&quot; class=&quot;entry-ccl&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;]]></content>
						<category term="병렬처리의 법칙"/>
				
	</entry>
   <entry>
		<title><![CDATA[CISC VS RISC]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2268</id>
		<published>2011-12-12T23:03:49+09:00</published>
		<updated>2011-12-12T23:03:49+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2268"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2268#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width=&quot;80%&quot;&gt;
&lt;div class=&quot;POST_TTL&quot;&gt;&lt;a title=&quot;CISC VS RISC&quot; name=&quot;1621691&quot;&gt;&lt;font color=&quot;#0000ff&quot; size=&quot;4&quot;&gt;&lt;strong&gt;CISC VS RISC&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;20%&quot; align=&quot;right&quot;&gt;&lt;font color=&quot;#0000ff&quot; size=&quot;4&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;POST_BODY&quot;&gt;&lt;font color=&quot;#0000ff&quot; size=&quot;4&quot;&gt;&lt;strong&gt;CISC(Complex Instruction Set Computer)&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#0000ff&quot; size=&quot;4&quot;&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#0000ff&quot; size=&quot;2&quot;&gt;[출처] &lt;a href=&quot;http://nearfri.egloos.com/1621691&quot; target=&quot;_blank&quot;&gt;http://nearfri.egloos.com/1621691&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;POST_BODY&quot;&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;-호환성이 절대적으로 필요한 PC 환경에 사용&lt;br /&gt;&lt;br /&gt;-386, 486, Pentium 등 PC용 CPU&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RISC(Reduced Instruction Set Computer)&lt;br /&gt;&lt;br /&gt;-CPU의 명령어를 최소화하여 단순하게 제작된 프로세서&lt;br /&gt;&lt;br /&gt;-대단히 효율적이고 특화된 CPU 구조. 다양한 기술 이용 가능&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;-IBM System/6000, 임베디드(MIPS, ARM계열 등), 매킨토시, 서버, 워크스테이션 등을 위한 특수목적 CPU&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;POST_BODY&quot; align=&quot;center&quot;&gt;CISC&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;POST_BODY&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;TEXT-ALIGN: center&quot; class=&quot;POST_BODY&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;CURSOR: pointer&quot; class=&quot;image_mid&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;./files/attach/images/109/268/002/b4c354b1ee93b125af2f5c73edad2398.jpg&quot; width=&quot;392&quot; height=&quot;162&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;POST_BODY&quot;&gt;&lt;br /&gt;&lt;br /&gt;인텔의 8086은 16비트 프로세서로, 명령어의 길이가 1바이트에서 8바이트까지 가변적으로 구성되어 있다. 명령어가 가변적이고 복잡하므로 CISC 방식이라고 하는 것이다. 이 구조는 가능한 한 명령어의 길이를 줄여서 명령어의 디코딩(decoding, 해석) 속도를 높이고 최소의 메모리 구조를 갖도록 하기 위해서 정해진 것으로, 하나의 프로세서가 일련의 명령어를 순차적으로 처리하기에는 무척 유용한 방법이며, CPU의 동작 속도가 높아짐에 따라 성능이 비례로 증가한다. CISC 방식은 32비트 프로세서인 80386까지도 아무런 문제없이 적용된 기술이므로 완벽한 하위 호환성을 유지할 수 있었다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;그러나, 80486이 등장하면서 단순히 CPU의 클럭(Clock, 동작 속도)을 높이는 방식으로 성능 향상을 기대할 수 없으므로 CISC 방식의 문제점이 드러나기 시작했다. 클럭에는 한계가 있기 때문이다. 그래서, 한번에 여러 개의 명령어를 동시에 수행할 수 있는 기술이 필요하게 되었다. 즉, 동일한 클럭에서 두 개의 명령어를 한번에 처리하게 되면 두 배의 성능 향상을 기대할 수 있기 때문이다. 그러나, 슈퍼 스칼라(Super Scalar) 구조에서는 명령어의 길이가 가변적이기 때문에 순차적으로 해석해야 하고 조건/비조건 분기가 중간에 자주 등장하므로 여러개의 명령어를 처리하기에는 적합하지 못했다.&lt;br /&gt;&lt;br /&gt;결국, 펜티엄부터 RISC86이라는 기법이 사용되었다. 이 방식은 AMD의 인텔 호환 CPU에서 사용된 기술로, 명령어의 해석 부분을 기존의 슈퍼 스칼라 방식으로 유지하면서 독립된 장치로 설계하여 연속적이고 고속으로 명령어를 RISC 방식으로 변환시키는 것이다. 그리고, 실제로 연산을 처리하는 장치는 RISC 방식으로 처리하여 여러 개의 명령어를 처리할 수 있도록 하는 방식이다. 그래서, 인텔 펜티엄 프로세서는 최대한 두 개의 명령어를 동시에 처리할 수 있는 것이다.&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;POST_BODY&quot; align=&quot;center&quot;&gt;RISC&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;POST_BODY&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;TEXT-ALIGN: center&quot; class=&quot;POST_BODY&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;CURSOR: pointer&quot; class=&quot;image_mid&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;./files/attach/images/109/268/002/1a740396c529edb4a56e457b3211d61d.jpg&quot; width=&quot;224&quot; height=&quot;162&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;POST_BODY&quot;&gt;&lt;br /&gt;&lt;br /&gt;1970년대에 등장한 RISC 방식은 최신 프로세서의 핵심 기술로, CPU에서 수행하는 모든 동작의 대부분이 몇 개의 명령어만으로 가능하다는 사실을 전제로 하고 있다.&lt;br /&gt;&lt;br /&gt;인텔과 경쟁하며 제품을 개발하던 모토롤라(Motorola)의 프로세서를 사용한 애플(Apple)의 매킨토시 컴퓨터에는 68 계열의 프로세서가 장착되어 있는데, 이 프로세서가 CISC 방식을 채택하고 있다. 모토롤러의 RISC계열로는 88계열이, 인텔에서는 x60계열이 있었다. 말 그대로 간단한 명령어만으로 구성되는 CPU이다. 그래서, 인텔 CPU 기반으로 개발된 프로그램은 매킨토시에서 사용할수 없었는데, 이것은 CPU 아키텍처가 다르기 때문이다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RISC CPU는 고정된 길이의 명령어를 사용하고 명령어의 종류가 미리 정해져 있으므로 해석 속도가 빠르고 여러 개의 명령어를 처리하기에 적합하다는 장점이 있다. 특히, 분기 위치가 정해져 있고 비순차 처리도 가능하다. 그러나, 처리 비트 단위가 변하거나 CPU의 구조가 조금만 바뀌어도 하위 프로세서와의 호환성이 떨어지므로 문제가 발생한다. 이것은 하위 컴퓨터의 표준이 될만한 호환 명령어라는 개념이 없고 프로세서의 단계에 따라 최적의 명령어가 정해져 있기 때문이다.&lt;br /&gt;&lt;br /&gt;이처럼 RISC 방식의 대표적인 CPU인 모토롤라 68 계열은 소프트웨어의 호환성 결여 때문에 인텔에 비해서 뛰어난 성능을 가지고 있음에도 불구하고 많은 사용자를 확보하지 못하고 있다. 단지 고성능의 대용량 데이터 처리가 필요하고 소프트웨어 활용이 비교적 고정되어 있는 워크스테이션을 중심으로 해서 많이 사용되고 있다.&lt;br /&gt;&lt;br /&gt;RISC는 명령어가 전부 1워드(Word) 길이로 짧고 파이프라인(Pipeline)과 슈퍼 스칼라(Super Scalar)를 통해서 멀티 태스킹이 가능하므로 CISC에 비해서 많은 레지스터를 가지고 있다는 특징을 가진다.&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RISC와 CISC는 CPU의 Architecture, 즉 구조적 측면의 차이로 어떤 일정한 방법으로 명령어를 처리하느냐에 따라 구분된다. 예전에는 RISC를 단순히 CISC를 간소화 시킨 정도로 보는 시각도 있었지만 현재에 와서는 그런 개념을 뛰어넘고 있다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CISC는 복합 명령 집합 컴퓨팅으로 말 그대로 복합적인 명령어를 가지고 있다. 일단 컴퓨터에 어셈블리, 또는 베이직 따위의 언어로 명령을 주면, CPU에서 그것을 여러 단계로 세분화되어 마이크로 코드(Microcode)라 하는 수행 절차를 걸쳐 처리하게 된다. 그런데, 이런 수행에 있어 좀 더 복잡한 연산에 대응하는 명령어 셋을 추가하는 것이 CISC로, 여러 개의 단순한 명령어 셋으로 명령을 처리하기 보다는 그것들을 포괄하는 연산 셋으로 한 개의 명령어로 처리해 효율을 도모한다는 것이 CISC다. MMX도 이런 의미에서 볼 때는 CISC의 확장이라 볼 수 있겠다.&lt;br /&gt;&lt;br /&gt;한편 RISC는 CISC와는 반대로 기본 명령어 셋을 추구하는 형태이다. 그러나 RISC라고 해서 단순히 명령어를 간소화 시킨 형태라고 봐서는 안된다. 단순히 명령어만 간소화 시킨다면, CISC보다 뛰어날 이유가 없기 때문이다. RISC에서는 컴퓨터에서 주 수행되는 작업을 색출해, 거기에 최적화 시켜 만든다. 핵심이 되는 작업 항목에 특화시켜 전체적인 속도를 향상시키는 것이다. 한가지 예를 들어 설명하자면, 모든 컴퓨터 작업에 있어서 읽고 쓰는 작업은 항상 포함된다. 일단 데이터를 읽어 들이고 쓰는 과정은 Loading과 Swap으로 이루어지기 때문이다. 그 과정에 최적화시키면 그 만큼 작업 속도,즉 전체적인 처리 효과를 얻게 되는 것이다. 그러기 위해선 다른 명령어 셋과는 달리 다른 공정이 필요하다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CISC의 예로 CISC CPU의 대명사 Intel을 살펴보자. 현재 CISC는 RISC를 clock 속도로써는 충분히 능가할 수 있다. 다만 그 과정에서 트랜지스터 집적도가 너무 과다하게 올라가고 있다. 특히 Intel은 CISC에 MMX를 덧붙여 CISC에 CISC를 더한 셈이 되었다. 어차피 MMX의 세부를 열어보면 그것 역시 CISC의 확장이 되는 셈이기 때문이다. 특정 연산에 대한 명령어를 추가하는 것이 결국 CISC의 특성이 아니던가. Intel이 트랜지스터 집적도를 무리하게 올리면서 지금의 가격을 형성하고 인하 정책을 펼치는 것이 신기할 정도다. 아마도 현재의 PC CPU는 RISC로 갈 가능성은 희박할 듯 하다. 그 예로 Intel이 내세우는 차세대 CPU 머시드는 EPIC라고 하는 CISC를 또 다시 확장한 형태로 구현된다고 하니 말이다. 그 결과 머시드의 트랜지스터 집적수는 3억개라는 천문학적인 숫자에 이르고 말았다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RISC의 예로 O2에 사용된 R10000 프로세서를 살펴보자. R10000 프로세서의 경우 clock은 그리 높지 않다. 175MHz의 동작 clock을 가진 제품도 있기 때문이다. 1MB의 L2 캐시를 가지고 있으며(R5000SC의 경우 5MB의 L2 캐시를 탑재), R10000 프로세서는 RISC프로세서의 정점을 보여주는 CPU로 RISC의 효율성을 최대한으로 발휘하고 있다. 4방향 슈퍼스칼라(4개 명령 동시 처리)에 64비트 구조를 가지고 있으며 비순차적 명령 실행 방법과 128비트 L2 캐시 버스에 별도 5개의 실행 유닛을 가지고 있다. PC식의 난폭한 마케팅으로 말하자면, R10000 프로세서는 128비트 프로세서란 말을 들을 수도 있다는 이야기가 된다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;요즘에 와서는 CISC도 RISC와 비슷한 공정을 채용해 단일 사이클에 처리하는 명령어를 많이 갖게되었다. 때문에 RISC와 CISC의 차이를 명확하게는 구분할 수 없게 되었고, 결국 캐시에 따른 차이가 두각을 드러냈다. 바로 CISC가 가진 맹목으로, 복합적인 명령어를 많이 가지려고 하다 보니, 트랜지스터 직접도가 과다하게 늘어나는 것이다. CISC가 가진 비효율이라 할 수 있겠다. RISC에서는 이와는 달리 명령어 체계 단순화를 지향하고, 핵심명령 특화 체제에 있어, 트랜지스터 집적에 여분이 있기 때문에 L1 캐시를 증대시켜 성능을 더욱 증대 시키는 것이다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;예를 들면, Pentium Pro의 경우 L1 캐시 16KB(명령어/데이터 캐시 합친 양)이고 L2 캐시를 제외한 펜티엄 프로의 트랜지스터 집적 수가 550만개인데 반해, RISC CPU인 Power PC 604e 프로세서의 경우 L1 캐시가 64KB인데도 트랜지스터는 510만개다. 특히, 604 프로세서의 세부적인 RISC의 특성을 살펴보자면 한 실행주기당 여러 명령을 동시에 처리하는 슈퍼스칼라(6~7개의 명령어를 처리)를 구현하고 있다. RISC가 CISC를 앞서는 구조적 특징이다.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;]]></content>
						<category term="CISC VS RISC"/>
				
	</entry>
   <entry>
		<title><![CDATA[무어/멧칼프/코우즈의 법칙]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/2258</id>
		<published>2011-12-11T21:40:50+09:00</published>
		<updated>2011-12-11T21:41:34+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2258"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/2258#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;span style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; FONT: medium 나눔고딕; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot;&gt;&lt;strong&gt;무어의 법칙(Moore’s Law)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1965년 일렉트로닉스 매거진은 페어차일드(Fairchild Semiconductor, http://www.fairchild.com/)의 연구소장이었던 Gordon Moore에게 그 당시에는 유아기였던 반도체 산업의 미래에 대해 어떻게 생각하느냐고 물었다. 반도체 산업 초기라서 Moore는 미래 예견을 위한 아무런 데이터를 갖고 있지 않았다. 그러나 그는 엔지니어들이 수개의 일렉트로닉(전자) 디바이스들(트랜지스터)을 마이크로 칩에 응집(집적)할 수 있을 것이라 확신하고 그 트랜지스터의 개수가 대략 매년(그 이후 1975년의 국제회의에서 24개월로 수정, 그 이후 전문가들은 18개월로 말함) 두 배로 증가할 것이라 제안했는데, 이것이 바로 오늘날 우리가 말하는 무어(Moore)의 법칙이다. 1965년 그는 글을 기고했는데, 64개의 트랜지스터를 집적한 복잡한 칩이었다.23) 1959년에 하나의 트랜지스터에서, 1964년에 32개, 1965년에 64개가, 이제 1999년 10월에 인텔(Intel, http://www.intel.com/)이 발표한 펜티엄 III(Pentium III)는 무려 2,800만개의 트랜지스터가, 2000년 11월 20일에 발표한 펜티엄 4는 8,300 만개가 집적되어 있다. 2010년경에는 무려 10억 개의 트랜지스터가 집적된다.&lt;br /&gt;&lt;br /&gt;무어의 법칙은 처리 속도인 스피드의 두 배 증가, 메모리 저장 데이터량의 두 배 증가, 반면에 비용은 상대적으로 떨어지는, 예컨대 성능은 증가하고 비용은 떨어지는 효과를 가져왔다. 바로 디지털 혁명으로 1999년 미국의 기업들이 이들 컴퓨터 정보기술(IT)에 투자한 금액만 2,200억 달러에 이를 정도이며 전세계 컴퓨터만 3억5천만 개로 추산된다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;● 성능 : 18개월마다두배 증가 ---&gt; 스피드 비즈니스, 시간절약, 적시시장진입(TTM)필요&lt;br /&gt;● 저장용량 : 18개월마다 두배 증가 ---&gt; 점점 작아지는 제품개발(2002년 100나노미터 기술개발), 정보, 지식 등 비법활용 및 컨텐츠 비즈니스 가능&lt;br /&gt;● 비용 : Cost 하락 -&gt; “0”에 도달 ---&gt; 저비용 디지털제품 생산(고객만족), 디지털서비스(Products + Services) 비즈니스 모델 탄생&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;멧칼프의 법칙(Metcalfe’s Law)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;무한한 정보와 데이터들인 DVV(데이터, 비디오 및 음성)는 이제 멧칼프의 법칙(Metcalfe’s Law)을 만나게 된다. 즉, DVV를 실어 나를 도로(네트워킹)가 필요한 것이다. LAN의 원조인 이더넷(1973)을 개발한 제록스(Xerox, http://www.xerox.com/)사의 연구소(PARC, Palo Alto Research Center) 연구원인 로버트 멧칼프(Robert Metcalfe)는 그 이후 네트워킹의 리더인 3Com(http://www.3com.com/)을 1981년에 창업하였다. 그는 하나의 네트워크의 유용성 또는 효용성은 그 네트워크 사용자 숫자의 제곱이다(the usefulness or utility of a network equals to the square of its number of users)라고 했는데, 이를 멧칼프의 법칙이라 한다. 사용자란 사람만이 아니라 연결 가능한 모든 것들, 기타 네트워크, 디바이스, 전화 등을 포함한다.&lt;br /&gt;&lt;br /&gt;예를 들어 하나의 팩스기계는 아무 쓸모가 없다. 그러나 두 개가 연결되면 매우 유용하며, 만약 1백만 개가 연결되었다면 그 유용성이나 가치는 1백만의 제곱이다. 두 명의 인터넷 사용자는 그 유용성이 2의 제곱이므로 4가 된다. 따라서 현재 인터넷 이용자가 4억6천이면(2000년 12월 30일 현재 - http://www.nua.com/) 그 가치는 엄청나다는 얘기이다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;● 멧칼프의 법칙의 유용성 : 사용자 수의 제곱 -&gt; 네트워크는 누구의 소유가 아닌 바로 사회의 기술&lt;br /&gt;● 전략 포인트&lt;br /&gt;1) 온라인 비즈니스 -DVV의 상업화 및 값싼 광대역 통신&lt;br /&gt;2) 모든 디바이스/어플라이언스 연결(Computer x Communications)&lt;br /&gt;3) 네트워킹의 지능화&lt;br /&gt;4) 수직-&gt;버추얼 수평화&lt;br /&gt;5) 개인화 및 고객화&lt;br /&gt;6) Circuits-&gt;Packets 이동&lt;br /&gt;7) 모바일 및 레이저의 등장&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;코우즈의 법칙(Coase’s Law)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;로널드 코우즈(Ronald H. Coase, http://www.law.uchicago.edu/faculty/coase/)는 1937년 기업들이 조직되는 이유는 제품과 서비스를 생산하고 팔고 유통하기 위해 반복적으로 들어가는 비용을 절감하기 위해서라고 밝혔다. 그는 1937년 ‘기업의 본질(The Nature of the Firm)’에서 바로 거래 비용을 발견한 것이다. 그 이후 50년이 지난 뒤 1991년 그는 노벨 경제학상(http://www.nobel.se/economics/laureates/1991/coase-autobio.html)을 받았다. 거래 비용이란 번거로움이다. 거래 비용이란 시장에서 기업의 비시장 행동과 관련한 성과를 측정하기 위해 또는 정부규제의 수익과 비용을 측정하기 위해 제품과 서비스에 부가되는 일련의 비효율에 대한 비용이다. 조사 비용, 정보 비용, 교섭 비용, 의사결정 비용, 정책 비용, 집행 비용 등을 말한다. 어떤 경우든 거래 비용은 시장 거래를 더욱 복잡하게 하기 때문에 코우즈(Coase)는 면밀한 연구가 필요하다고 생각했다. 코우즈는 기업이 만들어지는 이유는 개인들이 시장에서 1:1로 거래를 할 때 수반되는 거래 비용보다 기업을 조직하고 유지하는 데 부가되는 비용이 오히려 싸기 때문이라고 결론지었다. 기업은 내부적으로 시장이나 다른 기업이 더 싼 비용으로 제공할 수 없는 기능을 수행한다. 따라서 기업은 내부 거래 비용이 외부거래 비용과 같아지는 지점까지 확대한다.&lt;br /&gt;&lt;br /&gt;바로 이들 거래 비용을 줄이는 방법은 하이텍을 활용하는 것이다. 전화나 디지털 기술들을 활용하면 그만큼 비용을 절감할 수 있다. 오늘날 수많은 기업들이 IT에 GDP의 5% 정도에 해당하는 금액을 투자하는 이유가 바로 여기에 있다. 무어의 법칙과 메트칼프의 법칙이 함께 작용해 코우즈의 거래 비용을 줄여주고 있는 것이다.&lt;br /&gt;&lt;br /&gt;거래 비용을 줄이려면 기업들은 인터넷을 무조건 활용해야 한다. 전통적인 핵심 역량들인 기술개발, 구매, 생산, 판매, 유통, 서비스에 이르기까지 인터넷을 도입하는 이유가 바로 코우즈의 법칙이다. 비용을 절감하고, 만약 거래 비용이 외부 비용보다 높을 경우는 가차없이 분사하거나 분열된다. 이를 분열의 법칙(Law of Disruption)이라고 Chunka Mui는 킬러 앱의 출시(방어)(1998)’ 40)에서 말하고 있다. 예를 들어 시스코사는 내부적으로 어떤 조직이든 300명이 넘는 경우 바로 조직을 둘로 나눈다. 조직이 비대해질수록 거래 비용이 그만큼 높아지며, 조직을 신속히 이끌 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;]]></content>
						<category term="무어/멧칼프/코우즈의 법칙"/>
				
	</entry>
   <entry>
		<title><![CDATA[EPUB]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/186</id>
		<published>2009-09-03T18:49:57+09:00</published>
		<updated>2009-09-03T18:49:57+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/186"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/186#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;h1 id=&quot;firstHeading&quot; class=&quot;firstHeading&quot;&gt;EPUB&lt;/h1&gt;
&lt;div id=&quot;bodyContent&quot;&gt;
&lt;h3 id=&quot;siteSub&quot;&gt;From MobileRead&lt;/h3&gt;
&lt;div id=&quot;contentSub&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;jump-to-nav&quot;&gt;Jump to: &lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#column-one&quot;&gt;navigation&lt;/a&gt;, &lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#searchInput&quot;&gt;search&lt;/a&gt;&lt;/div&gt;&lt;!-- start content --&gt;
&lt;p&gt;ePub is an open format defined by the Open eBook Forum of the International Digital Publishing Forum (&lt;&lt;a title=&quot;Idpf&quot; href=&quot;http://wiki.mobileread.com/wiki/Idpf&quot;&gt;idpf&lt;/a&gt;&gt;). It is based on XHTML and XML along with optional style sheets. Its predecessor was the &lt;a title=&quot;Open eBook&quot; href=&quot;http://wiki.mobileread.com/wiki/Open_eBook&quot;&gt;OEB&lt;/a&gt; standard. Specifications are found at the idpf web site. &lt;/p&gt;
&lt;table id=&quot;toc&quot; class=&quot;toc&quot; summary=&quot;Contents&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div id=&quot;toctitle&quot;&gt;
&lt;h2&gt;Contents&lt;/h2&gt;&lt;span class=&quot;toctoggle&quot;&gt;[&lt;a id=&quot;togglelink&quot; class=&quot;internal&quot; href=&quot;_javascript:toggleToc()&quot;&gt;hide&lt;/a&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;toclevel-1&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#Definition&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;Definition&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-1&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#Usage&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;Usage&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-1&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#Readers&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;Readers&lt;/span&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li class=&quot;toclevel-2&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#Software&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;3.1&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;Software&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-2&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#Hardware&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;3.2&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;Hardware&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-1&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#ePub_Creation_software&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;ePub Creation software&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-1&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#Specificatons&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;Specificatons&lt;/span&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li class=&quot;toclevel-2&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#OCF&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;5.1&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;OCF&lt;/span&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li class=&quot;toclevel-3&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#mimetype&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;5.1.1&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;mimetype&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-2&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#OPF&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;5.2&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;OPF&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-2&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#OPS&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;5.3&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;OPS&lt;/span&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li class=&quot;toclevel-3&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#XHTML&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;5.3.1&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;XHTML&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-3&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#Relationships&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;5.3.2&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;Relationships&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-1&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#Tips&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;Tips&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;toclevel-1&quot;&gt;&lt;a href=&quot;http://wiki.mobileread.com/wiki/EPUB#For_more_information&quot;&gt;&lt;span class=&quot;tocnumber&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;toctext&quot;&gt;For more information&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;script type=&quot;text/javascript&quot;&gt; if (window.showTocToggle) { var tocShowText = &quot;show&quot;; var tocHideText = &quot;hide&quot;; showTocToggle(); } &lt;/script&gt;
&lt;a id=&quot;Definition&quot; name=&quot;Definition&quot;&gt;&lt;/a&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: Definition&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=1&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;Definition&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Quoted from the idpf web site &lt;/p&gt;
&lt;p&gt;&quot;&#039;.epub&#039; is the file extension of an XML format for reflowable digital books and publications. &#039;.epub&#039; is composed of three open standards, the Open Publication Structure (OPS), Open Packaging Format (OPF) and Open Container Format (OCF), produced by the IDPF. &#039;.epub&#039; allows publishers to produce and send a single digital publication file through distribution and offers consumers interoperability between software/hardware for unencrypted reflowable digital books and other publications. The Open eBook Publication Structure or &#039;OEB&#039;, originally produced in 1999, is the precursor to OPS.&quot; &lt;/p&gt;&lt;a id=&quot;Usage&quot; name=&quot;Usage&quot;&gt;&lt;/a&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: Usage&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=2&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;Usage&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;The intent of ePub is to serve both as a source file format and an end user format. For this reason the files are collected into a container for easy dissemination and use. This container is generally a zip file but the extension has been renamed to .epub. It has special requirements by including an uncompressed mime type file while the rest of the data in the file is compressed. A ePub reader should be capable of reading the content in its compressed format. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Mime Type&lt;/b&gt;: Multipurpose Internet Mail Extensions (&lt;a class=&quot;external free&quot; title=&quot;http://www.isi.edu/in-notes/rfc2045.txt&quot; href=&quot;http://www.isi.edu/in-notes/rfc2045.txt&quot; rel=&quot;nofollow&quot;&gt;http://www.isi.edu/in-notes/rfc2045.txt&lt;/a&gt;). “&lt;b&gt;MIME media types&lt;/b&gt;” provide a standard methodology for specifying the content type of objects. &lt;/p&gt;&lt;a id=&quot;Readers&quot; name=&quot;Readers&quot;&gt;&lt;/a&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: Readers&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=3&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;Readers&lt;/span&gt;&lt;/h2&gt;&lt;a id=&quot;Software&quot; name=&quot;Software&quot;&gt;&lt;/a&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: Software&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=4&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;Software&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;Adobe Digital Editions&quot; href=&quot;http://wiki.mobileread.com/wiki/Adobe_Digital_Editions&quot;&gt;Adobe Digital Editions&lt;/a&gt; - This reads Adobe &lt;a title=&quot;DRM&quot; href=&quot;http://wiki.mobileread.com/wiki/DRM&quot;&gt;DRM&lt;/a&gt; ePUB ebooks as well as non-DRM. &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;AZARDI&quot; href=&quot;http://wiki.mobileread.com/wiki/AZARDI&quot;&gt;AZARDI&lt;/a&gt; - read ePUB and verify conformance. &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Bookworm&quot; href=&quot;http://wiki.mobileread.com/wiki/Bookworm&quot;&gt;Bookworm&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Calibre&quot; href=&quot;http://wiki.mobileread.com/wiki/Calibre&quot;&gt;Calibre&lt;/a&gt; - &lt;a title=&quot;Windows&quot; href=&quot;http://wiki.mobileread.com/wiki/Windows&quot;&gt;Windows&lt;/a&gt;, &lt;a title=&quot;MacOS X&quot; href=&quot;http://wiki.mobileread.com/wiki/MacOS_X&quot;&gt;MacOS X&lt;/a&gt; and &lt;a title=&quot;Linux&quot; href=&quot;http://wiki.mobileread.com/wiki/Linux&quot;&gt;Linux&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;FBReader&quot; href=&quot;http://wiki.mobileread.com/wiki/FBReader&quot;&gt;FBReader&lt;/a&gt;, &lt;a title=&quot;Windows&quot; href=&quot;http://wiki.mobileread.com/wiki/Windows&quot;&gt;Windows&lt;/a&gt; and more &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;OpenBerg Lector&quot; href=&quot;http://wiki.mobileread.com/wiki/OpenBerg_Lector&quot;&gt;OpenBerg Lector&lt;/a&gt; - Browser plugin &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Stanza&quot; href=&quot;http://wiki.mobileread.com/wiki/Stanza&quot;&gt;Stanza&lt;/a&gt;, &lt;a title=&quot;Windows&quot; href=&quot;http://wiki.mobileread.com/wiki/Windows&quot;&gt;Windows&lt;/a&gt;, &lt;a title=&quot;MacOS X&quot; href=&quot;http://wiki.mobileread.com/wiki/MacOS_X&quot;&gt;MacOS X&lt;/a&gt;, and &lt;a title=&quot;IPhone&quot; href=&quot;http://wiki.mobileread.com/wiki/IPhone&quot;&gt;iPhone&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;a id=&quot;Hardware&quot; name=&quot;Hardware&quot;&gt;&lt;/a&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: Hardware&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=5&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;Hardware&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;PRS700&quot; href=&quot;http://wiki.mobileread.com/wiki/PRS700&quot;&gt;Sony Reader PRS-700&lt;/a&gt; - Sony Readers also support Adobe ADEPT (DRM) technology (EPUB/PDF) &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;PRS505&quot; href=&quot;http://wiki.mobileread.com/wiki/PRS505&quot;&gt;Sony Reader PRS-505&lt;/a&gt; - Among other things, the V1.1 (Jul&#039;08) firmware update added ePub support to the 505. &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Hanlin V3&quot; href=&quot;http://wiki.mobileread.com/wiki/Hanlin_V3&quot;&gt;Hanlin V3&lt;/a&gt; and all its clones &lt;a title=&quot;Bebook&quot; href=&quot;http://wiki.mobileread.com/wiki/Bebook&quot;&gt;Bebook&lt;/a&gt;, &lt;a title=&quot;EZ Reader&quot; href=&quot;http://wiki.mobileread.com/wiki/EZ_Reader&quot;&gt;EZ Reader&lt;/a&gt;, etc. See the &lt;a title=&quot;Hanlin V3&quot; href=&quot;http://wiki.mobileread.com/wiki/Hanlin_V3#Dealers_and_OEM_customers&quot;&gt;full list&lt;/a&gt; - No DRM, A new firmware release (August 2009) uses &lt;a class=&quot;mw-redirect&quot; title=&quot;ADE&quot; href=&quot;http://wiki.mobileread.com/wiki/ADE&quot;&gt;ADE&lt;/a&gt; software that can support &lt;a title=&quot;DRM&quot; href=&quot;http://wiki.mobileread.com/wiki/DRM&quot;&gt;DRM&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;JetBook&quot; href=&quot;http://wiki.mobileread.com/wiki/JetBook&quot;&gt;JetBook&lt;/a&gt; - No DRM &lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Bookeen Cybook Opus&quot; href=&quot;http://wiki.mobileread.com/wiki/Bookeen_Cybook_Opus&quot;&gt;Bookeen Cybook Opus&lt;/a&gt; - Full support using ADE. &lt;/li&gt;&lt;/ul&gt;&lt;a id=&quot;ePub_Creation_software&quot; name=&quot;ePub_Creation_software&quot;&gt;&lt;/a&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: ePub Creation software&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=6&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;ePub Creation software&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://www.adobe.com/products/indesign/&quot; href=&quot;http://www.adobe.com/products/indesign/&quot; rel=&quot;nofollow&quot;&gt;Adobe InDesign&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://www.atlantiswordprocessor.com/en/help/index.php?page=html/ebook.htm&quot; href=&quot;http://www.atlantiswordprocessor.com/en/help/index.php?page=html/ebook.htm&quot; rel=&quot;nofollow&quot;&gt;Atlantis Word Processor&lt;/a&gt; - can convert any TXT/RTF/DOC/DOCX document to ePub. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;Calibre&quot; href=&quot;http://wiki.mobileread.com/wiki/Calibre&quot;&gt;Calibre&lt;/a&gt; Click the &quot;hammer&quot; icon next to the search bar and set the output format to EPUB. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://jigsaw.w3.org/css-validator/#validate_by_upload&quot; href=&quot;http://jigsaw.w3.org/css-validator/#validate_by_upload&quot; rel=&quot;nofollow&quot;&gt;CSS check tool&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;DAISY Pipeline&quot; href=&quot;http://wiki.mobileread.com/wiki/DAISY_Pipeline&quot;&gt;DAISY Pipeline&lt;/a&gt; - creation and checking tools &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;ECub&quot; href=&quot;http://wiki.mobileread.com/wiki/ECub&quot;&gt;eCub&lt;/a&gt; - a simple to use EPUB and MobiPocket ebook creator &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://code.google.com/p/epubcheck/&quot; href=&quot;http://code.google.com/p/epubcheck/&quot; rel=&quot;nofollow&quot;&gt;ePUB check tool&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://code.google.com/p/epub-tools/&quot; href=&quot;http://code.google.com/p/epub-tools/&quot; rel=&quot;nofollow&quot;&gt;ePUB Tools&lt;/a&gt; - A collection of open source tools used to create and check ePUB &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;EScape&quot; href=&quot;http://wiki.mobileread.com/wiki/EScape&quot;&gt;EScape&lt;/a&gt; - an add-on for Open Office (&lt;a title=&quot;ODT&quot; href=&quot;http://wiki.mobileread.com/wiki/ODT&quot;&gt;ODT&lt;/a&gt;), not for commercial use. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://www.feedbooks.com&quot; href=&quot;http://www.feedbooks.com/&quot; rel=&quot;nofollow&quot;&gt;Convert uploads to ePUB&lt;/a&gt; at &lt;a title=&quot;Feedbooks&quot; href=&quot;http://wiki.mobileread.com/wiki/Feedbooks&quot;&gt;Feedbooks&lt;/a&gt;.com. You don&#039;t have to hit the &quot;publish&quot; button. Just edit your text, and download the ePub preview. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://openberg.sourceforge.net/?page_id=54&quot; href=&quot;http://openberg.sourceforge.net/?page_id=54&quot; rel=&quot;nofollow&quot;&gt;OpenBerg Rector&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://www.mobileread.com/forums/showthread.php?p=78356&quot; href=&quot;http://www.mobileread.com/forums/showthread.php?p=78356&quot; rel=&quot;nofollow&quot;&gt;Python converter&lt;/a&gt; posted by &lt;a title=&quot;User:MishaS&quot; href=&quot;http://wiki.mobileread.com/wiki/User:MishaS&quot;&gt;MishaS&lt;/a&gt; - His latest version of &lt;a class=&quot;external text&quot; title=&quot;http://bazaar.launchpad.net/%7Emishas/%2Bjunk/ebook-tools/download/mss%40mawhrin.net-20080321200811-yba03okmnf49sycn/oeb2epub-20071117163354-w7j1br3qofyzd48a-2/oeb2epub&quot; href=&quot;http://bazaar.launchpad.net/~mishas/%2Bjunk/ebook-tools/download/mss%40mawhrin.net-20080321200811-yba03okmnf49sycn/oeb2epub-20071117163354-w7j1br3qofyzd48a-2/oeb2epub&quot; rel=&quot;nofollow&quot;&gt;oeb2epub&lt;/a&gt; is at &lt;a class=&quot;external text&quot; title=&quot;https://code.launchpad.net/~mishas/+junk/ebook-tools&quot; href=&quot;https://code.launchpad.net/~mishas/+junk/ebook-tools&quot; rel=&quot;nofollow&quot;&gt;his site&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;Sigil&quot; href=&quot;http://wiki.mobileread.com/wiki/Sigil&quot;&gt;Sigil&lt;/a&gt; is an editor (word processor) for directly changing or creating ePUB files. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;Stanza&quot; href=&quot;http://wiki.mobileread.com/wiki/Stanza&quot;&gt;Stanza&lt;/a&gt; - converter for PC and Mac, typically strips formatting prior to conversion. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;external text&quot; title=&quot;http://web2fb2.net/&quot; href=&quot;http://web2fb2.net/&quot; rel=&quot;nofollow&quot;&gt;Web2FB2&lt;/a&gt; is a web site that will convert a URL to FB2 and ePUB format. &lt;/li&gt;&lt;/ul&gt;&lt;a id=&quot;Specificatons&quot; name=&quot;Specificatons&quot;&gt;&lt;/a&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: Specificatons&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=7&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;Specificatons&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class=&quot;external free&quot; title=&quot;http://www.idpf.org/specs.htm&quot; href=&quot;http://www.idpf.org/specs.htm&quot; rel=&quot;nofollow&quot;&gt;http://www.idpf.org/specs.htm&lt;/a&gt; contains the specifications for this format. In particular check the version 2.0 OPS and OPF specs and the version 1.0 OCF spec. The Informational documents are also quite useful in understanding the intent and content. &lt;/p&gt;&lt;a id=&quot;OCF&quot; name=&quot;OCF&quot;&gt;&lt;/a&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: OCF&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=8&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;OCF&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;A typical OCF is a zip file that might look like: &lt;/p&gt;&lt;pre&gt;mimetype
META-INF/
  container.xml
  [manifest.xml]
  [metadata.xml]
  [signatures.xml]
  [encryption.xml]
  [rights.xml]
OEBPS/
  Great Expectations.opf
  cover.html
  chapters/
     chapter01.html
     chapter02.html
     … other HTML files for the remaining chapters …
&lt;/pre&gt;&lt;a id=&quot;mimetype&quot; name=&quot;mimetype&quot;&gt;&lt;/a&gt;
&lt;h4&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: mimetype&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=9&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;mimetype&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;The &lt;b&gt;first&lt;/b&gt; file in the ZIP Container MUST be a file by the ASCII name of ‘mimetype’ which holds the MIME type for the ZIP Container (i.e., “application/epub+zip” as a &lt;b&gt;20 character ASCII string&lt;/b&gt;; no padding, CR/LF, white-space or case change). The file MUST NOT be compressed nor encrypted and there MUST NOT be an extra field in its ZIP header. &lt;/p&gt;&lt;a id=&quot;OPF&quot; name=&quot;OPF&quot;&gt;&lt;/a&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: OPF&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=10&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;OPF&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;The Open Packaging Format (OPF) Specification, defines the mechanism by which the various components of an OPS publication are tied together and provides additional structure and semantics to the electronic publication. &lt;/p&gt;
&lt;p&gt;Specifically, OPF: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Describes and references all components of the electronic publication (e.g. markup files, images, navigation structures). &lt;/li&gt;
&lt;li&gt;Provides publication-level &lt;a title=&quot;Metadata&quot; href=&quot;http://wiki.mobileread.com/wiki/Metadata&quot;&gt;metadata&lt;/a&gt;. Specifically it should include: &lt;a title=&quot;Metadata&quot; href=&quot;http://wiki.mobileread.com/wiki/Metadata#ePUB_metadata&quot;&gt;dublin core formatted data&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Specifies the linear reading-order of the publication. &lt;/li&gt;
&lt;li&gt;Provides fallback information to use when unsupported extensions to OPS are employed. &lt;/li&gt;
&lt;li&gt;Provides a mechanism to specify a declarative table of contents (the NCX). &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;An example: &lt;/p&gt;&lt;pre&gt;&lt;package version=&quot;2.0&quot; xmlns=&quot;&lt;a class=&quot;external free&quot; title=&quot;http://www.idpf.org/2007/opf&quot; href=&quot;http://www.idpf.org/2007/opf&quot; rel=&quot;nofollow&quot;&gt;http://www.idpf.org/2007/opf&lt;/a&gt;&quot;
        unique-identifier=&quot;BookId&quot;&gt;
    &lt;metadata xmlns:dc=&quot;&lt;a class=&quot;external free&quot; title=&quot;http://purl.org/dc/elements/1.1/&quot; href=&quot;http://purl.org/dc/elements/1.1/&quot; rel=&quot;nofollow&quot;&gt;http://purl.org/dc/elements/1.1/&lt;/a&gt;&quot;
               xmlns:opf=&quot;&lt;a class=&quot;external free&quot; title=&quot;http://www.idpf.org/2007/opf&quot; href=&quot;http://www.idpf.org/2007/opf&quot; rel=&quot;nofollow&quot;&gt;http://www.idpf.org/2007/opf&lt;/a&gt;&quot;&gt;
          &lt;dc:title&gt;Alice in Wonderland&lt;/dc:title&gt;
          &lt;dc:language&gt;en&lt;/dc:language&gt;
          &lt;dc:identifier id=&quot;BookId&quot; opf:scheme=&quot;ISBN&quot;&gt;
           123456789X
          &lt;/dc:identifier&gt;
          &lt;dc:creator opf:role=&quot;aut&quot;&gt;Lewis Carroll&lt;/dc:creator&gt;
    &lt;/metadata&gt;
    &lt;manifest&gt;
       &lt;item id=&quot;intro&quot; href=&quot;introduction.html&quot;
               media-type=&quot;application/xhtml+xml&quot; /&gt;
       &lt;item id=&quot;c1&quot; href=&quot;chapter-1.html&quot;
               media-type=&quot;application/xhtml+xml&quot; /&gt;
       &lt;item id=&quot;c2&quot; href=&quot;chapter-2.html&quot;
               media-type=application/xhtml+xml&quot; /&gt;
       &lt;item id=&quot;toc&quot; href=&quot;contents.xml&quot;
               media-type=&quot;application/xhtml+xml&quot; /&gt;
       &lt;item id=&quot;oview&quot; href=&quot;arch.png&quot;
               media-type=&quot;image/png&quot; /&gt;
    &lt;/manifest&gt;
    &lt;spine toc=&quot;ncx&quot;&gt;
       &lt;itemref idref=&quot;intro&quot; /&gt;
       &lt;itemref idref=&quot;toc&quot; /&gt;
       &lt;itemref idref=&quot;c1&quot; /&gt;
       &lt;itemref idref=&quot;c2&quot; /&gt;
       &lt;itemref idref=&quot;oview&quot; linear=&quot;no&quot; /&gt;
    &lt;/spine&gt;
&lt;/package&gt;
&lt;/pre&gt;&lt;a id=&quot;OPS&quot; name=&quot;OPS&quot;&gt;&lt;/a&gt;
&lt;h3&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: OPS&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=11&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;OPS&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;The Open Publication Structure (OPS) Specification describes a standard for representing the content of electronic publications. &lt;/p&gt;
&lt;p&gt;Specifically: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The specification is intended to give content providers (e.g. publishers, authors, and others who have content to be displayed) and publication tool providers, minimal and common guidelines that ensure fidelity, accuracy, accessibility, and adequate presentation of electronic content over various Reading Systems. &lt;/li&gt;
&lt;li&gt;The specification seeks to reflect established content format standards. &lt;/li&gt;
&lt;li&gt;The goal of this specification is to define a standard means of content description for use by purveyors of electronic books (publishers, agents, authors et al.) allowing such content to be provided to multiple Reading Systems and to insure maximum presentational equivalence across Reading Systems. &lt;/li&gt;&lt;/ul&gt;&lt;a id=&quot;XHTML&quot; name=&quot;XHTML&quot;&gt;&lt;/a&gt;
&lt;h4&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: XHTML&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=12&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;XHTML&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;A conforming OPS document must support the following &lt;a title=&quot;XHTML&quot; href=&quot;http://wiki.mobileread.com/wiki/XHTML&quot;&gt;XHTML&lt;/a&gt; constructions. &lt;/p&gt;
&lt;table class=&quot;wikitable&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;XHTML 1.1 Module Name&lt;/th&gt;
&lt;th&gt;Elements (non-normative)&lt;/th&gt;
&lt;th&gt;Notes &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Structure&lt;/td&gt;
&lt;td&gt;body, head, html, title &lt;/td&gt;
&lt;td&gt;the default rendering for body is consistent with the &lt;a title=&quot;CSS&quot; href=&quot;http://wiki.mobileread.com/wiki/CSS&quot;&gt;CSS&lt;/a&gt; property page-break-before having been set to right (which behaves like always on one-page Reading Systems), but may be overridden by an appropriate style sheet declaration. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text &lt;/td&gt;
&lt;td&gt;abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, var &lt;/td&gt;
&lt;td&gt;The optional attribute cite may be used in blockquote, q, del and ins to provide a URI citation for the element contents. Reading Systems are not required to process or use the referenced URI resource, whether or not the resource is listed in the Manifest. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hypertext&lt;/td&gt;
&lt;td&gt;a &lt;/td&gt;
&lt;td&gt;Reading Systems may use or render a URI referenced physical resource not listed in the Manifest (i.e., it is not a component of the Publication), but they are not required to do so. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List&lt;/td&gt;
&lt;td&gt;dl, dt, dd, ol, ul, li&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Object&lt;/td&gt;
&lt;td&gt;object, param &lt;/td&gt;
&lt;td&gt;The object element is the preferred method for generic object inclusion. When adding objects whose data media type is not drawn from the OPS Core Media Type list or which reference an object implementation using the classid attribute, the object element must specify fallback information for the object, such as another object, an img element, or descriptive text. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Presentation&lt;/td&gt;
&lt;td&gt;b, big, hr, i, small, sub, sup, tt&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edit&lt;/td&gt;
&lt;td&gt;del, ins &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bidirectional Text&lt;/td&gt;
&lt;td&gt;bdo&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Table&lt;/td&gt;
&lt;td&gt;caption, col, colgroup, table, tbody, td, tfoot, th, thead, tr&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image&lt;/td&gt;
&lt;td&gt;img &lt;/td&gt;
&lt;td&gt;The inline element img should only be used to refer to images with OPS Core Media Types of &lt;a class=&quot;mw-redirect&quot; title=&quot;GIF&quot; href=&quot;http://wiki.mobileread.com/wiki/GIF&quot;&gt;GIF&lt;/a&gt; (&lt;a class=&quot;external free&quot; title=&quot;http://www.w3.org/Graphics/GIF/spec-gif89a.txt&quot; href=&quot;http://www.w3.org/Graphics/GIF/spec-gif89a.txt&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/Graphics/GIF/spec-gif89a.txt&lt;/a&gt;), &lt;a class=&quot;mw-redirect&quot; title=&quot;PNG&quot; href=&quot;http://wiki.mobileread.com/wiki/PNG&quot;&gt;PNG&lt;/a&gt; (&lt;a class=&quot;external&quot; title=&quot;http://tools.ietf.org/html/rfc2083&quot; href=&quot;http://tools.ietf.org/html/rfc2083&quot;&gt;RFC 2083&lt;/a&gt;), &lt;a class=&quot;mw-redirect&quot; title=&quot;JPG&quot; href=&quot;http://wiki.mobileread.com/wiki/JPG&quot;&gt;JPG&lt;/a&gt;/JFIF (&lt;a class=&quot;external free&quot; title=&quot;http://www.w3.org/Graphics/JPEG&quot; href=&quot;http://www.w3.org/Graphics/JPEG&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/Graphics/JPEG&lt;/a&gt;) or &lt;a title=&quot;SVG&quot; href=&quot;http://wiki.mobileread.com/wiki/SVG&quot;&gt;SVG&lt;/a&gt; (&lt;a class=&quot;external free&quot; title=&quot;http://www.w3.org/TR/SVG11/&quot; href=&quot;http://www.w3.org/TR/SVG11/&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/TR/SVG11/&lt;/a&gt;). The required URI attribute, src, is used to reference the image resource, which must be listed in the Manifest. 
&lt;p&gt;The required &lt;i&gt;alt&lt;/i&gt; attribute should contain a brief and informative textual description of the image. This text may be used by Reading Systems as an alternative to, or in addition to, displaying the image. The text is also an acceptable fallback for an img with src referencing a non-OPS Core Media Type for which no viable fallback was found in the manifest. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client-Side Image Map&lt;/td&gt;
&lt;td&gt;area, map&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta-Information&lt;/td&gt;
&lt;td&gt;meta&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Style Sheet&lt;/td&gt;
&lt;td&gt;style &lt;/td&gt;
&lt;td&gt;The type attribute of the style element is required and must be given the value of text/css or the deprecated text/x-oeb1-css. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Style Attribute (deprecated)&lt;/td&gt;
&lt;td&gt;style attribute&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Link&lt;/td&gt;
&lt;td&gt;link &lt;/td&gt;
&lt;td&gt;The link element allows for the specification of various relationships with other documents. Reading Systems must recognize external style sheet references specified via the href attribute and the associated rel attribute (for the values rel=&quot;stylesheet&quot; and rel=&quot;alternate stylesheet&quot;.) &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base&lt;/td&gt;
&lt;td&gt;base&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a id=&quot;Relationships&quot; name=&quot;Relationships&quot;&gt;&lt;/a&gt;
&lt;h4&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: Relationships&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=13&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;Relationships&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;Relationship to NVDL&lt;/b&gt; &lt;/p&gt;
&lt;p&gt;This specification uses the NVDL language (see &lt;a class=&quot;external free&quot; title=&quot;http://standards.iso.org/ittf/PubliclyAvailableStandards/c038615_ISO_IEC_19757-4_2006(E).zip)&quot; href=&quot;http://standards.iso.org/ittf/PubliclyAvailableStandards/c038615_ISO_IEC_19757-4_2006(E).zip)&quot; rel=&quot;nofollow&quot;&gt;http://standards.iso.org/ittf/PubliclyAvailableStandards/c038615_ISO_IEC_19757-4_2006(E).zip)&lt;/a&gt; as a means to unambiguously define the interaction between the various schemas used in this specification. NVDL allows for interaction and validation between various XML schema languages. See Appendix A for a normative NVDL definition of OPS. &lt;/p&gt;
&lt;p&gt;This specification does not require the use of NVDL tools to validate OPS documents, although such tools are available and may be used for validation. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Relationship to &lt;a title=&quot;XHTML&quot; href=&quot;http://wiki.mobileread.com/wiki/XHTML&quot;&gt;XHTML&lt;/a&gt; and &lt;a title=&quot;DTBook&quot; href=&quot;http://wiki.mobileread.com/wiki/DTBook&quot;&gt;DTBook&lt;/a&gt;&lt;/b&gt; &lt;/p&gt;
&lt;p&gt;This specification recognizes the importance of current software tools, legacy data, publication practices, and market conditions, and has therefore incorporated certain XHTML 1.1 Document Type Modules and DTBook as Preferred Vocabularies. This approach allows content providers to exploit current XHTML and DTBook content, tools, and expertise. &lt;/p&gt;
&lt;p&gt;To minimize the implementation burden on Reading System implementers (who may be working with devices that have power and display constraints), the Preferred Vocabularies do not include all XHTML 1.1 elements and attributes. Further, the modules selected from the XHTML 1.1 specification were chosen to be consistent with current directions in XHTML. &lt;/p&gt;
&lt;p&gt;Any construct deprecated in XHTML 1.1 is either deprecated or omitted from this specification; CSS-based equivalents are provided in most such cases. Style sheet constructs are also used for new presentational functionality beyond that provided in XHTML. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Relationship to &lt;a title=&quot;CSS&quot; href=&quot;http://wiki.mobileread.com/wiki/CSS&quot;&gt;CSS&lt;/a&gt;&lt;/b&gt; &lt;/p&gt;
&lt;p&gt;This specification defines a style language based on CSS 2. (Note that the CSS 2.1 specification is currently still at &quot;Working Draft&quot; status.) The style sheet MIME type text/x-oeb1-css has been deprecated in favor of text/css. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Relationship to &lt;a title=&quot;XML&quot; href=&quot;http://wiki.mobileread.com/wiki/XML&quot;&gt;XML&lt;/a&gt;&lt;/b&gt; &lt;/p&gt;
&lt;p&gt;OPS is based on XML because of its generality and simplicity, and because XML documents are likely to adapt well to future technologies and uses. XML also provides well-defined rules for the syntax of documents, which decreases the cost to implementers and reduces incompatibility across systems. Further, XML is extensible: it is not tied to any particular type of document or set of element types, it supports internationalization, and it encourages document markup that can represent a document’s internal parts more directly, making them amenable to automated formatting and other types of computer processing. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reading Systems must be XML processors as defined in XML 1.1. All OPS Content Documents must be valid XML documents according to their respective schemas. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Relationship to XML Namespaces&lt;/b&gt; &lt;/p&gt;
&lt;p&gt;Reading Systems must process XML namespaces according to the XML Namespaces Recommendation at &lt;a class=&quot;external free&quot; title=&quot;http://www.w3.org/TR/xml-names11/&quot; href=&quot;http://www.w3.org/TR/xml-names11/&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/TR/xml-names11/&lt;/a&gt;. For example: &lt;/p&gt;&lt;pre&gt;xmlns:ops=&quot;&lt;a class=&quot;external free&quot; title=&quot;http://www.idpf.org/2007/ops&quot; href=&quot;http://www.idpf.org/2007/ops&quot; rel=&quot;nofollow&quot;&gt;http://www.idpf.org/2007/ops&lt;/a&gt;&quot;
&lt;/pre&gt;&lt;a id=&quot;Tips&quot; name=&quot;Tips&quot;&gt;&lt;/a&gt;
&lt;h2&gt;&lt;span class=&quot;editsection&quot;&gt;[&lt;a title=&quot;Edit section: Tips&quot; href=&quot;http://wiki.mobileread.com/index.php?title=EPUB&amp;action=edit&amp;section=14&quot;&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class=&quot;mw-headline&quot;&gt;Tips&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;It is possible to make an eBook that conforms to the standard by placing the entire book contents in one XHTML file but the performance will be impacted by this decision. For best performance a standard size book should be divided into several files as the full file needs to be loading into memory at once. This is usually accomplished by separating the files by chapter. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Some mobile devices cannot handle large ePUB files. Generally this is caused by having an XHTML file that is too large. If the file can be expanded the large XHTML file may be able to be broken into multiple files. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;The ePub file format has proper support for TOC, through the use of TOC.NCX files. Not all reader applications support this currently. This is documented in the &lt;a title=&quot;DTBook&quot; href=&quot;http://wiki.mobileread.com/wiki/DTBook&quot;&gt;DTBook&lt;/a&gt; standard. &lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Make sure all tags are complete (no dangling tags). htmltidy does a great job here &lt;/li&gt;
&lt;li&gt;Get rid of as many tables as you can! A lot of these CHM type files put the entire content of the page in one table and that causes tons of problems &lt;/li&gt;
&lt;li&gt;&quot;normal&quot; tables tend to get truncated in the reader due to being too wide. Convert these tables to some intelligent lists with &lt;hr/&gt;&#039;s around them &lt;/li&gt;
&lt;li&gt;Play with the CSS to get the colors cleaned up. A lot of the &quot;color&quot; gets translated to light grey and it sucks. Best just to change everything to black that you can &lt;/li&gt;
&lt;li&gt;&lt;pre&gt; blocks of code can go off the page as well. Use the CSS to shrink their font size and, at worst, reformat the blocks to keep them into a 70 character width at 6pt. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;]]></content>
						<category term="EPUB"/>
				
	</entry>
   <entry>
		<title><![CDATA[SDR]]></title>
		<id>https://www.stechstar.com/user/zbxe/digital_new_service/182</id>
		<published>2009-09-02T21:05:14+09:00</published>
		<updated>2009-09-02T21:05:14+09:00</updated>
		<link rel="alternate" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/182"/>
		<link rel="replies" type="text/html" href="https://www.stechstar.com/user/zbxe/digital_new_service/182#comment"/>
		<author>
			<name><![CDATA[가을의 곰을...]]></name>
					</author>
				<content type="html"><![CDATA[&lt;div class=&quot;xe_content&quot;&gt;&lt;table id=&quot;tableWidth&quot; border=&quot;0&quot; cellSpacing=&quot;0&quot; cellPadding=&quot;0&quot; width=&quot;100%&quot; bgColor=&quot;white&quot;&gt;
&lt;form name=&quot;form&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;&lt;img data-autoattach=&quot;success&quot; style=&quot;CURSOR: hand&quot; _onclick=&quot;printDiv(&#039;printSpace&#039;)&quot; border=&quot;0&quot; name=&quot;b&quot; src=&quot;./files/attach/images/109/182/7a1f2c55bfc33ea30d41d595f5e0f2ac.gif&quot; /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr bgColor=&quot;white&quot;&gt;
&lt;td width=&quot;100%&quot;&gt;
&lt;div id=&quot;printSpace&quot;&gt;
&lt;table border=&quot;0&quot; cellPadding=&quot;5&quot; width=&quot;100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;&lt;font color=&quot;blue&quot; size=&quot;2&quot;&gt;SDR&lt;/font&gt;&lt;/b&gt;&nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=&quot;2&quot;&gt;소프트웨어 정의 무선, Software Defined Radio, -定義無線 &nbsp;[무선] &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;2009.01.29 일에 최종수정&lt;br  /&gt;
&lt;hr  /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;하나의 무선 기기로 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;16843&#039;)&quot;&gt;주파수&lt;/a&gt;나 출력, 변조 방식 등을 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;13548&#039;)&quot;&gt;소프트웨어&lt;/a&gt;적으로 변경하여 다른 무선 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;882&#039;)&quot;&gt;통신 방식&lt;/a&gt;의 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;13182&#039;)&quot;&gt;서비스&lt;/a&gt;를 제공받을 수 있는 기술. &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;1260&#039;)&quot;&gt;안테나&lt;/a&gt;, &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;21310&#039;)&quot;&gt;고주파&lt;/a&gt; 처리 부분 등 최소한의 필요한 부분만 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;19078&#039;)&quot;&gt;하드웨어&lt;/a&gt;로 구성하고 나머지 부분은 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;16843&#039;)&quot;&gt;주파수&lt;/a&gt;, &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;7868&#039;)&quot;&gt;네트워크&lt;/a&gt;, &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;882&#039;)&quot;&gt;통신 방식&lt;/a&gt;에 따라 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;13548&#039;)&quot;&gt;소프트웨어&lt;/a&gt; 형태로 바꾸어 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;8101&#039;)&quot;&gt;다운로드&lt;/a&gt;해 사용하게 한다. 장소, 시간에 관계없이 하나의 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;8282&#039;)&quot;&gt;단말기&lt;/a&gt;와 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;13548&#039;)&quot;&gt;소프트웨어&lt;/a&gt;의 조작만으로 다중 모드, 다중 대역, 다중 환경의 무선 통신 환경을 선택하여 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;13182&#039;)&quot;&gt;서비스&lt;/a&gt;를 제공받을 수 있고, &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;3195&#039;)&quot;&gt;이동 전화&lt;/a&gt;, &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;4390&#039;)&quot;&gt;개인 휴대 정보 단말기&lt;/a&gt;(&lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;18334&#039;)&quot;&gt;PDA&lt;/a&gt;), &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;7906&#039;)&quot;&gt;노트북 컴퓨터&lt;/a&gt; 등 휴대 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;8282&#039;)&quot;&gt;단말기&lt;/a&gt;에 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;13548&#039;)&quot;&gt;소프트웨어&lt;/a&gt; 정의 무선(SDR) 모듈을 탑재하면 하나의 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;8282&#039;)&quot;&gt;단말기&lt;/a&gt;에 서로 다른 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;16843&#039;)&quot;&gt;주파수&lt;/a&gt; 대역과 2개 이상의 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;14289&#039;)&quot;&gt;시스템&lt;/a&gt;을 동시에 지원하는 것이 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;3881&#039;)&quot;&gt;가능해&lt;/a&gt;진다. 또한 전 IP 기반 무선 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;10242&#039;)&quot;&gt;멀티미디어 통신&lt;/a&gt;을 추구하는 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;23784&#039;)&quot;&gt;4세대 이동 통신&lt;/a&gt;(4G)에서는 무선 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;7868&#039;)&quot;&gt;네트워크&lt;/a&gt;와 다양한 무선 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;882&#039;)&quot;&gt;통신 방식&lt;/a&gt;, 국가마다 다른 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;16843&#039;)&quot;&gt;주파수&lt;/a&gt; 대역, 그리고 고속 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;8966&#039;)&quot;&gt;데이터 통신&lt;/a&gt;을 위한 새로운 &lt;a href=&quot;_javascript:winPopup(&#039;1&#039;,&#039;882&#039;)&quot;&gt;통신 방식&lt;/a&gt;을 제공할 수 있게 해 준다.&nbsp; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;&nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/form&gt;&lt;/table&gt;&lt;/div&gt;]]></content>
						<category term="SDR"/>
				
	</entry>
</feed> 
