현재 버전

프로세스 스레드

프로세스와 스레드에 대해서


안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.



아직 개념도 제대로 잡히지가 않네요..ㅠㅠ 

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ


수정 이력

2022-05-14 20:25:37 에 아래 내용에서 변경 됨 #10

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.





아직 개념도 제대로 잡히지가 않네요..ㅠㅠ 

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 19:24:47 에 아래 내용에서 변경 됨 #9

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.



+ 추가 질문

스레드는 같은 프로그램 내에서 할당 받은 메모리를 공간을 공유한다고 했는데 

코어 내에서 두 개의 스레드가 각자 다른 프로세스를 실행하는 게 가능한가요?

같은 메모리 공간을 공유하는데 다른 프로그램이 돌아가면 메모리 공간에 저장되는 데이터들이

너무 난잡해질 것 같은데..


아직 개념도 제대로 잡히지가 않네요..ㅠㅠ 

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 19:24:14 에 아래 내용에서 변경 됨 #8

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.



+ 추가 질문

스레드는 같은 프로그램 내에서 할당 받은 메모리를 공간을 공유한다고 했는데 

같은 스레드를 여러 프로세스가 이용하고 있다면 결국  context switching이 일어날 때 

모든 캐시 메모리가 초기화 돼야 하는 게 아닌 지 궁금하네요.

결국 멀티 스레드의 메모리 효율적인 측면이 같은 프로그램이 돌아가고 있는 순간에만 발생하는 건가요?




아직 개념도 제대로 잡히지가 않네요..ㅠㅠ 

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 18:58:10 에 아래 내용에서 변경 됨 #7

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.



+ 추가 질문

스레드는 같은 프로그램 내에서 할당 받은 메모리를 공간을 공유한다고 했는데 

같은 스레드를 여러 프로세스가 이용하고 있다면 결국  context switching이 일어날 때 

모든 캐시 메모리가 초기화 돼야 하는 게 아닌 지 궁금하네요.

결국 멀티 스레드의 메모리 효율적인 측면이 같은 프로그램이 돌아가고 있는 순간에만 발생하는 건가요?



스레드라는 게 병행처리를 통해 코어가 여러개 있는 것처럼 보여지게만 만든 건지

병렬처리를 하도록 물리적으로 설계가 돼있는 건지..

아직 개념도 제대로 잡히지가 않네요..ㅠㅠ 너무 추상적으로만 나와 있어서 

확실하게 정의된 게 없는 것 같아요..


이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 18:34:42 에 아래 내용에서 변경 됨 #6

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.



+ 추가 질문

스레드는 같은 프로그램 내에서 할당 받은 메모리를 공간을 공유한다고 했는데 

같은 스레드를 여러 프로세스가 이용하고 있다면 결국  context switching이 일어날 때 

모든 캐시 메모리가 초기화 돼야 하는 게 아닌 지 궁금하네요.

결국 멀티 스레드의 메모리 효율적인 측면이 같은 프로그램이 돌아가고 있는 순간에만 발생하는 건가요?



스레드라는 게 병행처리를 통해 코어가 여러개 있는 것처럼 보여지게만 만든 건지

아직 개념도 제대로 잡히지가 않네요..ㅠㅠ 너무 추상적으로만 나와 있어서 

확실하게 정의된 게 없는 것 같아요..


이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 18:33:38 에 아래 내용에서 변경 됨 #5

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.



+ 추가 질문

스레드는 같은 프로그램 내에서 할당 받은 메모리를 공간을 공유한다고 했는데 

같은 스레드를 여러 프로세스가 이용하고 있다면 결국  context switching이 일어날 때 

모든 캐시 메모리가 초기화 돼야 하는 게 아닌 지 궁금하네요.

결국 멀티 스레드의 메모리 효율적인 측면이 같은 프로그램이 돌아가고 있는 순간에만 발생하는 건가요?




프로세스 스레드 등등 좀 작동 원리 같은 거에 대해 검색해도 잘 안나오네요..ㅠㅠ

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 18:04:09 에 아래 내용에서 변경 됨 #4

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.



+ 추가 질문

스레드는 같은 프로그램 내에서 할당 받은 메모리를 공간을 공유한다고 했는데 

같은 스레드를 여러 프로세스가 이용하고 있다면 결국  context switching이 일어날 때 

