Search

프로세스 vs 쓰레드

class
운영체제
상태
완료
날짜
목차

프로세스 vs 쓰레드

프로세스

프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영 체제가 메모리에 할당한 작업의 단위로, 독립된 메모리 영역(코드, 데이터, 힙, 스택 등)을 가집니다. 각 프로세스는 별도의 주소 공간에서 실행되므로, 한 프로세스는 다른 프로세스의 변수나 자료 구조에 직접 접근할 수 없습니다.

프로세스의 장점

독립적인 메모리 공간으로 인해 안정성이 높습니다.
하나의 프로세스에 문제가 생겨도 다른 프로세스에는 영향을 미치지 않습니다.

프로세스의 단점

컨텍스트 스위칭 비용이 높아 성능 저하를 일으킬 수 있습니다.
IPC를 통한 데이터 공유가 복잡하고 비용이 많이 듭니다.

쓰레드

쓰레드는 프로세스 내에서 실행되는 여러 실행의 흐름입니다. 프로세스 내의 코드, 데이터, 힙 영역을 공유하면서 각각 별도의 스택을 가지고 실행됩니다. 쓰레드는 동일한 프로세스 안에서 메모리를 공유하기 때문에, 프로세스보다 데이터를 공유하거나 통신하기가 더 간단합니다.
TCB를 공부하면서, 쓰레드의 공유 영역과 비공유 영역(스택)에 대해 설명하겠습니다.

쓰레드의 장점

메모리와 자원을 공유하기 때문에 통신 비용이 낮고, 데이터 공유가 쉽습니다.
컨텍스트 스위칭이 프로세스에 비해 빠르고, 자원을 효율적으로 사용할 수 있습니다.

쓰레드의 단점

메모리 공간을 공유하기 때문에 동기화 문제가 발생할 수 있습니다.
하나의 쓰레드에서 문제가 발생하면 같은 프로세스 내의 다른 쓰레드에도 영향을 줄 수 있습니다.

쓰레드에서 컨텍스트 스위칭이 더 빠른 이유

프로세스의 컨텍스트 스위칭

프로세스 간 컨텍스트 스위칭 시, 운영체제는 현재 실행 중인 프로세스의 CPU 레지스터 상태, 프로그램 카운터, 스택 포인터 등의 정보를 저장해야 하며, 메모리 상태도 전환해야 합니다. 즉, 하나의 프로세스에서 다른 프로세스로 전환할 때는 해당 프로세스의 전체 메모리 상태를 변경해야 합니다.

쓰레드의 컨텍스트 스위칭

반면, 쓰레드 간 컨텍스트 스위칭은 같은 프로세스 내에서 이루어지므로, 대부분의 메모리 상태(코드, 데이터, 힙 영역)는 그대로 유지됩니다. 쓰레드는 프로세스 내에서 스택 영역만 독립적으로 가지며, CPU 레지스터 상태와 프로그램 카운터 같은 실행 관련 정보만 각자 관리합니다. 따라서, 쓰레드 간에는 이미 공유하고 있는 메모리 상태를 변경할 필요가 없으므로, 컨텍스트 스위칭이 프로세스에 비해 훨씬 빠르고 효율적으로 이루어질 수 있습니다.