티스토리 뷰
728x90
1. 프로세스와 스레드의 차이
1.1 프로세스(Process)란?
- 프로세스는 컴퓨터에서 실행 중인 프로그램의 한 인스턴스입니다. 운영체제가 할당한 자원(메모리, CPU 시간, 파일 핸들 등)을 사용해 독립적으로 실행됩니다.
- 각 프로세스는 독립적인 메모리 공간을 가지고 있으며, 다른 프로세스와 메모리를 직접적으로 공유하지 않습니다. 이 때문에, 프로세스 간의 통신은 비교적 복잡한 방법을 사용해야 합니다. 이를 IPC(Inter-Process Communication, 프로세스 간 통신)라고 하며, 대표적인 방법으로는 파이프(pipe), 소켓(socket), 공유 메모리(shared memory) 등이 있습니다.
1.2 스레드(Thread)란?
- 스레드는 프로세스 내에서 실행되는 작업의 흐름입니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 같은 메모리 공간을 공유하면서 실행됩니다.
- 여러 스레드가 동시에 실행됨으로써 프로그램이 여러 작업을 병렬로 처리할 수 있습니다. 예를 들어, 하나의 스레드가 파일을 읽는 동안, 다른 스레드는 사용자 입력을 처리하거나 화면을 업데이트할 수 있습니다.
1.3 프로세스와 스레드의 차이점
항목 | 프로세스(Process) | 스레드(Thread) |
---|---|---|
메모리 | 각 프로세스는 독립적인 메모리 공간을 가지고, 다른 프로세스와 메모리를 공유하지 않음. | 같은 프로세스 내의 스레드는 메모리를 공유함. (스택 제외) |
자원 할당 | 프로세스를 생성할 때 운영체제가 자원(CPU, 메모리 등)을 새로 할당함. | 스레드는 같은 프로세스의 자원을 공유함. |
실행 속도 | 프로세스 간의 전환은 비교적 무겁고 느림. | 스레드 간의 전환은 가볍고 빠름. |
통신 방법 | 프로세스 간 통신은 IPC(파이프, 소켓 등)를 사용하여 복잡함. | 스레드 간 통신은 메모리 공유를 통해 간단함. |
오버헤드 | 프로세스를 생성하면 운영체제가 새로운 자원을 할당해야 하므로 오버헤드가 큼. | 스레드를 생성하는 것은 프로세스 내에서 메모리를 공유하기 때문에 오버헤드가 적음. |
안정성 | 프로세스가 다른 프로세스에 영향을 주지 않음. | 한 스레드의 오류가 같은 프로세스의 다른 스레드에도 영향을 줄 수 있음. |
1.4 프로세스와 스레드의 예시
- 프로세스의 예시: 웹 브라우저, 텍스트 편집기, 파일 탐색기 같은 프로그램을 실행할 때 각각 하나의 프로세스가 생성됩니다. 이때 웹 브라우저는 독립된 메모리 공간에서 실행되며, 다른 프로그램과 메모리를 공유하지 않습니다.
- 스레드의 예시: 웹 브라우저 안에서는 여러 스레드가 동시에 실행됩니다. 예를 들어, 하나의 스레드는 웹 페이지를 로드하고, 다른 스레드는 사용자의 스크롤을 처리하거나 음악을 재생합니다. 여러 스레드가 같은 프로세스 내에서 동시에 동작하여 응답성을 높입니다.
1.5 멀티프로세스와 멀티스레드
- 멀티프로세스: 여러 개의 프로세스를 사용하여 병렬로 작업을 처리하는 방법입니다. 각 프로세스는 독립적인 메모리 공간을 가지고 있기 때문에 안정성이 높지만, 프로세스 간의 통신이 복잡하고 비용이 많이 듭니다.
- 멀티스레드: 하나의 프로세스 내에서 여러 스레드를 사용하여 병렬로 작업을 처리하는 방법입니다. 스레드 간의 통신이 쉽고 빠르지만, 공유 메모리를 사용하므로 동기화 문제가 발생할 수 있습니다.
1.6 언제 프로세스를 사용하고, 언제 스레드를 사용할까?
- 프로세스는 독립적인 작업을 수행할 때 사용합니다. 예를 들어, 서로 다른 프로그램을 실행할 때는 각각의 프로그램이 독립적으로 실행되어야 하므로 프로세스를 사용합니다.
- 스레드는 하나의 프로그램 내에서 여러 작업을 동시에 처리할 필요가 있을 때 사용합니다. 예를 들어, 게임이나 웹 브라우저와 같은 프로그램은 여러 작업(그래픽 처리, 사용자 입력 처리, 네트워크 통신 등)을 동시에 수행해야 하므로 스레드를 사용합니다.
1.7 프로세스와 스레드의 장단점 요약
- 프로세스의 장점:
- 프로세스 간 메모리 독립성으로 인해 하나의 프로세스가 실패해도 다른 프로세스에는 영향을 미치지 않음.
- 보안성이 높고 안정적임.
- 프로세스의 단점:
- 프로세스 간 통신이 복잡하고 느림.
- 새로운 프로세스를 생성하는 데 많은 자원이 필요함.
- 스레드의 장점:
- 메모리 공유로 인해 스레드 간 통신이 빠르고 효율적임.
- 스레드를 생성하는 오버헤드가 적고, 프로세스보다 빠르게 실행될 수 있음.
- 스레드의 단점:
- 메모리를 공유하기 때문에 동기화 문제가 발생할 수 있음.
- 한 스레드에서 발생한 문제가 전체 프로세스에 영향을 줄 수 있음.
728x90
'개발 언어 > 기타 웹개발 지식' 카테고리의 다른 글
스레드 03. 동기화(Synchronization) (0) | 2024.09.15 |
---|---|
스레드 02. 멀티스레딩(Multithreading) (0) | 2024.09.15 |
QUIC 프로토콜 (4) | 2024.09.10 |
서킷 브레이커 (Circuit Breaker) (0) | 2024.09.09 |
프로젝트 히드라 효과: 끝없는 시작과 마주하기 (번역) (0) | 2024.09.09 |
댓글