<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=Shared_memory</id>
	<title>Shared memory - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=Shared_memory"/>
	<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Shared_memory&amp;action=history"/>
	<updated>2026-04-08T06:58:51Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=Shared_memory&amp;diff=316&amp;oldid=prev</id>
		<title>Ahn9807: 새 문서: 분류: 동시성 프로그래밍  == 개요 == 공유 메모리(Shared memory)는 컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리이다. 과다한 복사를 피하거나 해당 프로그램 간 통신을 위해 고안되었다. 환경에 따라 프로그램은 하나의 프로세서에서나 여러 개의 프로세서에서 실행할 수 있다. (예를 들어 여러 개의 스레드 간에) 하나의 프로그램 안에서 통신을...</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Shared_memory&amp;diff=316&amp;oldid=prev"/>
		<updated>2023-02-05T03:55:31Z</updated>

		<summary type="html">&lt;p&gt;새 문서: &lt;a href=&quot;/noriwiki/index.php?title=%EB%B6%84%EB%A5%98:%EB%8F%99%EC%8B%9C%EC%84%B1_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&quot; title=&quot;분류:동시성 프로그래밍&quot;&gt;분류: 동시성 프로그래밍&lt;/a&gt;  == 개요 == 공유 메모리(Shared memory)는 컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리이다. 과다한 복사를 피하거나 해당 프로그램 간 통신을 위해 고안되었다. 환경에 따라 프로그램은 하나의 프로세서에서나 여러 개의 프로세서에서 실행할 수 있다. (예를 들어 여러 개의 스레드 간에) 하나의 프로그램 안에서 통신을...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[분류: 동시성 프로그래밍]]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
공유 메모리(Shared memory)는 컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리이다. 과다한 복사를 피하거나 해당 프로그램 간 통신을 위해 고안되었다. 환경에 따라 프로그램은 하나의 프로세서에서나 여러 개의 프로세서에서 실행할 수 있다. (예를 들어 여러 개의 스레드 간에) 하나의 프로그램 안에서 통신을 위해 메모리를 사용하는 일은 일반적으로 공유 메모리로 부르지 않는다.&lt;br /&gt;
&lt;br /&gt;
각각의 프로세스는 하나의 큰 가상 메모리 공간을 할당 밥는다. 스레드간의 통신은 메모리를 통해서 일어나는데, 이는 thread shared memory를 통해서 이루어 지는 것이다. 그러나 thread는 힙 영역을 공유할 수 있음으로 이 경우는 특별히 shared memory라고 부르지는 않는다. 그러나 여러 프로세스가 하나의 shared memory를 통해서 통신한다면, 이를 shared memory라고 말한다. 또한 하드웨어 적으로도 shared memory를 위해서 특별히 공간을 할당 할 수도 있는데, 예를 들어서 커널의 [[per cpu]]와 같은 경우를 들 수 있다. per cpu공간에 진입하기 위해서 segmentation을 이용하여 이러한 영역에 접근하며 이러한 정보는 [[ESR]]에 적혀있다. &lt;br /&gt;
&lt;br /&gt;
== Coherence / Consistency ==&lt;br /&gt;
공유 메모리의 통일성 (하나의 공간에 작성한 내용은 서로 다른 곳에서 읽어들이더라도 같아야 한다.)와 일관성 (서로 다른 공간에 작성한 내용은 그 순서에 맞추어서 다른 곳에서도 읽어야 한다.)는 메모리를 공유할 경우 반드시 지켜주어야 하는 법칙이다. [[메모리 일관성]], [[메모리 통일성]] 참조.&lt;br /&gt;
&lt;br /&gt;
== [[Multicore]]환경에서의 문제점 ==&lt;br /&gt;
Shared Memory는 각각 Core의 CPU cache에 대한 coherency를 맞추기 위해서, cache coherence protocol을 이용하여 모든 cache line들을 동기화 시켜주어야 한다. Single 혹은 core수가 적으면 몇십사이클안에 해결할 수 있지만, 16코어만 같은 메모리에 접근하여도 대략 12,000 cycles들을 소비하는 것으로 나타난다 [paper - multikernel]. 즉 Multicore 환경에서 [[Message passing]]을 이용하는 것이 적합하다. &lt;br /&gt;
&lt;br /&gt;
== 라이브러리 ==&lt;br /&gt;
# [[pthread]]&lt;br /&gt;
# [[OpenMP]]&lt;/div&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
</feed>