'2010/01'에 해당되는 글 3건
- 2010.01.26 달팽이, 저 넓고 거치른 바다4
- 2010.01.13 독서 취향 테스트?1
- 2010.01.08 MMAP을 사용해보자!3
"집에 오는 길은 때론 너무 길어"서 노래를 들으면서 온다.
여느때와 다름없이 테이의 노래. 평소같으면 그냥 넘겼을 노래지만 귀찮다는 생각에 그냥 계속 듣고 오던 '달팽이' 라는 노래가 흘러 나오고 있었다.
도대체 이 달팽이란 노래를 왜 리메이크까지 하면서 불렀을까 가만히 노래를 들어보았다.
좁은 욕조속에 몸을 뉘었을때, 작은 달팽이 한마리가
내게로 다가와 작은 목소리로 속삭여줬어.
언젠가, 먼훗날에 저 넓고 거치른 세상 끝 바다로 갈거라고.
아무도 못봤지만 기억속 어딘가 들리는 파도소리 따라서
나는 영원히 갈래.
내 모든 걸 바쳤지만, 이젠 모두 푸른 연기처럼 산산이 흩어지고
내게 남아있는 작은 힘을 다해 마지막 꿈속에서
모두 잊게, 모두 잊게, 해줄 바다를 건널거야.
그 작은 달팽이가 '바다' 를 어떻게 알게 되었을까.
왜 하필이면 지치고 지쳐있어서 욕조에 몸을 뉘었을때 그 달팽이가 나에게 그런 말을 해주었을까.
과연 내가 생각하는 '바다' 는 마지막 꿈속에서 그 힘든 것들을 모두 잊게해줄 만한 그런 바다인가.
따뜻하고 건조한 여름, 선선하고 비가 많이 내리는 겨울. 너무 춥지도 않고 너무 덥지도 않음. 지중해성 기후는 쨍하고 맑은 날씨와 일년 내내 푸근한 기온이 특징. 겨울에 한정되긴 하지만 충분한 강우량으로 목가적인 초목이 자라며, 수많은 향기 가득한 허브와 과일, 농작물들이 풍성하게 자란다. 극단적이지도, 어렵지도 않은, 언제나 맑고 밝고 풍족한. 이 기후는 당신의 책 취향을 대변해 줍니다.
출판업계의 관점에서 볼때 당신은 시장의 절대다수를 차지하는 취향입니다. 불황기에도 꾸준히 책을 사서 보는 우직한 소비자 층이며, 출판 시장의 판도를 좌우하는 침묵하는 다수이자, 베스트셀러를 만드는 가장 굳건한 지지자들이죠. 당신의 취향으로부터 많은 지지를 받은 작가들에는 다음과 같은 이들이 있습니다. 에쿠니 가오리 정이현 |
오오... 왠지 이런건 해볼 때 마다 맞는 듯 하다 +_+
해보고 싶은 사람은 http://book.idsolution.co.kr/?mode=home
MMAP
What is MMAP?
- MMAP is Memory Mapped IO, It enables accessing file like memory read or write.
- MMAP은 Memory Mapped IO 로써, 파일에 대한 접근을 메모리에 접근하는 것과 같이 만들어 준다.
- Therefore it has benefit in IO throughput which has huge overload of each access.
- 따라서, 이는 각각의 Access 마다 가지고 있는 큰 Overload를 지닌 IO Throughput 에 있어서 이익을 얻을 수 있다.
Implementation of MMAP
Environment under Windows
- Windows support MMAP form of function CreateFileMapping. This is quite different from UNIX implementation.
- Windows 에서는 MMAP을 CreateFileMapping 이라는 함수로써 지원한다. 이는 UNIX에의 구현과 다소 상이한 점이다.
- But, basically it’s same with UNIX one.
- 하지만, 기본적으로는 UNIX의 그것과 일맥상통한다.
Simple Source Code
#include <stdio.h> #include <stdlib.h> #include <windows.h> void main(){ // Simple Source Code Using MMAP in Win32 Environment // 2008.01.08 Written by snowsage HANDLE hFile = CreateFile(TEXT("\\tmp.txt"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL); if(hFile == NULL){ printf("<ERROR> CreateFile\n"); return; } HANDLE fd = CreateFileMapping( hFile, NULL, PAGE_READONLY, 0, 0, NULL ); if(fd == NULL){ printf("<ERROR> CreateFileMapping\n"); return; } char* mapFile = (char*)MapViewOfFile(fd, FILE_MAP_READ, 0, 0, 0); printf("%s", mapFile); }
- MSDN Reference - CreateFile (aa363858(VS.85).aspx)
- MSDN Reference - CreateFileMapping (aa366537(VS.85).aspx)
- MSDN Reference - MapViewOfFile (aa366761(VS.85).aspx)
Explanation of Source Code
- windows.h has definitions of function which is related to MMAP. So we have to include the file.
- windows.h 파일이 MMAP과 관련한 함수들을 정의하고 있으므로 이 파일을 Include 해주어야 한다.
- First, Create file handler to your file(CreateFile). You have to carefull with access options! It has to equivalent with using in CreateFileMapping function.
- 먼저 파일에 대한 Handler를 얻어온다(CreateFile). 이때 Access 권한을 설정을 주의하여야한다. 이것은 CreateFileMapping Function 에서 사용 되는 것과 같은 값이어야한다.
- Create mapping handle using opened file handler(hFile). Actually, It is real step to map file.
- Mapping handle 을 file handler(hFile)로 부터 생성한다. 사실 이 과정이 실제 파일로 매핑을 하는 과정이다.
- Get pointer from mapped handle(fd). MapViewOfFile function will be return VOID pointer, so we need to type cast VOID to CHAR pointer.
- Mapping된 handle로부터 포인터값을 얻어온다. MapViewOfFile 함수는 void 포인터로 반환하기 때문에 이에 대해 char*로 TypeCast가 필요하다.
- 원본 글 위치: http://kweb.korea.ac.kr/doku.php?id=kdj-mmap
Recent Comment