<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://valley.egloos.com/rss/style/style.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>이글루스 'posix' 태그 최근글</title>
		<link>http://valley.egloos.com/tag/posix</link>
		<description>posix</description>
		<language>ko</language>
		<pubDate>Tue, 25 Nov 2008 14:27:30 +0900</pubDate>
		<generator>Egloos</generator>
		<item>
	<title><![CDATA[스왑 당하기 싫어!]]></title>
	<link>http://purewell.egloos.com/3992331</link>
	<guid>http://purewell.egloos.com/3992331</guid>
	<description>
	<![CDATA[ 
현존하는 많은 OS는 스왑 시스템을 사용한다. 스왑이 가지는 장점 가운데 하나는 실제 존재하는 물리적 메모리보다 더 많은 메모리를 사용할 수 있다는 것이다. 물론 그에 따른 속도 저하가 발생할 수 있지만, 다양한 전략과 하드웨어 발전으로 스왑 시스템이 가지는 단점을 보안할 수 있다.    리눅스에서 스왑 전략을 백분율로 설정할 수 있다. 간략한 설명은 이곳(http://purewell.egloos.com/2781667)을 참조하자.    그외도 강박증 프로그래머는 POSIX 시스템에서 mlock함수를 이용할 수 있다. mlock은 일부 메모리 영역이 swap-out되는 것을 막아준다. 다만 swap-out을 할 수 있는 영역에 제한이 매우 크기 때문에 매우 작은 메모리 부분에 대해서만 mlock을 사용할 수	]]>
	</description>
	<pubDate>Tue, 25 Nov 2008 14:27:30 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
<item>
	<title><![CDATA[POSIX messagequeue]]></title>
	<link>http://purewell.egloos.com/3991234</link>
	<guid>http://purewell.egloos.com/3991234</guid>
	<description>
	<![CDATA[ 
POSIX IPC에서 마지막-IPC는 이것 외에도 많다-으로 소개할 녀석은 메시지큐이다. 간략히 뭐하는 녀석인지 설명하자면, '우선순위가 있는 줄서기'랄까? 일단 Queue라는 말에서 이 녀석은 기본으로 먼저 던져넣은 메시지를 먼저 꺼내올 수 있다. 근데 가끔씩 긴급해 보내야할 메시지가 있을 수도 있을까...해서 메시지에 우선순위를 둘 수 있다. 그래서 때에 따라 우선순위가 높은 녀석이 나중에 큐에 들어갔는데도 먼저 나올 수 있다. 뭐 이런 녀석이다.    이 역시 SysV에서 뛰쳐나온 녀석이라서 SysV용 API가 있다. msgget으로 메시지큐 핸들을 얻어내어, msgsnd/msgrcv 등으로 적당히 메시지를 던지고 받을 수 있다. 이때 우선순위는 정수형으로 줄 수 있다. 다 사용한 메시지큐는 msgct	]]>
	</description>
	<pubDate>Tue, 25 Nov 2008 13:12:10 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
<item>
	<title><![CDATA[POSIX semaphore]]></title>
	<link>http://purewell.egloos.com/3945459</link>
	<guid>http://purewell.egloos.com/3945459</guid>
	<description>
	<![CDATA[ 
POSIX 함수에 대해 글 쓴 지가 너무 오래 전이라 까맣게 잊고 있었다. 오늘은 두서 없이 세마포어라는 놈을 건들여보도록 하자. 일단 세마포어 하면 유명한 예제가 있다. 철학자라는 것들이 가서 포크랑 나이프랑 한 벌 씩 더 가져오면 해결할 수 있는 문제를 굳이 앉아서 남이 썼던 것 더럽게 씻지도 않고 빌려쓰고... 암튼 그런 드러운 문제를 해결하기 위해 세마포어가 탄생했다...라고 하는데 드럽긴 마찬가지고 좀 그렇다. 세마포어 개념은 안드로메다 같은 곳에서 찾아보길 바란다. 그래도 귀찮은 사람은 세마포어를 들어갈 수 있는 사람 수를 한정한 매점(PX?)이라고 생각해도 좋을 것이다. '세마포어 값'은 매장에 들어갈 수 있는 사람 수 여분을 뜻한다.    일단 세마포어도 SysV에서 뛰쳐나온 IPC개념인데, 	]]>
	</description>
	<pubDate>Fri, 17 Oct 2008 14:19:35 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
<item>
	<title><![CDATA[POSIX shared memory]]></title>
	<link>http://purewell.egloos.com/3863415</link>
	<guid>http://purewell.egloos.com/3863415</guid>
	<description>
	<![CDATA[ 
일전에 언급한 SysV에서 처음으로 세상에 내동댕이 쳐진 IPC 집합 가운데에서 공유메모리부터 보겠다.    SysV가 가진 API는 POSIX.1-2001에도 올라와 있는 녀석이긴 하다. 함수는 shmget, shmat, shmdt, shmctl 등이 있다. 엄청나게 유명한 녀석이기 때문에 따로 자세히 설명하지 않겠다. shmget으로 공유메모리를 커널에 요청한다. 그럼 커널일 공유메모리객체를 만들기만 할 것이고, shmat을 통해 실제 프로세스 메모리에 공유메모리를 쳐바를(attach) 수 있다. shmdt는 쳐바른 공유메모리를 떼어내는데(detach) 사용하고, shmctl은 공유메모리객체를 정리하거나 기타 객체를 조작하는데 잠깐 이용한다. - 설명끝 -    shm_open은 SysV와 별도로 POS	]]>
	</description>
	<pubDate>Wed, 13 Aug 2008 18:44:03 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
<item>
	<title><![CDATA[ftok]]></title>
	<link>http://purewell.egloos.com/3860670</link>
	<guid>http://purewell.egloos.com/3860670</guid>
	<description>
	<![CDATA[ 
IPC ... Inter Process Communication. 뭐 말 그대로 프로세스끼리 말하는 통신하는 방식이다. IPC에는 여러가지 방식이 있겠지만, 일반적으로 메시지큐, 공유메모리, 세마포어 이 세가지를 읊곤 한다. (소켓도 IPC라고!) 내 머릿속에서 이러한 세가지 단어를 엎고 있는 단어가 있었으니 이름하야 'SysV'.    전화회사(AT&amp;amp;T)에서 1983년에 하드웨어 팔아먹으려고(스위치 용도일까?) 만든 OS가 있었으니, 이름하여 'System 5(SysV)'. 이게 큰 히트를 치면서 현대 UNIX 구조의 기초를 만들게 되었다. 이때 첫 버전인 'System 5 Release 1(SVR1)에서 이미 위에서 언급한 IPC I/F를 가지고 있었다. 참조:     오늘 알아볼(것도 없는) f	]]>
	</description>
	<pubDate>Mon, 11 Aug 2008 17:23:43 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
<item>
	<title><![CDATA[이달의 MUST HAVE]]></title>
	<link>http://muzie.egloos.com/3410897</link>
	<guid>http://muzie.egloos.com/3410897</guid>
	<description>
	<![CDATA[ 
<img 
				src="http://thumb.egloos.net/100x76/http://pds6.egloos.com/pds/200709/29/59/b0006159_46fd181353cf4_t.jpg"  
				alt="이달의 MUST HAVE" 
				width="100px"  
				height="76pxpx"
				align="left"
				style="border:1px solid #DDDDDD;margin:0 10px 10px 0px;"
				/>  리눅스 프로그래머에게 무한한 힘을 부여하고 사흘 밤낮을 새어도 피곤한감 없이 몰입하도록 만드는 금단의 비서!! POSIX의 프로그래머들을 위한 함수정의와 헤더파일, 구조체의 기본구조와 System Call을 자유자재로 할 수 있도록 도와준다는 전설의 바이블!!          이제까지 책을 빌려보고 이렇게 흥분했던적은 없었다. 근데 가격 왜저래????	]]>
	</description>
	<pubDate>Sat, 29 Sep 2007 00:07:24 +0900</pubDate>
	<dc:creator><![CDATA[기억의 조각]]></dc:creator>
</item>
<item>
	<title><![CDATA[TLS - Thread Local Storage]]></title>
	<link>http://purewell.egloos.com/3398289</link>
	<guid>http://purewell.egloos.com/3398289</guid>
	<description>
	<![CDATA[ 
쓰레드를 돌리다보면 해당 쓰레드에서만 유효한 변수를 만들고 싶을 때가 있다. 그럴 때 어떻게 해야할까? 쓰레드 개수만큼 벡터를 잡고, 해당 쓰레드마다 벡터 인덱스를 넘겨주는 것도 나름 방법이지만, 이러한 경우를 위해 TLS라는 것이 존재한다. 축약처럼 쓰레드 안에서만 따로 스토리지를 할당한 것인데, 일반 프로세스의 스텍과 비슷하나 그 크기는 프로세스 것보다 당연히 작고 제약이 심한 편이다. 뭐 암튼 그런게 있다고 치자.    * GCC 메뉴얼 보면 TLS가 아니라 TSD(Thread Storage Duration)이라고 표현하였는데 대충 같은 말이다.    이것을 위해 POSIX는 pthread_key_create, pthread_get/setspecific 등 함수를 마련해놨지만 눈만 팽글팽글 돌고, 소스	]]>
	</description>
	<pubDate>Thu, 20 Sep 2007 16:52:18 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
<item>
	<title><![CDATA[POSIX's thread tips]]></title>
	<link>http://purewell.egloos.com/3398251</link>
	<guid>http://purewell.egloos.com/3398251</guid>
	<description>
	<![CDATA[ 
쓰레드 자신에 대한 핸들을 알고 싶다면, pthread_self라는 전역 변수를 사용할 것.두 쓰레드 핸들을 비교하고 싶다면 pthread_equal(핸들1,핸들2)을 사용한다. 둘이 같으면 0이 아닌 값이 나온다.쓰레드 Concurrency를 확인/설정하고 싶으면 pthread_get/setconcurrency를 사용할 것.CPU점유를 다른 쓰레드에게 양보하고 싶으면 pthread_yeild가 있다.Mutex Lock을 부모 자식 프로세스 간에 공유하고 싶다면 속성에 pthread_mutexattr_get/setpshared을 이용하여 PTHREAD_PROCESS_SHARED을 세팅한다. 컨디션 변수에도 비슷한 것이 있다.  	]]>
	</description>
	<pubDate>Thu, 20 Sep 2007 16:10:23 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
<item>
	<title><![CDATA[POSIX thread's condition]]></title>
	<link>http://purewell.egloos.com/3381175</link>
	<guid>http://purewell.egloos.com/3381175</guid>
	<description>
	<![CDATA[ 
이런 상황을 생각해보자. 쓰레드가 있고, 그것은 평상시에 자는 상태(CPU점유율 0%)이다. 그런데 문득 할 일이 생겨서 침 흘리며 자고 있는 쓰레드를 두들겨 깨우고 싶다. 어떻게 하면 좋을까?    volatile bool gWakeUp(false);    void*  _thr(void*)  {      while (!gWakeUp) usleep(1000*1000);      // something...  }    int  main(int,char**)  {      // ... init thread.      gWakeUp = true;      return 0;  }이러면 쓰것나? 뭔가 찜찜허다. gWakeUp이 true로 바뀌더라도 _thr는 최악의 경우 1초 뒤에 반응을 보일 것이다. 아힝~* 싫어	]]>
	</description>
	<pubDate>Mon, 10 Sep 2007 11:17:33 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
	</channel>
</rss>

