안녕하세요 코딩 초보입니다.
프로세스와 스레드에 대해서 알아 보고 있는데
하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.
현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데
(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)
프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고
실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.
100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만 동시에 실행될 수 있는 느낌인 것 같은데.
이 때 궁금한 게.
이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면
한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?
그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고
이런 식으로 작동하는 것인 지
아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.
아직 개념도 제대로 잡히지가 않네요..ㅠㅠ
이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?
혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