기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요.

 

요즘 병렬처리쪽에 관심이 많아 이것저것 책과 관련자료들을

찾아보고 있습니다.

 

결국 병렬처리는 각 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를 생성하기 때문에

사용되는게 맞는건가요.

 

질문드립니다. (_ _)

 

 

 

 

 

 


김지원

2013.02.12 20:00:25
*.241.151.50

OS와 SW어플리케이션 코드을 공부하시는건가요?

컴퓨터 아키텍쳐와 HW인스트럭션를 공부하시는건가요?

서로 얘기하는 처리 레벨과 용어의 의미가 약간씩 다릅니다.

Supsupi

2013.02.12 20:34:33
*.9.118.77

ㄷㄷㄷ... 그런가요.. 어디가 다른건지 잘 모르겠네요 ㅠ

유형목

2013.02.13 07:55:30
*.131.98.177

그냥 시중에 나와 있는 책을 한번 읽어보시는게 빠를듯 싶네요.


http://smilejp.tistory.com/69

http://www.yes24.com/24/goods/7241463?scode=032&OzSrank=1

Supsupi

2013.02.15 18:55:48
*.94.141.58

답글 감사드립니다. 다른 멀티코어책을 읽고 있는데 다 읽으면 확인해봐야겠네요 ㅎ

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인