inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 시스템 프로그래밍 - 이론과 실습

쓰레드 개념, 쓰레드 생성/종료/조인/동기화

멀티스레드에 대해서 질문이 있습니다.

193

젓인

작성한 질문수 158

0

전장에서 인텔의 하이퍼쓰레드 기술로 인해서 하나의 코어당 2개의 쓰레드를 운용할 수 있다라고 배웠는데, 지금 장에선 여러 쓰레드가 있는 프로그램을 예시로 들었는데 왜 인텔은 1코어 2스레드 기술을 쓰는건가요?!

생각해보면 너무 많은 스레드도 latency와 복잡성을 고려하면 안좋을 것 같고....

linux

답변 1

0

런잇(ProgCoach4U)

먼저, 인텔 하이퍼쓰레드 기술에서 얘기하는 쓰레드와 운영체제의 쓰레드는 용어만 같을 뿐 서로 다른 것입니다. 독립적 실행단위라는 뜻의 쓰레드를 의미하지만, CPU 입장에서의 독립 실행과 운영체제 입장에서의 독립 실행은 서로 다를 수 밖에 없죠.

하이퍼쓰레드 기술이 왜 1코어 2쓰레드 밖에 지원하지 않냐는 질문에 답을 드리긴 어려울 것 같네요. 다만, 말씀하신 대로 코어당 너무 많은 쓰레드를 지원하게 되면 여러 오버헤드가 발생하여 결국 성능이 떨어질 수 있을 것 같네요. 또 n개의 쓰레드를 지원하려면 코어당 n세트의 레지스터가 필요한데, 이 부분도 문제가 될 것 같습니다.

운영체제의 멀티쓰레드는 CPU 환경에 따라 동시에 처리될 수도 있고 그렇지 않을 수도 있습니다. 그렇기 때문에 동기화에 더더욱 신경을 써야 하구요. 처리 성능을 높이기 위해 각 CPU 별로 쓰레드를 하나식 할당하기도 합니다. 

질문에 답이 되셨는지 모르겠네요. 도움이 되셨길 바랍니다 :)

inotify 객체에 등록된 watch descriptor 해제 관련 질문

0

37

2

select API 실습 코드 질문

0

41

2

wsl에서 fcntl사용

0

73

2

inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...

0

180

2

./stat 파일이름

0

273

2

fopen r, r+모드 차이

0

460

2

강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?

0

326

1

pthread 질문

0

419

2

I/O Multiplexing(select) 질문

0

325

1

inotify.c. ret 질문

0

302

1

inotify.c 질의합니다.

1

317

1

child process

0

715

1

read/blocking

0

565

1

flock

0

565

1

system call

0

598

1

pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?

0

487

1

fork() 함수 사용시 결과 관련 질문

0

371

1

exec 관련 궁금한 사항

0

450

2

파일 디스크립터와 FILE 구조체에 대한 질문

0

552

1

buf 선언에 따른 read() fail 문제

0

251

2

파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문

0

254

1

2번 multi thread 방법 질문

0

242

1

segmentation fault 발생 관련 문의

1

842

1

라이브 코딩 실습 코드

0

235

1