본문 바로가기
IT/Teckweek

프로세스와 스레드

by YEON-DU 2021. 4. 25.
반응형

 

프로세스는 실행중인 프로그램을 의미한다.

(메모리에 올라와서 실행되고 있는 프로그램의 인스턴스)

 

프로세스는 코드, 데이터, 힙, 스택 별로 각각의 주소공간에 독립적으로 할당받는다.

반면 스레드는 스택만 따로 할당 받고 나머지는 서로 공유한다.

프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는 데에 비해 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용한다.

 

스레드는 프로세스의 실행되는 여러 흐름의 단위를 의미한다.

프로세스마다 메인 스레드를 포함하여 최소 1개의 스레드를 소유한다.

 

멀티프로세스의 장점은 안전성이지만, 각각의 메모리 공간을 갖고 있어 작업량이 많을 수록 오버헤드가 발생한다.

반면 멀티 스레드는 독립적인 프로세스에 비해 공유 메모리를 사용하여 시간, 자원 손실이 적다는 장점이 있지만 안전성 문제가 있다. 하나의 스레드가 데이터 공간을 망가뜨리면 모든 스레드가 작동이 불가하기 때문이다.

안전성 문제를 해결하기 위해 동기화 작업(Critical Section - 임계 영역, 세마포어)이 필요하지만, 이를 과도하게 하게 되면 병목현상이 발생할 수도 있다. (해결하기 위한 조건 상호배제, 진행, 한정된 대기)

 

참고자료

gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

반응형

'IT > Teckweek' 카테고리의 다른 글

로드밸런싱  (0) 2021.06.10
Reactive Programing이란?  (0) 2021.04.28
반복자 패턴(Iterator Pattern)  (0) 2021.03.27
Debounce / Throttle  (0) 2021.03.18
어노테이션Annotation  (0) 2021.02.09

댓글