728x90
프로세스란?
프로세스는 실행 중인 프로그램을 말한다. 우리가 어떤 앱을 실행하면 그건 운영체제 입장에서 하나의 프로세스가 된다.
- 각각 독립된 메모리 공간을 가진다.
- 하나의 프로세스가 오류로 종료돼도 다른 프로세스엔 영향을 주지 않는다.
- 프로세스끼리는 메모리를 공유하지 않기 때문에, 서로 데이터를 주고받으려면 별도의 통신 방식이 필요하다.
스레드란?
스레드는 프로세스 안에서 실제로 작업을 수행하는 실행 단위다. 하나의 프로세스 안에는 여러 개의 스레드가 있을 수 있다.
- 같은 프로세스 안에 있는 스레드끼리는 메모리(힙, 데이터 영역 등)를 공유한다.
- 각각 스택 영역은 따로 가진다.
- 하나의 스레드가 문제를 일으키면, 같은 프로세스에 있는 다른 스레드들도 영향을 받을 수 있다.
- 프로세스의 자원을 공유한다
=> 프로세스는 독립적인 프로그램 단위이고, 스레드는 그 안에서 실제로 돌아가는 작업 단위다.
멀티프로세스와 멀티스레드
컴퓨터가 여러 작업을 동시에 처리하는 걸 ‘병렬 처리’라고 한다. 이 병렬 처리를 할 때 쓰는 대표적인 방식이 멀티프로세스랑 멀티스레드다. 둘 다 동시에 여러 작업을 처리한다는 점은 같지만, 방식이나 특징은 꽤 다르다.
멀티프로세스란?
멀티프로세스는 말 그대로 여러 개의 프로세스를 동시에 실행하는 방식이다. 각각의 프로세스는 독립적인 메모리 공간을 가지고, 서로 영향을 주지 않는다.
장점
- 하나의 프로세스가 죽어도 다른 프로세스는 영향을 안 받는다.
- 안정성이 높다.
단점
- 메모리를 많이 사용한다.
- 프로세스 간 통신이 어렵고 비용이 크다 (IPC 같은 방식 필요함).
멀티스레드란?
멀티스레드는 하나의 프로세스 안에서 여러 스레드가 동시에 작업을 나눠서 처리하는 방식이다. 메모리를 공유하면서 빠르게 데이터를 주고받을 수 있다.
장점
- 메모리 사용이 효율적이다.
- 스레드 간 통신이 빠르다 (같은 메모리 공간 사용하니깐)
단점
- 한 스레드에서 오류가 나면 같은 프로세스 안의 다른 스레드도 영향 받을 수 있다. (프로세스 내의 자원을 공유하니까)
- 동기화 문제가 생기기 쉽다 (서로 같은 자원 접근할 때 충돌)
'CS > 운영체제' 카테고리의 다른 글
| 프로세스의 상태 전이와 CPU 스케줄링의 흐름 (0) | 2025.05.18 |
|---|---|
| 운영체제와 응용프로그램 (0) | 2025.05.10 |