CS 공부
프로세스와 스레드
NiceKHJ
2025. 6. 16. 15:12
브라우저 동작 원리나 웹 성능 최적화, Node.js의 동작 방식 등을 이해하려면 이 두 개념을 아는 게 중요하다.
프로세스란?
- 실행 중인 프로그램 하나를 프로세스라고 부른다.
- 프로그램을 실행하면, 운영체제(OS)가 그 프로그램을 위해 독립된 메모리 공간을 만들어준다.
- 그 공간이 바로 프로세스이다.
- 예시 :
- 크롬을 열면 하나의 프로세스가 생기고 탭을 하나 더 열면 탭마다 별도의 프로세스가 생긴다.
- 탭 하나가 멈춰도 다른 탭은 잘 작동하는 이유가 바로 이 구조 덕분이다.
스레드란?
- 프로세스 안에서 실제 작업을 수행하는 실행 단위다.
- 하나의 프로세스는 여러 개의 스레드를 가질 수 있다. (멀티스레드)
- 스레드들은 같은 프로세스 내 메모리를 공유하면서 각자 다른 일을 병렬로 처리할 수 있다.
- 예시 :
- 하나의 브라우저 탭(프로세스) 안에서 화면 렌더링, 사용자 입력 감지, 네트워크 통신 등이 각각 다른 스레드에서 동시에 처리된다.
차이점 정리
항목 | 프로세스 | 스레드 |
정의 | 실행 중인 프로그램 | 작업을 수행하는 실행 단위 |
메모리 | 독립된 메모리 공간 | 같은 메모리를 공유함 |
영향 | 하나 죽어도 다른 프로세스는 영향 없음 | 하나 문제 생기면 같은 프로세스 안 스레드도 영향 |
생성 비용 | 상대적으로 무거움 | 상대적으로 가벼움 |
예시 | 크롬 탭 하나 | 탭 안에서 렌더링, 이벤트 처리, 네트워크 처리 등 |
프론트 기준 알아야 하는 이유❓
- 브라우저는 탭마다 프로세스를 분리해서 안정성을 높이고
- 각 탭 안에서는 여러 스레드로 나눠서 사용자 입력, 렌더링, 자바스크립트 등을 동시에 처리한다.
- Node.js도 내부적으로 스레드 풀을 사용해 논블로킹 I/O를 처리한다.
- 웹 워커는 스레드처럼 동작해서, 메인 스레드와 별도로 무거운 작업을 처리할 수 있다.