Welcome! Everything is fine.

#02. 프로세스와 스레드의 차이 본문

CS 스터디

#02. 프로세스와 스레드의 차이

개발곰발 2024. 1. 17.
728x90

프로세스(Process)란?

프로세스란 실행중에 있는 프로그램을 의미하며, 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. 프로세스는 최소 하나의 스레드를 가진다. 프로그램이 실행되면 메모리가 할당되고, 할당된 메모리 공간으로 바이너리 코드가 올라가면 그것을 프로세스라고 부른다. 프로세스마다 고유한 가상 메모리 공간 제공하는 이 공간은 다음과 같이 4개로 나눌 수 있다.

code  작성한 코드가 저장되는 공간
data 코드에서 전역변수, 정적변수, 상수 등 저장
heap 코드에서 동적으로 생성되는 데이터 구조나 객체들을 저장
stack 작성한 함수에서 지역변수, 매개변수, return 주소 등을 저장

스레드(Thread)란?

프로세스의 실행단위로, 프로세스 내의 공유된 자원(코드, 데이터, 파일 등)을 사용한다. 한 프로세스 내에서 각각의 스레드는 독립적인 실행 흐름을 가진다. 그러나 같은 프로세스 내에 있는 스레드들은 같은 메모리 공간을 공유한다. 따라서 스레드 간에 공유된 자원에 대한 동기화와 관리가 필요하다.

프로세스와 스레드의 차이

프로세스독립적인 실행환경을 가진 프로그램의 인스턴스이며, 스레드하나의 프로세스 내에서 실행되는 각각의 실행흐름이다. 프로세스는 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않아서 안정성이 높고, 독립된 메모리 공간을 가지고 있어 독립성이 강하다. 하지만 그렇기 때문에 자원 소비가 큰 단점이 있다. 스레드는 프로세스에 비해 경량화되어 있어서 자원 소비가 적고, 같은 프로세스 내에서 공유된 자원을 사용하므로 더 빠른 통신을 할 수 있다. 그러나 하나의 스레드가 다른 스레드에 영향을 미칠 수 있어 상대적으로 안정성 문제가 생길 확률이 크다.