마음의 안정을 찾기 위하여 - 멀티 프로세서를 사용하고 있는 PC에서 특정 프로세서 지정하는 방법
2265836
173
804
관리자새글쓰기
태그위치로그방명록
별일없다의 생각
dawnsea's me2day/2010
색상(RGB)코드 추출기(Color...
Connection Generator/2010
최승호PD, '4대강 거짓말 검...
Green Monkey**/2010
Syng의 생각
syng's me2DAY/2010
천재 작곡가 윤일상이 기획,...
엘븐킹's Digital Factory/2010
멀티 프로세서를 사용하고 있는 PC에서 특정 프로세서 지정하는 방법
Delphi/윈도우즈 | 2010/07/19 10:47
프로세스가 실행중일때 해당 프로세스를 처리할 선호 프로세스를 지정하는 방법이 있다.

윈도우 작업관리자에서 프로세스를 선택하고, 우클릭 버튼을 누르면 "선호도 설정 (A)"이라는 메뉴가 나오는데 해당 메뉴를 클릭하면 아래와 같이 프로세서 선호도 다이얼로그가 나타난다.

여기서 해당 프로세스를 처리할 CPU를 선택하게 되면 지정한 CPU만이 해당 프로세스를 실행하는데 관여하게 된다. 간혹 멀티 프로세서 처리가 원활하지 못한 프로세스의 경우 프로그램 실행도중 오류가 발생하게 되는데, 이런 경우 선호 CPU를 선택해 하나의 CPU에서만 처리하도록 지정하여 주면 오류율이 떨어지는 경우가 있다.

사용자 삽입 이미지

위와 같이 윈도우에서 매번 수작업으로 처리하기 번거로운 경우, 프로세스 런쳐를 이용하여 해당 프로세스가 실행되면 자동으로 지정 CPU를 사용할 수 있게 작업할수 있는데, 이와 관련된 Windows API가 아래의 2가지 API이다.

GetProcessAffinityMask( hProcess: Cardinal; var procAFMask, sysAFMask );
SetProcessAffinityMask( hprocess: Cardinal; ProcessAffinityMask: Cardinal );

예를들어 8개의 CPU가 있다고 가정하면, 각 CPU의 BitMask는 아래와 같다.
BitMask     CPU's
=========  =========
00000001   1st CPU
00000010   2nd CPU
00000100   3rd CPU
00001000   4th CPU
00010000   5th CPU
00100000   6th CPU
01000000   7th CPU
10000000   8th CPU

여기서 1번 CPU만 활용하고자 할 경우 다음과 같이 처리해준다.

Example:
Var
   ProcAFMask,
   SysAFMask  : Cardinal;
Begin
   { 현재 설정되어 있는 내용 확인 }
   GetProcessAffinityMask( GetCurrentProcess, ProcAFMask, SysAFMask);

   SysAFMAsk := $00000001; // 1번 CPU만 사용하도록 Masking

   { CPU 설정 }
   SetProcessAffinityMask( GetCurrentProcess, SysAFMAsk);
End;



2010/07/19 10:47 2010/07/19 10:47
Article tag list Go to top
View Comment 1
Trackback URL :: 이 글에는 트랙백을 보낼 수 없습니다
From. 구차니 2010/07/19 15:26
답글달기삭제
으억 quad core 쓰시나봐요? ^^;
예전에 언제더라.. 군대적이니 2002 서버나 XP 에서 부대에서 굴러 다니던 P2-350 x 2 듀얼 cpu에서
저걸 발견하고는 무지 신기해 했었는데 이제는 기본적인게 되었네요 ^^;
PREV : [1] : NEXT
 
 
 
 
: [1][2][3][4][5][6] :
«   2024/03   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
전체 (1317)
출판 준비 (0)
My-Pro... (41)
사는 ... (933)
블로그... (22)
My Lib... (32)
게임 ... (23)
개발관... (3)
Smart ... (1)
Delphi (93)
C Builder (0)
Object... (0)
VC, MF... (10)
Window... (1)
Open API (3)
Visual... (0)
Java, JSP (2)
ASP.NET (0)
PHP (5)
Database (12)
리눅스 (29)
Windows (25)
Device... (1)
Embedded (1)
게임 ... (0)
Web Se... (2)
Web, S... (21)
잡다한... (6)
프로젝트 (0)
Personal (0)
대통령... (13)
Link (2)