세상이 빨리도 변한다. 하드디스크 40메가, 기가급도 아닌 메가급으로 넉넉한 마음을 가졌던 기억이 아직도 생생한데 이젠 메모리가 기가급이다. 최근에 구입한 iMac 27"는 운좋게도 16GB를 추가로 구하게 되어 모두 24GB. 모두 활용할정도로 작업할게 많질 않아서 뭘로 사용할까 궁리하던 끝에 생각난것이 RAM DISK!!

즉시, 구글링을 시작해보니 역시나 선구자들이 마련해놓은 길이 나타난다.

http://boredzo.org/make-ram-disk/

간혹 링크가 연결되지 않으면 http://boredzo.org로 들어가서 페이지내에서 링크를 찾아내야할 수 있다.

Make RAM Disk 1.0.zip 


이글을 포스팅할때 최신버전이 1.0인데(거의 손을 안대는듯)... 매버릭스에서도 잘 동작한다.


좀 더 불편하게 램디스크를 만드는 방법을 찾아보니 이렇다.(적절히 원하는대로 수정해서 쓰면 된다)


1. /Library/LaunchDaemons/ 경로에 com.my.ramfs.plist 파일을 복사.

com.my.ramfs.plist -> $ sudo cp com.my.ramfs.plist /Library/LaunchDaemons

com.my.ramfs.plist 파일내용com.my.ramfs.plist 파일내용

2. /private/var/root/ 경로에 ramfs.sh 파일을 복사

ramfs.sh -> sudo cp ramfs.sh /private/var/root

ramfs.sh 파일 내용ramfs.sh 파일 내용


Finder 옵션설정에 바탕화면에 디스크를 보이도록 해놓으면 램디스크가 당연히 나타나므로, 이런건 어쩔수 없는 불편함이 있지만 그래도 SSD의 수명을 위해서, 그리고 보다 빠른 성능을 위해서 감수할 수 있는 좋은 기능이다.

SSD와 램디스크의 조합으로 iMac 27"는 현재 거의 TV수준의 On/Off 처리를 보여준다. 맘에 들어 ^^;;


Posted by Jason Ryu
,

DCLP에 대한 고찰이 맘에 들었던 자료하나를 찾았다. 예전부터 Singleton 패턴을 구현할때 DCLP부분이 늘 애매했었는데, 보다 깊은 이해를 할 수 있도록 가이드를 해줄만한 썩 괜찮은 내용이다.

DCLP_DDJ_Jul_Aug_2004_revised.pdf

개략적으로 살펴보면 이렇다.


전형적인 싱글톤 패턴을 구현하는 C++ code. 싱글프로세서 기반에서는 적절하다.


멀티프로세서 기반에서는 쓰레드안전하게 하기위해서 흔히들 이중으로 확인하는 Double-checked Locking Pattern을 사용하는 코드가 사용된다. 문제점이야 여전히 남아있지만서도.

그래서 사용되는 것이 volatile이라는 한정지시자를 사용한다.

완벽해보이지만, 여전히 컴파일러에 따라 최적화 로직 차이가 있음으로 인해 문제가 발생할 수 있다는 의견이 있다. 그래서 Memory Barrier를 두어 보다 안전하게 코드를 작성한다.


But, DCLP is broken....Never use it!!


Posted by Jason Ryu
,