기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요.
요즘 병렬처리쪽에 관심이 많아 이것저것 책과 관련자료들을
찾아보고 있습니다.
결국 병렬처리는 각 Core에 Thread 단위로 작업을 할당하고
처리한다는건 알겠는데...
궁금한점이 있어서 질문드립니다.
만약 쿼드코어 CPU가 있다고 가정하고
CPU에는 실행중인 Process는 A,B,C,D가 있고
각각의 Process는 1,2,3,4 개의 Thread를 처리중입니다.
결국 CPU는 총 16개의 Thread를 처리하고 있습니다.
이럴경우 CPU는
1. CPU는 오직 동시에 하나의 Prcess만 실행가능하고
단지 4개의 Thread를 하나씩 나누어 처리한다. 4개의
Core는 하나의 Virtual Address에서 동작한다.
2. CPU는 동시에 4개의 Process를 각 Core별로 처리하고
각 Core에서 4개의 Thread를 시분활 방식으로 처리한다.
또한 각 Core 마다 Virtual Address를 가지고 있다.
둘중에 어느게 맞는건가요?
저는 지금까지 2번이 맞다라고 생각하고 있었습니다.
각 Core(Process)마다 Virtual Address가 사용되기 때문에 Core간의
Data 전송이 어렵고, 그에따른 Core(Process)간의 통신 기법으로
파이프나, 공유 메모리를 사용한다. 이렇게 혼자 공상하며 공부하고 있는데
저만의 공상이였나요 ㅡ.ㅡ
1번방식의 처리가 맞는건가요?
또한
C언어에 Thread생성 함수가 있지만 OpenMP가 쓰이는 이유는
다양한 OS에서 쉽게 Thread를 생성하기 때문에
사용되는게 맞는건가요.
질문드립니다. (_ _)
OS와 SW어플리케이션 코드을 공부하시는건가요?
컴퓨터 아키텍쳐와 HW인스트럭션를 공부하시는건가요?
서로 얘기하는 처리 레벨과 용어의 의미가 약간씩 다릅니다.