모든 캐시 메모리가 초기화 돼야 하는 게 아닌 지 궁금하네요.

결국 스레드의 메모리 효율적인 측면이 같은 프로그램이 돌아가고 있는 순간에만 발생하는 건가요?



프로세스 스레드 등등 좀 작동 원리 같은 거에 대해 검색해도 잘 안나오네요..ㅠㅠ

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 17:58:36 에 아래 내용에서 변경 됨 #3

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.



+ 추가 질문

스레드는 같은 프로그램 내에서 할당 받은 메모리를 공간을 공유한다고 했는데 

같은 스레드를 여러 프로세스가 이용하고 있다면 결국  context switching이 일어날 때 

모든 캐시 메모리가 초기화 되는 게 아닌 지 궁금하네요.

결국 스레드의 메모리 효율적인 측면이 같은 프로그램이 돌아가고 있는 순간에만 발생하는 건가요?



프로세스 스레드 등등 좀 작동 원리 같은 거에 대해 검색해도 잘 안나오네요..ㅠㅠ

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 17:57:58 에 아래 내용에서 변경 됨 #2

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.


만약 전자라고 하면 결국 현재 cpu의 구조상으로는 한 개의 코어당

스레드 2개 밖에 이용을 못 하는 게 되는데

그럼 동기화가 아무리 잘 되었다고 가정을 해도 멀티 스레드의 장점인 효율과 속도면에서

멀티 프로세스와 그렇게 많이 차이가 날 수 있는 건가 궁금하네요.


+ 추가 질문

스레드는 같은 프로그램 내에서 할당 받은 메모리를 공간을 공유한다고 했는데 

cpu구조상 이 메모리 공간은 코어마다 그 코어랑만 상호 작용하는 메모리가 각각 존재하는 건가요

아니면 하나의 메모리 안에서 코어가 사용될 때마다 각자 공간을 할당 받는 건가요?




프로세스 스레드 등등 좀 작동 원리 같은 거에 대해 검색해도 잘 안나오네요..ㅠㅠ

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ

2022-05-14 17:12:59 에 아래 내용에서 변경 됨 #1

안녕하세요 코딩 초보입니다.


프로세스와 스레드에 대해서 알아 보고 있는데


하드웨어적으로..? 조금 작동 원리가 잘 이해가 안 돼서 글을 올리게 되었습니다.



현재 cpu를 보면 대게 한 개의 코어에 두 개의 스레드를 가지고 있는 경우가 많은데

(제 cpu는 16개 코어 8코어는 2스레드 나머지 8코어는 1스레드 이네요)


프로그래밍에서 스레드를 많이 만들어도 결국은 하드웨어의 스레드 개수 만큼만 실행이 되고

실행 중이지 않은 내용들에 대해서는 유휴상태(?)에 들어간다고 알고 있습니다.


100개의 스레드를 만들어도 최대 cpu내의 스레드 개수 만큼만  동시에 실행될 수 있는 느낌인 것 같은데.



이 때 궁금한 게.


이 프로그램이 하나의 코어를 이용해 돌아가는 프로그램이라고 하면

한 개의 코어에는 2개의 스레드가 있으니 최대 2개까지만 동시에 스레드가 사용될 수 있는 건가요?

그리고 두 개의 코어를 사용하는 프로그램이면 4개의 스레드가 사용될 수 있고

이런 식으로 작동하는 것인 지 

아니면 스레드는 코어와 상관 없이 cpu에 있는 만큼 마음대로 쓸 수 있는 것인 지 궁금합니다.


만약 전자라고 하면 결국 현재 cpu의 구조상으로는 한 개의 코어당

스레드 2개 밖에 이용을 못 하는 게 되는데

그럼 동기화가 아무리 잘 되었다고 가정을 해도 멀티 스레드의 장점인 효율과 속도면에서

멀티 프로세스와 그렇게 많이 차이가 날 수 있는 건가 궁금하네요.



프로세스 스레드 등등 좀 작동 원리 같은 거에 대해 검색해도 잘 안나오네요..ㅠㅠ

이런 컴퓨터 과학?적인 지식은 어디서 공부하는 게 좋을까요. 책이 가장 좋은가요?

혹시 좋은 책이 있다면 추천 부탁드려요ㅎㅎ