멀티스레드환경에서 어떤 프로그램을 cpu를 선택 해서 실행 할 수 있나요

쿼드코어CPU에 멀티스레딩이 되어
CPU0, CPU1, …, CPU7이 나옵니다.

먼저 각각 코어가 다음과 같이 나누어 지는지
[CPU0,CPU2], [CPU2,CPU3], [CPU4,CPU5], [CPU6,CPU7],
아니면 임의로 나누어 지는지 알고 싶습니다.

몇시간 걸리는 계산을 할때 CPU하나만 쓰는 것에 비해 8개 다 쓰면 2배까지는 안걸려도 훨씬 많이 걸리는 것 같습니다.

4개를 동시에 실행할 경우 네개의 코어에 하나씩 실행하면 빠를 것 같은데
한개코어에 두개가 들어가, 놀고 있는 코어가 생기는 것 같습니다.
이때 동시에 실행했는데 두개는 빨리 끝나고 두개는 늦게 끝나는 군요.

CPU를 선택해서 실행하는 방법이 있는지요.

멀티 [b:3g6g0pvt]코어[/b:3g6g0pvt]환경에서 특정 코어를 지정해서 프로세스를 실행하는 부분에 관련된 글은 구글에서 "linux affinity" 로 검색해 보면 다양한 정보들이 나옵니다. 그 중에 다음 페이지를 참조하시면 도움이 될 듯 하네요.

http://www.cyberciti.biz/tips/setting-p ... ocess.html