📌 프로세스는 실행 중인 프로그램의 인스턴스이다.
📌 운영체제(OS)에서 독립된 메모리 공간을 할당받아 실행된다.
📌 하나의 프로세스는 여러 개의 스레드(Thread)를 포함할 수 있다.
✅ 프로세스의 특징
✅ 프로세스 예시
VS Code와 Chrome을 동시에 실행하면 각각 하나의 프로세스로 실행됨.📌 스레드는 프로세스 내에서 실행되는 작업의 단위이다.
📌 같은 프로세스 내의 스레드들은 코드(Code), 데이터(Data), 힙(Heap) 메모리를 공유하지만, 각자의 스택(Stack)을 가짐.
📌 여러 개의 스레드가 협력하여 하나의 프로그램을 빠르게 실행할 수 있음.
✅ 스레드의 특징
✅ 스레드 예시
| 구분 | 프로세스(Process) | 스레드(Thread) |
|---|---|---|
| 개념 | 실행 중인 프로그램 인스턴스 | 프로세스 내에서 실행되는 작업 단위 |
| 메모리 | 코드, 데이터, 힙, 스택을 개별적으로 가짐 | 코드, 데이터, 힙은 공유, 스택은 개별적으로 가짐 |
| 독립성 | 서로 독립적이며, 프로세스 간 데이터 공유 불가 | 같은 프로세스 내에서 데이터 공유 가능 |
| 생성 비용 | 새 프로세스를 만들면 새로운 메모리 할당이 필요 → 비용이 높음 | 스레드는 메모리를 공유하므로 생성 비용이 낮음 |
| 실행 속도 | 새로운 프로세스를 실행하는 데 시간이 걸림 | 스레드는 빠르게 실행 가능 |
| 통신 방식 | IPC(Inter-Process Communication)를 통해 별도의 통신 방식 필요 | 메모리를 공유하므로 빠른 데이터 교환 가능 |
📌 자바스크립트는 기본적으로 싱글 스레드(Single Thread) 언어이다.
📌 하지만 브라우저와 Node.js 환경에서는 멀티스레딩과 유사한 기능을 제공한다.
✅ Node.js의 Worker Threads
✅ 브라우저의 Web Workers
✅ 비동기 처리
📌 프로세스는 독립된 실행 단위이며, 메모리를 개별적으로 사용한다.
📌 스레드는 프로세스 내에서 실행되며, 메모리를 공유하여 더 빠르게 동작한다.
📌 자바스크립트는 기본적으로 싱글 스레드이지만, Worker Threads나 Web Workers를 사용하여 멀티스레딩과 유사한 동작이 가능하다.