분류 전체보기

    The funny page table terminology on AMD64

    http://www.pagetable.com/?p=14

    vmxon 사용시 주의점

    하이퍼바이저는 vmxon 명령어를 맨 처음으로 실행 해 vmx 를 활성화 해야한다. vmxon 명령어가 실행되면 프로세서가 VMX_ROOT 모드로 진입하게 되는데 이 때 하이퍼바이저가 먼저 확인해야 하는 조건이 있다. - CR4 레지스터의 13번째 bit인 VMXE(0x2000)를 Enable 해야한다. VMXE가 Enable 되지 않은 상태인데 실행하게 되면 #UD(undefined opcode) 예외가 발생된다.- CR0의 NE, PG, PE 모두 VMX_ROOT 모드로 실행되는 동안에 Enable상태로 설정되어 있어야 한다. 만약에 이 비트들이 Clear 되는경우 #GP 예외가 발생된다.- A20M#은 vmxon 을 실행하기 전에 앞서 off 가 되어야 한다. 하이퍼바이저는 vmxon 이 실행되기전..

    TSC(Time Stamp Counter)란?

    Time Stamp Counter(TSC)는 64비트 레지스터이다. 이는 펜티엄 이후의 모든 x86 프로세서에서부터 있었다. RDTSC 명령은 EDX:EAX상의 TSC를 반환한다. x86-x64 모드상에서, RDTSC는 RAX와 RDX의 상위 32비트를 클리어한다. OPCODE는 0x0F 0x31 이다. 펜티엄의 경쟁상대인 Cyrix 6x86은 TSC를 가지고 있지 않으며 RDTSC는 부적절한 명령으로 받아들인다. Cyrix는 MII안에 TSC를 포함하고 있다. 위키피디아(http://en.wikipedia.org/wiki/Time_Stamp_Counter)에서 퍼온 내용인데. 이 TSC의 활용법은 유니크한 값을 얻기 위해서 사용한다. 주로 다음과 같은 곳에 사용할 수 있을것이다. - 유니크한 값 획득...

    20140402 구디역 벚꽃 산책코스

    점심에 치맥! 좋네유...

    This function is thread-safe.

    https://kldp.org/node/36904 ["쓰레드 세이프(thread-safe)란 무엇인가요?"] 오픈 소스를 보다가 This function is thread-safe 라는 주석을 볼 수 있었다. 뭐 대충은 어떤 의미인지 알 것 같기는 하지만 궁금해서 검색 해보았더니 고수분들이 신나게 설명 해주셨는데, 간단하게 정리를 해보면 Multiple Thread 환경에서 딱히 동기화(세마포어, 뮤텍스 등)처리를 하지 않는다고 해도 해당 함수는 역할을 수행 하는데 별 지장을 받지 않는다는 뜻이라고 한다. 위의 링크를 들어가보면 자세하게 알 수 있다.

    C++ 클래스 내부에서의 스레드 함수 사용법

    c++ 내부에서 스레드함수를 선언 할 때에는 static으로 선언해서 사용해야 한다고 알고 있다. 하지만 static으로 선언할 경우에는 스레드 함수에서 멤버변수를 사용할 수가 없다. 이럴때에 아래의 방법으로 사용하시면 멤버변수에 접근가능한 스레드함수를 생성하실 수 있다. 안전해보이는 코딩법은 아니다.class ClassA { private: HANDLE m_hThreadA; //스레드 핸들 DWORD m_dwThreadAId; public: ClassA(void); ~ClassA(void); BOOL InitFunc(void); static DWORD WINAPI ThreadA(LPVOID lpArg); DWORD ThreadA(void); } BOOL ClassA::InitFunc(void) { BO..