//구글콘솔 광고 추가가
스레드란?
프로세스를 구성하는 실행 흐름의 단위. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.
(한 프로세스를 여러 개의 스레드로 동시 실행 가능)
웹브라우저 프로세스 - 화면 출력 스레드, 입력 스레드, 검색 스레드 등등

프로세스와 스레드
- 실행 흐름이 하나인 프로세스(단일 스레드 프로세스)
- 실행 흐름이 여러 개인 프로세스(멀티 스레드 프로세스)
 >> 프로세스를 이루는 여러 명령어 동시 실행 가능.

스레드의 구성요소
: 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등. 실행에 필요한 최소한의 정보를 가지고 있음.
모든 스레드들은 프로세스의 자원을 공유한다. 
멀티 프로세스와 멀티 스레드
동일한 작업을 수행하는 단일 스레드 프로세스 여러 개 실행(멀티프로세스)vs 하나의 프로세스를 여러 스레드로 실행(멀티 스레드) >> 차이는?
멀티프로세스 : 남남처럼(자원 공유 X) 실행
- 프로세스를 fork 하면 코드/ 데이터/ 힙 영역등 모든 자원이 복제되어 저장됨.
- 저장된 메모리 주소를 제외하면 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재
- fork를 세번, 네 번 하면 메모리에는 같은 프로세스가 통째로 세 개, 네 개 적재
참고) fork 직후 같은 프로세스를 통째로 메모리에 중복 저장하지 않으면서동시에 프로세스끼리 자원을 공유하지 않는 방법도 있다. 이를 쓰기 시 복사(copy on write) 기법이라 한다.
- PCB값 멀티 프로세스의 스레드들은 다 다름, 멀티 스레드의 PCB값은 하나 
- 스레드들은 각기 다른 스레드 ID, (별도의 실행을 위해 꼭 필요한) 프로그램 카운터 값을 포함한 레지스터 값, 스택을 가질 뿐 프로세스가 가지는 자원을 공유 

>>프로세스끼리는 자원을 공유하지 않는다. --> 남남처럼 독립적으로 실행된다.
프로세스 간에도 자원을 주고 받을 수 있다 : 프로세스 간 통신(IPC)
파일을 통한 프로세스 간 통신, 공유 메모리를 통한 프로세스 간 통신.(프로세스끼리 공유하는 메모리를 따로 둠)
>> 스레드는 프로세스의 자원을 공유한다. --> 협력과 통신에 유리하다. 때로는 자원을 공유하고 있다는 게 문제가 될 수도 있음.

 

728x90

코어와 멀티 코어

코어(core)란?
: CPU내에서 명령어를 실행하는 부품
현대적인 관점에서 "CPU"라는 용어를 재해석해야 함.
전통적으로 명령어를 실행하는 부품은 원칙적으로 하나만 존재.
그러나, 오늘날 CPU에는 여러개가 존재.
CPU안에서 명령어를 인출하고 해석하고 실행하는 부품 == 오늘날의 "코어"

싱글 코어 == 하나만 있는 코어.
멀티코어 == 두개 이상의 코어.
멀티코어 프로세서 == 여러 개의 코어를 포함하고 있는 CPU.

코어수에 비례해서 CPU의 속도가 증가하는 건 아님.


스레드와 멀티 스레드

스레드(thread)란?
: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
스레드는 하드웨어적 스레드와 소프트웨어적 스레드가 있다.
- 하드웨어 스레드( 논리 프로세서라고도 함): 하나의 코어가 동시에 처리하는 명령어 단위. 
- 소프트웨어 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위.
1코어 1스레드 CPU도 여러 소프트웨어적 스레드를 만들 수 있다.

 

멀티스레드(multi thread)란?

: CPU의 최대 활용을 위해 프로그램의 둘 이상을 동시에 실행하는 기술.


강의를 듣다가 하드웨어 스레드와 프트웨어 스레드에 대해 궁금해져서 더 찾아보았는데,

더 쉽게 이해 할수 있는 글을 읽었다.

 

'4코어 8(하드웨어) 스레드라는 것은, 상하권이 나뉜 4세트의 책과 같습니다. 이 4세트를 가지고 도서관에서 100명의 사람에게 빌려 줄 수 있습니다. 비록 한 번에 읽을 수 있는 사람은 8 사람 (소프트웨어 스레드) 밖에 없지만요.'

 

스레드들을 공부하다가 잘 정리된 블로그가 있어서 추가해둔다.

싱글스레드와 멀티스레드 참고 블로그

https://velog.io/@gil0127/%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9CSingle-thread-vs-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-Multi-thread-t5gv4udj

728x90

+ Recent posts